@keycloak/keycloak-admin-ui 26.1.5 → 26.2.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 (103) hide show
  1. package/README.md +4 -4
  2. package/lib/.vite/manifest.json +51 -30
  3. package/lib/{CreateFlow-CJuPGQV2.js → CreateFlow-C8ou3z3D.js} +9 -9
  4. package/lib/{CreateFlow-CJuPGQV2.js.map → CreateFlow-C8ou3z3D.js.map} +1 -1
  5. package/lib/{DetailOrganization-BZxym2fM.js → DetailOrganization-ChDFPj6w.js} +33 -33
  6. package/lib/{DetailOrganization-BZxym2fM.js.map → DetailOrganization-ChDFPj6w.js.map} +1 -1
  7. package/lib/{ExecutorForm-DxyNT3T5.js → ExecutorForm-CqhYZ9zD.js} +58 -57
  8. package/lib/ExecutorForm-CqhYZ9zD.js.map +1 -0
  9. package/lib/FlowDetails-BYnrUM6B.js +9025 -0
  10. package/lib/FlowDetails-BYnrUM6B.js.map +1 -0
  11. package/lib/NewOrganization-IjGiIFRg.js +36 -0
  12. package/lib/{NewOrganization-CdgyibqF.js.map → NewOrganization-IjGiIFRg.js.map} +1 -1
  13. package/lib/PermissionConfigurationDetails-B_xt8b5a.js +702 -0
  14. package/lib/PermissionConfigurationDetails-B_xt8b5a.js.map +1 -0
  15. package/lib/{PermissionDetails-lynVHdOa.js → PermissionDetails-FszJtVpG.js} +60 -60
  16. package/lib/{PermissionDetails-lynVHdOa.js.map → PermissionDetails-FszJtVpG.js.map} +1 -1
  17. package/lib/RealmSection-BkVmYRIb.js +179 -0
  18. package/lib/RealmSection-BkVmYRIb.js.map +1 -0
  19. package/lib/ResourceDetails-Br81AEgO.js +226 -0
  20. package/lib/ResourceDetails-Br81AEgO.js.map +1 -0
  21. package/lib/{ScopeDetails-plfHXCXz.js → ScopeDetails-nDvWwhgg.js} +35 -35
  22. package/lib/{ScopeDetails-plfHXCXz.js.map → ScopeDetails-nDvWwhgg.js.map} +1 -1
  23. package/lib/ScopePicker-kvjSuh0C.js +85 -0
  24. package/lib/ScopePicker-kvjSuh0C.js.map +1 -0
  25. package/lib/authentication/components/AuthenticationProviderContext.d.ts +9 -0
  26. package/lib/authentication/components/FlowRow.d.ts +1 -0
  27. package/lib/authentication/components/FlowTitle.d.ts +5 -2
  28. package/lib/clients/add/SamlSignature.d.ts +1 -0
  29. package/lib/clients/authorization/ScopePicker.d.ts +5 -2
  30. package/lib/clients/authorization/policy/LogicSelector.d.ts +1 -1
  31. package/lib/clients/authorization/policy/NameDescription.d.ts +3 -2
  32. package/lib/clients/routes/PermissionConfigurationDetails.d.ts +10 -0
  33. package/lib/components/client/ClientSelect.d.ts +4 -2
  34. package/lib/components/dynamic/BooleanComponent.d.ts +1 -1
  35. package/lib/components/dynamic/DynamicComponents.d.ts +2 -1
  36. package/lib/components/dynamic/FileComponent.d.ts +1 -1
  37. package/lib/components/dynamic/GroupComponent.d.ts +1 -1
  38. package/lib/components/dynamic/IntComponent.d.ts +1 -1
  39. package/lib/components/dynamic/ListComponent.d.ts +1 -1
  40. package/lib/components/dynamic/MapComponent.d.ts +1 -1
  41. package/lib/components/dynamic/MultivaluedListComponent.d.ts +1 -1
  42. package/lib/components/dynamic/MultivaluedStringComponent.d.ts +1 -1
  43. package/lib/components/dynamic/NumberComponent.d.ts +1 -1
  44. package/lib/components/dynamic/PasswordComponent.d.ts +1 -1
  45. package/lib/components/dynamic/RoleComponent.d.ts +1 -1
  46. package/lib/components/dynamic/ScriptComponent.d.ts +1 -1
  47. package/lib/components/dynamic/StringComponent.d.ts +1 -1
  48. package/lib/components/dynamic/TextComponent.d.ts +1 -1
  49. package/lib/components/dynamic/UserProfileAttributeListComponent.d.ts +1 -1
  50. package/lib/components/dynamic/components.d.ts +1 -0
  51. package/lib/components/form/CodeEditor.d.ts +12 -0
  52. package/lib/components/role-mapping/AddRoleMappingModal.d.ts +3 -2
  53. package/lib/components/users/UserSelect.d.ts +1 -1
  54. package/lib/context/RecentRealms.d.ts +6 -2
  55. package/lib/i18n/i18n.d.ts +4 -0
  56. package/lib/{index-lFXE1rYJ.js → index-CRHbhwXr.js} +36043 -36047
  57. package/lib/{index-lFXE1rYJ.js.map → index-CRHbhwXr.js.map} +1 -1
  58. package/lib/index.d.ts +1 -2
  59. package/lib/keycloak-admin-ui.css +1 -1
  60. package/lib/keycloak-admin-ui.js +162 -163
  61. package/lib/organizations/IdentityProviderSelect.d.ts +1 -1
  62. package/lib/permissions-configuration/PermissionsConfigurationSection.d.ts +1 -0
  63. package/lib/permissions-configuration/permission-configuration/AssignedPolicies.d.ts +10 -0
  64. package/lib/permissions-configuration/permission-configuration/AuthorizationScopesDetails.d.ts +10 -0
  65. package/lib/permissions-configuration/permission-configuration/ExistingPoliciesDialog.d.ts +10 -0
  66. package/lib/permissions-configuration/permission-configuration/NewPermissionConfigurationDialog.d.ts +8 -0
  67. package/lib/permissions-configuration/permission-configuration/NewPermissionPolicyDialog.d.ts +13 -0
  68. package/lib/permissions-configuration/permission-configuration/PermissionConfigurationDetails.d.ts +1 -0
  69. package/lib/permissions-configuration/permission-configuration/PermissionsConfigurationTab.d.ts +5 -0
  70. package/lib/permissions-configuration/permission-evaluation/PermissionEvaluationResult.d.ts +6 -0
  71. package/lib/permissions-configuration/permission-evaluation/PermissionsEvaluationTab.d.ts +8 -0
  72. package/lib/permissions-configuration/resource-types/GroupSelect.d.ts +7 -0
  73. package/lib/permissions-configuration/resource-types/ResourceType.d.ts +11 -0
  74. package/lib/permissions-configuration/resource-types/RoleSelect.d.ts +6 -0
  75. package/lib/permissions-configuration/resource-types/SearchDropdown.d.ts +20 -0
  76. package/lib/permissions-configuration/routes/NewPermissionConfiguration.d.ts +9 -0
  77. package/lib/permissions-configuration/routes/NewPermissionPolicy.d.ts +9 -0
  78. package/lib/permissions-configuration/routes/PermissionConfigurationDetails.d.ts +10 -0
  79. package/lib/permissions-configuration/routes/PermissionPolicyDetails.d.ts +10 -0
  80. package/lib/permissions-configuration/routes/PermissionsConfiguration.d.ts +7 -0
  81. package/lib/permissions-configuration/routes/PermissionsConfigurationTabs.d.ts +10 -0
  82. package/lib/permissions-configuration/routes/PermissionsPolicies.d.ts +8 -0
  83. package/lib/realm/RealmRoutes.d.ts +7 -0
  84. package/lib/realm/RealmSection.d.ts +5 -0
  85. package/lib/realm/add/NewRealmForm.d.ts +5 -1
  86. package/lib/realm-settings/themes/ThemesTab.d.ts +1 -0
  87. package/lib/utils/useIsFeatureEnabled.d.ts +2 -1
  88. package/lib/utils/useSortedResourceTypes.d.ts +5 -0
  89. package/package.json +26 -37
  90. package/lib/ExecutorForm-DxyNT3T5.js.map +0 -1
  91. package/lib/FlowDetails-ChnCh0MX.js +0 -10786
  92. package/lib/FlowDetails-ChnCh0MX.js.map +0 -1
  93. package/lib/NewOrganization-CdgyibqF.js +0 -36
  94. package/lib/ResourceDetails-BBY9AcKD.js +0 -286
  95. package/lib/ResourceDetails-BBY9AcKD.js.map +0 -1
  96. package/lib/browser-ponyfill-CTSSxZf6.js +0 -342
  97. package/lib/browser-ponyfill-CTSSxZf6.js.map +0 -1
  98. package/lib/components/realm-selector/RealmSelector.d.ts +0 -1
  99. package/lib/permissions/PermissionsSection.d.ts +0 -1
  100. package/lib/permissions/routes/Permissions.d.ts +0 -7
  101. package/lib/permissions/routes/PermissionsTabs.d.ts +0 -9
  102. package/lib/realm/routes/AddRealm.d.ts +0 -7
  103. /package/lib/{permissions → permissions-configuration}/routes.d.ts +0 -0
package/README.md CHANGED
@@ -33,7 +33,7 @@ import { KeycloakProvider } from "@keycloak/keycloak-ui-shared";
33
33
  ### Translation
34
34
 
35
35
  For the translation we use `react-i18next` you can [set it up](https://react.i18next.com/) as described on their website.
36
- If you want to use the translations that are provided then you need to add `i18next-http-backend` to your project and add:
36
+ If you want to use the translations that are provided then you need to add `i18next-fetch-backend` to your project and add:
37
37
 
38
38
  ```ts
39
39
 
@@ -42,9 +42,9 @@ backend: {
42
42
  parse: (data: string) => {
43
43
  const messages = JSON.parse(data);
44
44
 
45
- const result: Record<string, string> = {};
46
- messages.forEach((v) => (result[v.key] = v.value));
47
- return result;
45
+ return Object.fromEntries(
46
+ messages.map(({ key, value }) => [key, value])
47
+ );
48
48
  },
49
49
  },
50
50
  ```
@@ -1,74 +1,76 @@
1
1
  {
2
- "_browser-ponyfill-CTSSxZf6.js": {
3
- "file": "browser-ponyfill-CTSSxZf6.js",
4
- "name": "browser-ponyfill",
5
- "isDynamicEntry": true,
2
+ "_ScopePicker-kvjSuh0C.js": {
3
+ "file": "ScopePicker-kvjSuh0C.js",
4
+ "name": "ScopePicker",
6
5
  "imports": [
7
- "_index-lFXE1rYJ.js"
6
+ "_index-CRHbhwXr.js"
8
7
  ]
9
8
  },
10
- "_index-lFXE1rYJ.js": {
11
- "file": "index-lFXE1rYJ.js",
9
+ "_index-CRHbhwXr.js": {
10
+ "file": "index-CRHbhwXr.js",
12
11
  "name": "index",
13
12
  "dynamicImports": [
14
- "_browser-ponyfill-CTSSxZf6.js",
15
- "src/authentication/FlowDetails.tsx",
16
13
  "src/authentication/form/CreateFlow.tsx",
17
- "src/organizations/DetailOrganization.tsx",
14
+ "src/authentication/FlowDetails.tsx",
18
15
  "src/clients/authorization/PermissionDetails.tsx",
19
16
  "src/clients/authorization/ResourceDetails.tsx",
20
- "src/clients/authorization/ResourceDetails.tsx",
21
- "src/clients/authorization/PermissionDetails.tsx",
22
17
  "src/clients/authorization/ScopeDetails.tsx",
18
+ "src/clients/authorization/PermissionDetails.tsx",
19
+ "src/clients/authorization/ResourceDetails.tsx",
23
20
  "src/clients/authorization/ScopeDetails.tsx",
24
21
  "src/organizations/NewOrganization.tsx",
22
+ "src/organizations/DetailOrganization.tsx",
23
+ "src/permissions-configuration/permission-configuration/PermissionConfigurationDetails.tsx",
24
+ "src/permissions-configuration/permission-configuration/PermissionConfigurationDetails.tsx",
25
25
  "src/realm-settings/ExecutorForm.tsx",
26
- "src/realm-settings/ExecutorForm.tsx"
26
+ "src/realm-settings/ExecutorForm.tsx",
27
+ "src/realm/RealmSection.tsx"
27
28
  ]
28
29
  },
29
30
  "src/authentication/FlowDetails.tsx": {
30
- "file": "FlowDetails-ChnCh0MX.js",
31
+ "file": "FlowDetails-BYnrUM6B.js",
31
32
  "name": "FlowDetails",
32
33
  "src": "src/authentication/FlowDetails.tsx",
33
34
  "isDynamicEntry": true,
34
35
  "imports": [
35
- "_index-lFXE1rYJ.js"
36
+ "_index-CRHbhwXr.js"
36
37
  ]
37
38
  },
38
39
  "src/authentication/form/CreateFlow.tsx": {
39
- "file": "CreateFlow-CJuPGQV2.js",
40
+ "file": "CreateFlow-C8ou3z3D.js",
40
41
  "name": "CreateFlow",
41
42
  "src": "src/authentication/form/CreateFlow.tsx",
42
43
  "isDynamicEntry": true,
43
44
  "imports": [
44
- "_index-lFXE1rYJ.js"
45
+ "_index-CRHbhwXr.js"
45
46
  ]
46
47
  },
47
48
  "src/clients/authorization/PermissionDetails.tsx": {
48
- "file": "PermissionDetails-lynVHdOa.js",
49
+ "file": "PermissionDetails-FszJtVpG.js",
49
50
  "name": "PermissionDetails",
50
51
  "src": "src/clients/authorization/PermissionDetails.tsx",
51
52
  "isDynamicEntry": true,
52
53
  "imports": [
53
- "_index-lFXE1rYJ.js"
54
+ "_index-CRHbhwXr.js"
54
55
  ]
55
56
  },
56
57
  "src/clients/authorization/ResourceDetails.tsx": {
57
- "file": "ResourceDetails-BBY9AcKD.js",
58
+ "file": "ResourceDetails-Br81AEgO.js",
58
59
  "name": "ResourceDetails",
59
60
  "src": "src/clients/authorization/ResourceDetails.tsx",
60
61
  "isDynamicEntry": true,
61
62
  "imports": [
62
- "_index-lFXE1rYJ.js"
63
+ "_index-CRHbhwXr.js",
64
+ "_ScopePicker-kvjSuh0C.js"
63
65
  ]
64
66
  },
65
67
  "src/clients/authorization/ScopeDetails.tsx": {
66
- "file": "ScopeDetails-plfHXCXz.js",
68
+ "file": "ScopeDetails-nDvWwhgg.js",
67
69
  "name": "ScopeDetails",
68
70
  "src": "src/clients/authorization/ScopeDetails.tsx",
69
71
  "isDynamicEntry": true,
70
72
  "imports": [
71
- "_index-lFXE1rYJ.js"
73
+ "_index-CRHbhwXr.js"
72
74
  ]
73
75
  },
74
76
  "src/index.ts": {
@@ -77,34 +79,53 @@
77
79
  "src": "src/index.ts",
78
80
  "isEntry": true,
79
81
  "imports": [
80
- "_index-lFXE1rYJ.js"
82
+ "_index-CRHbhwXr.js"
81
83
  ]
82
84
  },
83
85
  "src/organizations/DetailOrganization.tsx": {
84
- "file": "DetailOrganization-BZxym2fM.js",
86
+ "file": "DetailOrganization-ChDFPj6w.js",
85
87
  "name": "DetailOrganization",
86
88
  "src": "src/organizations/DetailOrganization.tsx",
87
89
  "isDynamicEntry": true,
88
90
  "imports": [
89
- "_index-lFXE1rYJ.js"
91
+ "_index-CRHbhwXr.js"
90
92
  ]
91
93
  },
92
94
  "src/organizations/NewOrganization.tsx": {
93
- "file": "NewOrganization-CdgyibqF.js",
95
+ "file": "NewOrganization-IjGiIFRg.js",
94
96
  "name": "NewOrganization",
95
97
  "src": "src/organizations/NewOrganization.tsx",
96
98
  "isDynamicEntry": true,
97
99
  "imports": [
98
- "_index-lFXE1rYJ.js"
100
+ "_index-CRHbhwXr.js"
101
+ ]
102
+ },
103
+ "src/permissions-configuration/permission-configuration/PermissionConfigurationDetails.tsx": {
104
+ "file": "PermissionConfigurationDetails-B_xt8b5a.js",
105
+ "name": "PermissionConfigurationDetails",
106
+ "src": "src/permissions-configuration/permission-configuration/PermissionConfigurationDetails.tsx",
107
+ "isDynamicEntry": true,
108
+ "imports": [
109
+ "_index-CRHbhwXr.js",
110
+ "_ScopePicker-kvjSuh0C.js"
99
111
  ]
100
112
  },
101
113
  "src/realm-settings/ExecutorForm.tsx": {
102
- "file": "ExecutorForm-DxyNT3T5.js",
114
+ "file": "ExecutorForm-CqhYZ9zD.js",
103
115
  "name": "ExecutorForm",
104
116
  "src": "src/realm-settings/ExecutorForm.tsx",
105
117
  "isDynamicEntry": true,
106
118
  "imports": [
107
- "_index-lFXE1rYJ.js"
119
+ "_index-CRHbhwXr.js"
120
+ ]
121
+ },
122
+ "src/realm/RealmSection.tsx": {
123
+ "file": "RealmSection-BkVmYRIb.js",
124
+ "name": "RealmSection",
125
+ "src": "src/realm/RealmSection.tsx",
126
+ "isDynamicEntry": true,
127
+ "imports": [
128
+ "_index-CRHbhwXr.js"
108
129
  ]
109
130
  },
110
131
  "style.css": {
@@ -1,10 +1,10 @@
1
1
  import { jsxs as r, Fragment as w, jsx as t } from "react/jsx-runtime";
2
- import { u as h, a as F, B 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, z, d as B, t as H, e as i, f as N } from "./index-lFXE1rYJ.js";
3
- import { useTranslation as P } from "react-i18next";
4
- import { useNavigate as V, Link as k } from "react-router-dom";
2
+ import { u as h, a as F, V as b, b as v, c as y, P as g, F as S, d as A, N as C, $ as I, A as T, X as V, B as H, t as N, e as i, f as P } from "./index-CRHbhwXr.js";
3
+ import { useTranslation as k } from "react-i18next";
4
+ import { useNavigate as x, Link as B } from "react-router-dom";
5
5
  const c = ["basic-flow", "client-flow"];
6
6
  function E() {
7
- const { adminClient: u } = h(), { t: e } = P(), d = V(), { realm: n } = F(), { addAlert: l } = b(), s = v(), { handleSubmit: m, formState: p } = s;
7
+ const { adminClient: u } = h(), { t: e } = k(), d = x(), { realm: n } = F(), { addAlert: l } = b(), s = v(), { handleSubmit: m, formState: p } = s;
8
8
  return /* @__PURE__ */ r(w, { children: [
9
9
  /* @__PURE__ */ t(y, { titleKey: "createFlow", subKey: "authenticationCreateFlowHelp" }),
10
10
  /* @__PURE__ */ t(g, { variant: "light", children: /* @__PURE__ */ t(S, { ...s, children: /* @__PURE__ */ r(
@@ -17,7 +17,7 @@ function E() {
17
17
  try {
18
18
  const { id: o } = await u.authenticationManagement.createFlow(f);
19
19
  l(e("flowCreatedSuccess"), i.success), d(
20
- N({
20
+ P({
21
21
  realm: n,
22
22
  id: o,
23
23
  usedBy: "notInUse"
@@ -50,7 +50,7 @@ function E() {
50
50
  ),
51
51
  /* @__PURE__ */ r(T, { children: [
52
52
  /* @__PURE__ */ t(
53
- z,
53
+ V,
54
54
  {
55
55
  formState: p,
56
56
  "data-testid": "create",
@@ -60,11 +60,11 @@ function E() {
60
60
  }
61
61
  ),
62
62
  /* @__PURE__ */ t(
63
- B,
63
+ H,
64
64
  {
65
65
  "data-testid": "cancel",
66
66
  variant: "link",
67
- component: (a) => /* @__PURE__ */ t(k, { ...a, to: H({ realm: n }) }),
67
+ component: (a) => /* @__PURE__ */ t(B, { ...a, to: N({ realm: n }) }),
68
68
  children: e("cancel")
69
69
  }
70
70
  )
@@ -77,4 +77,4 @@ function E() {
77
77
  export {
78
78
  E as default
79
79
  };
80
- //# sourceMappingURL=CreateFlow-CJuPGQV2.js.map
80
+ //# sourceMappingURL=CreateFlow-C8ou3z3D.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateFlow-CJuPGQV2.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;AAC7B,QAAA,EAAE,aAAAC,EAAY,IAAIC,EAAe,GAEjC,EAAE,GAAAC,EAAE,IAAIC,EAAe,GACvBC,IAAWC,EAAY,GACvB,EAAE,OAAAC,EAAM,IAAIC,EAAS,GACrB,EAAE,UAAAC,EAAS,IAAIC,EAAU,GACzBC,IAAOC,EAA0C,GACjD,EAAE,cAAAC,GAAc,WAAAC,EAAA,IAAcH;AA0BpC,SAEI,gBAAAI,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAW,EAAA,UAAS,cAAa,QAAO,gCAA+B;AAAA,sBACvEC,GAAY,EAAA,SAAQ,SACnB,UAAC,gBAAAF,EAAAG,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,GAAK;AAEzD,cAAA;AACF,kBAAM,EAAE,IAAAE,EAAG,IACT,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,cACT,CAAA;AAAA,YACH;AAAA,mBACOG,GAAY;AACnB,YAAAlB;AAAA,cACEN,EAAE,mBAAmB;AAAA,gBACnB,OAAOwB,EAAM,UAAU,MAAM,gBAAgBA;AAAA,cAAA,CAC9C;AAAA,cACDF,EAAa;AAAA,YACf;AAAA,UAAA;AAAA,QAEJ,CAUyC;AAAA,QAE/B,UAAA;AAAA,UAAA,gBAAAR,EAACW,GAAgB,EAAA;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,EAAE;AAAA,cACrC,SAASA,EAAM,IAAI,CAAC+B,OAAU;AAAA,gBAC5B,KAAKA;AAAA,gBACL,OAAO3B,EAAE,uBAAuB2B,CAAI,EAAE;AAAA,cAAA,EACtC;AAAA,YAAA;AAAA,UACJ;AAAA,4BACCC,GACC,EAAA,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,YACb;AAAA,YACA,gBAAAG;AAAA,cAACgB;AAAA,cAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,SAAQ;AAAA,gBACR,WAAW,CAACC,MACV,gBAAAjB,EAACkB,GAAM,EAAA,GAAGD,GAAO,IAAIE,EAAiB,EAAE,OAAA7B,EAAM,CAAC,EAAG,CAAA;AAAA,gBAGnD,YAAE,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EACF,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,OAEJ,EACF,CAAA;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"CreateFlow-C8ou3z3D.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;AAC7B,QAAA,EAAE,aAAAC,EAAY,IAAIC,EAAe,GAEjC,EAAE,GAAAC,EAAE,IAAIC,EAAe,GACvBC,IAAWC,EAAY,GACvB,EAAE,OAAAC,EAAM,IAAIC,EAAS,GACrB,EAAE,UAAAC,EAAS,IAAIC,EAAU,GACzBC,IAAOC,EAA0C,GACjD,EAAE,cAAAC,GAAc,WAAAC,EAAA,IAAcH;AA0BpC,SAEI,gBAAAI,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAW,EAAA,UAAS,cAAa,QAAO,gCAA+B;AAAA,sBACvEC,GAAY,EAAA,SAAQ,SACnB,UAAC,gBAAAF,EAAAG,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,GAAK;AAEzD,cAAA;AACF,kBAAM,EAAE,IAAAE,EAAG,IACT,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,cACT,CAAA;AAAA,YACH;AAAA,mBACOG,GAAY;AACnB,YAAAlB;AAAA,cACEN,EAAE,mBAAmB;AAAA,gBACnB,OAAOwB,EAAM,UAAU,MAAM,gBAAgBA;AAAA,cAAA,CAC9C;AAAA,cACDF,EAAa;AAAA,YACf;AAAA,UAAA;AAAA,QAEJ,CAUyC;AAAA,QAE/B,UAAA;AAAA,UAAA,gBAAAR,EAACW,GAAgB,EAAA;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,EAAE;AAAA,cACrC,SAASA,EAAM,IAAI,CAAC+B,OAAU;AAAA,gBAC5B,KAAKA;AAAA,gBACL,OAAO3B,EAAE,uBAAuB2B,CAAI,EAAE;AAAA,cAAA,EACtC;AAAA,YAAA;AAAA,UACJ;AAAA,4BACCC,GACC,EAAA,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,YACb;AAAA,YACA,gBAAAG;AAAA,cAACgB;AAAA,cAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,SAAQ;AAAA,gBACR,WAAW,CAACC,MACV,gBAAAjB,EAACkB,GAAM,EAAA,GAAGD,GAAO,IAAIE,EAAiB,EAAE,OAAA7B,EAAM,CAAC,EAAG,CAAA;AAAA,gBAGnD,YAAE,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EACF,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,OAEJ,EACF,CAAA;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,18 +1,18 @@
1
1
  import { jsx as t, jsxs as c } from "react/jsx-runtime";
2
- import { u as F, B as O, a as x, b9 as B, b as w, n as C, ba as K, P as l, F as R, bs as D, bt as V, bu as n, bv as r, c as j, bw as k, A as H, z as I, d as $, bx as G, by as M, bz as N, bA as _, bB as u, bC as q, bD as J, bE as L, bF as Q } from "./index-lFXE1rYJ.js";
3
- import { useTranslation as U } from "react-i18next";
4
- import { useState as W } from "react";
2
+ import { u as O, V as F, a as x, ao as K, b as R, n as V, aG as w, ap as B, P as m, F as C, aH as H, aI as I, aJ as n, d as j, aK as k, A as D, X as G, B as M, aL as r, aM as N, aN as X, aO as $, aP as J, aQ as u, aR as L, aS as Q, aT as _ } from "./index-CRHbhwXr.js";
3
+ import { useTranslation as q } from "react-i18next";
4
+ import { useState as U } from "react";
5
5
  function et() {
6
- const { adminClient: m } = F(), { addAlert: v, addError: h } = O(), { realm: T, realmRepresentation: g } = x(), { id: o } = B(), { t: e } = U(), a = w(), b = async (s) => {
6
+ const { adminClient: b } = O(), { addAlert: v, addError: h } = F(), { realm: T, realmRepresentation: g } = x(), { id: o } = K(), { t: e } = q(), a = R(), l = async (s) => {
7
7
  try {
8
- const i = q(s);
9
- await m.organizations.updateById({ id: o }, i), v(e("organizationSaveSuccess"));
8
+ const i = L(s);
9
+ await b.organizations.updateById({ id: o }, i), v(e("organizationSaveSuccess"));
10
10
  } catch (i) {
11
11
  h("organizationSaveError", i);
12
12
  }
13
13
  };
14
- C(
15
- () => m.organizations.findOne({ id: o }),
14
+ V(
15
+ () => b.organizations.findOne({ id: o }),
16
16
  (s) => {
17
17
  if (!s)
18
18
  throw new Error(e("notFound"));
@@ -24,17 +24,17 @@ function et() {
24
24
  },
25
25
  [o]
26
26
  );
27
- const d = (s) => J(
28
- L({
27
+ const d = (s) => w(
28
+ _({
29
29
  realm: T,
30
30
  id: o,
31
31
  tab: s
32
32
  })
33
- ), y = d("settings"), z = d("attributes"), E = d("members"), p = d("identityProviders"), f = d("events"), { hasAccess: P } = K(), [A, S] = W("adminEvents");
34
- return /* @__PURE__ */ t(l, { variant: "light", className: "pf-v5-u-p-0", children: /* @__PURE__ */ c(R, { ...a, children: [
35
- /* @__PURE__ */ t(D, { save: () => b(a.getValues()) }),
33
+ ), y = d("settings"), E = d("attributes"), p = d("members"), z = d("identityProviders"), P = d("events"), { hasAccess: f } = B(), [S, A] = U("adminEvents");
34
+ return /* @__PURE__ */ t(m, { variant: "light", className: "pf-v5-u-p-0", children: /* @__PURE__ */ c(C, { ...a, children: [
35
+ /* @__PURE__ */ t(H, { save: () => l(a.getValues()) }),
36
36
  /* @__PURE__ */ c(
37
- V,
37
+ I,
38
38
  {
39
39
  "data-testid": "organization-tabs",
40
40
  "aria-label": e("organization"),
@@ -48,17 +48,17 @@ function et() {
48
48
  "data-testid": "settingsTab",
49
49
  title: /* @__PURE__ */ t(r, { children: e("settings") }),
50
50
  ...y,
51
- children: /* @__PURE__ */ t(l, { children: /* @__PURE__ */ c(
51
+ children: /* @__PURE__ */ t(m, { children: /* @__PURE__ */ c(
52
52
  j,
53
53
  {
54
54
  role: "anyone",
55
- onSubmit: a.handleSubmit(b),
55
+ onSubmit: a.handleSubmit(l),
56
56
  isHorizontal: !0,
57
57
  children: [
58
58
  /* @__PURE__ */ t(k, { readOnly: !0 }),
59
- /* @__PURE__ */ c(H, { children: [
59
+ /* @__PURE__ */ c(D, { children: [
60
60
  /* @__PURE__ */ t(
61
- I,
61
+ G,
62
62
  {
63
63
  formState: a.formState,
64
64
  "data-testid": "save",
@@ -66,7 +66,7 @@ function et() {
66
66
  }
67
67
  ),
68
68
  /* @__PURE__ */ t(
69
- $,
69
+ M,
70
70
  {
71
71
  onClick: () => a.reset(),
72
72
  "data-testid": "reset",
@@ -86,12 +86,12 @@ function et() {
86
86
  id: "attributes",
87
87
  "data-testid": "attributeTab",
88
88
  title: /* @__PURE__ */ t(r, { children: e("attributes") }),
89
- ...z,
90
- children: /* @__PURE__ */ t(l, { variant: "light", children: /* @__PURE__ */ t(
91
- G,
89
+ ...E,
90
+ children: /* @__PURE__ */ t(m, { variant: "light", children: /* @__PURE__ */ t(
91
+ N,
92
92
  {
93
93
  form: a,
94
- save: b,
94
+ save: l,
95
95
  reset: () => a.reset({
96
96
  ...a.getValues()
97
97
  }),
@@ -106,8 +106,8 @@ function et() {
106
106
  id: "members",
107
107
  "data-testid": "membersTab",
108
108
  title: /* @__PURE__ */ t(r, { children: e("members") }),
109
- ...E,
110
- children: /* @__PURE__ */ t(M, {})
109
+ ...p,
110
+ children: /* @__PURE__ */ t(X, {})
111
111
  }
112
112
  ),
113
113
  /* @__PURE__ */ t(
@@ -116,21 +116,21 @@ function et() {
116
116
  id: "identityProviders",
117
117
  "data-testid": "identityProvidersTab",
118
118
  title: /* @__PURE__ */ t(r, { children: e("identityProviders") }),
119
- ...p,
120
- children: /* @__PURE__ */ t(N, {})
119
+ ...z,
120
+ children: /* @__PURE__ */ t($, {})
121
121
  }
122
122
  ),
123
- g?.adminEventsEnabled && P("view-events") && /* @__PURE__ */ t(
123
+ g?.adminEventsEnabled && f("view-events") && /* @__PURE__ */ t(
124
124
  n,
125
125
  {
126
126
  "data-testid": "admin-events-tab",
127
127
  title: /* @__PURE__ */ t(r, { children: e("adminEvents") }),
128
- ...f,
128
+ ...P,
129
129
  children: /* @__PURE__ */ c(
130
- _,
130
+ J,
131
131
  {
132
- activeKey: A,
133
- onSelect: (s, i) => S(i),
132
+ activeKey: S,
133
+ onSelect: (s, i) => A(i),
134
134
  children: [
135
135
  /* @__PURE__ */ t(
136
136
  n,
@@ -161,4 +161,4 @@ function et() {
161
161
  export {
162
162
  et as default
163
163
  };
164
- //# sourceMappingURL=DetailOrganization-BZxym2fM.js.map
164
+ //# sourceMappingURL=DetailOrganization-ChDFPj6w.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailOrganization-BZxym2fM.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","t","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":";;;;AA0CA,SAAwBA,KAAqB;AACrC,QAAA,EAAE,aAAAC,EAAY,IAAIC,EAAe,GACjC,EAAE,UAAAC,GAAU,UAAAC,EAAS,IAAIC,EAAU,GAEnC,EAAE,OAAAC,GAAO,qBAAAC,EAAoB,IAAIC,EAAS,GAC1C,EAAE,IAAAC,EAAG,IAAIC,EAAkC,GAC3C,EAAE,GAAAC,EAAE,IAAIC,EAAe,GAEvBC,IAAOC,EAA8B,GAErCC,IAAO,OAAOC,MAA8B;AAC5C,QAAA;AACI,YAAAC,IAAeC,EAAaF,CAAG;AACrC,YAAMf,EAAY,cAAc,WAAW,EAAE,IAAAQ,EAAA,GAAMQ,CAAY,GACtDd,EAAAQ,EAAE,yBAAyB,CAAC;AAAA,aAC9BQ,GAAO;AACd,MAAAf,EAAS,yBAAyBe,CAAK;AAAA,IAAA;AAAA,EAE3C;AAEAC,EAAAA;AAAAA,IACE,MAAMnB,EAAY,cAAc,QAAQ,EAAE,IAAAQ,GAAI;AAAA,IAC9C,CAACO,MAAQ;AACP,UAAI,CAACA;AACH,cAAM,IAAI,MAAML,EAAE,UAAU,CAAC;AAE/B,MAAAE,EAAK,MAAM;AAAA,QACT,GAAGG;AAAA,QACH,SAASA,EAAI,SAAS,IAAI,CAACK,MAAMA,EAAE,IAAI;AAAA,QACvC,YAAYC,EAAgBN,EAAI,UAAU;AAAA,MAAA,CAC3C;AAAA,IACH;AAAA,IACA,CAACP,CAAE;AAAA,EACL;AAEM,QAAAc,IAAS,CAACC,MACdC;AAAA,IACEC,EAAmB;AAAA,MACjB,OAAApB;AAAA,MACA,IAAAG;AAAA,MACA,KAAAe;AAAA,IACD,CAAA;AAAA,EACH,GAEIG,IAAcJ,EAAO,UAAU,GAC/BK,IAAgBL,EAAO,YAAY,GACnCM,IAAaN,EAAO,SAAS,GAC7BO,IAAuBP,EAAO,mBAAmB,GACjDQ,IAAYR,EAAO,QAAQ,GAE3B,EAAE,WAAAS,EAAU,IAAIC,EAAU,GAC1B,CAACC,GAAiBC,CAAkB,IAAIC,EAAS,aAAa;AAGlE,SAAA,gBAAAC,EAACC,KAAY,SAAQ,SAAQ,WAAU,eACrC,UAAA,gBAAAC,EAACC,GAAc,EAAA,GAAG3B,GAChB,UAAA;AAAA,IAAA,gBAAAwB,EAACI,KAAyB,MAAM,MAAM1B,EAAKF,EAAK,UAAW,CAAA,GAAG;AAAA,IAC9D,gBAAA0B;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,cAAY/B,EAAE,cAAc;AAAA,QAC5B,OAAK;AAAA,QACL,cAAY;AAAA,QAEZ,UAAA;AAAA,UAAA,gBAAA0B;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,eAAY;AAAA,cACZ,OAAO,gBAAAN,EAACO,GAAc,EAAA,UAAAjC,EAAE,UAAU,GAAE;AAAA,cACnC,GAAGgB;AAAA,cAEJ,4BAACW,GACC,EAAA,UAAA,gBAAAC;AAAA,gBAACM;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,UAAUhC,EAAK,aAAaE,CAAI;AAAA,kBAChC,cAAY;AAAA,kBAEZ,UAAA;AAAA,oBAAC,gBAAAsB,EAAAS,GAAA,EAAiB,UAAQ,GAAC,CAAA;AAAA,sCAC1BC,GACC,EAAA,UAAA;AAAA,sBAAA,gBAAAV;AAAA,wBAACW;AAAAA,wBAAA;AAAA,0BACC,WAAWnC,EAAK;AAAA,0BAChB,eAAY;AAAA,0BAEX,YAAE,MAAM;AAAA,wBAAA;AAAA,sBACX;AAAA,sBACA,gBAAAwB;AAAA,wBAACY;AAAA,wBAAA;AAAA,0BACC,SAAS,MAAMpC,EAAK,MAAM;AAAA,0BAC1B,eAAY;AAAA,0BACZ,SAAQ;AAAA,0BAEP,YAAE,OAAO;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACZ,EACF,CAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA,EAEJ,CAAA;AAAA,YAAA;AAAA,UACF;AAAA,UACA,gBAAAwB;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,eAAY;AAAA,cACZ,OAAO,gBAAAN,EAACO,GAAc,EAAA,UAAAjC,EAAE,YAAY,GAAE;AAAA,cACrC,GAAGiB;AAAA,cAEJ,UAAA,gBAAAS,EAACC,GAAY,EAAA,SAAQ,SACnB,UAAA,gBAAAD;AAAA,gBAACa;AAAA,gBAAA;AAAA,kBACC,MAAArC;AAAA,kBACA,MAAAE;AAAA,kBACA,OAAO,MACLF,EAAK,MAAM;AAAA,oBACT,GAAGA,EAAK,UAAU;AAAA,kBAAA,CACnB;AAAA,kBAEH,MAAK;AAAA,gBAAA;AAAA,cAAA,EAET,CAAA;AAAA,YAAA;AAAA,UACF;AAAA,UACA,gBAAAwB;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,eAAY;AAAA,cACZ,OAAO,gBAAAN,EAACO,GAAc,EAAA,UAAAjC,EAAE,SAAS,GAAE;AAAA,cAClC,GAAGkB;AAAA,cAEJ,4BAACsB,GAAQ,CAAA,CAAA;AAAA,YAAA;AAAA,UACX;AAAA,UACA,gBAAAd;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,eAAY;AAAA,cACZ,OAAO,gBAAAN,EAACO,GAAc,EAAA,UAAAjC,EAAE,mBAAmB,GAAE;AAAA,cAC5C,GAAGmB;AAAA,cAEJ,4BAACsB,GAAkB,CAAA,CAAA;AAAA,YAAA;AAAA,UACrB;AAAA,UACC7C,GAAqB,sBACpByB,EAAU,aAAa,KACrB,gBAAAK;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,OAAO,gBAAAN,EAACO,GAAc,EAAA,UAAAjC,EAAE,aAAa,GAAE;AAAA,cACtC,GAAGoB;AAAA,cAEJ,UAAA,gBAAAQ;AAAA,gBAACc;AAAA,gBAAA;AAAA,kBACC,WAAWnB;AAAA,kBACX,UAAU,CAACoB,GAAGC,MAAQpB,EAAmBoB,CAAa;AAAA,kBAEtD,UAAA;AAAA,oBAAA,gBAAAlB;AAAA,sBAACM;AAAA,sBAAA;AAAA,wBACC,UAAS;AAAA,wBACT,OAAO,gBAAAN,EAACO,GAAc,EAAA,UAAAjC,EAAE,aAAa,GAAE;AAAA,wBAEvC,UAAC,gBAAA0B,EAAAmB,GAAA,EAAY,cAAc,iBAAiB/C,CAAE,GAAI,CAAA;AAAA,sBAAA;AAAA,oBACpD;AAAA,oBACA,gBAAA4B;AAAA,sBAACM;AAAA,sBAAA;AAAA,wBACC,UAAS;AAAA,wBACT,OAAO,gBAAAN,EAACO,GAAc,EAAA,UAAAjC,EAAE,kBAAkB,GAAE;AAAA,wBAE5C,UAAC,gBAAA0B,EAAAmB,GAAA,EAAY,cAAc,iBAAiB/C,CAAE,WAAY,CAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAC5D;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAEN,EAAA,CACF,EACF,CAAA;AAEJ;"}
1
+ {"version":3,"file":"DetailOrganization-ChDFPj6w.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","t","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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"}