@keycloak/keycloak-admin-ui 26.3.0 → 26.3.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 (29) hide show
  1. package/lib/.vite/manifest.json +30 -30
  2. package/lib/{AddOAuth2-BdQ5f8j5.js → AddOAuth2-Dp7xZXck.js} +2 -2
  3. package/lib/{AddOAuth2-BdQ5f8j5.js.map → AddOAuth2-Dp7xZXck.js.map} +1 -1
  4. package/lib/{CreateFlow-QW6oEhyd.js → CreateFlow-DT9GA2KA.js} +2 -2
  5. package/lib/{CreateFlow-QW6oEhyd.js.map → CreateFlow-DT9GA2KA.js.map} +1 -1
  6. package/lib/{DetailOrganization-BA1Z02u1.js → DetailOrganization-eJc5QSWd.js} +2 -2
  7. package/lib/{DetailOrganization-BA1Z02u1.js.map → DetailOrganization-eJc5QSWd.js.map} +1 -1
  8. package/lib/{ExecutorForm-BaJ7yk2s.js → ExecutorForm-CS2GUPzw.js} +2 -2
  9. package/lib/{ExecutorForm-BaJ7yk2s.js.map → ExecutorForm-CS2GUPzw.js.map} +1 -1
  10. package/lib/{FlowDetails-DBaoCEnX.js → FlowDetails-BfBqe2qh.js} +2 -2
  11. package/lib/{FlowDetails-DBaoCEnX.js.map → FlowDetails-BfBqe2qh.js.map} +1 -1
  12. package/lib/{NewOrganization-Dz3NVBFR.js → NewOrganization-eAFJqcV7.js} +2 -2
  13. package/lib/{NewOrganization-Dz3NVBFR.js.map → NewOrganization-eAFJqcV7.js.map} +1 -1
  14. package/lib/{PermissionConfigurationDetails-dIiFB9YL.js → PermissionConfigurationDetails-NLncm72q.js} +3 -3
  15. package/lib/{PermissionConfigurationDetails-dIiFB9YL.js.map → PermissionConfigurationDetails-NLncm72q.js.map} +1 -1
  16. package/lib/{PermissionDetails-0JqG_vH7.js → PermissionDetails-jXYUQx9h.js} +2 -2
  17. package/lib/{PermissionDetails-0JqG_vH7.js.map → PermissionDetails-jXYUQx9h.js.map} +1 -1
  18. package/lib/{RealmSection-2ac_W3pw.js → RealmSection-DapWaHXV.js} +2 -2
  19. package/lib/{RealmSection-2ac_W3pw.js.map → RealmSection-DapWaHXV.js.map} +1 -1
  20. package/lib/{ResourceDetails-CTjm-Bb1.js → ResourceDetails-Rw_lyxQA.js} +3 -3
  21. package/lib/{ResourceDetails-CTjm-Bb1.js.map → ResourceDetails-Rw_lyxQA.js.map} +1 -1
  22. package/lib/{ScopeDetails-BTzWF0ph.js → ScopeDetails-AqQr7pSf.js} +2 -2
  23. package/lib/{ScopeDetails-BTzWF0ph.js.map → ScopeDetails-AqQr7pSf.js.map} +1 -1
  24. package/lib/{ScopePicker-BOG72GXl.js → ScopePicker-B-NlVPQJ.js} +2 -2
  25. package/lib/{ScopePicker-BOG72GXl.js.map → ScopePicker-B-NlVPQJ.js.map} +1 -1
  26. package/lib/{index-Dcc2DpAw.js → index-BB_cYBCp.js} +43 -41
  27. package/lib/{index-Dcc2DpAw.js.map → index-BB_cYBCp.js.map} +1 -1
  28. package/lib/keycloak-admin-ui.js +1 -1
  29. package/package.json +3 -3
@@ -1,13 +1,13 @@
1
1
  {
2
- "_ScopePicker-BOG72GXl.js": {
3
- "file": "ScopePicker-BOG72GXl.js",
2
+ "_ScopePicker-B-NlVPQJ.js": {
3
+ "file": "ScopePicker-B-NlVPQJ.js",
4
4
  "name": "ScopePicker",
5
5
  "imports": [
6
- "_index-Dcc2DpAw.js"
6
+ "_index-BB_cYBCp.js"
7
7
  ]
8
8
  },
9
- "_index-Dcc2DpAw.js": {
10
- "file": "index-Dcc2DpAw.js",
9
+ "_index-BB_cYBCp.js": {
10
+ "file": "index-BB_cYBCp.js",
11
11
  "name": "index",
12
12
  "dynamicImports": [
13
13
  "src/authentication/FlowDetails.tsx",
@@ -29,58 +29,58 @@
29
29
  ]
30
30
  },
31
31
  "src/authentication/FlowDetails.tsx": {
32
- "file": "FlowDetails-DBaoCEnX.js",
32
+ "file": "FlowDetails-BfBqe2qh.js",
33
33
  "name": "FlowDetails",
34
34
  "src": "src/authentication/FlowDetails.tsx",
35
35
  "isDynamicEntry": true,
36
36
  "imports": [
37
- "_index-Dcc2DpAw.js"
37
+ "_index-BB_cYBCp.js"
38
38
  ]
39
39
  },
40
40
  "src/authentication/form/CreateFlow.tsx": {
41
- "file": "CreateFlow-QW6oEhyd.js",
41
+ "file": "CreateFlow-DT9GA2KA.js",
42
42
  "name": "CreateFlow",
43
43
  "src": "src/authentication/form/CreateFlow.tsx",
44
44
  "isDynamicEntry": true,
45
45
  "imports": [
46
- "_index-Dcc2DpAw.js"
46
+ "_index-BB_cYBCp.js"
47
47
  ]
48
48
  },
49
49
  "src/clients/authorization/PermissionDetails.tsx": {
50
- "file": "PermissionDetails-0JqG_vH7.js",
50
+ "file": "PermissionDetails-jXYUQx9h.js",
51
51
  "name": "PermissionDetails",
52
52
  "src": "src/clients/authorization/PermissionDetails.tsx",
53
53
  "isDynamicEntry": true,
54
54
  "imports": [
55
- "_index-Dcc2DpAw.js"
55
+ "_index-BB_cYBCp.js"
56
56
  ]
57
57
  },
58
58
  "src/clients/authorization/ResourceDetails.tsx": {
59
- "file": "ResourceDetails-CTjm-Bb1.js",
59
+ "file": "ResourceDetails-Rw_lyxQA.js",
60
60
  "name": "ResourceDetails",
61
61
  "src": "src/clients/authorization/ResourceDetails.tsx",
62
62
  "isDynamicEntry": true,
63
63
  "imports": [
64
- "_index-Dcc2DpAw.js",
65
- "_ScopePicker-BOG72GXl.js"
64
+ "_index-BB_cYBCp.js",
65
+ "_ScopePicker-B-NlVPQJ.js"
66
66
  ]
67
67
  },
68
68
  "src/clients/authorization/ScopeDetails.tsx": {
69
- "file": "ScopeDetails-BTzWF0ph.js",
69
+ "file": "ScopeDetails-AqQr7pSf.js",
70
70
  "name": "ScopeDetails",
71
71
  "src": "src/clients/authorization/ScopeDetails.tsx",
72
72
  "isDynamicEntry": true,
73
73
  "imports": [
74
- "_index-Dcc2DpAw.js"
74
+ "_index-BB_cYBCp.js"
75
75
  ]
76
76
  },
77
77
  "src/identity-providers/add/AddOAuth2.tsx": {
78
- "file": "AddOAuth2-BdQ5f8j5.js",
78
+ "file": "AddOAuth2-Dp7xZXck.js",
79
79
  "name": "AddOAuth2",
80
80
  "src": "src/identity-providers/add/AddOAuth2.tsx",
81
81
  "isDynamicEntry": true,
82
82
  "imports": [
83
- "_index-Dcc2DpAw.js"
83
+ "_index-BB_cYBCp.js"
84
84
  ]
85
85
  },
86
86
  "src/index.ts": {
@@ -89,53 +89,53 @@
89
89
  "src": "src/index.ts",
90
90
  "isEntry": true,
91
91
  "imports": [
92
- "_index-Dcc2DpAw.js"
92
+ "_index-BB_cYBCp.js"
93
93
  ]
94
94
  },
95
95
  "src/organizations/DetailOrganization.tsx": {
96
- "file": "DetailOrganization-BA1Z02u1.js",
96
+ "file": "DetailOrganization-eJc5QSWd.js",
97
97
  "name": "DetailOrganization",
98
98
  "src": "src/organizations/DetailOrganization.tsx",
99
99
  "isDynamicEntry": true,
100
100
  "imports": [
101
- "_index-Dcc2DpAw.js"
101
+ "_index-BB_cYBCp.js"
102
102
  ]
103
103
  },
104
104
  "src/organizations/NewOrganization.tsx": {
105
- "file": "NewOrganization-Dz3NVBFR.js",
105
+ "file": "NewOrganization-eAFJqcV7.js",
106
106
  "name": "NewOrganization",
107
107
  "src": "src/organizations/NewOrganization.tsx",
108
108
  "isDynamicEntry": true,
109
109
  "imports": [
110
- "_index-Dcc2DpAw.js"
110
+ "_index-BB_cYBCp.js"
111
111
  ]
112
112
  },
113
113
  "src/permissions-configuration/permission-configuration/PermissionConfigurationDetails.tsx": {
114
- "file": "PermissionConfigurationDetails-dIiFB9YL.js",
114
+ "file": "PermissionConfigurationDetails-NLncm72q.js",
115
115
  "name": "PermissionConfigurationDetails",
116
116
  "src": "src/permissions-configuration/permission-configuration/PermissionConfigurationDetails.tsx",
117
117
  "isDynamicEntry": true,
118
118
  "imports": [
119
- "_index-Dcc2DpAw.js",
120
- "_ScopePicker-BOG72GXl.js"
119
+ "_index-BB_cYBCp.js",
120
+ "_ScopePicker-B-NlVPQJ.js"
121
121
  ]
122
122
  },
123
123
  "src/realm-settings/ExecutorForm.tsx": {
124
- "file": "ExecutorForm-BaJ7yk2s.js",
124
+ "file": "ExecutorForm-CS2GUPzw.js",
125
125
  "name": "ExecutorForm",
126
126
  "src": "src/realm-settings/ExecutorForm.tsx",
127
127
  "isDynamicEntry": true,
128
128
  "imports": [
129
- "_index-Dcc2DpAw.js"
129
+ "_index-BB_cYBCp.js"
130
130
  ]
131
131
  },
132
132
  "src/realm/RealmSection.tsx": {
133
- "file": "RealmSection-2ac_W3pw.js",
133
+ "file": "RealmSection-DapWaHXV.js",
134
134
  "name": "RealmSection",
135
135
  "src": "src/realm/RealmSection.tsx",
136
136
  "isDynamicEntry": true,
137
137
  "imports": [
138
- "_index-Dcc2DpAw.js"
138
+ "_index-BB_cYBCp.js"
139
139
  ]
140
140
  },
141
141
  "style.css": {
@@ -1,5 +1,5 @@
1
1
  import { jsxs as r, Fragment as b, jsx as t } from "react/jsx-runtime";
2
- import { u as p, b as f, _ as g, a as I, V as P, P as A, F as C, c as S, bx as O, by as D, bz as F, bA as x, A as V, B as o, bB as B, d as E, bC as j } from "./index-Dcc2DpAw.js";
2
+ import { u as p, b as f, _ as g, a as I, V as P, P as A, F as C, c as S, bx as O, by as D, bz as F, bA as x, A as V, B as o, bB as B, d as E, bC as j } from "./index-BB_cYBCp.js";
3
3
  import { useTranslation as k } from "react-i18next";
4
4
  import { useNavigate as w, Link as z } from "react-router-dom";
5
5
  function L() {
@@ -69,4 +69,4 @@ function L() {
69
69
  export {
70
70
  L as default
71
71
  };
72
- //# sourceMappingURL=AddOAuth2-BdQ5f8j5.js.map
72
+ //# sourceMappingURL=AddOAuth2-Dp7xZXck.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddOAuth2-BdQ5f8j5.js","sources":["../src/identity-providers/add/AddOAuth2.tsx"],"sourcesContent":["import type IdentityProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useAlerts } from \"@keycloak/keycloak-ui-shared\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toIdentityProvider } from \"../routes/IdentityProvider\";\nimport { toIdentityProviders } from \"../routes/IdentityProviders\";\nimport { OIDCAuthentication } from \"./OIDCAuthentication\";\nimport { OIDCGeneralSettings } from \"./OIDCGeneralSettings\";\nimport { OpenIdConnectSettings } from \"./OpenIdConnectSettings\";\nimport { UserProfileClaimsSettings } from \"./OAuth2UserProfileClaimsSettings\";\n\ntype DiscoveryIdentity = IdentityProviderRepresentation & {\n discoveryEndpoint?: string;\n};\n\nexport default function AddOpenIdConnect() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n const id = `oauth2`;\n\n const form = useForm<IdentityProviderRepresentation>({\n defaultValues: { alias: id },\n mode: \"onChange\",\n });\n const {\n handleSubmit,\n formState: { isDirty },\n } = form;\n\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n\n const onSubmit = async (provider: DiscoveryIdentity) => {\n delete provider.discoveryEndpoint;\n try {\n await adminClient.identityProviders.create({\n ...provider,\n providerId: id,\n });\n addAlert(t(\"createIdentityProviderSuccess\"), AlertVariant.success);\n navigate(\n toIdentityProvider({\n realm,\n providerId: id,\n alias: provider.alias!,\n tab: \"settings\",\n }),\n );\n } catch (error) {\n addError(\"createIdentityProviderError\", error);\n }\n };\n\n return (\n <>\n <ViewHeader titleKey={t(\"addOAuth2Provider\")} />\n <PageSection variant=\"light\">\n <FormProvider {...form}>\n <FormAccess\n role=\"manage-identity-providers\"\n isHorizontal\n onSubmit={handleSubmit(onSubmit)}\n >\n <OIDCGeneralSettings />\n <OpenIdConnectSettings isOIDC={false} />\n <OIDCAuthentication />\n <UserProfileClaimsSettings />\n <ActionGroup>\n <Button\n isDisabled={!isDirty}\n variant=\"primary\"\n type=\"submit\"\n data-testid=\"createProvider\"\n >\n {t(\"add\")}\n </Button>\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link {...props} to={toIdentityProviders({ realm })} />\n )}\n >\n {t(\"cancel\")}\n </Button>\n </ActionGroup>\n </FormAccess>\n </FormProvider>\n </PageSection>\n </>\n );\n}\n"],"names":["AddOpenIdConnect","adminClient","useAdminClient","t","useTranslation","navigate","useNavigate","id","form","useForm","handleSubmit","isDirty","addAlert","addError","useAlerts","realm","useRealm","onSubmit","provider","AlertVariant","toIdentityProvider","error","jsxs","Fragment","jsx","ViewHeader","PageSection","FormProvider","FormAccess","OIDCGeneralSettings","OpenIdConnectSettings","OIDCAuthentication","UserProfileClaimsSettings","ActionGroup","Button","props","Link","toIdentityProviders"],"mappings":";;;;AA0BA,SAAwBA,IAAmB;AACzC,QAAM,EAAE,aAAAC,EAAA,IAAgBC,EAAA,GAElB,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAWC,EAAA,GACXC,IAAK,UAELC,IAAOC,EAAwC;AAAA,IACnD,eAAe,EAAE,OAAOF,EAAA;AAAA,IACxB,MAAM;AAAA,EAAA,CACP,GACK;AAAA,IACJ,cAAAG;AAAA,IACA,WAAW,EAAE,SAAAC,EAAA;AAAA,EAAQ,IACnBH,GAEE,EAAE,UAAAI,GAAU,UAAAC,EAAA,IAAaC,EAAA,GACzB,EAAE,OAAAC,EAAA,IAAUC,EAAA,GAEZC,IAAW,OAAOC,MAAgC;AACtD,WAAOA,EAAS;AAChB,QAAI;AACF,YAAMjB,EAAY,kBAAkB,OAAO;AAAA,QACzC,GAAGiB;AAAA,QACH,YAAYX;AAAA,MAAA,CACb,GACDK,EAAST,EAAE,+BAA+B,GAAGgB,EAAa,OAAO,GACjEd;AAAA,QACEe,EAAmB;AAAA,UACjB,OAAAL;AAAA,UACA,YAAYR;AAAA,UACZ,OAAOW,EAAS;AAAA,UAChB,KAAK;AAAA,QAAA,CACN;AAAA,MAAA;AAAA,IACH,SACOG,GAAO;AACd,MAAAR,EAAS,+BAA+BQ,CAAK;AAAA,IAAA;AAAA,EAC/C;AAGF,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAW,UAAUtB,EAAE,mBAAmB,EAAA,CAAG;AAAA,sBAC7CuB,GAAA,EAAY,SAAQ,SACnB,UAAA,gBAAAF,EAACG,GAAA,EAAc,GAAGnB,GAChB,UAAA,gBAAAc;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAY;AAAA,QACZ,UAAUlB,EAAaO,CAAQ;AAAA,QAE/B,UAAA;AAAA,UAAA,gBAAAO,EAACK,GAAA,EAAoB;AAAA,UACrB,gBAAAL,EAACM,GAAA,EAAsB,QAAQ,GAAA,CAAO;AAAA,4BACrCC,GAAA,EAAmB;AAAA,4BACnBC,GAAA,EAA0B;AAAA,4BAC1BC,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAT;AAAA,cAACU;AAAA,cAAA;AAAA,gBACC,YAAY,CAACvB;AAAA,gBACb,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,eAAY;AAAA,gBAEX,YAAE,KAAK;AAAA,cAAA;AAAA,YAAA;AAAA,YAEV,gBAAAa;AAAA,cAACU;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,eAAY;AAAA,gBACZ,WAAW,CAACC,MACV,gBAAAX,EAACY,GAAA,EAAM,GAAGD,GAAO,IAAIE,EAAoB,EAAE,OAAAtB,EAAA,CAAO,EAAA,CAAG;AAAA,gBAGtD,YAAE,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEJ,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"AddOAuth2-Dp7xZXck.js","sources":["../src/identity-providers/add/AddOAuth2.tsx"],"sourcesContent":["import type IdentityProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useAlerts } from \"@keycloak/keycloak-ui-shared\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toIdentityProvider } from \"../routes/IdentityProvider\";\nimport { toIdentityProviders } from \"../routes/IdentityProviders\";\nimport { OIDCAuthentication } from \"./OIDCAuthentication\";\nimport { OIDCGeneralSettings } from \"./OIDCGeneralSettings\";\nimport { OpenIdConnectSettings } from \"./OpenIdConnectSettings\";\nimport { UserProfileClaimsSettings } from \"./OAuth2UserProfileClaimsSettings\";\n\ntype DiscoveryIdentity = IdentityProviderRepresentation & {\n discoveryEndpoint?: string;\n};\n\nexport default function AddOpenIdConnect() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n const id = `oauth2`;\n\n const form = useForm<IdentityProviderRepresentation>({\n defaultValues: { alias: id },\n mode: \"onChange\",\n });\n const {\n handleSubmit,\n formState: { isDirty },\n } = form;\n\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n\n const onSubmit = async (provider: DiscoveryIdentity) => {\n delete provider.discoveryEndpoint;\n try {\n await adminClient.identityProviders.create({\n ...provider,\n providerId: id,\n });\n addAlert(t(\"createIdentityProviderSuccess\"), AlertVariant.success);\n navigate(\n toIdentityProvider({\n realm,\n providerId: id,\n alias: provider.alias!,\n tab: \"settings\",\n }),\n );\n } catch (error) {\n addError(\"createIdentityProviderError\", error);\n }\n };\n\n return (\n <>\n <ViewHeader titleKey={t(\"addOAuth2Provider\")} />\n <PageSection variant=\"light\">\n <FormProvider {...form}>\n <FormAccess\n role=\"manage-identity-providers\"\n isHorizontal\n onSubmit={handleSubmit(onSubmit)}\n >\n <OIDCGeneralSettings />\n <OpenIdConnectSettings isOIDC={false} />\n <OIDCAuthentication />\n <UserProfileClaimsSettings />\n <ActionGroup>\n <Button\n isDisabled={!isDirty}\n variant=\"primary\"\n type=\"submit\"\n data-testid=\"createProvider\"\n >\n {t(\"add\")}\n </Button>\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link {...props} to={toIdentityProviders({ realm })} />\n )}\n >\n {t(\"cancel\")}\n </Button>\n </ActionGroup>\n </FormAccess>\n </FormProvider>\n </PageSection>\n </>\n );\n}\n"],"names":["AddOpenIdConnect","adminClient","useAdminClient","t","useTranslation","navigate","useNavigate","id","form","useForm","handleSubmit","isDirty","addAlert","addError","useAlerts","realm","useRealm","onSubmit","provider","AlertVariant","toIdentityProvider","error","jsxs","Fragment","jsx","ViewHeader","PageSection","FormProvider","FormAccess","OIDCGeneralSettings","OpenIdConnectSettings","OIDCAuthentication","UserProfileClaimsSettings","ActionGroup","Button","props","Link","toIdentityProviders"],"mappings":";;;;AA0BA,SAAwBA,IAAmB;AACzC,QAAM,EAAE,aAAAC,EAAA,IAAgBC,EAAA,GAElB,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAWC,EAAA,GACXC,IAAK,UAELC,IAAOC,EAAwC;AAAA,IACnD,eAAe,EAAE,OAAOF,EAAA;AAAA,IACxB,MAAM;AAAA,EAAA,CACP,GACK;AAAA,IACJ,cAAAG;AAAA,IACA,WAAW,EAAE,SAAAC,EAAA;AAAA,EAAQ,IACnBH,GAEE,EAAE,UAAAI,GAAU,UAAAC,EAAA,IAAaC,EAAA,GACzB,EAAE,OAAAC,EAAA,IAAUC,EAAA,GAEZC,IAAW,OAAOC,MAAgC;AACtD,WAAOA,EAAS;AAChB,QAAI;AACF,YAAMjB,EAAY,kBAAkB,OAAO;AAAA,QACzC,GAAGiB;AAAA,QACH,YAAYX;AAAA,MAAA,CACb,GACDK,EAAST,EAAE,+BAA+B,GAAGgB,EAAa,OAAO,GACjEd;AAAA,QACEe,EAAmB;AAAA,UACjB,OAAAL;AAAA,UACA,YAAYR;AAAA,UACZ,OAAOW,EAAS;AAAA,UAChB,KAAK;AAAA,QAAA,CACN;AAAA,MAAA;AAAA,IACH,SACOG,GAAO;AACd,MAAAR,EAAS,+BAA+BQ,CAAK;AAAA,IAAA;AAAA,EAC/C;AAGF,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAW,UAAUtB,EAAE,mBAAmB,EAAA,CAAG;AAAA,sBAC7CuB,GAAA,EAAY,SAAQ,SACnB,UAAA,gBAAAF,EAACG,GAAA,EAAc,GAAGnB,GAChB,UAAA,gBAAAc;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAY;AAAA,QACZ,UAAUlB,EAAaO,CAAQ;AAAA,QAE/B,UAAA;AAAA,UAAA,gBAAAO,EAACK,GAAA,EAAoB;AAAA,UACrB,gBAAAL,EAACM,GAAA,EAAsB,QAAQ,GAAA,CAAO;AAAA,4BACrCC,GAAA,EAAmB;AAAA,4BACnBC,GAAA,EAA0B;AAAA,4BAC1BC,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAT;AAAA,cAACU;AAAA,cAAA;AAAA,gBACC,YAAY,CAACvB;AAAA,gBACb,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,eAAY;AAAA,gBAEX,YAAE,KAAK;AAAA,cAAA;AAAA,YAAA;AAAA,YAEV,gBAAAa;AAAA,cAACU;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,eAAY;AAAA,gBACZ,WAAW,CAACC,MACV,gBAAAX,EAACY,GAAA,EAAM,GAAGD,GAAO,IAAIE,EAAoB,EAAE,OAAAtB,EAAA,CAAO,EAAA,CAAG;AAAA,gBAGtD,YAAE,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEJ,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as r, Fragment as w, jsx as t } from "react/jsx-runtime";
2
- import { u as h, a as F, _ as b, b as v, V as y, P as g, F as S, c as A, N as C, $ as I, A as T, e as H, B as N, t as P, d as i, f as V } from "./index-Dcc2DpAw.js";
2
+ import { u as h, a as F, _ as b, b as v, V as y, P as g, F as S, c as A, N as C, $ as I, A as T, e as H, B as N, t as P, d as i, f as V } from "./index-BB_cYBCp.js";
3
3
  import { useTranslation as k } from "react-i18next";
4
4
  import { useNavigate as x, Link as B } from "react-router-dom";
5
5
  const c = ["basic-flow", "client-flow"];
@@ -77,4 +77,4 @@ function E() {
77
77
  export {
78
78
  E as default
79
79
  };
80
- //# sourceMappingURL=CreateFlow-QW6oEhyd.js.map
80
+ //# sourceMappingURL=CreateFlow-DT9GA2KA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateFlow-QW6oEhyd.js","sources":["../src/authentication/form/CreateFlow.tsx"],"sourcesContent":["import type AuthenticationFlowRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/authenticationFlowRepresentation\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { FormSubmitButton, SelectControl } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useAlerts } from \"@keycloak/keycloak-ui-shared\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toAuthentication } from \"../routes/Authentication\";\nimport { toFlow } from \"../routes/Flow\";\nimport { NameDescription } from \"./NameDescription\";\n\nconst TYPES = [\"basic-flow\", \"client-flow\"] as const;\n\nexport default function CreateFlow() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { realm } = useRealm();\n const { addAlert } = useAlerts();\n const form = useForm<AuthenticationFlowRepresentation>();\n const { handleSubmit, formState } = form;\n\n const onSubmit = async (formValues: AuthenticationFlowRepresentation) => {\n const flow = { ...formValues, builtIn: false, topLevel: true };\n\n try {\n const { id } =\n await adminClient.authenticationManagement.createFlow(flow);\n addAlert(t(\"flowCreatedSuccess\"), AlertVariant.success);\n navigate(\n toFlow({\n realm,\n id: id!,\n usedBy: \"notInUse\",\n }),\n );\n } catch (error: any) {\n addAlert(\n t(\"flowCreateError\", {\n error: error.response?.data?.errorMessage || error,\n }),\n AlertVariant.danger,\n );\n }\n };\n\n return (\n <>\n <ViewHeader titleKey=\"createFlow\" subKey=\"authenticationCreateFlowHelp\" />\n <PageSection variant=\"light\">\n <FormProvider {...form}>\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <NameDescription />\n <SelectControl\n name=\"providerId\"\n label={t(\"flowType\")}\n labelIcon={t(\"topLevelFlowTypeHelp\")}\n aria-label={t(\"selectFlowType\")}\n controller={{ defaultValue: TYPES[0] }}\n options={TYPES.map((type) => ({\n key: type,\n value: t(`top-level-flow-type.${type}`),\n }))}\n />\n <ActionGroup>\n <FormSubmitButton\n formState={formState}\n data-testid=\"create\"\n allowInvalid\n allowNonDirty\n >\n {t(\"create\")}\n </FormSubmitButton>\n <Button\n data-testid=\"cancel\"\n variant=\"link\"\n component={(props) => (\n <Link {...props} to={toAuthentication({ realm })}></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n </ActionGroup>\n </FormAccess>\n </FormProvider>\n </PageSection>\n </>\n );\n}\n"],"names":["TYPES","CreateFlow","adminClient","useAdminClient","t","useTranslation","navigate","useNavigate","realm","useRealm","addAlert","useAlerts","form","useForm","handleSubmit","formState","jsxs","Fragment","jsx","ViewHeader","PageSection","FormProvider","FormAccess","formValues","flow","id","AlertVariant","toFlow","error","NameDescription","SelectControl","type","ActionGroup","FormSubmitButton","Button","props","Link","toAuthentication"],"mappings":";;;;AAoBA,MAAMA,IAAQ,CAAC,cAAc,aAAa;AAE1C,SAAwBC,IAAa;AACnC,QAAM,EAAE,aAAAC,EAAA,IAAgBC,EAAA,GAElB,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAWC,EAAA,GACX,EAAE,OAAAC,EAAA,IAAUC,EAAA,GACZ,EAAE,UAAAC,EAAA,IAAaC,EAAA,GACfC,IAAOC,EAAA,GACP,EAAE,cAAAC,GAAc,WAAAC,EAAA,IAAcH;AA0BpC,SACE,gBAAAI,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAW,UAAS,cAAa,QAAO,gCAA+B;AAAA,sBACvEC,GAAA,EAAY,SAAQ,SACnB,UAAA,gBAAAF,EAACG,GAAA,EAAc,GAAGT,GAChB,UAAA,gBAAAI;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,cAAY;AAAA,QACZ,MAAK;AAAA,QACL,UAAUR,EAhCH,OAAOS,MAAiD;AACvE,gBAAMC,IAAO,EAAE,GAAGD,GAAY,SAAS,IAAO,UAAU,GAAA;AAExD,cAAI;AACF,kBAAM,EAAE,IAAAE,EAAA,IACN,MAAMvB,EAAY,yBAAyB,WAAWsB,CAAI;AAC5D,YAAAd,EAASN,EAAE,oBAAoB,GAAGsB,EAAa,OAAO,GACtDpB;AAAA,cACEqB,EAAO;AAAA,gBACL,OAAAnB;AAAA,gBACA,IAAAiB;AAAA,gBACA,QAAQ;AAAA,cAAA,CACT;AAAA,YAAA;AAAA,UACH,SACOG,GAAY;AACnB,YAAAlB;AAAA,cACEN,EAAE,mBAAmB;AAAA,gBACnB,OAAOwB,EAAM,UAAU,MAAM,gBAAgBA;AAAA,cAAA,CAC9C;AAAA,cACDF,EAAa;AAAA,YAAA;AAAA,UACf;AAAA,QACF,CAWuC;AAAA,QAE/B,UAAA;AAAA,UAAA,gBAAAR,EAACW,GAAA,EAAgB;AAAA,UACjB,gBAAAX;AAAA,YAACY;AAAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO1B,EAAE,UAAU;AAAA,cACnB,WAAWA,EAAE,sBAAsB;AAAA,cACnC,cAAYA,EAAE,gBAAgB;AAAA,cAC9B,YAAY,EAAE,cAAcJ,EAAM,CAAC,EAAA;AAAA,cACnC,SAASA,EAAM,IAAI,CAAC+B,OAAU;AAAA,gBAC5B,KAAKA;AAAA,gBACL,OAAO3B,EAAE,uBAAuB2B,CAAI,EAAE;AAAA,cAAA,EACtC;AAAA,YAAA;AAAA,UAAA;AAAA,4BAEHC,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAd;AAAA,cAACe;AAAAA,cAAA;AAAA,gBACC,WAAAlB;AAAA,gBACA,eAAY;AAAA,gBACZ,cAAY;AAAA,gBACZ,eAAa;AAAA,gBAEZ,YAAE,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,YAEb,gBAAAG;AAAA,cAACgB;AAAA,cAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,SAAQ;AAAA,gBACR,WAAW,CAACC,MACV,gBAAAjB,EAACkB,GAAA,EAAM,GAAGD,GAAO,IAAIE,EAAiB,EAAE,OAAA7B,EAAA,CAAO,EAAA,CAAG;AAAA,gBAGnD,YAAE,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEJ,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"CreateFlow-DT9GA2KA.js","sources":["../src/authentication/form/CreateFlow.tsx"],"sourcesContent":["import type AuthenticationFlowRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/authenticationFlowRepresentation\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { FormSubmitButton, SelectControl } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useAlerts } from \"@keycloak/keycloak-ui-shared\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toAuthentication } from \"../routes/Authentication\";\nimport { toFlow } from \"../routes/Flow\";\nimport { NameDescription } from \"./NameDescription\";\n\nconst TYPES = [\"basic-flow\", \"client-flow\"] as const;\n\nexport default function CreateFlow() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { realm } = useRealm();\n const { addAlert } = useAlerts();\n const form = useForm<AuthenticationFlowRepresentation>();\n const { handleSubmit, formState } = form;\n\n const onSubmit = async (formValues: AuthenticationFlowRepresentation) => {\n const flow = { ...formValues, builtIn: false, topLevel: true };\n\n try {\n const { id } =\n await adminClient.authenticationManagement.createFlow(flow);\n addAlert(t(\"flowCreatedSuccess\"), AlertVariant.success);\n navigate(\n toFlow({\n realm,\n id: id!,\n usedBy: \"notInUse\",\n }),\n );\n } catch (error: any) {\n addAlert(\n t(\"flowCreateError\", {\n error: error.response?.data?.errorMessage || error,\n }),\n AlertVariant.danger,\n );\n }\n };\n\n return (\n <>\n <ViewHeader titleKey=\"createFlow\" subKey=\"authenticationCreateFlowHelp\" />\n <PageSection variant=\"light\">\n <FormProvider {...form}>\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <NameDescription />\n <SelectControl\n name=\"providerId\"\n label={t(\"flowType\")}\n labelIcon={t(\"topLevelFlowTypeHelp\")}\n aria-label={t(\"selectFlowType\")}\n controller={{ defaultValue: TYPES[0] }}\n options={TYPES.map((type) => ({\n key: type,\n value: t(`top-level-flow-type.${type}`),\n }))}\n />\n <ActionGroup>\n <FormSubmitButton\n formState={formState}\n data-testid=\"create\"\n allowInvalid\n allowNonDirty\n >\n {t(\"create\")}\n </FormSubmitButton>\n <Button\n data-testid=\"cancel\"\n variant=\"link\"\n component={(props) => (\n <Link {...props} to={toAuthentication({ realm })}></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n </ActionGroup>\n </FormAccess>\n </FormProvider>\n </PageSection>\n </>\n );\n}\n"],"names":["TYPES","CreateFlow","adminClient","useAdminClient","t","useTranslation","navigate","useNavigate","realm","useRealm","addAlert","useAlerts","form","useForm","handleSubmit","formState","jsxs","Fragment","jsx","ViewHeader","PageSection","FormProvider","FormAccess","formValues","flow","id","AlertVariant","toFlow","error","NameDescription","SelectControl","type","ActionGroup","FormSubmitButton","Button","props","Link","toAuthentication"],"mappings":";;;;AAoBA,MAAMA,IAAQ,CAAC,cAAc,aAAa;AAE1C,SAAwBC,IAAa;AACnC,QAAM,EAAE,aAAAC,EAAA,IAAgBC,EAAA,GAElB,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAWC,EAAA,GACX,EAAE,OAAAC,EAAA,IAAUC,EAAA,GACZ,EAAE,UAAAC,EAAA,IAAaC,EAAA,GACfC,IAAOC,EAAA,GACP,EAAE,cAAAC,GAAc,WAAAC,EAAA,IAAcH;AA0BpC,SACE,gBAAAI,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAW,UAAS,cAAa,QAAO,gCAA+B;AAAA,sBACvEC,GAAA,EAAY,SAAQ,SACnB,UAAA,gBAAAF,EAACG,GAAA,EAAc,GAAGT,GAChB,UAAA,gBAAAI;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,cAAY;AAAA,QACZ,MAAK;AAAA,QACL,UAAUR,EAhCH,OAAOS,MAAiD;AACvE,gBAAMC,IAAO,EAAE,GAAGD,GAAY,SAAS,IAAO,UAAU,GAAA;AAExD,cAAI;AACF,kBAAM,EAAE,IAAAE,EAAA,IACN,MAAMvB,EAAY,yBAAyB,WAAWsB,CAAI;AAC5D,YAAAd,EAASN,EAAE,oBAAoB,GAAGsB,EAAa,OAAO,GACtDpB;AAAA,cACEqB,EAAO;AAAA,gBACL,OAAAnB;AAAA,gBACA,IAAAiB;AAAA,gBACA,QAAQ;AAAA,cAAA,CACT;AAAA,YAAA;AAAA,UACH,SACOG,GAAY;AACnB,YAAAlB;AAAA,cACEN,EAAE,mBAAmB;AAAA,gBACnB,OAAOwB,EAAM,UAAU,MAAM,gBAAgBA;AAAA,cAAA,CAC9C;AAAA,cACDF,EAAa;AAAA,YAAA;AAAA,UACf;AAAA,QACF,CAWuC;AAAA,QAE/B,UAAA;AAAA,UAAA,gBAAAR,EAACW,GAAA,EAAgB;AAAA,UACjB,gBAAAX;AAAA,YAACY;AAAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO1B,EAAE,UAAU;AAAA,cACnB,WAAWA,EAAE,sBAAsB;AAAA,cACnC,cAAYA,EAAE,gBAAgB;AAAA,cAC9B,YAAY,EAAE,cAAcJ,EAAM,CAAC,EAAA;AAAA,cACnC,SAASA,EAAM,IAAI,CAAC+B,OAAU;AAAA,gBAC5B,KAAKA;AAAA,gBACL,OAAO3B,EAAE,uBAAuB2B,CAAI,EAAE;AAAA,cAAA,EACtC;AAAA,YAAA;AAAA,UAAA;AAAA,4BAEHC,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAd;AAAA,cAACe;AAAAA,cAAA;AAAA,gBACC,WAAAlB;AAAA,gBACA,eAAY;AAAA,gBACZ,cAAY;AAAA,gBACZ,eAAa;AAAA,gBAEZ,YAAE,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,YAEb,gBAAAG;AAAA,cAACgB;AAAA,cAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,SAAQ;AAAA,gBACR,WAAW,CAACC,MACV,gBAAAjB,EAACkB,GAAA,EAAM,GAAGD,GAAO,IAAIE,EAAiB,EAAE,OAAA7B,EAAA,CAAO,EAAA,CAAG;AAAA,gBAGnD,YAAE,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEJ,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as e, jsxs as c } from "react/jsx-runtime";
2
- import { u as O, _ as F, a as x, ao as K, b as R, y as w, aG as B, aH as C, ap as H, P as m, F as I, aI as V, aJ as _, aK as n, c as j, aL as k, A as D, e as G, B as M, aM as r, aN as N, aO as $, aP as J, aQ as L, aR as u, aS as Q, aT as q } from "./index-Dcc2DpAw.js";
2
+ import { u as O, _ as F, a as x, ao as K, b as R, y as w, aG as B, aH as C, ap as H, P as m, F as I, aI as V, aJ as _, aK as n, c as j, aL as k, A as D, e as G, B as M, aM as r, aN as N, aO as $, aP as J, aQ as L, aR as u, aS as Q, aT as q } from "./index-BB_cYBCp.js";
3
3
  import { useTranslation as U } from "react-i18next";
4
4
  import { useState as W } from "react";
5
5
  function te() {
@@ -161,4 +161,4 @@ function te() {
161
161
  export {
162
162
  te as default
163
163
  };
164
- //# sourceMappingURL=DetailOrganization-BA1Z02u1.js.map
164
+ //# sourceMappingURL=DetailOrganization-eJc5QSWd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailOrganization-BA1Z02u1.js","sources":["../src/organizations/DetailOrganization.tsx"],"sourcesContent":["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 { IdentityProviders } from \"./IdentityProviders\";\nimport { Members } from \"./Members\";\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 () => adminClient.organizations.findOne({ id }),\n (org) => {\n if (!org) {\n throw new Error(t(\"notFound\"));\n }\n form.reset({\n ...org,\n domains: org.domains?.map((d) => d.name),\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 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=\"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 <Members />\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":["DetailOrganization","adminClient","useAdminClient","addAlert","addError","useAlerts","realm","realmRepresentation","useRealm","id","useParams","useTranslation","form","useForm","save","org","organization","convertToOrg","error","useFetch","d","arrayToKeyValue","useTab","tab","useRoutableTab","toEditOrganization","settingsTab","attributesTab","membersTab","identityProvidersTab","eventsTab","hasAccess","useAccess","activeEventsTab","setActiveEventsTab","useState","jsx","PageSection","jsxs","FormProvider","DetailOrganizationHeader","RoutableTabs","Tab","TabTitleText","FormAccess","OrganizationForm","ActionGroup","FormSubmitButton","Button","AttributesForm","Members","IdentityProviders","Tabs","_","key","AdminEvents"],"mappings":"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"}
1
+ {"version":3,"file":"DetailOrganization-eJc5QSWd.js","sources":["../src/organizations/DetailOrganization.tsx"],"sourcesContent":["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 { IdentityProviders } from \"./IdentityProviders\";\nimport { Members } from \"./Members\";\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 () => adminClient.organizations.findOne({ id }),\n (org) => {\n if (!org) {\n throw new Error(t(\"notFound\"));\n }\n form.reset({\n ...org,\n domains: org.domains?.map((d) => d.name),\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 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=\"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 <Members />\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":["DetailOrganization","adminClient","useAdminClient","addAlert","addError","useAlerts","realm","realmRepresentation","useRealm","id","useParams","useTranslation","form","useForm","save","org","organization","convertToOrg","error","useFetch","d","arrayToKeyValue","useTab","tab","useRoutableTab","toEditOrganization","settingsTab","attributesTab","membersTab","identityProvidersTab","eventsTab","hasAccess","useAccess","activeEventsTab","setActiveEventsTab","useState","jsx","PageSection","jsxs","FormProvider","DetailOrganizationHeader","RoutableTabs","Tab","TabTitleText","FormAccess","OrganizationForm","ActionGroup","FormSubmitButton","Button","AttributesForm","Members","IdentityProviders","Tabs","_","key","AdminEvents"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as u, Fragment as M, jsx as o } from "react/jsx-runtime";
2
- import { u as R, ao as k, _ as J, b7 as Q, b as U, y as W, V as X, P as Y, c as Z, au as $, al as ee, am as te, an as oe, a4 as re, a7 as V, F as ae, a0 as ce, A as se, B as g, b8 as h, d as ne } from "./index-Dcc2DpAw.js";
2
+ import { u as R, ao as k, _ as J, b7 as Q, b as U, y as W, V as X, P as Y, c as Z, au as $, al as ee, am as te, an as oe, a4 as re, a7 as V, F as ae, a0 as ce, A as se, B as g, b8 as h, d as ne } from "./index-BB_cYBCp.js";
3
3
  import { useState as l } from "react";
4
4
  import { useTranslation as ie } from "react-i18next";
5
5
  import { useNavigate as le, Link as F } from "react-router-dom";
@@ -196,4 +196,4 @@ function ge() {
196
196
  export {
197
197
  ge as default
198
198
  };
199
- //# sourceMappingURL=ExecutorForm-BaJ7yk2s.js.map
199
+ //# sourceMappingURL=ExecutorForm-CS2GUPzw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutorForm-BaJ7yk2s.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 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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"}
1
+ {"version":3,"file":"ExecutorForm-CS2GUPzw.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 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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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as T, jsxs as te, Fragment as be } from "react/jsx-runtime";
2
- import { g as Wt, h as Lo, i as Dt, T as ia, j as Oc, s as Ac, L as Io, C as Tc, u as mt, _ as Oo, b as zn, M as nn, k as rn, F as Vn, l as on, N as Dc, B as ge, m as Je, d as We, n as Rc, y as Rt, o as Pc, p as $c, P as sa, R as Fc, Q as Cn, $ as si, v as zc, q as ai, r as li, w as Vc, x as Hc, X as Bc, Z as qc, z as Gc, D as aa, E as Ye, G as Yc, H as Hn, I as jc, J as Wc, K as lt, O as la, S as co, U as Xc, Y as Zc, W as Uc, a0 as Kc, A as Qc, a1 as ca, a2 as Jc, a3 as eu, a4 as tu, a5 as nu, a6 as ru, a7 as ou, a8 as iu, a9 as Ve, a as su, aa as ci, t as au, ab as lu, f as cu, ac as uu, V as du, ad as fu, ae as hu, af as tr, ag as pu, ah as gu, ai as mu, aj as yu } from "./index-Dcc2DpAw.js";
2
+ import { g as Wt, h as Lo, i as Dt, T as ia, j as Oc, s as Ac, L as Io, C as Tc, u as mt, _ as Oo, b as zn, M as nn, k as rn, F as Vn, l as on, N as Dc, B as ge, m as Je, d as We, n as Rc, y as Rt, o as Pc, p as $c, P as sa, R as Fc, Q as Cn, $ as si, v as zc, q as ai, r as li, w as Vc, x as Hc, X as Bc, Z as qc, z as Gc, D as aa, E as Ye, G as Yc, H as Hn, I as jc, J as Wc, K as lt, O as la, S as co, U as Xc, Y as Zc, W as Uc, a0 as Kc, A as Qc, a1 as ca, a2 as Jc, a3 as eu, a4 as tu, a5 as nu, a6 as ru, a7 as ou, a8 as iu, a9 as Ve, a as su, aa as ci, t as au, ab as lu, f as cu, ac as uu, V as du, ad as fu, ae as hu, af as tr, ag as pu, ah as gu, ai as mu, aj as yu } from "./index-BB_cYBCp.js";
3
3
  import * as Re from "react";
4
4
  import $, { useEffect as oe, useState as re, useMemo as Ne, forwardRef as ua, useCallback as de, memo as ae, useContext as Bn, createContext as da, useRef as Q } from "react";
5
5
  import { useTranslation as _e, Trans as ui } from "react-i18next";
@@ -9027,4 +9027,4 @@ export {
9027
9027
  ly as default,
9028
9028
  Fn as providerConditionFilter
9029
9029
  };
9030
- //# sourceMappingURL=FlowDetails-DBaoCEnX.js.map
9030
+ //# sourceMappingURL=FlowDetails-BfBqe2qh.js.map