Skip to content

chore(admin-ui): removal two more redundant UI dependencies (#2878)#2879

Merged
duttarnab merged 28 commits into
mainfrom
admin-ui-issue-2878
Jun 17, 2026
Merged

chore(admin-ui): removal two more redundant UI dependencies (#2878)#2879
duttarnab merged 28 commits into
mainfrom
admin-ui-issue-2878

Conversation

@faisalsiddique4400

@faisalsiddique4400 faisalsiddique4400 commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

chore(admin-ui): remove two more redundant UI dependencies (#2878)

Summary

Continues the dependency and dead-code cleanup from #2874. Removes two redundant
UI libraries (react-bootstrap-typeahead, react-toggle) by leaning on
already-bundled MUI and a native control, relocates the stray site constants into
app/constants/, and clears out dead components the cleanup surfaced. No
user-facing behavior changes.

Dependencies removed

  • react-bootstrap-typeahead -> GluuAutocomplete (in-house wrapper over MUI Autocomplete, already bundled)
  • react-toggle + @types/react-toggle -> GluuToggle (native checkbox + CSS)

Changes

  • Migrated all typeahead call sites to GluuAutocomplete (ACR mapping, SAML SP form, GluuInlineInput array mode); deleted GluuTypeAhead, GluuTypeAheadForDn, GluuTypeAheadWithAdd with their styles, types, and tests.
  • Migrated all react-toggle call sites to GluuToggle / GluuToggleRow (Assets, Webhook, SMTP, Custom Script, SAML IdP).
  • Made GluuToggle fully controlled: dropped its internal state and sync effect so value is the single source of truth (behavior unchanged; updated its tests to a controlled harness).
  • Removed the retired global stylesheets _react-bootstrap-typeahead.scss, _react-toggle.scss, and the stale plugins.css, plus their plugins.scss imports.
  • Moved app/config/site.ts -> app/constants/site.ts and updated its import.

Dead code removed (surfaced during cleanup)

  • GluuBooleanSelectBox (single caller + a never-used <select> branch) -> GluuToggleRow.
  • GluuSecretDetail, GluuSuspenseLoader (a one-line <GluuSpinner/> wrapper), and GluuPermissionModal (+ its style and type) - unused, no production callers.
  • Inlined a user-claims test fixture and removed a tautological test that only asserted a static array's shape.

How to test (manual QA)

Log in first; each control was reworked internally and should behave as before.

  1. Typeahead / multi-select (now MUI Autocomplete): ACR mapping, SAML SP DN field, array fields - open, filter, select, add custom, remove; selection persists after save.
  2. Toggles (now GluuToggle): Assets, Webhook, SMTP, Custom Script, SAML IdP - flip, save, confirm view-only renders disabled and dark mode looks right.
  3. ACR / Authentication screens open and save with no console errors.

Verification

npm run check:all   # lint + type-check + markdownlint
npm run test:all    # jest
npx knip            # unused files/exports/deps
npm run build:prod
  • check:all, test:all, knip: clean.
  • No remaining imports of the removed dependencies.
  • No user-facing behavior change.

Ticket

Closes: #2878

Summary by CodeRabbit

  • Bug Fixes
    • Table empty values now consistently display a dash placeholder.
    • Sidebar loading now uses the updated spinner-based loader for the affected initialization state.
  • New Features
    • Autocomplete inputs were improved (better deduplication, improved custom-entry behavior, and array inputs migrated to Autocomplete).
    • Boolean toggles were standardized with the new toggle UI across forms and plugins, with refined focus/checked visuals.
    • User claim editing now better preserves reserved/used claims and updates modified-field tracking/clearing behavior.
  • Chores
    • Retired legacy typeahead/toggle implementations and related styling, tests, and plugin overrides.

…ion + single-source action catalog (#2872)

Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
…2874)

Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR removes the react-toggle and react-bootstrap-typeahead npm dependencies and replaces them with internal GluuToggle and GluuAutocomplete components. It consolidates authentication types into a shared module, memoizes autocomplete behavior for performance, updates all dependent forms, removes deprecated component exports, and refactors user management claim handling with improved type safety.

Changes

Admin UI dependency removal and control migration

Layer / File(s) Summary
Custom toggle component and plugin removal
app/constants/ui.ts, app/routes/Apps/Gluu/GluuToggle.tsx, app/routes/Apps/Gluu/styles/GluuToggle.style.ts, app/routes/Apps/Gluu/types/GluuToggle.types.ts, app/routes/Apps/Gluu/Tests/GluuToggle.test.tsx, app/routes/Apps/Gluu/Tests/GluuToggleRow.test.tsx, app/layout/components/DefaultSidebar.tsx, app/layout/default.tsx, app/styles/plugins/plugins.scss, package.json
Adds TOGGLE constant for track/thumb sizing and focus ring parameters; implements GluuToggle as controlled component using value prop, local focused state for ring styling, and handleChange that forwards to Formik and optional handler; adds styles wiring theme colors and TOGGLE constants; exports prop types; includes comprehensive toggle and toggle-row tests; replaces GluuSuspenseLoader with GluuSpinner in DefaultSidebar; updates stylesheet import path from CSS to SCSS; removes react-toggle and react-bootstrap-typeahead dependencies and plugin stylesheet imports.
GluuAutocomplete memoization and deduplication
app/routes/Apps/Gluu/GluuAutocomplete.tsx, app/routes/Apps/Gluu/Tests/GluuAutocomplete.test.tsx
Memoizes theme-derived colors by selectedTheme, deduplicates mapped option values using Set, memoizes filtered selectedItems list, memoizes autocompleteOptions including optional custom selections when allowCustom, memoizes popper slotProps with sameWidth and lockPlacement modifiers, refines custom entry validation to use exact case-insensitive label equality instead of substring checks; includes comprehensive test suite for label rendering, tag deduplication, custom entry on Enter, error display, tag removal, and disabled state.
Authentication type centralization
plugins/auth-server/components/Authentication/types/authenticationTypes.ts, plugins/auth-server/components/Authentication/Acrs/Acrs.tsx, plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx, plugins/auth-server/components/Authentication/Aliases/Aliases.tsx, plugins/auth-server/components/Authentication/Authentication.tsx, plugins/auth-server/components/Authentication/DefaultAcr/DefaultAcr.tsx, plugins/auth-server/components/Authentication/Acrs/helper/acrUtils.ts
Introduces shared authenticationTypes module exporting PropertyConfig, TabName, AcrsProps, DefaultAcrFormValues, AliasesProps, AcrsFormValues, and AcrsFormProps; consolidates type imports across ACR components and helpers from local definitions to centralized module.
Form field migration to GluuAutocomplete
app/routes/Apps/Gluu/GluuInlineInput.tsx, plugins/auth-server/components/Authentication/Acrs/AcrsForm.tsx, plugins/saml/components/WebsiteSsoServiceProviderForm.tsx
Replaces react-bootstrap-typeahead in GluuInlineInput with GluuAutocomplete for array inputs; adds memoized typed filteredOptions and filteredValue; updates AcrsForm servers and baseDNs from GluuTypeAhead to GluuAutocomplete with setFieldValue/setFieldTouched in onChange; migrates WebsiteSsoServiceProviderForm released-attributes to GluuAutocomplete with attribute-to-DN mapping and Redux selectedClientScopes synchronization.
Toggle replacement in forms
plugins/admin/components/Assets/AssetForm.tsx, plugins/admin/components/Webhook/WebhookForm.tsx, plugins/saml/components/WebsiteSsoIdentityProviderForm.tsx, plugins/scripts/components/CustomScriptForm.tsx, plugins/smtp/components/SmtpForm.tsx, plugins/auth-server/components/OidcClients/components/ClientTokensPanel.tsx, plugins/scripts/components/styles/CustomScriptFormPage.style.ts
Replaces react-toggle Toggle with GluuToggle across enabled/metadata/authentication toggles in asset, webhook, SAML identity provider, custom script, and SMTP forms, wiring via value and optional handler; updates ClientTokensPanel to use GluuToggleRow instead of GluuBooleanSelectBox for introspection script field; adds propsSection styling to CustomScriptForm property containers and updates CustomScriptFormPage gap/margin rules.
AcrsForm input styling refinement
plugins/auth-server/components/Authentication/Acrs/AcrsForm.style.ts
Narrows formWithInputs selectors to exclude .MuiOutlinedInput-input elements from input/select/textarea styling; refines disabled state (cursor/opacity), validation state (is-valid/is-invalid border/shadow clearing), and pseudo-element styling (selection/placeholder) to apply only to non-checkbox inputs that are not MUI outlined inputs.
Shell layout and shared constants updates
app/components/Layout/Layout.tsx, app/components/GluuTable/GluuTable.tsx, app/components/GluuTable/constants.ts
Removes siteDescription/siteKeywords import from @/config/site and sets literal pageDescription/pageKeywords defaults in initialLayoutState; adds EMPTY_CELL_PLACEHOLDER constant ('—') to GluuTable and updates cell rendering to display placeholder for null/undefined/empty values.
User management claim handling and type safety
plugins/user-management/common/Constants.ts, plugins/user-management/components/AvailableClaimsPanel.tsx, plugins/user-management/components/UserClaimEntry.tsx, plugins/user-management/components/UserForm.tsx, plugins/user-management/components/UserEditPage.tsx, plugins/user-management/utils/attributeTransformUtils.ts, plugins/user-management/utils/userFormUtils.ts, plugins/user-management/components/UserForm.style.ts
Centralizes standard reserved claim attribute constants into RESERVED_STANDARD_CLAIMS array and adds UID_ATTR; updates AvailableClaimsPanel and userFormUtils to use the centralized set; adds explicit isBoolean and isDate detection for UserClaimEntry inputs with date type support; refactors UserForm modified-field tracking with isTrackedChange helper; adds getClaimLabel for enriching commit dialog operations; simplifies attributeTransformUtils signature and single-valued update logic without conditional original-value retention.
Input and dialog supporting enhancements
app/routes/Apps/Gluu/GluuRemovableInputRow.tsx, app/routes/Apps/Gluu/GluuSelectRow.tsx, app/routes/Apps/Gluu/GluuCommitDialog.tsx, app/routes/Apps/Gluu/styles/GluuRemovableInputRow.style.ts, app/routes/Apps/Gluu/types/GluuCommitDialog.types.ts, app/routes/Apps/Gluu/types/GluuSelectRow.types.ts, plugins/admin/components/Settings/SettingsPage.tsx, plugins/user-claims/components/styles/UserClaimsFormPage.style.ts, app/utils/logLevel.ts
Adds dark-mode support to GluuRemovableInputRow with isDark parameter passed to useStyles; adds reserveErrorSpace prop to GluuSelectRow for error layout preservation; updates GluuCommitDialog to display operation.label when present; adds optional label field to GluuCommitDialogOperation type; updates SettingsPage to pass reserveErrorSpace to page-size, log-level, and default ACR selects; updates UserClaimsFormPage toggleRow padding; removes DEFAULT_LOG_LEVEL constant and inlines default 'INFO' in getLogLevel.
Deprecated component and export removals
app/routes/Apps/Gluu/GluuBooleanSelectBox.tsx, app/routes/Apps/Gluu/GluuPermissionModal.tsx, app/routes/Apps/Gluu/GluuSecretDetail.tsx, app/routes/Apps/Gluu/GluuSuspenseLoader.tsx, app/routes/Apps/Gluu/GluuTypeAhead.tsx, app/routes/Apps/Gluu/GluuTypeAheadForDn.tsx, app/routes/Apps/Gluu/GluuTypeAheadWithAdd.tsx, app/routes/Apps/Gluu/types/GluuComponentPropsTypes.ts, app/routes/Apps/Gluu/types/GluuPermissionModal.types.ts, app/routes/Apps/Gluu/types/GluuTypeAhead.types.ts, app/routes/Apps/Gluu/types/GluuTypeAheadForDn.types.ts, app/routes/Apps/Gluu/types/GluuTypeAheadWithAdd.types.ts, app/routes/Apps/Gluu/Tests/GluuSecretDetail.test.tsx, app/routes/Apps/Gluu/Tests/GluuTypeAhead.test.tsx, app/routes/Apps/Gluu/Tests/GluuTypeAheadForDn.test.tsx, app/routes/Apps/Gluu/Tests/GluuTypeAheadWithAdd.test.tsx, app/routes/Apps/Gluu/styles/GluuPermissionModal.style.ts, app/routes/Apps/Gluu/styles/GluuSecretDetail.style.ts, app/routes/Apps/Gluu/styles/GluuTypeAhead.style.ts, app/routes/Apps/Gluu/styles/GluuTypeAheadWithAdd.style.ts
Removes now-unused Gluu components (GluuBooleanSelectBox, GluuPermissionModal, GluuSecretDetail, GluuSuspenseLoader, GluuTypeAhead, GluuTypeAheadForDn, GluuTypeAheadWithAdd), their exported prop types, associated styling modules, and related test files that validate removed functionality.
Module exports, imports, and test adjustments
app/utils/zip.ts, app/utils/__tests__/zip.test.ts, app/utils/menuFilters.ts, app/components/icons/index.ts, app/config/site.ts, plugins/auth-server/components/Authentication/AgamaFlows/AgamaFlows.tsx, plugins/user-claims/__tests__/components/UserClaimsListPage.test.tsx, plugins/user-claims/__tests__/utils/attributes.test.ts, plugins/user-claims/utils/attributes.ts
Changes readZip export from named to default in zip.ts and updates import statements in tests and consumers to use default import; internalizes MENU_VISIBILITY_CONDITIONS as non-exported const; removes AddCircleOutline icon re-export; removes siteDescription and siteKeywords from config/site.ts; generates mock attributes locally in UserClaimsListPage test instead of importing from removed utility export; removes attributes.test.ts validating removed export.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

  • GluuFederation/flex#2697: Both PRs modify admin-ui/plugins/user-management/components/UserForm.tsx, specifically the updateModifiedFields/setModifiedFieldsWrapper logic for how empty arrays are treated when determining modified fields.
  • GluuFederation/flex#2620: The main PR updates DefaultSidebar to use the new GluuSpinner (replacing GluuSuspenseLoader), which directly ties into the retrieved PR that introduces GluuSpinner as part of the Loader revamp.
  • GluuFederation/flex#2738: Both PRs touch the same GluuRemovableInputRow codepath—main adds dark-mode isDark styling to useStyles/GluuRemovableInputRow.style.ts, while the retrieved PR refactors GluuRemovableInputRow.tsx to rely on that shared useStyles/styles module—so they're directly related at the file/function level.

Poem

🐰 Hoppy dependencies take flight,
Custom toggles gleam and glow so bright!
Autocomplete memoized with care,
Bundle lighter—much less to bear!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch admin-ui-issue-2878

Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Base automatically changed from admin-ui-issue-2874 to main June 12, 2026 08:58
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
@mo-auto mo-auto added comp-admin-ui Component affected by issue or PR kind-dependencies Pull requests that update a dependency file labels Jun 12, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
admin-ui/plugins/auth-server/components/OidcClients/components/ClientTokensPanel.tsx (1)

272-287: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Persist the toggle’s boolean state, not the checkbox value string.

Line 285 stores e.target.value, but GluuToggleRow is backed by a checkbox input. That yields the string value ("on"), not the checked state, so RUN_INTROSPECTION_SCRIPT_BEFORE_JWT_CREATION stops matching the boolean contract used by value={Boolean(...)} and by the downstream payload.

Suggested fix
           handler={(e) => {
             setModifiedFields((prev) => ({
               ...prev,
               [CLIENT_TOKEN_MODIFIED_FIELDS.RUN_INTROSPECTION_SCRIPT_BEFORE_JWT_CREATION]:
-                e.target.value,
+                e.target.checked,
             }))
           }}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@admin-ui/plugins/auth-server/components/OidcClients/components/ClientTokensPanel.tsx`
around lines 272 - 287, The toggle handler for GluuToggleRow is storing
e.target.value ("on") instead of the checkbox boolean, breaking boolean
contracts; update the handler passed to GluuToggleRow to setModifiedFields with
the checkbox state (use e.target.checked or Boolean(e.target.checked)) for
CLIENT_TOKEN_MODIFIED_FIELDS.RUN_INTROSPECTION_SCRIPT_BEFORE_JWT_CREATION so the
stored value matches the value prop derived from formik and the downstream
payload expectations (also ensure formik is updated consistently if needed).
admin-ui/app/routes/Apps/Gluu/GluuAutocomplete.tsx (1)

277-291: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use exact-match duplicate checks for Enter-created values.

The Enter path rejects any input that is merely contained in an existing label because it uses includes(...). That diverges from filterOptions(...), which uses exact equality, so keyboard submit can fail for a value that the dropdown correctly offers as a new selection.

Suggested fix
                           if (
                             trimmed &&
-                            !optionValues.some((o) =>
-                              getDisplayLabel(o).toLowerCase().includes(trimmed.toLowerCase()),
-                            ) &&
+                            !optionValues.some(
+                              (o) => getDisplayLabel(o).toLowerCase() === trimmed.toLowerCase(),
+                            ) &&
                             !selectedItems.some(
                               (s) => getDisplayLabel(s).toLowerCase() === trimmed.toLowerCase(),
                             )
                           ) {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@admin-ui/app/routes/Apps/Gluu/GluuAutocomplete.tsx` around lines 277 - 291,
The Enter key path in the onKeyDown handler for allowCustom currently rejects
inputs when the trimmed value is merely contained in an existing label because
it uses getDisplayLabel(o).toLowerCase().includes(trimmed.toLowerCase()); change
this to an exact case-insensitive equality check (compare
getDisplayLabel(o).toLowerCase() === trimmed.toLowerCase()) and similarly for
the selectedItems check so the Enter-created value uses the same exact-match
logic as filterOptions; keep using inputValue.trim(), then call
onChange([...selectedItems, trimmed]) and setInputValue('') as before.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@admin-ui/app/constants/site.ts`:
- Line 1: The SITE_DESCRIPTION constant currently uses "admin Ui" with incorrect
capitalization; update the string value of SITE_DESCRIPTION to use "admin UI"
(i.e., change 'Jans-server admin Ui' to 'Jans-server admin UI') so the meta
description displays the correct capitalization.

In `@admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsForm.tsx`:
- Around line 361-399: The LDAP autocomplete inputs (GluuAutocomplete for
name="servers" and name="baseDNs") currently only call formik.setFieldValue so
their touched flags never get set, preventing errors and disabling Apply; update
the onChange handlers to also mark the field touched (e.g., call
formik.setFieldTouched('servers', true) and formik.setFieldTouched('baseDNs',
true) or use formik.setTouched with the appropriate key) immediately after
calling formik.setFieldValue so formik.touched.servers and
formik.touched.baseDNs become true and validation/errors display.

In
`@admin-ui/plugins/auth-server/components/Authentication/types/authenticationTypes.ts`:
- Around line 88-94: AcrsFormValues.configurationProperties is redeclaring an
inline shape that diverges from the shared ConfigurationProperty type; replace
the inline Array<{id?: string; key?: string; value?: string; value1?: string;
value2?: string}> with the shared ConfigurationProperty[] type (import
ConfigurationProperty if needed), ensure the shared property includes the
optional hide field used elsewhere, and update usages in AcrsForm,
getPropertiesConfig, and transformConfigurationProperties to rely on the unified
ConfigurationProperty shape so the three consumers share one contract.

---

Outside diff comments:
In `@admin-ui/app/routes/Apps/Gluu/GluuAutocomplete.tsx`:
- Around line 277-291: The Enter key path in the onKeyDown handler for
allowCustom currently rejects inputs when the trimmed value is merely contained
in an existing label because it uses
getDisplayLabel(o).toLowerCase().includes(trimmed.toLowerCase()); change this to
an exact case-insensitive equality check (compare
getDisplayLabel(o).toLowerCase() === trimmed.toLowerCase()) and similarly for
the selectedItems check so the Enter-created value uses the same exact-match
logic as filterOptions; keep using inputValue.trim(), then call
onChange([...selectedItems, trimmed]) and setInputValue('') as before.

In
`@admin-ui/plugins/auth-server/components/OidcClients/components/ClientTokensPanel.tsx`:
- Around line 272-287: The toggle handler for GluuToggleRow is storing
e.target.value ("on") instead of the checkbox boolean, breaking boolean
contracts; update the handler passed to GluuToggleRow to setModifiedFields with
the checkbox state (use e.target.checked or Boolean(e.target.checked)) for
CLIENT_TOKEN_MODIFIED_FIELDS.RUN_INTROSPECTION_SCRIPT_BEFORE_JWT_CREATION so the
stored value matches the value prop derived from formik and the downstream
payload expectations (also ensure formik is updated consistently if needed).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8f28681c-2670-4f88-b70f-5544ba9a1fd0

📥 Commits

Reviewing files that changed from the base of the PR and between 5e55b07 and dedf767.

📒 Files selected for processing (66)
  • admin-ui/app/components/GluuTable/GluuTable.tsx
  • admin-ui/app/components/GluuTable/constants.ts
  • admin-ui/app/components/Layout/Layout.tsx
  • admin-ui/app/components/icons/index.ts
  • admin-ui/app/config/site.ts
  • admin-ui/app/constants/index.ts
  • admin-ui/app/constants/site.ts
  • admin-ui/app/constants/ui.ts
  • admin-ui/app/layout/components/DefaultSidebar.tsx
  • admin-ui/app/layout/default.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuAutocomplete.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuBooleanSelectBox.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuInlineInput.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuPermissionModal.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuSecretDetail.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuSuspenseLoader.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuToggle.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuTypeAhead.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuTypeAheadForDn.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuTypeAheadWithAdd.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuAutocomplete.test.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuSecretDetail.test.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuToggle.test.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuToggleRow.test.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuTypeAhead.test.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuTypeAheadForDn.test.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuTypeAheadWithAdd.test.tsx
  • admin-ui/app/routes/Apps/Gluu/styles/GluuPermissionModal.style.ts
  • admin-ui/app/routes/Apps/Gluu/styles/GluuSecretDetail.style.ts
  • admin-ui/app/routes/Apps/Gluu/styles/GluuToggle.style.ts
  • admin-ui/app/routes/Apps/Gluu/styles/GluuTypeAhead.style.ts
  • admin-ui/app/routes/Apps/Gluu/styles/GluuTypeAheadWithAdd.style.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuComponentPropsTypes.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuPermissionModal.types.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuToggle.types.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuTypeAhead.types.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuTypeAheadForDn.types.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuTypeAheadWithAdd.types.ts
  • admin-ui/app/routes/Apps/Gluu/types/index.ts
  • admin-ui/app/styles/plugins/_react-bootstrap-typeahead.scss
  • admin-ui/app/styles/plugins/_react-toggle.scss
  • admin-ui/app/styles/plugins/plugins.css
  • admin-ui/app/styles/plugins/plugins.scss
  • admin-ui/app/utils/__tests__/zip.test.ts
  • admin-ui/app/utils/menuFilters.ts
  • admin-ui/app/utils/zip.ts
  • admin-ui/package.json
  • admin-ui/plugins/admin/components/Assets/AssetForm.tsx
  • admin-ui/plugins/admin/components/Webhook/WebhookForm.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Acrs/Acrs.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsForm.style.ts
  • admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsForm.tsx
  • admin-ui/plugins/auth-server/components/Authentication/AgamaFlows/AgamaFlows.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Aliases/Aliases.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Authentication.tsx
  • admin-ui/plugins/auth-server/components/Authentication/DefaultAcr/DefaultAcr.tsx
  • admin-ui/plugins/auth-server/components/Authentication/types/authenticationTypes.ts
  • admin-ui/plugins/auth-server/components/OidcClients/components/ClientTokensPanel.tsx
  • admin-ui/plugins/saml/components/WebsiteSsoIdentityProviderForm.tsx
  • admin-ui/plugins/saml/components/WebsiteSsoServiceProviderForm.tsx
  • admin-ui/plugins/scripts/components/CustomScriptForm.tsx
  • admin-ui/plugins/smtp/components/SmtpForm.tsx
  • admin-ui/plugins/user-claims/__tests__/components/UserClaimsListPage.test.tsx
  • admin-ui/plugins/user-claims/__tests__/utils/attributes.test.ts
  • admin-ui/plugins/user-claims/utils/attributes.ts
💤 Files with no reviewable changes (31)
  • admin-ui/app/routes/Apps/Gluu/styles/GluuSecretDetail.style.ts
  • admin-ui/app/config/site.ts
  • admin-ui/plugins/user-claims/tests/utils/attributes.test.ts
  • admin-ui/plugins/user-claims/utils/attributes.ts
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuTypeAhead.test.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuTypeAheadWithAdd.test.tsx
  • admin-ui/app/styles/plugins/_react-bootstrap-typeahead.scss
  • admin-ui/app/components/icons/index.ts
  • admin-ui/app/routes/Apps/Gluu/GluuTypeAheadForDn.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuTypeAheadWithAdd.tsx
  • admin-ui/app/styles/plugins/_react-toggle.scss
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuTypeAheadForDn.test.tsx
  • admin-ui/app/routes/Apps/Gluu/types/GluuTypeAheadWithAdd.types.ts
  • admin-ui/app/routes/Apps/Gluu/GluuTypeAhead.tsx
  • admin-ui/app/routes/Apps/Gluu/types/GluuTypeAheadForDn.types.ts
  • admin-ui/app/routes/Apps/Gluu/styles/GluuPermissionModal.style.ts
  • admin-ui/app/routes/Apps/Gluu/styles/GluuTypeAheadWithAdd.style.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuTypeAhead.types.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuComponentPropsTypes.ts
  • admin-ui/app/routes/Apps/Gluu/GluuBooleanSelectBox.tsx
  • admin-ui/app/routes/Apps/Gluu/types/GluuPermissionModal.types.ts
  • admin-ui/app/layout/default.tsx
  • admin-ui/app/routes/Apps/Gluu/Tests/GluuSecretDetail.test.tsx
  • admin-ui/app/routes/Apps/Gluu/styles/GluuTypeAhead.style.ts
  • admin-ui/app/routes/Apps/Gluu/GluuPermissionModal.tsx
  • admin-ui/app/routes/Apps/Gluu/types/index.ts
  • admin-ui/app/styles/plugins/plugins.css
  • admin-ui/app/styles/plugins/plugins.scss
  • admin-ui/app/routes/Apps/Gluu/GluuSecretDetail.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuSuspenseLoader.tsx
  • admin-ui/package.json

Comment thread admin-ui/app/constants/site.ts Outdated
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
admin-ui/plugins/auth-server/components/Authentication/types/authenticationTypes.ts (1)

9-13: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Preserve hide in the centralized property contract.

AuthNItem.configurationProperties still models hide?: boolean, but AcrsFormValues.configurationProperties is now narrowed to PropertyConfig[] without that field. Downstream, getPropertiesConfig() drops hide and transformConfigurationProperties() rewrites every row to hide: false, so opening and saving an ACR with hidden properties silently unhides them.

♻️ Proposed fix
 export type ConfigurationProperty = {
   key?: string
   value?: string
   value1?: string
   value2?: string
   hide?: boolean
 }

-export type PropertyConfig = {
+export type PropertyConfig = ConfigurationProperty & {
   id: string
   key: string
   value: string
-}
+}

Then keep that field during the round-trip in admin-ui/plugins/auth-server/components/Authentication/Acrs/helper/acrUtils.ts:

     return entry.configurationProperties.map((e) => ({
       id: crypto.randomUUID(),
       key: e.key || e.value1 || '',
       value: e.value || e.value2 || '',
+      hide: e.hide ?? false,
     }))
@@
     .map((e) => ({
       value1: e.key || e.value1 || '',
       value2: e.value || e.value2 || '',
-      hide: false,
+      hide: e.hide ?? false,
     }))

Also applies to: 94-94

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@admin-ui/plugins/auth-server/components/Authentication/types/authenticationTypes.ts`
around lines 9 - 13, PropertyConfig currently lacks the optional hide flag
causing hidden properties to be lost; add hide?: boolean to the PropertyConfig
type and update the round-trip logic so hide is preserved: adjust
AuthNItem.configurationProperties / AcrsFormValues.configurationProperties
typing to include hide, and modify getPropertiesConfig() and
transformConfigurationProperties() so they carry through existing row.hide (do
not unconditionally set hide: false) and only default to false when hide is
undefined.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@admin-ui/app/components/Layout/Layout.tsx`:
- Around line 91-92: The default pageDescription value in the Layout component
is incorrect; update the literal assigned to pageDescription in Layout.tsx to
exactly match the previous siteDescription constant ("Jans-server admin Ui") so
capitalization is consistent—locate the pageDescription property in the exported
metadata/object in Layout.tsx and change its string to match the siteDescription
constant.

---

Duplicate comments:
In
`@admin-ui/plugins/auth-server/components/Authentication/types/authenticationTypes.ts`:
- Around line 9-13: PropertyConfig currently lacks the optional hide flag
causing hidden properties to be lost; add hide?: boolean to the PropertyConfig
type and update the round-trip logic so hide is preserved: adjust
AuthNItem.configurationProperties / AcrsFormValues.configurationProperties
typing to include hide, and modify getPropertiesConfig() and
transformConfigurationProperties() so they carry through existing row.hide (do
not unconditionally set hide: false) and only default to false when hide is
undefined.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: e2266653-3632-40e6-847d-9b659507dfa0

📥 Commits

Reviewing files that changed from the base of the PR and between dedf767 and dd81cee.

📒 Files selected for processing (6)
  • admin-ui/app/components/Layout/Layout.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuAutocomplete.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsForm.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Acrs/helper/acrUtils.ts
  • admin-ui/plugins/auth-server/components/Authentication/types/authenticationTypes.ts
  • admin-ui/plugins/auth-server/components/OidcClients/components/ClientTokensPanel.tsx

Comment thread admin-ui/app/components/Layout/Layout.tsx Outdated
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx (1)

235-241: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Log the full error object, not just the message, for diagnostic stack traces.

Line 237 logs only error.message, but the catch block filters for non-API errors (!('response' in error)). Per codebase convention, non-network client-side errors should include the full stack trace for diagnostics.

🛡️ Proposed fix
       } catch (error) {
         if (error instanceof Error && !('response' in error)) {
-          logger.error('Unexpected error during form submission:', error.message)
+          logger.error('Unexpected error during form submission:', error instanceof Error ? error : String(error))
           handleError(error)
         }
         setIsSubmitting(false)
       }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx`
around lines 235 - 241, The catch block in the error handling section is logging
only error.message for non-API errors, but the full error object should be
logged to include stack trace information for diagnostic purposes. In the catch
block where the error instanceof Error check is performed, change the
logger.error call to pass the full error object instead of just error.message so
that the stack trace is captured according to codebase conventions for
client-side errors.

Source: Learnings

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@admin-ui/plugins/auth-server/components/Authentication/AgamaFlows/AgamaFlows.tsx`:
- Line 377: The error parameter logged in the FileReader.onerror handler at line
377 is a ProgressEvent object, not an Error object. Instead of logging the
ProgressEvent directly, access the actual error information from the
FileReader's error property. Modify the logger.error call to inspect and log the
FileReader's error details (such as event.target.error or this.error depending
on context) to provide meaningful error information for debugging, following the
DOM operation patterns established in PR 2876.

---

Outside diff comments:
In
`@admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx`:
- Around line 235-241: The catch block in the error handling section is logging
only error.message for non-API errors, but the full error object should be
logged to include stack trace information for diagnostic purposes. In the catch
block where the error instanceof Error check is performed, change the
logger.error call to pass the full error object instead of just error.message so
that the stack trace is captured according to codebase conventions for
client-side errors.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1ae31c0e-735e-42a9-9618-c17eeb82a08c

📥 Commits

Reviewing files that changed from the base of the PR and between dd81cee and 0abafe6.

📒 Files selected for processing (8)
  • admin-ui/app/components/Layout/Layout.tsx
  • admin-ui/app/layout/default.tsx
  • admin-ui/app/utils/menuFilters.ts
  • admin-ui/plugins/admin/components/Webhook/WebhookForm.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx
  • admin-ui/plugins/auth-server/components/Authentication/AgamaFlows/AgamaFlows.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Aliases/Aliases.tsx
  • admin-ui/plugins/auth-server/components/Authentication/DefaultAcr/DefaultAcr.tsx

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx (1)

235-241: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Log the full error object, not just the message, for diagnostic stack traces.

Line 237 logs only error.message, but the catch block filters for non-API errors (!('response' in error)). Per codebase convention, non-network client-side errors should include the full stack trace for diagnostics.

🛡️ Proposed fix
       } catch (error) {
         if (error instanceof Error && !('response' in error)) {
-          logger.error('Unexpected error during form submission:', error.message)
+          logger.error('Unexpected error during form submission:', error instanceof Error ? error : String(error))
           handleError(error)
         }
         setIsSubmitting(false)
       }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx`
around lines 235 - 241, The catch block in the error handling section is logging
only error.message for non-API errors, but the full error object should be
logged to include stack trace information for diagnostic purposes. In the catch
block where the error instanceof Error check is performed, change the
logger.error call to pass the full error object instead of just error.message so
that the stack trace is captured according to codebase conventions for
client-side errors.

Source: Learnings

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@admin-ui/plugins/auth-server/components/Authentication/AgamaFlows/AgamaFlows.tsx`:
- Line 377: The error parameter logged in the FileReader.onerror handler at line
377 is a ProgressEvent object, not an Error object. Instead of logging the
ProgressEvent directly, access the actual error information from the
FileReader's error property. Modify the logger.error call to inspect and log the
FileReader's error details (such as event.target.error or this.error depending
on context) to provide meaningful error information for debugging, following the
DOM operation patterns established in PR 2876.

---

Outside diff comments:
In
`@admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx`:
- Around line 235-241: The catch block in the error handling section is logging
only error.message for non-API errors, but the full error object should be
logged to include stack trace information for diagnostic purposes. In the catch
block where the error instanceof Error check is performed, change the
logger.error call to pass the full error object instead of just error.message so
that the stack trace is captured according to codebase conventions for
client-side errors.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1ae31c0e-735e-42a9-9618-c17eeb82a08c

📥 Commits

Reviewing files that changed from the base of the PR and between dd81cee and 0abafe6.

📒 Files selected for processing (8)
  • admin-ui/app/components/Layout/Layout.tsx
  • admin-ui/app/layout/default.tsx
  • admin-ui/app/utils/menuFilters.ts
  • admin-ui/plugins/admin/components/Webhook/WebhookForm.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Acrs/AcrsEditPage.tsx
  • admin-ui/plugins/auth-server/components/Authentication/AgamaFlows/AgamaFlows.tsx
  • admin-ui/plugins/auth-server/components/Authentication/Aliases/Aliases.tsx
  • admin-ui/plugins/auth-server/components/Authentication/DefaultAcr/DefaultAcr.tsx
🛑 Comments failed to post (1)
admin-ui/plugins/auth-server/components/Authentication/AgamaFlows/AgamaFlows.tsx (1)

377-377: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

FileReader error handling should inspect error object, not log the ProgressEvent directly.

Line 377 logs error from FileReader.onerror, which is a ProgressEvent, not an Error. Per established patterns for DOM operations (learnings from PR 2876), this should destructure or inspect the error object:

     reader.onerror = (error) => {
-      logger.error('Error reading SHA256 file:', error)
+      const readerError = reader.error
+      logger.error('Error reading SHA256 file:', readerError instanceof Error ? readerError : String(readerError))
       toast.error('Failed to read SHA256 file')
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

      reader.onerror = (error) => {
        const readerError = reader.error
        logger.error('Error reading SHA256 file:', readerError instanceof Error ? readerError : String(readerError))
        toast.error('Failed to read SHA256 file')
      }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@admin-ui/plugins/auth-server/components/Authentication/AgamaFlows/AgamaFlows.tsx`
at line 377, The error parameter logged in the FileReader.onerror handler at
line 377 is a ProgressEvent object, not an Error object. Instead of logging the
ProgressEvent directly, access the actual error information from the
FileReader's error property. Modify the logger.error call to inspect and log the
FileReader's error details (such as event.target.error or this.error depending
on context) to provide meaningful error information for debugging, following the
DOM operation patterns established in PR 2876.

Source: Learnings

Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
duttarnab
duttarnab previously approved these changes Jun 16, 2026
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@admin-ui/plugins/user-management/components/UserForm.tsx`:
- Around line 187-193: The isTrackedChange function incorrectly marks all arrays
as tracked changes due to the condition Array.isArray(value) at line 189, which
returns true even for empty arrays. This causes empty arrays to always be
considered modified even when the initial value is also an empty array. Modify
the condition to check if the array is non-empty before marking it as a tracked
change, or better yet, remove the Array.isArray check entirely and let the
comparison logic handle array equality by checking if the current value differs
meaningfully from the initial value. This fix should be applied in the
isTrackedChange callback to ensure empty arrays are only marked as changes when
the initial value is actually different.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: c41b3cef-a01b-4d7f-8b61-5e37e9a3522a

📥 Commits

Reviewing files that changed from the base of the PR and between 0abafe6 and 6a5febf.

📒 Files selected for processing (19)
  • admin-ui/app/routes/Apps/Gluu/GluuCommitDialog.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuRemovableInputRow.tsx
  • admin-ui/app/routes/Apps/Gluu/GluuSelectRow.tsx
  • admin-ui/app/routes/Apps/Gluu/styles/GluuRemovableInputRow.style.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuCommitDialog.types.ts
  • admin-ui/app/routes/Apps/Gluu/types/GluuSelectRow.types.ts
  • admin-ui/app/utils/logLevel.ts
  • admin-ui/plugins/admin/components/Settings/SettingsPage.tsx
  • admin-ui/plugins/scripts/components/CustomScriptForm.tsx
  • admin-ui/plugins/scripts/components/styles/CustomScriptFormPage.style.ts
  • admin-ui/plugins/user-claims/components/styles/UserClaimsFormPage.style.ts
  • admin-ui/plugins/user-management/common/Constants.ts
  • admin-ui/plugins/user-management/components/AvailableClaimsPanel.tsx
  • admin-ui/plugins/user-management/components/UserClaimEntry.tsx
  • admin-ui/plugins/user-management/components/UserEditPage.tsx
  • admin-ui/plugins/user-management/components/UserForm.style.ts
  • admin-ui/plugins/user-management/components/UserForm.tsx
  • admin-ui/plugins/user-management/utils/attributeTransformUtils.ts
  • admin-ui/plugins/user-management/utils/userFormUtils.ts
💤 Files with no reviewable changes (1)
  • admin-ui/plugins/user-management/components/UserEditPage.tsx

Comment thread admin-ui/plugins/user-management/components/UserForm.tsx Outdated
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@admin-ui/plugins/user-management/components/UserForm.tsx`:
- Around line 187-191: The isTrackedChange function currently marks a field as
modified whenever the new value is non-empty, without comparing it to the actual
initial value. This causes false positives when a user reverts a field to its
original non-empty value. Fix this by comparing the current value parameter
against formik.initialValues[name] for equality instead of just checking if
values are empty. The function should return true only when the value has
actually changed from its initial state.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 88e30078-384a-4ec4-b315-ba187788f19f

📥 Commits

Reviewing files that changed from the base of the PR and between 6a5febf and 538f4ee.

📒 Files selected for processing (3)
  • admin-ui/app/routes/Apps/Gluu/GluuWebhookExecutionDialog.tsx
  • admin-ui/app/routes/Apps/Gluu/styles/GluuWebhookExecutionDialog.style.ts
  • admin-ui/plugins/user-management/components/UserForm.tsx
💤 Files with no reviewable changes (1)
  • admin-ui/app/routes/Apps/Gluu/styles/GluuWebhookExecutionDialog.style.ts

Comment thread admin-ui/plugins/user-management/components/UserForm.tsx Outdated
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
Signed-off-by: faisalsiddique4400 <faisalsiddique10886@gmail.com>
@sonarqubecloud

Copy link
Copy Markdown

@duttarnab duttarnab merged commit 927ada5 into main Jun 17, 2026
8 checks passed
@duttarnab duttarnab deleted the admin-ui-issue-2878 branch June 17, 2026 08:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp-admin-ui Component affected by issue or PR kind-dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(admin-ui): removal two more redundant UI dependencies

3 participants