ux(halopsa): expose user-linking toggle and clean up integration settings#1
Open
renada-jacob wants to merge 1821 commits into
Open
ux(halopsa): expose user-linking toggle and clean up integration settings#1renada-jacob wants to merge 1821 commits into
renada-jacob wants to merge 1821 commits into
Conversation
[pull] dev from KelvinTegelaar:dev
…/npm_and_yarn/dev/mui/system-7.3.10 chore(deps): bump @mui/system from 7.3.2 to 7.3.10
[pull] dev from KelvinTegelaar:dev
fix: Update @mui packages to version 7.3.10
[pull] dev from KelvinTegelaar:dev
[pull] dev from KelvinTegelaar:dev
[pull] dev from KelvinTegelaar:dev
[pull] dev from KelvinTegelaar:dev
[pull] dev from KelvinTegelaar:dev
Introduce a granular (per-standard) view for the Standard & Drift Alignment page with a toggle between Summary and Per Standard modes. Changes include: new imports (MUI, heroicons, standards data), stateful mode toggle, separate filter/action/column sets for summary vs granular, API param/granular queryKey, and an off-canvas details panel that parses/compares expected vs current values and shows formatted diffs. Also replaced Delete icon usage with Edit for template editing. Updated get-cipp-formatting to render complianceStatus as colored Chips and to resolve standardName labels from data/standards.json. fixes KelvinTegelaar#5894
Use Array.isArray to validate reportListApi.data and reportDataApi.data before mapping or passing to CippDataTable. This replaces the nullish-coalescing fallback so the code won't try to map or render non-array API responses (e.g. objects or other types), avoiding potential runtime errors.
[pull] dev from KelvinTegelaar:dev
…/npm_and_yarn/dev/tanstack/react-query-persist-client-5.96.2 chore(deps): bump @tanstack/react-query-persist-client from 5.90.27 to 5.96.2
Surfaces the HaloPSA.LinkTicketsToUsers setting on the integration configuration page. When enabled (and used with the matching CIPP-API changes), alerts that target specific users produce one HaloPSA ticket per user, linked to the matching contact - matched by Azure Object ID first, then by email. Defaults off so existing installations see no change in ticket volume until they opt in. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Move the Consolidate Tickets and Link Tickets to affected Users toggles below the credential and dropdown fields. New users now configure the required connection details first, then pick behavioural options last, rather than enabling features before the integration is configured. - Add helperText under Ticket Type explaining its role and that the Outcome dropdown depends on it being saved first. - Add helperText under Outcome explaining that it's the action template used for consolidation notes, that it must be a private/internal-note action the API user can perform, and that the list is restricted to outcomes the selected Ticket Type's workflow allows. - Add helperText under Consolidate Tickets and Link Tickets to affected Users explaining what each toggle does and how they interact. - Rename "Link tickets to affected users" to "Link Tickets to affected Users" so it matches the title-case style of the other toggles. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The integration settings page renders fields in a 2-column grid where switches default to full width and everything else to half width. There was no per-field override, so a wide dropdown with a long helperText ended up squeezed into half a row next to a credential field, breaking the visual rhythm. Adds an optional fullRow boolean on each SettingOptions entry. When true, the field takes the whole row regardless of type. Marks HaloPSA Ticket Type and HaloPSA Outcome as fullRow so their helper text has room to breathe and they no longer pair awkwardly with the Client Secret field above them. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a form field's helperText was long (e.g. the new HaloPSA Ticket Type / Outcome explanations), it was rendering edge-to-edge across the full width of the parent grid item, which is hard to scan on wide screens. Cap the helperText Typography at 700px and force display:block so the constraint actually applies. This affects all forms using helperText, not just integrations - long captions everywhere now wrap to a comfortable reading width. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The helperText was rendering directly against the bottom edge of the field above it, especially noticeable on bordered controls like dropdowns and text inputs. Add a 6px top margin (mt: 0.75 in MUI spacing units) so captions have a small breathing space and clearly read as belonging to the field they describe. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Re-orders the Settings page so the Consolidate Tickets toggle sits above the Outcome dropdown (which only matters when consolidation is on), and switches the dropdown's condition action from disable to hide. The greyed-out, dependency-implicit dropdown is replaced with a clean appears-on-demand pattern - users no longer wonder why the field is there or what enables it. Helper text on both fields reworded to make the dependency obvious. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When configuring a scripted CIPP alert with PSA selected as one of the actions, the Notification Settings now include a 'PSA Ticket Strategy' dropdown that overrides the global HaloPSA.LinkTicketsToUsers toggle for that alert. Options: - Use HaloPSA integration default (inherit the global toggle) - One ticket per affected user (force split) - One consolidated ticket per tenant (force consolidated) The dropdown is hidden via CippFormCondition when PSA isn't one of the selected actions, so it only surfaces when relevant. Round-trips through the existing AddScriptedAlert -> AddScheduledItem -> Add-CIPPScheduledTask chain via a new top-level PsaTicketStrategy field on the payload.
…atePSA) Two separate action option lists exist on the same alert form: - postExecutionOptions (scripted alerts): values 'Webhook', 'Email', 'PSA' - actionsToTake (audit log alerts): values 'generateWebhook', 'generatemail', 'generatePSA', etc. The new PSA Ticket Strategy dropdown was guarded by compareValue 'generatePSA', which only matches the audit-log option list. Scripted alerts (where the splitter actually applies) store 'PSA', so the condition never matched and the dropdown stayed hidden. Switch the guard to 'PSA' to align with the scripted-alert action list, which is the only path where per-task PSA strategy is meaningful.
Position the PSA-specific dropdown next to the action that triggers it (Actions to take), rather than at the bottom of Notification Settings after Custom Subject and Alert Comment. Reads more naturally - the strategy is logically a sub-option of selecting PSA, so visual proximity makes the dependency obvious.
Replace the static 'Use HaloPSA integration default' option with a dynamic two-option dropdown that mirrors the integration's current LinkTicketsToUsers setting. The option matching the current integration default gets '(HaloPSA integration default)' appended to its label and is preselected on new alerts. When loading an existing alert with no stored strategy (legacy alerts created before this field existed), the dropdown also falls back to the current default so the selection is always meaningful. Behaviour: - New alert (integration default = split): preselects 'One ticket per affected user (HaloPSA integration default)' - New alert (integration default = consolidated): preselects 'One consolidated ticket per tenant (HaloPSA integration default)' - Existing alert with PsaTicketStrategy='split': loads as 'split', label may or may not show the default marker depending on current integration setting Backend semantics unchanged: empty string still means 'inherit' for any legacy rows that have it, but the form always sends an explicit value now.
Remove the helperText styling change to CippFormComponent.jsx per maintainer feedback (core component, internal-only). Trim the HaloPSA integration and PSA Ticket Strategy helper texts so they read cleanly with the default styling.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Frontend companion to the CIPP-API user-linking work in https://github.com/renada-jacob/CIPP-API/pull/feat/halo-link-tickets-to-users. Adds the new
HaloPSA.LinkTicketsToUserstoggle and reworks the HaloPSA integration page so first-time users have a clearer setup experience.What's new
New setting
Link Tickets to affected Usersswitch on the HaloPSA integration page. Off by default. When enabled (with the matching CIPP-API changes), alerts that target specific users produce one HaloPSA ticket per user, linked to the matching contact.Layout / UX cleanup on the HaloPSA page
Link tickets to affected users->Link Tickets to affected Usersfor title-case consistency with the other toggles.Reusable form-component improvements
fullRow: trueopt-in onSettingOptionsentries (CippIntegrationSettings.jsx). Non-switch settings normally render at half-width in a 2-column grid; settingfullRowlets a wide dropdown take the full row so its helper text has room to breathe. Used here for the new helper-text on Ticket Type and Outcome.display: block(CippFormComponent.jsx). Long captions no longer stretch edge-to-edge across wide screens.mt: 0.75) on helper text so captions aren't pressed against the bottom border of the field they describe.The form-component changes are global (affect every form in CIPP that uses helper text) but should be a strict improvement - long captions are easier to read at a constrained width and small spacing makes the visual hierarchy clearer.
Test plan
/api/ExecExtensionsConfigand the CIPP-API picks it up on the next ticket creation.🤖 Generated with Claude Code