diff --git a/js/apps/admin-ui/cypress/support/pages/admin-ui/manage/identity_providers/ProviderBaseAdvancedSettingsPage.ts b/js/apps/admin-ui/cypress/support/pages/admin-ui/manage/identity_providers/ProviderBaseAdvancedSettingsPage.ts index d70fdd615c..b9196279e3 100644 --- a/js/apps/admin-ui/cypress/support/pages/admin-ui/manage/identity_providers/ProviderBaseAdvancedSettingsPage.ts +++ b/js/apps/admin-ui/cypress/support/pages/admin-ui/manage/identity_providers/ProviderBaseAdvancedSettingsPage.ts @@ -485,7 +485,7 @@ export default class ProviderBaseGeneralSettingsPage extends PageObject { this.selectFirstLoginFlowOption(LoginFlowOption.browser); this.selectPostLoginFlowOption(LoginFlowOption.directGrant); - this.selectSyncModeOption(SyncModeOption.legacy); + this.selectSyncModeOption(SyncModeOption.import); this.clickRevertBtn(); cy.get(this.#advancedSettingsToggle).scrollIntoView().click(); @@ -498,7 +498,7 @@ export default class ProviderBaseGeneralSettingsPage extends PageObject { this.assertFirstLoginFlowSelectOptionEqual(LoginFlowOption.empty); this.assertPostLoginFlowSelectOptionEqual(LoginFlowOption.none); - this.assertSyncModeSelectOptionEqual(SyncModeOption.import); + this.assertSyncModeSelectOptionEqual(SyncModeOption.legacy); this.assertClientAssertSigAlgSelectOptionEqual( ClientAssertionSigningAlg.algorithmNotSpecified, ); diff --git a/js/apps/admin-ui/src/identity-providers/add/AdvancedSettings.tsx b/js/apps/admin-ui/src/identity-providers/add/AdvancedSettings.tsx index 9849f7d7e2..098cf39cc2 100644 --- a/js/apps/admin-ui/src/identity-providers/add/AdvancedSettings.tsx +++ b/js/apps/admin-ui/src/identity-providers/add/AdvancedSettings.tsx @@ -11,16 +11,16 @@ import { import { useState } from "react"; import { Controller, useFormContext, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "ui-shared"; +import { HelpItem, SelectControl } from "ui-shared"; import { adminClient } from "../../admin-client"; +import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useFetch } from "../../utils/useFetch"; import useIsFeatureEnabled, { Feature } from "../../utils/useIsFeatureEnabled"; import type { FieldProps } from "../component/FormGroupField"; import { FormGroupField } from "../component/FormGroupField"; import { SwitchField } from "../component/SwitchField"; import { TextField } from "../component/TextField"; -import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; const LoginFlow = ({ field, @@ -90,7 +90,7 @@ const LoginFlow = ({ ); }; -const syncModes = ["import", "legacy", "force"]; +const SYNC_MODES = ["IMPORT", "LEGACY", "FORCE"]; type AdvancedSettingsProps = { isOIDC: boolean; isSAML: boolean }; export const AdvancedSettings = ({ isOIDC, isSAML }: AdvancedSettingsProps) => { @@ -101,7 +101,6 @@ export const AdvancedSettings = ({ isOIDC, isSAML }: AdvancedSettingsProps) => { setValue, formState: { errors }, } = useFormContext(); - const [syncModeOpen, setSyncModeOpen] = useState(false); const filteredByClaim = useWatch({ control, name: "config.filteredByClaim", @@ -268,46 +267,19 @@ export const AdvancedSettings = ({ isOIDC, isSAML }: AdvancedSettingsProps) => { )} {syncModeAvailable && ( - - } - fieldId="syncMode" - > - ( - - )} - /> - + labelIcon={t("syncModeHelp")} + options={SYNC_MODES.map((syncMode) => ({ + key: syncMode, + value: t(`syncModes.${syncMode.toLocaleLowerCase()}`), + }))} + controller={{ + defaultValue: SYNC_MODES[0], + rules: { required: t("required") }, + }} + /> )} );