@keycloak/keycloak-admin-ui 26.1.5 → 26.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +4 -4
  2. package/lib/.vite/manifest.json +51 -30
  3. package/lib/{CreateFlow-CJuPGQV2.js → CreateFlow-BkGiX0Bw.js} +9 -9
  4. package/lib/{CreateFlow-CJuPGQV2.js.map → CreateFlow-BkGiX0Bw.js.map} +1 -1
  5. package/lib/{DetailOrganization-BZxym2fM.js → DetailOrganization-CJKEEgO8.js} +33 -33
  6. package/lib/{DetailOrganization-BZxym2fM.js.map → DetailOrganization-CJKEEgO8.js.map} +1 -1
  7. package/lib/{ExecutorForm-DxyNT3T5.js → ExecutorForm-C9_CWJhw.js} +49 -48
  8. package/lib/ExecutorForm-C9_CWJhw.js.map +1 -0
  9. package/lib/FlowDetails-InWOgFIk.js +9025 -0
  10. package/lib/FlowDetails-InWOgFIk.js.map +1 -0
  11. package/lib/NewOrganization-D93k_LVb.js +36 -0
  12. package/lib/{NewOrganization-CdgyibqF.js.map → NewOrganization-D93k_LVb.js.map} +1 -1
  13. package/lib/PermissionConfigurationDetails-DPu0gttX.js +702 -0
  14. package/lib/PermissionConfigurationDetails-DPu0gttX.js.map +1 -0
  15. package/lib/{PermissionDetails-lynVHdOa.js → PermissionDetails-C4X5r4gF.js} +72 -72
  16. package/lib/{PermissionDetails-lynVHdOa.js.map → PermissionDetails-C4X5r4gF.js.map} +1 -1
  17. package/lib/RealmSection-DYc_8dbl.js +179 -0
  18. package/lib/RealmSection-DYc_8dbl.js.map +1 -0
  19. package/lib/ResourceDetails-BO8zlCP_.js +226 -0
  20. package/lib/ResourceDetails-BO8zlCP_.js.map +1 -0
  21. package/lib/{ScopeDetails-plfHXCXz.js → ScopeDetails-DyHGLML9.js} +35 -35
  22. package/lib/{ScopeDetails-plfHXCXz.js.map → ScopeDetails-DyHGLML9.js.map} +1 -1
  23. package/lib/ScopePicker-DxDYNCCh.js +85 -0
  24. package/lib/ScopePicker-DxDYNCCh.js.map +1 -0
  25. package/lib/authentication/components/AuthenticationProviderContext.d.ts +9 -0
  26. package/lib/authentication/components/FlowRow.d.ts +1 -0
  27. package/lib/authentication/components/FlowTitle.d.ts +5 -2
  28. package/lib/clients/add/SamlSignature.d.ts +1 -0
  29. package/lib/clients/authorization/ScopePicker.d.ts +5 -2
  30. package/lib/clients/authorization/policy/LogicSelector.d.ts +1 -1
  31. package/lib/clients/authorization/policy/NameDescription.d.ts +3 -2
  32. package/lib/clients/routes/PermissionConfigurationDetails.d.ts +10 -0
  33. package/lib/components/client/ClientSelect.d.ts +4 -2
  34. package/lib/components/dynamic/BooleanComponent.d.ts +1 -1
  35. package/lib/components/dynamic/DynamicComponents.d.ts +2 -1
  36. package/lib/components/dynamic/FileComponent.d.ts +1 -1
  37. package/lib/components/dynamic/GroupComponent.d.ts +1 -1
  38. package/lib/components/dynamic/IntComponent.d.ts +1 -1
  39. package/lib/components/dynamic/ListComponent.d.ts +1 -1
  40. package/lib/components/dynamic/MapComponent.d.ts +1 -1
  41. package/lib/components/dynamic/MultivaluedListComponent.d.ts +1 -1
  42. package/lib/components/dynamic/MultivaluedStringComponent.d.ts +1 -1
  43. package/lib/components/dynamic/NumberComponent.d.ts +1 -1
  44. package/lib/components/dynamic/PasswordComponent.d.ts +1 -1
  45. package/lib/components/dynamic/RoleComponent.d.ts +1 -1
  46. package/lib/components/dynamic/ScriptComponent.d.ts +1 -1
  47. package/lib/components/dynamic/StringComponent.d.ts +1 -1
  48. package/lib/components/dynamic/TextComponent.d.ts +1 -1
  49. package/lib/components/dynamic/UserProfileAttributeListComponent.d.ts +1 -1
  50. package/lib/components/dynamic/components.d.ts +1 -0
  51. package/lib/components/form/CodeEditor.d.ts +12 -0
  52. package/lib/components/role-mapping/AddRoleMappingModal.d.ts +1 -1
  53. package/lib/components/users/UserSelect.d.ts +1 -1
  54. package/lib/context/RecentRealms.d.ts +6 -2
  55. package/lib/i18n/i18n.d.ts +4 -0
  56. package/lib/{index-lFXE1rYJ.js → index-B5GgWXK6.js} +36279 -36318
  57. package/lib/{index-lFXE1rYJ.js.map → index-B5GgWXK6.js.map} +1 -1
  58. package/lib/index.d.ts +1 -2
  59. package/lib/keycloak-admin-ui.css +1 -1
  60. package/lib/keycloak-admin-ui.js +162 -163
  61. package/lib/organizations/IdentityProviderSelect.d.ts +1 -1
  62. package/lib/permissions-configuration/PermissionsConfigurationSection.d.ts +1 -0
  63. package/lib/permissions-configuration/permission-configuration/AssignedPolicies.d.ts +10 -0
  64. package/lib/permissions-configuration/permission-configuration/AuthorizationScopesDetails.d.ts +10 -0
  65. package/lib/permissions-configuration/permission-configuration/ExistingPoliciesDialog.d.ts +10 -0
  66. package/lib/permissions-configuration/permission-configuration/NewPermissionConfigurationDialog.d.ts +8 -0
  67. package/lib/permissions-configuration/permission-configuration/NewPermissionPolicyDialog.d.ts +13 -0
  68. package/lib/permissions-configuration/permission-configuration/PermissionConfigurationDetails.d.ts +1 -0
  69. package/lib/permissions-configuration/permission-configuration/PermissionsConfigurationTab.d.ts +5 -0
  70. package/lib/permissions-configuration/permission-evaluation/PermissionEvaluationResult.d.ts +6 -0
  71. package/lib/permissions-configuration/permission-evaluation/PermissionsEvaluationTab.d.ts +8 -0
  72. package/lib/permissions-configuration/resource-types/GroupSelect.d.ts +8 -0
  73. package/lib/permissions-configuration/resource-types/ResourceType.d.ts +11 -0
  74. package/lib/permissions-configuration/resource-types/RoleSelect.d.ts +5 -0
  75. package/lib/permissions-configuration/resource-types/SearchDropdown.d.ts +20 -0
  76. package/lib/permissions-configuration/routes/NewPermissionConfiguration.d.ts +9 -0
  77. package/lib/permissions-configuration/routes/NewPermissionPolicy.d.ts +9 -0
  78. package/lib/permissions-configuration/routes/PermissionConfigurationDetails.d.ts +10 -0
  79. package/lib/permissions-configuration/routes/PermissionPolicyDetails.d.ts +10 -0
  80. package/lib/permissions-configuration/routes/PermissionsConfiguration.d.ts +7 -0
  81. package/lib/permissions-configuration/routes/PermissionsConfigurationTabs.d.ts +10 -0
  82. package/lib/permissions-configuration/routes/PermissionsPolicies.d.ts +8 -0
  83. package/lib/realm/RealmRoutes.d.ts +7 -0
  84. package/lib/realm/RealmSection.d.ts +5 -0
  85. package/lib/realm/add/NewRealmForm.d.ts +5 -1
  86. package/lib/realm-settings/themes/ThemesTab.d.ts +1 -0
  87. package/lib/utils/useIsFeatureEnabled.d.ts +2 -1
  88. package/lib/utils/useSortedResourceTypes.d.ts +5 -0
  89. package/package.json +26 -37
  90. package/lib/ExecutorForm-DxyNT3T5.js.map +0 -1
  91. package/lib/FlowDetails-ChnCh0MX.js +0 -10786
  92. package/lib/FlowDetails-ChnCh0MX.js.map +0 -1
  93. package/lib/NewOrganization-CdgyibqF.js +0 -36
  94. package/lib/ResourceDetails-BBY9AcKD.js +0 -286
  95. package/lib/ResourceDetails-BBY9AcKD.js.map +0 -1
  96. package/lib/browser-ponyfill-CTSSxZf6.js +0 -342
  97. package/lib/browser-ponyfill-CTSSxZf6.js.map +0 -1
  98. package/lib/components/realm-selector/RealmSelector.d.ts +0 -1
  99. package/lib/permissions/PermissionsSection.d.ts +0 -1
  100. package/lib/permissions/routes/Permissions.d.ts +0 -7
  101. package/lib/permissions/routes/PermissionsTabs.d.ts +0 -9
  102. package/lib/realm/routes/AddRealm.d.ts +0 -7
  103. /package/lib/{permissions → permissions-configuration}/routes.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ import { Path } from 'react-router-dom';
2
+ import { AppRouteObject } from '../../routes';
3
+ export type PermissionsConfigurationParams = {
4
+ realm: string;
5
+ };
6
+ export declare const PermissionsConfigurationRoute: AppRouteObject;
7
+ export declare const toPermissionsConfiguration: (params: PermissionsConfigurationParams) => Partial<Path>;
@@ -0,0 +1,10 @@
1
+ import { Path } from 'react-router-dom';
2
+ import { AppRouteObject } from '../../routes';
3
+ export type PermissionsConfigurationTabs = "permissions" | "policies" | "evaluation";
4
+ export type PermissionsConfigurationTabsParams = {
5
+ realm: string;
6
+ permissionClientId: string;
7
+ tab: PermissionsConfigurationTabs;
8
+ };
9
+ export declare const PermissionsConfigurationTabsRoute: AppRouteObject;
10
+ export declare const toPermissionsConfigurationTabs: (params: PermissionsConfigurationTabsParams) => Partial<Path>;
@@ -0,0 +1,8 @@
1
+ import { Path } from 'react-router-dom';
2
+ import { AppRouteObject } from '../../routes';
3
+ export type PermissionsPoliciesParams = {
4
+ realm: string;
5
+ permissionClientId: string;
6
+ };
7
+ export declare const PermissionsPoliciesRoute: AppRouteObject;
8
+ export declare const toPermissionsPolicies: (params: PermissionsPoliciesParams) => Partial<Path>;
@@ -0,0 +1,7 @@
1
+ import { Path } from 'react-router-dom';
2
+ import { AppRouteObject } from '../routes';
3
+ export type RealmParams = {
4
+ realm: string;
5
+ };
6
+ export declare const RealmRoute: AppRouteObject;
7
+ export declare const toRealm: (params: RealmParams) => Partial<Path>;
@@ -0,0 +1,5 @@
1
+ export type RealmNameRepresentation = {
2
+ name: string;
3
+ displayName?: string;
4
+ };
5
+ export default function RealmSection(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1,5 @@
1
- export default function NewRealmForm(): import("react/jsx-runtime").JSX.Element;
1
+ type NewRealmFormProps = {
2
+ onClose: () => void;
3
+ };
4
+ export default function NewRealmForm({ onClose }: NewRealmFormProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -4,6 +4,7 @@ type ThemesTabProps = {
4
4
  save: (realm: RealmRepresentation) => void;
5
5
  };
6
6
  export type ThemeRealmRepresentation = RealmRepresentation & {
7
+ favicon?: File;
7
8
  logo?: File;
8
9
  bgimage?: File;
9
10
  };
@@ -11,6 +11,7 @@ export declare enum Feature {
11
11
  DeclarativeUI = "DECLARATIVE_UI",
12
12
  Organizations = "ORGANIZATION",
13
13
  OpenId4VCI = "OID4VC_VCI",
14
- QuickTheme = "QUICK_THEME"
14
+ QuickTheme = "QUICK_THEME",
15
+ StandardTokenExchangeV2 = "TOKEN_EXCHANGE_STANDARD_V2"
15
16
  }
16
17
  export default function useIsFeatureEnabled(): (feature: Feature) => boolean;
@@ -0,0 +1,5 @@
1
+ type UseSortedResourceTypesProps = {
2
+ clientId: string;
3
+ };
4
+ export default function useSortedResourceTypes({ clientId, }: UseSortedResourceTypesProps): import('@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation').ResourceTypesRepresentation[];
5
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keycloak/keycloak-admin-ui",
3
- "version": "26.1.5",
3
+ "version": "26.2.0",
4
4
  "type": "module",
5
5
  "main": "lib/keycloak-admin-ui.js",
6
6
  "types": "./lib/keycloak-admin-ui.d.ts",
@@ -48,7 +48,7 @@
48
48
  ]
49
49
  },
50
50
  "build-lib": {
51
- "command": "LIB=true vite build",
51
+ "command": "cross-env LIB=true vite build",
52
52
  "dependencies": [
53
53
  "../../libs/ui-shared:build",
54
54
  "../../libs/keycloak-admin-client:build"
@@ -67,64 +67,56 @@
67
67
  "../../libs/ui-shared:build",
68
68
  "../../libs/keycloak-admin-client:build"
69
69
  ]
70
- },
71
- "cy:check-types": {
72
- "command": "tsc --project cypress/tsconfig.json",
73
- "dependencies": [
74
- "../../libs/keycloak-admin-client:build"
75
- ]
76
70
  }
77
71
  },
78
72
  "dependencies": {
73
+ "@dagrejs/dagre": "^1.1.4",
79
74
  "@patternfly/patternfly": "^5.4.2",
80
- "@patternfly/react-core": "^5.4.10",
75
+ "@patternfly/react-core": "^5.4.14",
81
76
  "@patternfly/react-icons": "^5.4.2",
82
77
  "@patternfly/react-styles": "^5.4.1",
83
- "@patternfly/react-table": "^5.4.13",
78
+ "@patternfly/react-table": "^5.4.16",
84
79
  "@uiw/react-textarea-code-editor": "^3.1.0",
85
80
  "admin-ui": "file:",
86
- "dagre": "^0.8.5",
87
81
  "file-saver": "^2.0.5",
88
82
  "flat": "^6.0.1",
89
- "i18next": "^24.2.1",
90
- "i18next-http-backend": "^3.0.1",
83
+ "i18next": "^24.2.3",
84
+ "i18next-fetch-backend": "^6.0.0",
91
85
  "jszip": "^3.10.1",
86
+ "keycloak-js": "^26.2.0",
92
87
  "lodash-es": "^4.17.21",
93
88
  "p-debounce": "^4.0.0",
94
89
  "react": "^18.3.1",
95
90
  "react-dom": "^18.3.1",
96
91
  "react-hook-form": "^7.54.2",
97
- "react-i18next": "^15.4.0",
98
- "react-router-dom": "^6.28.1",
92
+ "react-i18next": "^15.4.1",
93
+ "react-router-dom": "^6.30.0",
99
94
  "reactflow": "^11.11.4",
100
95
  "use-react-router-breadcrumbs": "^4.0.1",
101
- "@keycloak/keycloak-admin-client": "26.1.5",
102
- "@keycloak/keycloak-ui-shared": "26.1.5",
103
- "keycloak-js": "26.1.5"
96
+ "@keycloak/keycloak-admin-client": "26.2.0",
97
+ "@keycloak/keycloak-ui-shared": "26.2.0"
104
98
  },
105
99
  "devDependencies": {
106
- "@4tw/cypress-drag-drop": "^2.2.5",
107
- "@testing-library/cypress": "^10.0.2",
100
+ "@axe-core/playwright": "^4.10.1",
101
+ "@playwright/test": "^1.51.1",
108
102
  "@testing-library/dom": "^10.4.0",
109
103
  "@testing-library/jest-dom": "^6.6.3",
110
- "@testing-library/react": "^16.1.0",
104
+ "@testing-library/react": "^16.3.0",
111
105
  "@types/dagre": "^0.7.52",
112
106
  "@types/file-saver": "^2.0.7",
113
107
  "@types/lodash-es": "^4.17.12",
114
- "@types/react": "^18.3.13",
115
- "@types/react-dom": "^18.3.1",
116
- "@vitejs/plugin-react-swc": "^3.7.2",
117
- "cypress": "^13.17.0",
118
- "cypress-axe": "^1.5.0",
119
- "cypress-split": "^1.24.7",
108
+ "@types/react": "^18.3.18",
109
+ "@types/react-dom": "^18.3.5",
110
+ "@vitejs/plugin-react-swc": "^3.8.1",
111
+ "cross-env": "^7.0.3",
120
112
  "jsdom": "^26.0.0",
121
- "ldap-server-mock": "^6.0.1",
122
- "lightningcss": "^1.28.2",
113
+ "lightningcss": "^1.29.3",
123
114
  "ts-node": "^10.9.2",
124
- "vite": "^6.0.7",
125
- "vite-plugin-checker": "^0.8.0",
126
- "vite-plugin-dts": "^4.5.0",
127
- "vitest": "^2.1.8"
115
+ "uuid": "^11.1.0",
116
+ "vite": "^6.2.5",
117
+ "vite-plugin-checker": "^0.9.1",
118
+ "vite-plugin-dts": "^4.5.3",
119
+ "vitest": "^3.1.1"
128
120
  },
129
121
  "scripts": {
130
122
  "dev": "wireit",
@@ -133,9 +125,6 @@
133
125
  "preview": "wireit",
134
126
  "lint": "wireit",
135
127
  "test": "wireit",
136
- "cy:open": "cypress open --e2e --browser chrome",
137
- "cy:run": "cypress run --browser chrome",
138
- "cy:check-types": "wireit",
139
- "cy:ldap-server": "ldap-server-mock --conf=./cypress/fixtures/ldap/server.json --database=./cypress/fixtures/ldap/users.json"
128
+ "test:integration": "playwright test"
140
129
  }
141
130
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExecutorForm-DxyNT3T5.js","sources":["../src/realm-settings/ExecutorForm.tsx"],"sourcesContent":["import type { ConfigPropertyRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/authenticatorConfigInfoRepresentation\";\nimport type ClientProfileRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientProfileRepresentation\";\nimport type ComponentTypeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/componentTypeRepresentation\";\nimport {\n HelpItem,\n KeycloakSelect,\n SelectVariant,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n FormGroup,\n PageSection,\n SelectOption,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { DynamicComponents } from \"../components/dynamic/DynamicComponents\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useServerInfo } from \"../context/server-info/ServerInfoProvider\";\nimport { useParams } from \"../utils/useParams\";\nimport { ClientProfileParams, toClientProfile } from \"./routes/ClientProfile\";\nimport type { ExecutorParams } from \"./routes/Executor\";\n\ntype ExecutorForm = {\n config?: object;\n executor: string;\n};\n\nconst defaultValues: ExecutorForm = {\n config: {},\n executor: \"\",\n};\n\nexport default function ExecutorForm() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { realm, profileName } = useParams<ClientProfileParams>();\n const { executorName } = useParams<ExecutorParams>();\n const { addAlert, addError } = useAlerts();\n const [selectExecutorTypeOpen, setSelectExecutorTypeOpen] = useState(false);\n const serverInfo = useServerInfo();\n const executorTypes =\n serverInfo.componentTypes?.[\n \"org.keycloak.services.clientpolicy.executor.ClientPolicyExecutorProvider\"\n ];\n const [executors, setExecutors] = useState<ComponentTypeRepresentation[]>([]);\n const [executorProperties, setExecutorProperties] = useState<\n ConfigPropertyRepresentation[]\n >([]);\n const [globalProfiles, setGlobalProfiles] = useState<\n ClientProfileRepresentation[]\n >([]);\n const [profiles, setProfiles] = useState<ClientProfileRepresentation[]>([]);\n const form = useForm({ defaultValues });\n const { control, reset, handleSubmit } = form;\n const editMode = !!executorName;\n\n const setupForm = (profiles: ClientProfileRepresentation[]) => {\n const profile = profiles.find((profile) => profile.name === profileName);\n const executor = profile?.executors?.find(\n (executor) => executor.executor === executorName,\n );\n if (executor) reset({ config: executor.configuration });\n };\n\n useFetch(\n () =>\n adminClient.clientPolicies.listProfiles({ includeGlobalProfiles: true }),\n (profiles) => {\n setGlobalProfiles(profiles.globalProfiles!);\n setProfiles(profiles.profiles!);\n\n setupForm(profiles.profiles!);\n setupForm(profiles.globalProfiles!);\n },\n [],\n );\n\n const save = async () => {\n const formValues = form.getValues();\n const updatedProfiles = profiles.map((profile) => {\n if (profile.name !== profileName) {\n return profile;\n }\n\n const executors = (profile.executors ?? []).concat({\n executor: formValues.executor,\n configuration: formValues.config || {},\n });\n\n if (editMode) {\n const profileExecutor = profile.executors!.find(\n (executor) => executor.executor === executorName,\n );\n profileExecutor!.configuration = {\n ...profileExecutor!.configuration,\n ...formValues.config,\n };\n }\n\n if (editMode) {\n return profile;\n }\n return {\n ...profile,\n executors,\n };\n });\n try {\n await adminClient.clientPolicies.createProfiles({\n profiles: updatedProfiles,\n globalProfiles: globalProfiles,\n });\n addAlert(\n editMode ? t(\"updateExecutorSuccess\") : t(\"addExecutorSuccess\"),\n AlertVariant.success,\n );\n\n navigate(toClientProfile({ realm, profileName }));\n } catch (error) {\n addError(editMode ? \"updateExecutorError\" : \"addExecutorError\", error);\n }\n };\n\n const globalProfile = globalProfiles.find(\n (globalProfile) => globalProfile.name === profileName,\n );\n\n const profileExecutorType = executorTypes?.find(\n (executor) => executor.id === executorName,\n );\n\n const editedProfileExecutors =\n profileExecutorType?.properties.map<ConfigPropertyRepresentation>(\n (property) => {\n const globalDefaultValues = editMode ? property.defaultValue : \"\";\n return {\n ...property,\n defaultValue: globalDefaultValues,\n };\n },\n );\n\n return (\n <>\n <ViewHeader\n titleKey={editMode ? executorName : t(\"addExecutor\")}\n divider\n />\n <PageSection variant=\"light\">\n <FormAccess\n isHorizontal\n role=\"manage-realm\"\n className=\"pf-v5-u-mt-lg\"\n isReadOnly={!!globalProfile}\n >\n <FormGroup\n label={t(\"executorType\")}\n fieldId=\"kc-executorType\"\n labelIcon={\n executors.length > 0 && executors[0].helpText! !== \"\" ? (\n <HelpItem\n helpText={executors[0].helpText}\n fieldLabelId=\"executorTypeHelpText\"\n />\n ) : editMode ? (\n <HelpItem\n helpText={profileExecutorType?.helpText}\n fieldLabelId=\"executorTypeHelpText\"\n />\n ) : undefined\n }\n >\n <Controller\n name=\"executor\"\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n <KeycloakSelect\n toggleId=\"kc-executor\"\n placeholderText=\"Select an executor\"\n onToggle={(isOpen) => setSelectExecutorTypeOpen(isOpen)}\n onSelect={(value) => {\n reset({ ...defaultValues, executor: value.toString() });\n const selectedExecutor = executorTypes?.filter(\n (type) => type.id === value,\n );\n setExecutors(selectedExecutor ?? []);\n setExecutorProperties(\n selectedExecutor?.[0].properties ?? [],\n );\n setSelectExecutorTypeOpen(false);\n }}\n selections={editMode ? executorName : field.value}\n variant={SelectVariant.single}\n data-testid=\"executorType-select\"\n aria-label={t(\"executorType\")}\n isOpen={selectExecutorTypeOpen}\n maxHeight={580}\n isDisabled={editMode}\n >\n {executorTypes?.map((option) => (\n <SelectOption\n selected={option.id === field.value}\n key={option.id}\n value={option.id}\n description={option.helpText}\n >\n {option.id}\n </SelectOption>\n ))}\n </KeycloakSelect>\n )}\n />\n </FormGroup>\n <FormProvider {...form}>\n <DynamicComponents\n properties={\n editMode ? editedProfileExecutors! : executorProperties\n }\n />\n </FormProvider>\n {!globalProfile && (\n <ActionGroup>\n <Button\n variant=\"primary\"\n onClick={() => handleSubmit(save)()}\n data-testid=\"addExecutor-saveBtn\"\n >\n {editMode ? t(\"save\") : t(\"add\")}\n </Button>\n <Button\n variant=\"link\"\n component={(props) => (\n <Link\n {...props}\n to={toClientProfile({ realm, profileName })}\n />\n )}\n data-testid=\"addExecutor-cancelBtn\"\n >\n {t(\"cancel\")}\n </Button>\n </ActionGroup>\n )}\n </FormAccess>\n {editMode && globalProfile && (\n <div className=\"kc-backToProfile\">\n <Button\n component={(props) => (\n <Link {...props} to={toClientProfile({ realm, profileName })} />\n )}\n variant=\"primary\"\n >\n {t(\"back\")}\n </Button>\n </div>\n )}\n </PageSection>\n </>\n );\n}\n"],"names":["defaultValues","ExecutorForm","adminClient","useAdminClient","t","useTranslation","navigate","useNavigate","realm","profileName","useParams","executorName","addAlert","addError","useAlerts","selectExecutorTypeOpen","setSelectExecutorTypeOpen","useState","executorTypes","useServerInfo","executors","setExecutors","executorProperties","setExecutorProperties","globalProfiles","setGlobalProfiles","profiles","setProfiles","form","useForm","control","reset","handleSubmit","editMode","setupForm","executor","profile","useFetch","save","formValues","updatedProfiles","profileExecutor","AlertVariant","toClientProfile","error","globalProfile","profileExecutorType","editedProfileExecutors","property","globalDefaultValues","jsxs","Fragment","jsx","ViewHeader","PageSection","FormAccess","FormGroup","HelpItem","Controller","field","KeycloakSelect","isOpen","value","selectedExecutor","type","SelectVariant","option","SelectOption","FormProvider","DynamicComponents","ActionGroup","Button","props","Link"],"mappings":"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"}