@keycloak/keycloak-admin-ui 26.7.5 → 26.8.1

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 (74) hide show
  1. package/README.md +10 -0
  2. package/lib/.vite/manifest.json +52 -42
  3. package/lib/{AddDefaultTrust-BvsWwMDh.js → AddDefaultTrust-CmFBoVLh.js} +8 -8
  4. package/lib/{AddDefaultTrust-BvsWwMDh.js.map → AddDefaultTrust-CmFBoVLh.js.map} +1 -1
  5. package/lib/{AddJWTAuthorizationGrant-ByBPPwyK.js → AddJWTAuthorizationGrant-10wBuQUL.js} +12 -12
  6. package/lib/{AddJWTAuthorizationGrant-ByBPPwyK.js.map → AddJWTAuthorizationGrant-10wBuQUL.js.map} +1 -1
  7. package/lib/{AddKubernetesConnect-D4xTogVo.js → AddKubernetesConnect-CcEeza2C.js} +14 -11
  8. package/lib/AddKubernetesConnect-CcEeza2C.js.map +1 -0
  9. package/lib/{AddOAuth2-BDmTZ-YA.js → AddOAuth2-BBzSU5dK.js} +13 -13
  10. package/lib/{AddOAuth2-BDmTZ-YA.js.map → AddOAuth2-BBzSU5dK.js.map} +1 -1
  11. package/lib/AddOid4Vp-bpNno26D.js +73 -0
  12. package/lib/AddOid4Vp-bpNno26D.js.map +1 -0
  13. package/lib/{AddSpiffeConnect-B6_E1i6Z.js → AddSpiffeConnect-DDjtR--d.js} +8 -8
  14. package/lib/{AddSpiffeConnect-B6_E1i6Z.js.map → AddSpiffeConnect-DDjtR--d.js.map} +1 -1
  15. package/lib/{CreateFlow-C5QWzOsy.js → CreateFlow-BE5SrsQ8.js} +2 -2
  16. package/lib/{CreateFlow-C5QWzOsy.js.map → CreateFlow-BE5SrsQ8.js.map} +1 -1
  17. package/lib/DetailOrganization-Bu32j7ib.js +420 -0
  18. package/lib/DetailOrganization-Bu32j7ib.js.map +1 -0
  19. package/lib/{ExecutorForm-n3e9Qvrl.js → ExecutorForm-Dh_cpjdf.js} +23 -23
  20. package/lib/{ExecutorForm-n3e9Qvrl.js.map → ExecutorForm-Dh_cpjdf.js.map} +1 -1
  21. package/lib/{FlowDetails-CnVZXaRP.js → FlowDetails-CFTkvTDA.js} +243 -226
  22. package/lib/{FlowDetails-CnVZXaRP.js.map → FlowDetails-CFTkvTDA.js.map} +1 -1
  23. package/lib/{NewOrganization-D4X_bhyD.js → NewOrganization-D_Mml2TC.js} +13 -13
  24. package/lib/NewOrganization-D_Mml2TC.js.map +1 -0
  25. package/lib/{PermissionConfigurationDetails-UjUwrvYu.js → PermissionConfigurationDetails-n1d3Hq-O.js} +92 -91
  26. package/lib/PermissionConfigurationDetails-n1d3Hq-O.js.map +1 -0
  27. package/lib/PermissionDetails-DL0juJDV.js +437 -0
  28. package/lib/PermissionDetails-DL0juJDV.js.map +1 -0
  29. package/lib/{RealmSection-BTCX9rHA.js → RealmSection-CQax8V1F.js} +26 -26
  30. package/lib/{RealmSection-BTCX9rHA.js.map → RealmSection-CQax8V1F.js.map} +1 -1
  31. package/lib/{ResourceDetails-C3cyeLL5.js → ResourceDetails-D_029Hz8.js} +24 -24
  32. package/lib/{ResourceDetails-C3cyeLL5.js.map → ResourceDetails-D_029Hz8.js.map} +1 -1
  33. package/lib/{ScopeDetails-C16qMBw-.js → ScopeDetails-BUCey3vn.js} +17 -17
  34. package/lib/{ScopeDetails-C16qMBw-.js.map → ScopeDetails-BUCey3vn.js.map} +1 -1
  35. package/lib/{ScopePicker-DbxK9g9R.js → ScopePicker-lTpi2ES9.js} +18 -18
  36. package/lib/{ScopePicker-DbxK9g9R.js.map → ScopePicker-lTpi2ES9.js.map} +1 -1
  37. package/lib/{WorkflowDetailForm-d5rClboG.js → WorkflowDetailForm-BeobAJDg.js} +31 -31
  38. package/lib/{WorkflowDetailForm-d5rClboG.js.map → WorkflowDetailForm-BeobAJDg.js.map} +1 -1
  39. package/lib/{WorkflowsSection-DRU3QF93.js → WorkflowsSection-ZFKvDu9e.js} +16 -16
  40. package/lib/{WorkflowsSection-DRU3QF93.js.map → WorkflowsSection-ZFKvDu9e.js.map} +1 -1
  41. package/lib/apps/admin-ui/src/authentication/constants.d.ts +3 -1
  42. package/lib/apps/admin-ui/src/client-scopes/details/oid4vciAttributes.d.ts +8 -3
  43. package/lib/apps/admin-ui/src/clients/ssf/tabs/CreateStreamForm.d.ts +18 -0
  44. package/lib/apps/admin-ui/src/clients/ssf/utils.d.ts +13 -0
  45. package/lib/apps/admin-ui/src/components/client/ClientSelect.d.ts +3 -4
  46. package/lib/apps/admin-ui/src/components/client/ClientSelectModal.d.ts +8 -0
  47. package/lib/apps/admin-ui/src/components/group/GroupPickerDialog.d.ts +8 -2
  48. package/lib/apps/admin-ui/src/components/role-mapping/RoleMapping.d.ts +1 -32
  49. package/lib/apps/admin-ui/src/components/role-mapping/resource.d.ts +9 -1
  50. package/lib/apps/admin-ui/src/context/identity-provider/IdentityProviderContext.d.ts +12 -0
  51. package/lib/apps/admin-ui/src/identity-providers/add/AddOid4Vp.d.ts +1 -0
  52. package/lib/apps/admin-ui/src/identity-providers/add/IdpDomainsTab.d.ts +5 -0
  53. package/lib/apps/admin-ui/src/identity-providers/add/IdpOrganizationsTab.d.ts +6 -0
  54. package/lib/apps/admin-ui/src/identity-providers/add/Oid4VpSettings.d.ts +1 -0
  55. package/lib/apps/admin-ui/src/identity-providers/routes/IdentityProvider.d.ts +1 -1
  56. package/lib/apps/admin-ui/src/identity-providers/routes/IdentityProviderOid4Vp.d.ts +7 -0
  57. package/lib/apps/admin-ui/src/organizations/DomainsTab.d.ts +1 -0
  58. package/lib/apps/admin-ui/src/organizations/IdentityProviderSelect.d.ts +4 -1
  59. package/lib/apps/admin-ui/src/organizations/MembershipTypeToggle.d.ts +9 -0
  60. package/lib/apps/admin-ui/src/organizations/OrganizationForm.d.ts +4 -1
  61. package/lib/apps/admin-ui/src/organizations/routes/EditOrganization.d.ts +1 -1
  62. package/lib/apps/admin-ui/src/realm-settings/ssf/SsfTransmitterDisableConfirmDialog.d.ts +1 -1
  63. package/lib/apps/admin-ui/src/utils/useIsFeatureEnabled.d.ts +3 -1
  64. package/lib/{index-C-D-m0EP.js → index-DAVLcnp3.js} +24150 -23208
  65. package/lib/{index-C-D-m0EP.js.map → index-DAVLcnp3.js.map} +1 -1
  66. package/lib/keycloak-admin-ui.js +75 -75
  67. package/package.json +4 -4
  68. package/lib/AddKubernetesConnect-D4xTogVo.js.map +0 -1
  69. package/lib/DetailOrganization-amJJPyq-.js +0 -204
  70. package/lib/DetailOrganization-amJJPyq-.js.map +0 -1
  71. package/lib/NewOrganization-D4X_bhyD.js.map +0 -1
  72. package/lib/PermissionConfigurationDetails-UjUwrvYu.js.map +0 -1
  73. package/lib/PermissionDetails-gUH5Lf-7.js +0 -413
  74. package/lib/PermissionDetails-gUH5Lf-7.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailOrganization-Bu32j7ib.js","sources":["../src/organizations/DomainsTab.tsx","../src/organizations/MembersSection.tsx","../src/organizations/DetailOrganization.tsx"],"sourcesContent":["import IdentityProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation\";\nimport OrganizationDomainRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/organizationDomainRepresentation\";\nimport {\n FormSubmitButton,\n KeycloakDataTable,\n ListEmptyState,\n TextControl,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n Button,\n ButtonVariant,\n Form,\n FormGroup,\n Modal,\n ModalVariant,\n PageSection,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { DefaultSwitchControl } from \"../components/SwitchControl\";\nimport { SelectControl } from \"@keycloak/keycloak-ui-shared\";\nimport { emptyFormatter, upperCaseFormatter } from \"../util\";\nimport { EditOrganizationParams } from \"./routes/EditOrganization\";\n\ntype DomainModalProps = {\n orgId: string;\n domain?: OrganizationDomainRepresentation;\n onClose: () => void;\n};\n\nconst DomainModal = ({ orgId, domain, onClose }: DomainModalProps) => {\n const { adminClient } = useAdminClient();\n const { t } = useTranslation();\n const { addAlert, addError } = useAlerts();\n const [linkedIdps, setLinkedIdps] = useState<\n IdentityProviderRepresentation[]\n >([]);\n\n useFetch(\n () => adminClient.organizations.listIdentityProviders({ orgId }),\n setLinkedIdps,\n [],\n );\n const isEdit = !!domain;\n const form = useForm<OrganizationDomainRepresentation>({\n mode: \"onChange\",\n defaultValues: {\n name: domain?.name,\n verified: domain?.verified ?? false,\n autoRedirect: domain?.autoRedirect ?? false,\n identityProviderAlias: domain?.identityProviderAlias ?? \"\",\n },\n });\n const { handleSubmit, formState } = form;\n\n const submitForm = async (data: OrganizationDomainRepresentation) => {\n try {\n const org = await adminClient.organizations.findOne({ id: orgId });\n const domains = org.domains ?? [];\n const payload = {\n verified: data.verified,\n autoRedirect: data.autoRedirect,\n identityProviderAlias: data.identityProviderAlias || undefined,\n };\n if (isEdit) {\n const target = domains.find((d) => d.name === domain.name);\n if (target) Object.assign(target, payload);\n } else {\n const name = data.name?.trim();\n if (domains.some((d) => d.name === name)) {\n addError(\"addDomainError\", t(\"duplicateDomain\"));\n return;\n }\n domains.push({ name, ...payload });\n }\n await adminClient.organizations.updateById(\n { id: orgId },\n { ...org, domains },\n );\n addAlert(t(isEdit ? \"domainUpdatedSuccess\" : \"addDomainSuccess\"));\n onClose();\n } catch (error) {\n addError(isEdit ? \"domainUpdatedError\" : \"addDomainError\", error);\n }\n };\n\n const idpOptions = [\n { key: \"\", value: t(\"none\") },\n ...linkedIdps.map((idp) => ({\n key: idp.alias!,\n value: idp.alias!,\n })),\n ];\n\n return (\n <Modal\n variant={ModalVariant.small}\n title={t(isEdit ? \"editDomain\" : \"addDomain\")}\n isOpen\n onClose={onClose}\n actions={[\n <FormSubmitButton\n formState={formState}\n data-testid=\"confirm\"\n key=\"confirm\"\n form=\"domain-form\"\n allowInvalid\n allowNonDirty\n >\n {t(\"save\")}\n </FormSubmitButton>,\n <Button\n id=\"modal-cancel\"\n data-testid=\"cancel\"\n key=\"cancel\"\n variant={ButtonVariant.link}\n onClick={onClose}\n >\n {t(\"cancel\")}\n </Button>,\n ]}\n >\n <FormProvider {...form}>\n <Form id=\"domain-form\" onSubmit={handleSubmit(submitForm)}>\n {isEdit ? (\n <FormGroup label={t(\"domain\")} fieldId=\"domain-name\">\n <span id=\"domain-name\" data-testid=\"domain-name\">\n {domain.name}\n </span>\n </FormGroup>\n ) : (\n <TextControl\n name=\"name\"\n label={t(\"domain\")}\n labelIcon={t(\"domainHelp\")}\n rules={{ required: t(\"required\") }}\n />\n )}\n <SelectControl\n name=\"identityProviderAlias\"\n label={t(\"identityProvider\")}\n labelIcon={t(\"domainIdentityProviderHelp\")}\n options={idpOptions}\n controller={{ defaultValue: \"\" }}\n />\n <DefaultSwitchControl\n name=\"autoRedirect\"\n label={t(\"autoRedirect\")}\n labelIcon={t(\"autoRedirectHelp\")}\n defaultValue={false}\n />\n </Form>\n </FormProvider>\n </Modal>\n );\n};\n\nexport const DomainsTab = () => {\n const { adminClient } = useAdminClient();\n const { t } = useTranslation();\n const { id: orgId } = useParams<EditOrganizationParams>();\n const { addAlert, addError } = useAlerts();\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n const [domainModalOpen, setDomainModalOpen] = useState(false);\n const [editingDomain, setEditingDomain] =\n useState<OrganizationDomainRepresentation>();\n const [selectedDomain, setSelectedDomain] =\n useState<OrganizationDomainRepresentation>();\n\n const loader = async () => {\n const org = await adminClient.organizations.findOne({ id: orgId! });\n return org.domains ?? [];\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"removeDomain\",\n messageKey: \"removeDomainConfirm\",\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n const org = await adminClient.organizations.findOne({ id: orgId! });\n const domains = (org.domains ?? []).filter(\n (d) => d.name !== selectedDomain?.name,\n );\n await adminClient.organizations.updateById(\n { id: orgId! },\n { ...org, domains },\n );\n setSelectedDomain(undefined);\n addAlert(t(\"domainRemovedSuccess\"));\n refresh();\n } catch (error) {\n addError(\"domainRemovedError\", error);\n }\n },\n });\n\n return (\n <PageSection variant=\"light\">\n <DeleteConfirm />\n {domainModalOpen && (\n <DomainModal\n orgId={orgId!}\n domain={editingDomain}\n onClose={() => {\n setDomainModalOpen(false);\n setEditingDomain(undefined);\n refresh();\n }}\n />\n )}\n <KeycloakDataTable\n key={key}\n loader={loader}\n ariaLabelKey=\"domains\"\n searchPlaceholderKey=\"searchDomain\"\n toolbarItem={\n <ToolbarItem>\n <Button onClick={() => setDomainModalOpen(true)}>\n {t(\"addDomain\")}\n </Button>\n </ToolbarItem>\n }\n actions={[\n {\n title: t(\"edit\"),\n onRowClick: (row) => {\n setEditingDomain(row);\n setDomainModalOpen(true);\n },\n },\n {\n title: t(\"delete\"),\n onRowClick: (row) => {\n setSelectedDomain(row);\n toggleDeleteDialog();\n },\n },\n ]}\n columns={[\n {\n name: \"name\",\n displayKey: \"domain\",\n cellRenderer: (row) => (\n <Button\n variant=\"link\"\n isInline\n onClick={() => {\n setEditingDomain(row);\n setDomainModalOpen(true);\n }}\n >\n {row.name}\n </Button>\n ),\n },\n {\n name: \"identityProviderAlias\",\n displayKey: \"identityProvider\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"autoRedirect\",\n displayKey: \"autoRedirect\",\n cellFormatters: [upperCaseFormatter(), emptyFormatter()],\n },\n ]}\n emptyState={\n <ListEmptyState\n message={t(\"emptyDomains\")}\n instructions={t(\"emptyDomainsInstructions\")}\n primaryActionText={t(\"addDomain\")}\n onPrimaryAction={() => setDomainModalOpen(true)}\n />\n }\n />\n </PageSection>\n );\n};\n","import { Tab, Tabs, TabTitleText } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Invitations } from \"./Invitations\";\nimport { Members } from \"./Members\";\n\nexport const MembersSection = () => {\n const { t } = useTranslation();\n const [activeTab, setActiveTab] = useState(\"members\");\n\n return (\n <Tabs\n activeKey={activeTab}\n onSelect={(_, key) => setActiveTab(key as string)}\n >\n <Tab\n eventKey=\"members\"\n title={<TabTitleText>{t(\"members\")}</TabTitleText>}\n data-testid=\"organization-members-tab\"\n >\n <Members />\n </Tab>\n <Tab\n eventKey=\"invitations\"\n title={<TabTitleText>{t(\"invitations\")}</TabTitleText>}\n data-testid=\"organization-invitations-tab\"\n >\n <Invitations />\n </Tab>\n </Tabs>\n );\n};\n","import {\n FormSubmitButton,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Button,\n PageSection,\n Tab,\n Tabs,\n TabTitleText,\n} from \"@patternfly/react-core\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../admin-client\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { AttributesForm } from \"../components/key-value-form/AttributeForm\";\nimport { arrayToKeyValue } from \"../components/key-value-form/key-value-convert\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../components/routable-tabs/RoutableTabs\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { useParams } from \"../utils/useParams\";\nimport { DetailOrganizationHeader } from \"./DetailOraganzationHeader\";\nimport { DomainsTab } from \"./DomainsTab\";\nimport { IdentityProviders } from \"./IdentityProviders\";\nimport { MembersSection } from \"./MembersSection\";\nimport GroupsSection from \"../groups/GroupsSection\";\nimport {\n OrganizationForm,\n OrganizationFormType,\n convertToOrg,\n} from \"./OrganizationForm\";\nimport {\n EditOrganizationParams,\n OrganizationTab,\n toEditOrganization,\n} from \"./routes/EditOrganization\";\nimport { useAccess } from \"../context/access/Access\";\nimport { AdminEvents } from \"../events/AdminEvents\";\nimport { useState } from \"react\";\n\nexport default function DetailOrganization() {\n const { adminClient } = useAdminClient();\n const { addAlert, addError } = useAlerts();\n\n const { realm, realmRepresentation } = useRealm();\n const { id } = useParams<EditOrganizationParams>();\n const { t } = useTranslation();\n\n const form = useForm<OrganizationFormType>();\n\n const save = async (org: OrganizationFormType) => {\n try {\n const organization = convertToOrg(org);\n await adminClient.organizations.updateById({ id }, organization);\n addAlert(t(\"organizationSaveSuccess\"));\n } catch (error) {\n addError(\"organizationSaveError\", error);\n }\n };\n\n useFetch(\n () =>\n adminClient.organizations.findOne({ id }) as Promise<\n | Awaited<ReturnType<typeof adminClient.organizations.findOne>>\n | undefined\n >,\n (org) => {\n if (!org) {\n throw new Error(t(\"notFound\"));\n }\n form.reset({\n ...org,\n domains: undefined,\n serverDomains: org.domains,\n attributes: arrayToKeyValue(org.attributes),\n });\n },\n [id],\n );\n\n const useTab = (tab: OrganizationTab) =>\n useRoutableTab(\n toEditOrganization({\n realm,\n id,\n tab,\n }),\n );\n\n const settingsTab = useTab(\"settings\");\n const attributesTab = useTab(\"attributes\");\n const membersTab = useTab(\"members\");\n const groupsTab = useTab(\"groups\");\n const domainsTab = useTab(\"domains\");\n const identityProvidersTab = useTab(\"identityProviders\");\n const eventsTab = useTab(\"events\");\n\n const { hasAccess } = useAccess();\n const [activeEventsTab, setActiveEventsTab] = useState(\"adminEvents\");\n\n return (\n <PageSection variant=\"light\" className=\"pf-v5-u-p-0\">\n <FormProvider {...form}>\n <DetailOrganizationHeader save={() => save(form.getValues())} />\n <RoutableTabs\n data-testid=\"organization-tabs\"\n aria-label={t(\"organization\")}\n isBox\n mountOnEnter\n >\n <Tab\n id=\"settings\"\n data-testid=\"settingsTab\"\n title={<TabTitleText>{t(\"settings\")}</TabTitleText>}\n {...settingsTab}\n >\n <PageSection>\n <FormAccess\n role=\"anyone\"\n onSubmit={form.handleSubmit(save)}\n isHorizontal\n >\n <OrganizationForm readOnly />\n <ActionGroup>\n <FormSubmitButton\n formState={form.formState}\n data-testid=\"save\"\n >\n {t(\"save\")}\n </FormSubmitButton>\n <Button\n onClick={() => form.reset()}\n data-testid=\"reset\"\n variant=\"link\"\n >\n {t(\"reset\")}\n </Button>\n </ActionGroup>\n </FormAccess>\n </PageSection>\n </Tab>\n <Tab\n id=\"domains\"\n data-testid=\"domainsTab\"\n title={<TabTitleText>{t(\"domains\")}</TabTitleText>}\n {...domainsTab}\n >\n <DomainsTab />\n </Tab>\n <Tab\n id=\"attributes\"\n data-testid=\"attributeTab\"\n title={<TabTitleText>{t(\"attributes\")}</TabTitleText>}\n {...attributesTab}\n >\n <PageSection variant=\"light\">\n <AttributesForm\n form={form}\n save={save}\n reset={() =>\n form.reset({\n ...form.getValues(),\n })\n }\n name=\"attributes\"\n />\n </PageSection>\n </Tab>\n <Tab\n id=\"members\"\n data-testid=\"membersTab\"\n title={<TabTitleText>{t(\"members\")}</TabTitleText>}\n {...membersTab}\n >\n <MembersSection />\n </Tab>\n <Tab\n id=\"groups\"\n data-testid=\"groupsTab\"\n title={<TabTitleText>{t(\"groups\")}</TabTitleText>}\n {...groupsTab}\n >\n <GroupsSection orgId={id} />\n </Tab>\n <Tab\n id=\"identityProviders\"\n data-testid=\"identityProvidersTab\"\n title={<TabTitleText>{t(\"identityProviders\")}</TabTitleText>}\n {...identityProvidersTab}\n >\n <IdentityProviders />\n </Tab>\n {realmRepresentation.adminEventsEnabled &&\n hasAccess(\"view-events\") && (\n <Tab\n data-testid=\"admin-events-tab\"\n title={<TabTitleText>{t(\"adminEvents\")}</TabTitleText>}\n {...eventsTab}\n >\n <Tabs\n activeKey={activeEventsTab}\n onSelect={(_, key) => setActiveEventsTab(key as string)}\n >\n <Tab\n eventKey=\"adminEvents\"\n title={<TabTitleText>{t(\"adminEvents\")}</TabTitleText>}\n >\n <AdminEvents resourcePath={`organizations/${id}`} />\n </Tab>\n <Tab\n eventKey=\"membershipEvents\"\n title={<TabTitleText>{t(\"membershipEvents\")}</TabTitleText>}\n >\n <AdminEvents resourcePath={`organizations/${id}/members`} />\n </Tab>\n </Tabs>\n </Tab>\n )}\n </RoutableTabs>\n </FormProvider>\n </PageSection>\n );\n}\n"],"names":["DomainModal","orgId","domain","onClose","adminClient","useAdminClient","t","useTranslation","addAlert","addError","useAlerts","linkedIdps","setLinkedIdps","useState","useFetch","isEdit","form","useForm","handleSubmit","formState","submitForm","data","org","domains","payload","target","name","error","idpOptions","idp","jsx","Modal","ModalVariant","FormSubmitButton","Button","ButtonVariant","FormProvider","jsxs","Form","FormGroup","TextControl","SelectControl","DefaultSwitchControl","DomainsTab","useParams","key","setKey","refresh","domainModalOpen","setDomainModalOpen","editingDomain","setEditingDomain","selectedDomain","setSelectedDomain","loader","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","d","PageSection","KeycloakDataTable","ToolbarItem","row","emptyFormatter","upperCaseFormatter","ListEmptyState","MembersSection","activeTab","setActiveTab","Tabs","_","Tab","TabTitleText","Members","Invitations","DetailOrganization","realm","realmRepresentation","useRealm","id","save","organization","convertToOrg","arrayToKeyValue","useTab","tab","useRoutableTab","toEditOrganization","settingsTab","attributesTab","membersTab","groupsTab","domainsTab","identityProvidersTab","eventsTab","hasAccess","useAccess","activeEventsTab","setActiveEventsTab","DetailOrganizationHeader","RoutableTabs","FormAccess","OrganizationForm","ActionGroup","AttributesForm","GroupsSection","IdentityProviders","AdminEvents"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as u, Fragment as R, jsx as o } from "react/jsx-runtime";
2
- import { u as _, aq as k, q as J, bc as Q, b as U, v as W, V as X, P as Y, c as Z, aw as $, an as ee, ao as te, ap as oe, a4 as re, a7 as V, F as ae, a0 as ce, A as se, B as g, bd as v, e as ie } from "./index-C-D-m0EP.js";
2
+ import { u as J, ar as S, K as Q, be as U, b as W, n as X, V as Y, P as Z, c as _, aw as $, ao as ee, ap as te, aq as oe, a4 as re, a7 as V, F as ae, a0 as ce, A as se, B as g, bf as h, e as ie } from "./index-DAVLcnp3.js";
3
3
  import { useState as l } from "react";
4
4
  import { useTranslation as ne } from "react-i18next";
5
5
  import { useNavigate as le, Link as F } from "react-router-dom";
@@ -8,21 +8,21 @@ const I = {
8
8
  executor: ""
9
9
  };
10
10
  function ge() {
11
- const { adminClient: h } = _(), { t: c } = ne(), C = le(), { realm: d, profileName: i } = k(), { executorName: n } = k(), { addAlert: A, addError: H } = J(), [N, P] = l(!1), x = Q().componentTypes?.["org.keycloak.services.clientpolicy.executor.ClientPolicyExecutorProvider"], [f, O] = l([]), [B, G] = l([]), [T, q] = l([]), [w, D] = l([]), p = U({ defaultValues: I }), { control: L, reset: y, handleSubmit: j } = p, a = !!n, E = (e) => {
11
+ const { adminClient: v } = J(), { t: c } = ne(), C = le(), { realm: d, profileName: i } = S(), { executorName: n } = S(), { addAlert: A, addError: N } = Q(), [H, P] = l(!1), x = U().componentTypes?.["org.keycloak.services.clientpolicy.executor.ClientPolicyExecutorProvider"], [f, O] = l([]), [B, G] = l([]), [T, w] = l([]), [D, K] = l([]), p = W({ defaultValues: I }), { control: L, reset: y, handleSubmit: j } = p, a = !!n, E = (e) => {
12
12
  const r = e.find((s) => s.name === i)?.executors?.find(
13
13
  (s) => s.executor === n
14
14
  );
15
15
  r && y({ config: r.configuration });
16
16
  };
17
- W(
18
- () => h.clientPolicies.listProfiles({ includeGlobalProfiles: !0 }),
17
+ X(
18
+ () => v.clientPolicies.listProfiles({ includeGlobalProfiles: !0 }),
19
19
  (e) => {
20
- q(e.globalProfiles), D(e.profiles), E(e.profiles), E(e.globalProfiles);
20
+ w(e.globalProfiles), K(e.profiles), E(e.profiles), E(e.globalProfiles);
21
21
  },
22
22
  []
23
23
  );
24
- const z = async () => {
25
- const e = p.getValues(), t = w.map((r) => {
24
+ const q = async () => {
25
+ const e = p.getValues(), t = D.map((r) => {
26
26
  if (r.name !== i)
27
27
  return r;
28
28
  const s = (r.executors ?? []).concat({
@@ -30,11 +30,11 @@ function ge() {
30
30
  configuration: e.config || {}
31
31
  });
32
32
  if (a) {
33
- const S = r.executors.find(
33
+ const k = r.executors.find(
34
34
  (M) => M.executor === n
35
35
  );
36
- S.configuration = {
37
- ...S.configuration,
36
+ k.configuration = {
37
+ ...k.configuration,
38
38
  ...e.config
39
39
  };
40
40
  }
@@ -44,21 +44,21 @@ function ge() {
44
44
  };
45
45
  });
46
46
  try {
47
- await h.clientPolicies.createProfiles({
47
+ await v.clientPolicies.createProfiles({
48
48
  profiles: t,
49
49
  globalProfiles: T
50
50
  }), A(
51
51
  c(a ? "updateExecutorSuccess" : "addExecutorSuccess"),
52
52
  ie.success
53
- ), C(v({ realm: d, profileName: i }));
53
+ ), C(h({ realm: d, profileName: i }));
54
54
  } catch (r) {
55
- H(a ? "updateExecutorError" : "addExecutorError", r);
55
+ N(a ? "updateExecutorError" : "addExecutorError", r);
56
56
  }
57
57
  }, m = T.find(
58
58
  (e) => e.name === i
59
59
  ), b = x?.find(
60
60
  (e) => e.id === n
61
- ), K = b?.properties.map(
61
+ ), z = b?.properties.map(
62
62
  (e) => {
63
63
  const t = a ? e.defaultValue : "";
64
64
  return {
@@ -69,15 +69,15 @@ function ge() {
69
69
  );
70
70
  return /* @__PURE__ */ u(R, { children: [
71
71
  /* @__PURE__ */ o(
72
- X,
72
+ Y,
73
73
  {
74
74
  titleKey: a ? n : c("addExecutor"),
75
75
  divider: !0
76
76
  }
77
77
  ),
78
- /* @__PURE__ */ u(Y, { variant: "light", children: [
78
+ /* @__PURE__ */ u(Z, { variant: "light", children: [
79
79
  /* @__PURE__ */ u(
80
- Z,
80
+ _,
81
81
  {
82
82
  isHorizontal: !0,
83
83
  role: "manage-realm",
@@ -127,7 +127,7 @@ function ge() {
127
127
  variant: oe.single,
128
128
  "data-testid": "executorType-select",
129
129
  "aria-label": c("executorType"),
130
- isOpen: N,
130
+ isOpen: H,
131
131
  maxHeight: 580,
132
132
  isDisabled: a,
133
133
  children: x?.map((t) => /* @__PURE__ */ o(
@@ -150,7 +150,7 @@ function ge() {
150
150
  /* @__PURE__ */ o(ae, { ...p, children: /* @__PURE__ */ o(
151
151
  ce,
152
152
  {
153
- properties: a ? K : B
153
+ properties: a ? z : B
154
154
  }
155
155
  ) }),
156
156
  !m && /* @__PURE__ */ u(se, { children: [
@@ -158,7 +158,7 @@ function ge() {
158
158
  g,
159
159
  {
160
160
  variant: "primary",
161
- onClick: () => j(z)(),
161
+ onClick: () => j(q)(),
162
162
  "data-testid": "addExecutor-saveBtn",
163
163
  children: c(a ? "save" : "add")
164
164
  }
@@ -171,7 +171,7 @@ function ge() {
171
171
  F,
172
172
  {
173
173
  ...e,
174
- to: v({ realm: d, profileName: i })
174
+ to: h({ realm: d, profileName: i })
175
175
  }
176
176
  ),
177
177
  "data-testid": "addExecutor-cancelBtn",
@@ -185,7 +185,7 @@ function ge() {
185
185
  a && m && /* @__PURE__ */ o("div", { className: "kc-backToProfile", children: /* @__PURE__ */ o(
186
186
  g,
187
187
  {
188
- component: (e) => /* @__PURE__ */ o(F, { ...e, to: v({ realm: d, profileName: i }) }),
188
+ component: (e) => /* @__PURE__ */ o(F, { ...e, to: h({ realm: d, profileName: i }) }),
189
189
  variant: "primary",
190
190
  children: c("back")
191
191
  }
@@ -196,4 +196,4 @@ function ge() {
196
196
  export {
197
197
  ge as default
198
198
  };
199
- //# sourceMappingURL=ExecutorForm-n3e9Qvrl.js.map
199
+ //# sourceMappingURL=ExecutorForm-Dh_cpjdf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutorForm-n3e9Qvrl.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 void 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 data-testid={option.id}\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":";;;;;AAoCA,MAAMA,IAA8B;AAAA,EAClC,QAAQ,CAAA;AAAA,EACR,UAAU;AACZ;AAEA,SAAwBC,KAAe;AACrC,QAAM,EAAE,aAAAC,EAAA,IAAgBC,EAAA,GAElB,EAAE,GAAAC,EAAA,IAAMC,GAAA,GACRC,IAAWC,GAAA,GACX,EAAE,OAAAC,GAAO,aAAAC,EAAA,IAAgBC,EAAA,GACzB,EAAE,cAAAC,EAAA,IAAiBD,EAAA,GACnB,EAAE,UAAAE,GAAU,UAAAC,EAAA,IAAaC,EAAA,GACzB,CAACC,GAAwBC,CAAyB,IAAIC,EAAS,EAAK,GAEpEC,IADaC,EAAA,EAEN,iBACT,0EACF,GACI,CAACC,GAAWC,CAAY,IAAIJ,EAAwC,CAAA,CAAE,GACtE,CAACK,GAAoBC,CAAqB,IAAIN,EAElD,CAAA,CAAE,GACE,CAACO,GAAgBC,CAAiB,IAAIR,EAE1C,CAAA,CAAE,GACE,CAACS,GAAUC,CAAW,IAAIV,EAAwC,CAAA,CAAE,GACpEW,IAAOC,EAAQ,EAAE,eAAA7B,GAAe,GAChC,EAAE,SAAA8B,GAAS,OAAAC,GAAO,cAAAC,EAAA,IAAiBJ,GACnCK,IAAW,CAAC,CAACtB,GAEbuB,IAAY,CAACR,MAA4C;AAE7D,UAAMS,IADUT,EAAS,KAAK,CAACU,MAAYA,EAAQ,SAAS3B,CAAW,GAC7C,WAAW;AAAA,MACnC,CAAC0B,MAAaA,EAAS,aAAaxB;AAAA,IAAA;AAEtC,IAAIwB,KAAUJ,EAAM,EAAE,QAAQI,EAAS,eAAe;AAAA,EACxD;AAEAE,EAAAA;AAAAA,IACE,MACEnC,EAAY,eAAe,aAAa,EAAE,uBAAuB,IAAM;AAAA,IACzE,CAACwB,MAAa;AACZ,MAAAD,EAAkBC,EAAS,cAAe,GAC1CC,EAAYD,EAAS,QAAS,GAE9BQ,EAAUR,EAAS,QAAS,GAC5BQ,EAAUR,EAAS,cAAe;AAAA,IACpC;AAAA,IACA,CAAA;AAAA,EAAC;AAGH,QAAMY,IAAO,YAAY;AACvB,UAAMC,IAAaX,EAAK,UAAA,GAClBY,IAAkBd,EAAS,IAAI,CAACU,MAAY;AAChD,UAAIA,EAAQ,SAAS3B;AACnB,eAAO2B;AAGT,YAAMhB,KAAagB,EAAQ,aAAa,CAAA,GAAI,OAAO;AAAA,QACjD,UAAUG,EAAW;AAAA,QACrB,eAAeA,EAAW,UAAU,CAAA;AAAA,MAAC,CACtC;AAED,UAAIN,GAAU;AACZ,cAAMQ,IAAkBL,EAAQ,UAAW;AAAA,UACzC,CAACD,MAAaA,EAAS,aAAaxB;AAAA,QAAA;AAEtC,QAAA8B,EAAiB,gBAAgB;AAAA,UAC/B,GAAGA,EAAiB;AAAA,UACpB,GAAGF,EAAW;AAAA,QAAA;AAAA,MAElB;AAEA,aAAIN,IACKG,IAEF;AAAA,QACL,GAAGA;AAAA,QACH,WAAAhB;AAAAA,MAAA;AAAA,IAEJ,CAAC;AACD,QAAI;AACF,YAAMlB,EAAY,eAAe,eAAe;AAAA,QAC9C,UAAUsC;AAAA,QACV,gBAAAhB;AAAA,MAAA,CACD,GACDZ;AAAA,QACaR,EAAX6B,IAAa,0BAA6B,oBAAN;AAAA,QACpCS,GAAa;AAAA,MAAA,GAGVpC,EAASqC,EAAgB,EAAE,OAAAnC,GAAO,aAAAC,EAAA,CAAa,CAAC;AAAA,IACvD,SAASmC,GAAO;AACd,MAAA/B,EAASoB,IAAW,wBAAwB,oBAAoBW,CAAK;AAAA,IACvE;AAAA,EACF,GAEMC,IAAgBrB,EAAe;AAAA,IACnC,CAACqB,MAAkBA,EAAc,SAASpC;AAAA,EAAA,GAGtCqC,IAAsB5B,GAAe;AAAA,IACzC,CAACiB,MAAaA,EAAS,OAAOxB;AAAA,EAAA,GAG1BoC,IACJD,GAAqB,WAAW;AAAA,IAC9B,CAACE,MAAa;AACZ,YAAMC,IAAsBhB,IAAWe,EAAS,eAAe;AAC/D,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,cAAcC;AAAA,MAAA;AAAA,IAElB;AAAA,EAAA;AAGJ,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAUpB,IAAWtB,IAAeP,EAAE,aAAa;AAAA,QACnD,SAAO;AAAA,MAAA;AAAA,IAAA;AAAA,IAET,gBAAA8C,EAACI,GAAA,EAAY,SAAQ,SACnB,UAAA;AAAA,MAAA,gBAAAJ;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,cAAY;AAAA,UACZ,MAAK;AAAA,UACL,WAAU;AAAA,UACV,YAAY,CAAC,CAACV;AAAA,UAEd,UAAA;AAAA,YAAA,gBAAAO;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,OAAOpD,EAAE,cAAc;AAAA,gBACvB,SAAQ;AAAA,gBACR,WACEgB,EAAU,SAAS,KAAKA,EAAU,CAAC,EAAE,aAAc,KACjD,gBAAAgC;AAAA,kBAACK;AAAAA,kBAAA;AAAA,oBACC,UAAUrC,EAAU,CAAC,EAAE;AAAA,oBACvB,cAAa;AAAA,kBAAA;AAAA,gBAAA,IAEba,IACF,gBAAAmB;AAAA,kBAACK;AAAAA,kBAAA;AAAA,oBACC,UAAUX,GAAqB;AAAA,oBAC/B,cAAa;AAAA,kBAAA;AAAA,gBAAA,IAEb;AAAA,gBAGN,UAAA,gBAAAM;AAAA,kBAACM;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,cAAa;AAAA,oBACb,SAAA5B;AAAA,oBACA,QAAQ,CAAC,EAAE,OAAA6B,EAAA,MACT,gBAAAP;AAAA,sBAACQ;AAAAA,sBAAA;AAAA,wBACC,UAAS;AAAA,wBACT,iBAAgB;AAAA,wBAChB,UAAU,CAACC,MAAW7C,EAA0B6C,CAAM;AAAA,wBACtD,UAAU,CAACC,MAAU;AACnB,0BAAA/B,EAAM,EAAE,GAAG/B,GAAe,UAAU8D,EAAM,SAAA,GAAY;AACtD,gCAAMC,IAAmB7C,GAAe;AAAA,4BACtC,CAAC8C,MAASA,EAAK,OAAOF;AAAA,0BAAA;AAExB,0BAAAzC,EAAa0C,KAAoB,EAAE,GACnCxC;AAAA,4BACEwC,IAAmB,CAAC,EAAE,cAAc,CAAA;AAAA,0BAAC,GAEvC/C,EAA0B,EAAK;AAAA,wBACjC;AAAA,wBACA,YAAYiB,IAAWtB,IAAegD,EAAM;AAAA,wBAC5C,SAASM,GAAc;AAAA,wBACvB,eAAY;AAAA,wBACZ,cAAY7D,EAAE,cAAc;AAAA,wBAC5B,QAAQW;AAAA,wBACR,WAAW;AAAA,wBACX,YAAYkB;AAAA,wBAEX,UAAAf,GAAe,IAAI,CAACgD,MACnB,gBAAAd;AAAA,0BAACe;AAAA,0BAAA;AAAA,4BACC,eAAaD,EAAO;AAAA,4BACpB,UAAUA,EAAO,OAAOP,EAAM;AAAA,4BAE9B,OAAOO,EAAO;AAAA,4BACd,aAAaA,EAAO;AAAA,4BAEnB,UAAAA,EAAO;AAAA,0BAAA;AAAA,0BAJHA,EAAO;AAAA,wBAAA,CAMf;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACH;AAAA,gBAAA;AAAA,cAEJ;AAAA,YAAA;AAAA,YAEF,gBAAAd,EAACgB,IAAA,EAAc,GAAGxC,GAChB,UAAA,gBAAAwB;AAAA,cAACiB;AAAA,cAAA;AAAA,gBACC,YACEpC,IAAWc,IAA0BzB;AAAA,cAAA;AAAA,YAAA,GAG3C;AAAA,YACC,CAACuB,KACA,gBAAAK,EAACoB,IAAA,EACC,UAAA;AAAA,cAAA,gBAAAlB;AAAA,gBAACmB;AAAA,gBAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,SAAS,MAAMvC,EAAaM,CAAI,EAAA;AAAA,kBAChC,eAAY;AAAA,kBAEX,UAAWlC,EAAX6B,IAAa,SAAY,KAAN;AAAA,gBAAW;AAAA,cAAA;AAAA,cAEjC,gBAAAmB;AAAA,gBAACmB;AAAA,gBAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,WAAW,CAACC,MACV,gBAAApB;AAAA,oBAACqB;AAAA,oBAAA;AAAA,sBACE,GAAGD;AAAA,sBACJ,IAAI7B,EAAgB,EAAE,OAAAnC,GAAO,aAAAC,GAAa;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAG9C,eAAY;AAAA,kBAEX,YAAE,QAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,YACb,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGHwB,KAAYY,KACX,gBAAAO,EAAC,OAAA,EAAI,WAAU,oBACb,UAAA,gBAAAA;AAAA,QAACmB;AAAA,QAAA;AAAA,UACC,WAAW,CAACC,MACV,gBAAApB,EAACqB,GAAA,EAAM,GAAGD,GAAO,IAAI7B,EAAgB,EAAE,OAAAnC,GAAO,aAAAC,EAAA,CAAa,EAAA,CAAG;AAAA,UAEhE,SAAQ;AAAA,UAEP,YAAE,MAAM;AAAA,QAAA;AAAA,MAAA,EACX,CACF;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"ExecutorForm-Dh_cpjdf.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 void 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 data-testid={option.id}\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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"}