@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.
- package/README.md +4 -4
- package/lib/.vite/manifest.json +51 -30
- package/lib/{CreateFlow-CJuPGQV2.js → CreateFlow-C8ou3z3D.js} +9 -9
- package/lib/{CreateFlow-CJuPGQV2.js.map → CreateFlow-C8ou3z3D.js.map} +1 -1
- package/lib/{DetailOrganization-BZxym2fM.js → DetailOrganization-ChDFPj6w.js} +33 -33
- package/lib/{DetailOrganization-BZxym2fM.js.map → DetailOrganization-ChDFPj6w.js.map} +1 -1
- package/lib/{ExecutorForm-DxyNT3T5.js → ExecutorForm-CqhYZ9zD.js} +58 -57
- package/lib/ExecutorForm-CqhYZ9zD.js.map +1 -0
- package/lib/FlowDetails-BYnrUM6B.js +9025 -0
- package/lib/FlowDetails-BYnrUM6B.js.map +1 -0
- package/lib/NewOrganization-IjGiIFRg.js +36 -0
- package/lib/{NewOrganization-CdgyibqF.js.map → NewOrganization-IjGiIFRg.js.map} +1 -1
- package/lib/PermissionConfigurationDetails-B_xt8b5a.js +702 -0
- package/lib/PermissionConfigurationDetails-B_xt8b5a.js.map +1 -0
- package/lib/{PermissionDetails-lynVHdOa.js → PermissionDetails-FszJtVpG.js} +60 -60
- package/lib/{PermissionDetails-lynVHdOa.js.map → PermissionDetails-FszJtVpG.js.map} +1 -1
- package/lib/RealmSection-BkVmYRIb.js +179 -0
- package/lib/RealmSection-BkVmYRIb.js.map +1 -0
- package/lib/ResourceDetails-Br81AEgO.js +226 -0
- package/lib/ResourceDetails-Br81AEgO.js.map +1 -0
- package/lib/{ScopeDetails-plfHXCXz.js → ScopeDetails-nDvWwhgg.js} +35 -35
- package/lib/{ScopeDetails-plfHXCXz.js.map → ScopeDetails-nDvWwhgg.js.map} +1 -1
- package/lib/ScopePicker-kvjSuh0C.js +85 -0
- package/lib/ScopePicker-kvjSuh0C.js.map +1 -0
- package/lib/authentication/components/AuthenticationProviderContext.d.ts +9 -0
- package/lib/authentication/components/FlowRow.d.ts +1 -0
- package/lib/authentication/components/FlowTitle.d.ts +5 -2
- package/lib/clients/add/SamlSignature.d.ts +1 -0
- package/lib/clients/authorization/ScopePicker.d.ts +5 -2
- package/lib/clients/authorization/policy/LogicSelector.d.ts +1 -1
- package/lib/clients/authorization/policy/NameDescription.d.ts +3 -2
- package/lib/clients/routes/PermissionConfigurationDetails.d.ts +10 -0
- package/lib/components/client/ClientSelect.d.ts +4 -2
- package/lib/components/dynamic/BooleanComponent.d.ts +1 -1
- package/lib/components/dynamic/DynamicComponents.d.ts +2 -1
- package/lib/components/dynamic/FileComponent.d.ts +1 -1
- package/lib/components/dynamic/GroupComponent.d.ts +1 -1
- package/lib/components/dynamic/IntComponent.d.ts +1 -1
- package/lib/components/dynamic/ListComponent.d.ts +1 -1
- package/lib/components/dynamic/MapComponent.d.ts +1 -1
- package/lib/components/dynamic/MultivaluedListComponent.d.ts +1 -1
- package/lib/components/dynamic/MultivaluedStringComponent.d.ts +1 -1
- package/lib/components/dynamic/NumberComponent.d.ts +1 -1
- package/lib/components/dynamic/PasswordComponent.d.ts +1 -1
- package/lib/components/dynamic/RoleComponent.d.ts +1 -1
- package/lib/components/dynamic/ScriptComponent.d.ts +1 -1
- package/lib/components/dynamic/StringComponent.d.ts +1 -1
- package/lib/components/dynamic/TextComponent.d.ts +1 -1
- package/lib/components/dynamic/UserProfileAttributeListComponent.d.ts +1 -1
- package/lib/components/dynamic/components.d.ts +1 -0
- package/lib/components/form/CodeEditor.d.ts +12 -0
- package/lib/components/role-mapping/AddRoleMappingModal.d.ts +3 -2
- package/lib/components/users/UserSelect.d.ts +1 -1
- package/lib/context/RecentRealms.d.ts +6 -2
- package/lib/i18n/i18n.d.ts +4 -0
- package/lib/{index-lFXE1rYJ.js → index-CRHbhwXr.js} +36043 -36047
- package/lib/{index-lFXE1rYJ.js.map → index-CRHbhwXr.js.map} +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/keycloak-admin-ui.css +1 -1
- package/lib/keycloak-admin-ui.js +162 -163
- package/lib/organizations/IdentityProviderSelect.d.ts +1 -1
- package/lib/permissions-configuration/PermissionsConfigurationSection.d.ts +1 -0
- package/lib/permissions-configuration/permission-configuration/AssignedPolicies.d.ts +10 -0
- package/lib/permissions-configuration/permission-configuration/AuthorizationScopesDetails.d.ts +10 -0
- package/lib/permissions-configuration/permission-configuration/ExistingPoliciesDialog.d.ts +10 -0
- package/lib/permissions-configuration/permission-configuration/NewPermissionConfigurationDialog.d.ts +8 -0
- package/lib/permissions-configuration/permission-configuration/NewPermissionPolicyDialog.d.ts +13 -0
- package/lib/permissions-configuration/permission-configuration/PermissionConfigurationDetails.d.ts +1 -0
- package/lib/permissions-configuration/permission-configuration/PermissionsConfigurationTab.d.ts +5 -0
- package/lib/permissions-configuration/permission-evaluation/PermissionEvaluationResult.d.ts +6 -0
- package/lib/permissions-configuration/permission-evaluation/PermissionsEvaluationTab.d.ts +8 -0
- package/lib/permissions-configuration/resource-types/GroupSelect.d.ts +7 -0
- package/lib/permissions-configuration/resource-types/ResourceType.d.ts +11 -0
- package/lib/permissions-configuration/resource-types/RoleSelect.d.ts +6 -0
- package/lib/permissions-configuration/resource-types/SearchDropdown.d.ts +20 -0
- package/lib/permissions-configuration/routes/NewPermissionConfiguration.d.ts +9 -0
- package/lib/permissions-configuration/routes/NewPermissionPolicy.d.ts +9 -0
- package/lib/permissions-configuration/routes/PermissionConfigurationDetails.d.ts +10 -0
- package/lib/permissions-configuration/routes/PermissionPolicyDetails.d.ts +10 -0
- package/lib/permissions-configuration/routes/PermissionsConfiguration.d.ts +7 -0
- package/lib/permissions-configuration/routes/PermissionsConfigurationTabs.d.ts +10 -0
- package/lib/permissions-configuration/routes/PermissionsPolicies.d.ts +8 -0
- package/lib/realm/RealmRoutes.d.ts +7 -0
- package/lib/realm/RealmSection.d.ts +5 -0
- package/lib/realm/add/NewRealmForm.d.ts +5 -1
- package/lib/realm-settings/themes/ThemesTab.d.ts +1 -0
- package/lib/utils/useIsFeatureEnabled.d.ts +2 -1
- package/lib/utils/useSortedResourceTypes.d.ts +5 -0
- package/package.json +26 -37
- package/lib/ExecutorForm-DxyNT3T5.js.map +0 -1
- package/lib/FlowDetails-ChnCh0MX.js +0 -10786
- package/lib/FlowDetails-ChnCh0MX.js.map +0 -1
- package/lib/NewOrganization-CdgyibqF.js +0 -36
- package/lib/ResourceDetails-BBY9AcKD.js +0 -286
- package/lib/ResourceDetails-BBY9AcKD.js.map +0 -1
- package/lib/browser-ponyfill-CTSSxZf6.js +0 -342
- package/lib/browser-ponyfill-CTSSxZf6.js.map +0 -1
- package/lib/components/realm-selector/RealmSelector.d.ts +0 -1
- package/lib/permissions/PermissionsSection.d.ts +0 -1
- package/lib/permissions/routes/Permissions.d.ts +0 -7
- package/lib/permissions/routes/PermissionsTabs.d.ts +0 -9
- package/lib/realm/routes/AddRealm.d.ts +0 -7
- /package/lib/{permissions → permissions-configuration}/routes.d.ts +0 -0
@@ -0,0 +1,179 @@
|
|
1
|
+
import { jsxs as u, Fragment as g, jsx as e } from "react/jsx-runtime";
|
2
|
+
import { aW as T, a as V, u as B, V as L, aa as W, aX as $, c as j, P as M, aY as H, aZ as D, a_ as J, a$ as k, b0 as U, b1 as X, af as f, B as Y, b2 as Z, b3 as _, b4 as q, I as S, J as K, K as O, O as v, b5 as z, e as G, b6 as Q } from "./index-CRHbhwXr.js";
|
3
|
+
import { useState as m } from "react";
|
4
|
+
import { useTranslation as p } from "react-i18next";
|
5
|
+
import { useNavigate as ee, Link as A } from "react-router-dom";
|
6
|
+
const te = () => {
|
7
|
+
const { t: n } = p(), [o, i] = m(!1), l = q();
|
8
|
+
return l.length < 3 ? null : /* @__PURE__ */ e(
|
9
|
+
S,
|
10
|
+
{
|
11
|
+
shouldFocusToggleOnSelect: !0,
|
12
|
+
onOpenChange: (t) => i(t),
|
13
|
+
toggle: (t) => /* @__PURE__ */ e(
|
14
|
+
v,
|
15
|
+
{
|
16
|
+
"data-testid": "kebab",
|
17
|
+
"aria-label": "Kebab toggle",
|
18
|
+
ref: t,
|
19
|
+
onClick: () => i(!o),
|
20
|
+
children: n("recentRealms")
|
21
|
+
}
|
22
|
+
),
|
23
|
+
isOpen: o,
|
24
|
+
children: /* @__PURE__ */ e(K, { children: l.map(({ name: t }) => /* @__PURE__ */ e(
|
25
|
+
O,
|
26
|
+
{
|
27
|
+
component: (s) => /* @__PURE__ */ e(A, { ...s, to: k({ realm: t }) }),
|
28
|
+
children: t
|
29
|
+
},
|
30
|
+
"server info"
|
31
|
+
)) })
|
32
|
+
}
|
33
|
+
);
|
34
|
+
}, ae = ({ onClick: n, isDisabled: o }) => {
|
35
|
+
const { t: i } = p(), [l, t] = m(!1);
|
36
|
+
return /* @__PURE__ */ e(
|
37
|
+
S,
|
38
|
+
{
|
39
|
+
shouldFocusToggleOnSelect: !0,
|
40
|
+
onOpenChange: (s) => t(s),
|
41
|
+
toggle: (s) => /* @__PURE__ */ e(
|
42
|
+
v,
|
43
|
+
{
|
44
|
+
"data-testid": "kebab",
|
45
|
+
"aria-label": "Kebab toggle",
|
46
|
+
ref: s,
|
47
|
+
onClick: () => t(!l),
|
48
|
+
variant: "plain",
|
49
|
+
isDisabled: o,
|
50
|
+
children: /* @__PURE__ */ e(z, {})
|
51
|
+
}
|
52
|
+
),
|
53
|
+
isOpen: l,
|
54
|
+
children: /* @__PURE__ */ e(K, { children: /* @__PURE__ */ e(
|
55
|
+
O,
|
56
|
+
{
|
57
|
+
"data-testid": "delete",
|
58
|
+
onClick: () => {
|
59
|
+
t(!1), n();
|
60
|
+
},
|
61
|
+
children: i("delete")
|
62
|
+
}
|
63
|
+
) })
|
64
|
+
}
|
65
|
+
);
|
66
|
+
};
|
67
|
+
function ie() {
|
68
|
+
const { t: n } = p(), o = ee(), { whoAmI: i } = T(), { realm: l } = V(), { adminClient: t } = B(), { addAlert: s, addError: I } = L(), [c, h] = m([]), [N, b] = m(!1), [R, x] = m(0), C = () => x(R + 1), F = async (a, r, E) => {
|
69
|
+
try {
|
70
|
+
return (await Z(
|
71
|
+
t,
|
72
|
+
"ui-ext/realms/names",
|
73
|
+
{ first: `${a}`, max: `${r}`, search: E || "" }
|
74
|
+
)).map((y) => ({ ...y, id: y.name }));
|
75
|
+
} catch (d) {
|
76
|
+
if (d instanceof _ && d.response.status < 500)
|
77
|
+
return [];
|
78
|
+
throw d;
|
79
|
+
}
|
80
|
+
}, [w, P] = W({
|
81
|
+
titleKey: n("deleteConfirmRealm", {
|
82
|
+
count: c.length,
|
83
|
+
name: c[0]?.name
|
84
|
+
}),
|
85
|
+
messageKey: "deleteConfirmRealmSetting",
|
86
|
+
continueButtonLabel: "delete",
|
87
|
+
onConfirm: async () => {
|
88
|
+
try {
|
89
|
+
c.filter(({ name: r }) => r === "master").length > 0 && s(n("cantDeleteMasterRealm"), G.warning);
|
90
|
+
const a = c.filter(({ name: r }) => r !== "master");
|
91
|
+
if (a.length === 0) return;
|
92
|
+
await Promise.all(
|
93
|
+
a.map(
|
94
|
+
({ name: r }) => t.realms.del({ realm: r })
|
95
|
+
)
|
96
|
+
), s(n("deletedSuccessRealmSetting")), c.filter(({ name: r }) => r === l).length > 0 && o(Q({ realm: "master" })), C(), h([]);
|
97
|
+
} catch (a) {
|
98
|
+
I("deleteError", a);
|
99
|
+
}
|
100
|
+
}
|
101
|
+
});
|
102
|
+
return /* @__PURE__ */ u(g, { children: [
|
103
|
+
/* @__PURE__ */ e(P, {}),
|
104
|
+
N && /* @__PURE__ */ e(
|
105
|
+
$,
|
106
|
+
{
|
107
|
+
onClose: () => {
|
108
|
+
b(!1), C();
|
109
|
+
}
|
110
|
+
}
|
111
|
+
),
|
112
|
+
/* @__PURE__ */ e(j, { titleKey: "manageRealms", divider: !1 }),
|
113
|
+
/* @__PURE__ */ e(M, { variant: "light", className: "pf-v5-u-p-0", children: /* @__PURE__ */ e(
|
114
|
+
H,
|
115
|
+
{
|
116
|
+
loader: F,
|
117
|
+
isPaginated: !0,
|
118
|
+
onSelect: h,
|
119
|
+
canSelectAll: !0,
|
120
|
+
ariaLabelKey: "selectRealm",
|
121
|
+
searchPlaceholderKey: "search",
|
122
|
+
actions: [
|
123
|
+
{
|
124
|
+
title: n("delete"),
|
125
|
+
onRowClick: (a) => {
|
126
|
+
h([a]), w();
|
127
|
+
}
|
128
|
+
}
|
129
|
+
],
|
130
|
+
toolbarItem: /* @__PURE__ */ u(g, { children: [
|
131
|
+
/* @__PURE__ */ e(f, { children: i.canCreateRealm() && /* @__PURE__ */ e(
|
132
|
+
Y,
|
133
|
+
{
|
134
|
+
onClick: () => b(!0),
|
135
|
+
"data-testid": "add-realm",
|
136
|
+
children: n("createRealm")
|
137
|
+
}
|
138
|
+
) }),
|
139
|
+
/* @__PURE__ */ e(f, { children: /* @__PURE__ */ e(te, {}) }),
|
140
|
+
/* @__PURE__ */ e(f, { children: /* @__PURE__ */ e(
|
141
|
+
ae,
|
142
|
+
{
|
143
|
+
onClick: w,
|
144
|
+
isDisabled: c.length === 0
|
145
|
+
}
|
146
|
+
) })
|
147
|
+
] }),
|
148
|
+
columns: [
|
149
|
+
{
|
150
|
+
name: "name",
|
151
|
+
transforms: [D(20)],
|
152
|
+
cellRenderer: ({ name: a }) => a !== l ? /* @__PURE__ */ e(A, { to: k({ realm: a }), children: a }) : /* @__PURE__ */ e(
|
153
|
+
U,
|
154
|
+
{
|
155
|
+
bodyContent: n("currentRealmExplain"),
|
156
|
+
triggerAction: "hover",
|
157
|
+
children: /* @__PURE__ */ u(g, { children: [
|
158
|
+
a,
|
159
|
+
" ",
|
160
|
+
/* @__PURE__ */ e(X, { isRead: !0, children: n("currentRealm") })
|
161
|
+
] })
|
162
|
+
}
|
163
|
+
)
|
164
|
+
},
|
165
|
+
{
|
166
|
+
name: "displayName",
|
167
|
+
transforms: [D(80)],
|
168
|
+
cellFormatters: [J(n)]
|
169
|
+
}
|
170
|
+
]
|
171
|
+
},
|
172
|
+
R
|
173
|
+
) })
|
174
|
+
] });
|
175
|
+
}
|
176
|
+
export {
|
177
|
+
ie as default
|
178
|
+
};
|
179
|
+
//# sourceMappingURL=RealmSection-BkVmYRIb.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"RealmSection-BkVmYRIb.js","sources":["../src/realm/RealmSection.tsx"],"sourcesContent":["import { NetworkError } from \"@keycloak/keycloak-admin-client\";\nimport { KeycloakDataTable, useAlerts } from \"@keycloak/keycloak-ui-shared\";\nimport {\n AlertVariant,\n Badge,\n Button,\n Dropdown,\n DropdownItem,\n DropdownList,\n MenuToggle,\n PageSection,\n Popover,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { EllipsisVIcon } from \"@patternfly/react-icons\";\nimport { cellWidth } from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { fetchAdminUI } from \"../context/auth/admin-ui-endpoint\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { useRecentRealms } from \"../context/RecentRealms\";\nimport { useWhoAmI } from \"../context/whoami/WhoAmI\";\nimport { translationFormatter } from \"../utils/translationFormatter\";\nimport NewRealmForm from \"./add/NewRealmForm\";\nimport { toRealm } from \"./RealmRoutes\";\nimport { toDashboard } from \"../dashboard/routes/Dashboard\";\n\nexport type RealmNameRepresentation = {\n name: string;\n displayName?: string;\n};\n\nconst RecentRealmsDropdown = () => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const recentRealms = useRecentRealms();\n\n if (recentRealms.length < 3) return null;\n return (\n <Dropdown\n shouldFocusToggleOnSelect\n onOpenChange={(isOpen) => setOpen(isOpen)}\n toggle={(ref) => (\n <MenuToggle\n data-testid=\"kebab\"\n aria-label=\"Kebab toggle\"\n ref={ref}\n onClick={() => setOpen(!open)}\n >\n {t(\"recentRealms\")}\n </MenuToggle>\n )}\n isOpen={open}\n >\n <DropdownList>\n {recentRealms.map(({ name }) => (\n <DropdownItem\n key=\"server info\"\n component={(props) => (\n <Link {...props} to={toDashboard({ realm: name })} />\n )}\n >\n {name}\n </DropdownItem>\n ))}\n </DropdownList>\n </Dropdown>\n );\n};\n\ntype KebabDropdownProps = {\n onClick: () => void;\n isDisabled?: boolean;\n};\n\nconst KebabDropdown = ({ onClick, isDisabled }: KebabDropdownProps) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n return (\n <Dropdown\n shouldFocusToggleOnSelect\n onOpenChange={(isOpen) => setOpen(isOpen)}\n toggle={(ref) => (\n <MenuToggle\n data-testid=\"kebab\"\n aria-label=\"Kebab toggle\"\n ref={ref}\n onClick={() => setOpen(!open)}\n variant=\"plain\"\n isDisabled={isDisabled}\n >\n <EllipsisVIcon />\n </MenuToggle>\n )}\n isOpen={open}\n >\n <DropdownList>\n <DropdownItem\n data-testid=\"delete\"\n onClick={() => {\n setOpen(false);\n onClick();\n }}\n >\n {t(\"delete\")}\n </DropdownItem>\n </DropdownList>\n </Dropdown>\n );\n};\n\ntype RealmRow = RealmNameRepresentation & { id: string };\n\nexport default function RealmSection() {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { whoAmI } = useWhoAmI();\n const { realm } = useRealm();\n const { adminClient } = useAdminClient();\n const { addAlert, addError } = useAlerts();\n\n const [selected, setSelected] = useState<RealmRow[]>([]);\n const [openNewRealm, setOpenNewRealm] = useState(false);\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const loader = async (first?: number, max?: number, search?: string) => {\n try {\n const result = await fetchAdminUI<RealmNameRepresentation[]>(\n adminClient,\n \"ui-ext/realms/names\",\n { first: `${first}`, max: `${max}`, search: search || \"\" },\n );\n return result.map((r) => ({ ...r, id: r.name }));\n } catch (error) {\n if (error instanceof NetworkError && error.response.status < 500) {\n return [];\n }\n\n throw error;\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: t(\"deleteConfirmRealm\", {\n count: selected.length,\n name: selected[0]?.name,\n }),\n messageKey: \"deleteConfirmRealmSetting\",\n continueButtonLabel: \"delete\",\n onConfirm: async () => {\n try {\n if (selected.filter(({ name }) => name === \"master\").length > 0) {\n addAlert(t(\"cantDeleteMasterRealm\"), AlertVariant.warning);\n }\n const filtered = selected.filter(({ name }) => name !== \"master\");\n if (filtered.length === 0) return;\n await Promise.all(\n filtered.map(({ name: realmName }) =>\n adminClient.realms.del({ realm: realmName }),\n ),\n );\n addAlert(t(\"deletedSuccessRealmSetting\"));\n if (selected.filter(({ name }) => name === realm).length > 0) {\n navigate(toRealm({ realm: \"master\" }));\n }\n refresh();\n setSelected([]);\n } catch (error) {\n addError(\"deleteError\", error);\n }\n },\n });\n\n return (\n <>\n <DeleteConfirm />\n {openNewRealm && (\n <NewRealmForm\n onClose={() => {\n setOpenNewRealm(false);\n refresh();\n }}\n />\n )}\n <ViewHeader titleKey=\"manageRealms\" divider={false} />\n <PageSection variant=\"light\" className=\"pf-v5-u-p-0\">\n <KeycloakDataTable\n key={key}\n loader={loader}\n isPaginated\n onSelect={setSelected}\n canSelectAll\n ariaLabelKey=\"selectRealm\"\n searchPlaceholderKey=\"search\"\n actions={[\n {\n title: t(\"delete\"),\n onRowClick: (selected) => {\n setSelected([selected]);\n toggleDeleteDialog();\n },\n },\n ]}\n toolbarItem={\n <>\n <ToolbarItem>\n {whoAmI.canCreateRealm() && (\n <Button\n onClick={() => setOpenNewRealm(true)}\n data-testid=\"add-realm\"\n >\n {t(\"createRealm\")}\n </Button>\n )}\n </ToolbarItem>\n <ToolbarItem>\n <RecentRealmsDropdown />\n </ToolbarItem>\n <ToolbarItem>\n <KebabDropdown\n onClick={toggleDeleteDialog}\n isDisabled={selected.length === 0}\n />\n </ToolbarItem>\n </>\n }\n columns={[\n {\n name: \"name\",\n transforms: [cellWidth(20)],\n cellRenderer: ({ name }) =>\n name !== realm ? (\n <Link to={toDashboard({ realm: name })}>{name}</Link>\n ) : (\n <Popover\n bodyContent={t(\"currentRealmExplain\")}\n triggerAction=\"hover\"\n >\n <>\n {name} <Badge isRead>{t(\"currentRealm\")}</Badge>\n </>\n </Popover>\n ),\n },\n {\n name: \"displayName\",\n transforms: [cellWidth(80)],\n cellFormatters: [translationFormatter(t)],\n },\n ]}\n />\n </PageSection>\n </>\n );\n}\n"],"names":["RecentRealmsDropdown","t","useTranslation","open","setOpen","useState","recentRealms","useRecentRealms","jsx","Dropdown","isOpen","ref","MenuToggle","DropdownList","name","DropdownItem","props","Link","toDashboard","KebabDropdown","onClick","isDisabled","EllipsisVIcon","RealmSection","navigate","useNavigate","whoAmI","useWhoAmI","realm","useRealm","adminClient","useAdminClient","addAlert","addError","useAlerts","selected","setSelected","openNewRealm","setOpenNewRealm","key","setKey","refresh","loader","first","max","search","fetchAdminUI","r","error","NetworkError","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","AlertVariant","filtered","realmName","toRealm","jsxs","Fragment","NewRealmForm","ViewHeader","PageSection","KeycloakDataTable","ToolbarItem","Button","cellWidth","Popover","Badge","translationFormatter"],"mappings":"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"}
|
@@ -0,0 +1,226 @@
|
|
1
|
+
import { jsxs as c, Fragment as y, jsx as a } from "react/jsx-runtime";
|
2
|
+
import { u as L, V as _, b as q, ao as E, ap as z, n as K, aa as M, aA as j, ar as O, c as U, K as G, P as Y, F as W, d as J, Y as i, at as A, aB as Q, a7 as w, aC as X, aD as Z, A as $, B as D, l as ee, ay as R, a3 as ae, aE as re, e as P, a2 as se } from "./index-CRHbhwXr.js";
|
3
|
+
import { useState as d } from "react";
|
4
|
+
import { useTranslation as te } from "react-i18next";
|
5
|
+
import { useNavigate as oe, Link as ne } from "react-router-dom";
|
6
|
+
import { S as le } from "./ScopePicker-kvjSuh0C.js";
|
7
|
+
function be() {
|
8
|
+
const { adminClient: o } = L(), { t: e } = te(), [m, C] = d(), [N, p] = d(), [b, F] = d(), { addAlert: h, addError: f } = _(), g = q({
|
9
|
+
mode: "onChange"
|
10
|
+
}), { setValue: H, handleSubmit: S } = g, { id: t, resourceId: s, realm: u } = E(), I = oe(), V = (r = {}) => {
|
11
|
+
se(r, H);
|
12
|
+
}, { hasAccess: T } = z(), v = !T("manage-authorization");
|
13
|
+
K(
|
14
|
+
() => Promise.all([
|
15
|
+
o.clients.findOne({ id: t }),
|
16
|
+
s ? o.clients.getResource({ id: t, resourceId: s }) : Promise.resolve(void 0),
|
17
|
+
s ? o.clients.listPermissionsByResource({ id: t, resourceId: s }) : Promise.resolve(void 0)
|
18
|
+
]),
|
19
|
+
([r, n, l]) => {
|
20
|
+
if (!r)
|
21
|
+
throw new Error(e("notFound"));
|
22
|
+
C(r), F(l), p(n), V(n);
|
23
|
+
},
|
24
|
+
[]
|
25
|
+
);
|
26
|
+
const B = async (r) => {
|
27
|
+
const n = ae(r);
|
28
|
+
try {
|
29
|
+
if (s)
|
30
|
+
await o.clients.updateResource({ id: t, resourceId: s }, n);
|
31
|
+
else {
|
32
|
+
const l = await o.clients.createResource(
|
33
|
+
{ id: t },
|
34
|
+
n
|
35
|
+
);
|
36
|
+
p(n), I(re({ realm: u, id: t, resourceId: l._id }));
|
37
|
+
}
|
38
|
+
h(
|
39
|
+
e((s ? "update" : "create") + "ResourceSuccess"),
|
40
|
+
P.success
|
41
|
+
);
|
42
|
+
} catch (l) {
|
43
|
+
f("resourceSaveError", l);
|
44
|
+
}
|
45
|
+
}, [k, x] = M({
|
46
|
+
titleKey: "deleteResource",
|
47
|
+
children: /* @__PURE__ */ c(y, { children: [
|
48
|
+
e("deleteResourceConfirm"),
|
49
|
+
b?.length !== 0 && /* @__PURE__ */ a(
|
50
|
+
j,
|
51
|
+
{
|
52
|
+
variant: "warning",
|
53
|
+
isInline: !0,
|
54
|
+
isPlain: !0,
|
55
|
+
title: e("deleteResourceWarning"),
|
56
|
+
className: "pf-v5-u-pt-lg",
|
57
|
+
children: /* @__PURE__ */ a("p", { className: "pf-v5-u-pt-xs", children: b?.map((r) => /* @__PURE__ */ a("strong", { className: "pf-v5-u-pr-md", children: r.name }, r.id)) })
|
58
|
+
}
|
59
|
+
)
|
60
|
+
] }),
|
61
|
+
continueButtonLabel: "confirm",
|
62
|
+
onConfirm: async () => {
|
63
|
+
try {
|
64
|
+
await o.clients.delResource({
|
65
|
+
id: t,
|
66
|
+
resourceId: s
|
67
|
+
}), h(e("resourceDeletedSuccess"), P.success), I(R({ realm: u, clientId: t, tab: "resources" }));
|
68
|
+
} catch (r) {
|
69
|
+
f("resourceDeletedError", r);
|
70
|
+
}
|
71
|
+
}
|
72
|
+
});
|
73
|
+
return m ? /* @__PURE__ */ c(y, { children: [
|
74
|
+
/* @__PURE__ */ a(x, {}),
|
75
|
+
/* @__PURE__ */ a(
|
76
|
+
U,
|
77
|
+
{
|
78
|
+
titleKey: s ? N?.name : "createResource",
|
79
|
+
dropdownItems: s ? [
|
80
|
+
/* @__PURE__ */ a(
|
81
|
+
G,
|
82
|
+
{
|
83
|
+
"data-testid": "delete-resource",
|
84
|
+
isDisabled: v,
|
85
|
+
onClick: () => k(),
|
86
|
+
children: e("delete")
|
87
|
+
},
|
88
|
+
"delete"
|
89
|
+
)
|
90
|
+
] : void 0
|
91
|
+
}
|
92
|
+
),
|
93
|
+
/* @__PURE__ */ a(Y, { variant: "light", children: /* @__PURE__ */ a(W, { ...g, children: /* @__PURE__ */ c(
|
94
|
+
J,
|
95
|
+
{
|
96
|
+
isHorizontal: !0,
|
97
|
+
role: "manage-authorization",
|
98
|
+
className: "keycloak__resource-details__form",
|
99
|
+
onSubmit: S(B),
|
100
|
+
children: [
|
101
|
+
/* @__PURE__ */ a(
|
102
|
+
i,
|
103
|
+
{
|
104
|
+
name: s ? "owner.name" : "",
|
105
|
+
label: e("owner"),
|
106
|
+
labelIcon: e("ownerHelp"),
|
107
|
+
defaultValue: m.clientId,
|
108
|
+
readOnly: !0
|
109
|
+
}
|
110
|
+
),
|
111
|
+
/* @__PURE__ */ a(
|
112
|
+
i,
|
113
|
+
{
|
114
|
+
name: "name",
|
115
|
+
label: e("name"),
|
116
|
+
labelIcon: e("resourceNameHelp"),
|
117
|
+
rules: { required: e("required") }
|
118
|
+
}
|
119
|
+
),
|
120
|
+
/* @__PURE__ */ a(
|
121
|
+
i,
|
122
|
+
{
|
123
|
+
name: "displayName",
|
124
|
+
label: e("displayName"),
|
125
|
+
labelIcon: e("displayNameHelp"),
|
126
|
+
rules: { required: e("required") }
|
127
|
+
}
|
128
|
+
),
|
129
|
+
/* @__PURE__ */ a(
|
130
|
+
i,
|
131
|
+
{
|
132
|
+
name: "type",
|
133
|
+
label: e("type"),
|
134
|
+
labelIcon: e("resourceDetailsTypeHelp")
|
135
|
+
}
|
136
|
+
),
|
137
|
+
/* @__PURE__ */ a(
|
138
|
+
A,
|
139
|
+
{
|
140
|
+
label: e("uris"),
|
141
|
+
fieldId: "uris",
|
142
|
+
labelIcon: /* @__PURE__ */ a(w, { helpText: e("urisHelp"), fieldLabelId: "uris" }),
|
143
|
+
children: /* @__PURE__ */ a(
|
144
|
+
Q,
|
145
|
+
{
|
146
|
+
name: "uris",
|
147
|
+
type: "url",
|
148
|
+
"aria-label": e("uris"),
|
149
|
+
addButtonLabel: "addUri"
|
150
|
+
}
|
151
|
+
)
|
152
|
+
}
|
153
|
+
),
|
154
|
+
/* @__PURE__ */ a(le, { clientId: t }),
|
155
|
+
/* @__PURE__ */ a(
|
156
|
+
i,
|
157
|
+
{
|
158
|
+
name: "icon_uri",
|
159
|
+
label: e("iconUri"),
|
160
|
+
labelIcon: e("iconUriHelp"),
|
161
|
+
type: "url"
|
162
|
+
}
|
163
|
+
),
|
164
|
+
/* @__PURE__ */ a(
|
165
|
+
X,
|
166
|
+
{
|
167
|
+
name: "ownerManagedAccess",
|
168
|
+
label: e("ownerManagedAccess"),
|
169
|
+
labelIcon: e("ownerManagedAccessHelp")
|
170
|
+
}
|
171
|
+
),
|
172
|
+
/* @__PURE__ */ a(
|
173
|
+
A,
|
174
|
+
{
|
175
|
+
hasNoPaddingTop: !0,
|
176
|
+
label: e("resourceAttribute"),
|
177
|
+
labelIcon: /* @__PURE__ */ a(
|
178
|
+
w,
|
179
|
+
{
|
180
|
+
helpText: e("resourceAttributeHelp"),
|
181
|
+
fieldLabelId: "resourceAttribute"
|
182
|
+
}
|
183
|
+
),
|
184
|
+
fieldId: "resourceAttribute",
|
185
|
+
children: /* @__PURE__ */ a(Z, { name: "attributes", isDisabled: v })
|
186
|
+
}
|
187
|
+
),
|
188
|
+
/* @__PURE__ */ a($, { children: /* @__PURE__ */ c("div", { className: "pf-v5-u-mt-md", children: [
|
189
|
+
/* @__PURE__ */ a(
|
190
|
+
D,
|
191
|
+
{
|
192
|
+
variant: ee.primary,
|
193
|
+
type: "submit",
|
194
|
+
"data-testid": "save",
|
195
|
+
children: e("save")
|
196
|
+
}
|
197
|
+
),
|
198
|
+
/* @__PURE__ */ a(
|
199
|
+
D,
|
200
|
+
{
|
201
|
+
variant: "link",
|
202
|
+
"data-testid": "cancel",
|
203
|
+
component: (r) => /* @__PURE__ */ a(
|
204
|
+
ne,
|
205
|
+
{
|
206
|
+
...r,
|
207
|
+
to: R({
|
208
|
+
realm: u,
|
209
|
+
clientId: t,
|
210
|
+
tab: "resources"
|
211
|
+
})
|
212
|
+
}
|
213
|
+
),
|
214
|
+
children: e("cancel")
|
215
|
+
}
|
216
|
+
)
|
217
|
+
] }) })
|
218
|
+
]
|
219
|
+
}
|
220
|
+
) }) })
|
221
|
+
] }) : /* @__PURE__ */ a(O, {});
|
222
|
+
}
|
223
|
+
export {
|
224
|
+
be as default
|
225
|
+
};
|
226
|
+
//# sourceMappingURL=ResourceDetails-Br81AEgO.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ResourceDetails-Br81AEgO.js","sources":["../src/clients/authorization/ResourceDetails.tsx"],"sourcesContent":["import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type ResourceRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation\";\nimport type ResourceServerRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation\";\nimport {\n HelpItem,\n TextControl,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Alert,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n FormGroup,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\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 { DefaultSwitchControl } from \"../../components/SwitchControl\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeyValueInput } from \"../../components/key-value-form/KeyValueInput\";\nimport type { KeyValueType } from \"../../components/key-value-form/key-value-convert\";\nimport { KeycloakSpinner } from \"@keycloak/keycloak-ui-shared\";\nimport { MultiLineInput } from \"../../components/multi-line-input/MultiLineInput\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { convertFormValuesToObject, convertToFormValues } from \"../../util\";\nimport { useParams } from \"../../utils/useParams\";\nimport { toAuthorizationTab } from \"../routes/AuthenticationTab\";\nimport { ResourceDetailsParams, toResourceDetails } from \"../routes/Resource\";\nimport { ScopePicker } from \"./ScopePicker\";\nimport \"./resource-details.css\";\n\ntype SubmittedResource = Omit<\n ResourceRepresentation,\n \"attributes\" | \"scopes\"\n> & {\n attributes: KeyValueType[];\n};\n\nexport default function ResourceDetails() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const [client, setClient] = useState<ClientRepresentation>();\n const [resource, setResource] = useState<ResourceRepresentation>();\n\n const [permissions, setPermission] =\n useState<ResourceServerRepresentation[]>();\n\n const { addAlert, addError } = useAlerts();\n const form = useForm<SubmittedResource>({\n mode: \"onChange\",\n });\n const { setValue, handleSubmit } = form;\n\n const { id, resourceId, realm } = useParams<ResourceDetailsParams>();\n const navigate = useNavigate();\n\n const setupForm = (resource: ResourceRepresentation = {}) => {\n convertToFormValues(resource, setValue);\n };\n\n const { hasAccess } = useAccess();\n\n const isDisabled = !hasAccess(\"manage-authorization\");\n\n useFetch(\n () =>\n Promise.all([\n adminClient.clients.findOne({ id }),\n resourceId\n ? adminClient.clients.getResource({ id, resourceId })\n : Promise.resolve(undefined),\n resourceId\n ? adminClient.clients.listPermissionsByResource({ id, resourceId })\n : Promise.resolve(undefined),\n ]),\n ([client, resource, permissions]) => {\n if (!client) {\n throw new Error(t(\"notFound\"));\n }\n setClient(client);\n setPermission(permissions);\n setResource(resource);\n setupForm(resource);\n },\n [],\n );\n\n const submit = async (submitted: SubmittedResource) => {\n const resource = convertFormValuesToObject<\n SubmittedResource,\n ResourceRepresentation\n >(submitted);\n\n try {\n if (resourceId) {\n await adminClient.clients.updateResource({ id, resourceId }, resource);\n } else {\n const result = await adminClient.clients.createResource(\n { id },\n resource,\n );\n setResource(resource);\n navigate(toResourceDetails({ realm, id, resourceId: result._id! }));\n }\n addAlert(\n t((resourceId ? \"update\" : \"create\") + \"ResourceSuccess\"),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\"resourceSaveError\", error);\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteResource\",\n children: (\n <>\n {t(\"deleteResourceConfirm\")}\n {permissions?.length !== 0 && (\n <Alert\n variant=\"warning\"\n isInline\n isPlain\n title={t(\"deleteResourceWarning\")}\n className=\"pf-v5-u-pt-lg\"\n >\n <p className=\"pf-v5-u-pt-xs\">\n {permissions?.map((permission) => (\n <strong key={permission.id} className=\"pf-v5-u-pr-md\">\n {permission.name}\n </strong>\n ))}\n </p>\n </Alert>\n )}\n </>\n ),\n continueButtonLabel: \"confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delResource({\n id,\n resourceId: resourceId!,\n });\n addAlert(t(\"resourceDeletedSuccess\"), AlertVariant.success);\n navigate(toAuthorizationTab({ realm, clientId: id, tab: \"resources\" }));\n } catch (error) {\n addError(\"resourceDeletedError\", error);\n }\n },\n });\n\n if (!client) {\n return <KeycloakSpinner />;\n }\n\n return (\n <>\n <DeleteConfirm />\n <ViewHeader\n titleKey={resourceId ? resource?.name! : \"createResource\"}\n dropdownItems={\n resourceId\n ? [\n <DropdownItem\n key=\"delete\"\n data-testid=\"delete-resource\"\n isDisabled={isDisabled}\n onClick={() => toggleDeleteDialog()}\n >\n {t(\"delete\")}\n </DropdownItem>,\n ]\n : undefined\n }\n />\n <PageSection variant=\"light\">\n <FormProvider {...form}>\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n className=\"keycloak__resource-details__form\"\n onSubmit={handleSubmit(submit)}\n >\n <TextControl\n name={resourceId ? \"owner.name\" : \"\"}\n label={t(\"owner\")}\n labelIcon={t(\"ownerHelp\")}\n defaultValue={client.clientId}\n readOnly\n />\n <TextControl\n name={\"name\"}\n label={t(\"name\")}\n labelIcon={t(\"resourceNameHelp\")}\n rules={{ required: t(\"required\") }}\n />\n <TextControl\n name=\"displayName\"\n label={t(\"displayName\")}\n labelIcon={t(\"displayNameHelp\")}\n rules={{ required: t(\"required\") }}\n />\n <TextControl\n name=\"type\"\n label={t(\"type\")}\n labelIcon={t(\"resourceDetailsTypeHelp\")}\n />\n <FormGroup\n label={t(\"uris\")}\n fieldId=\"uris\"\n labelIcon={\n <HelpItem helpText={t(\"urisHelp\")} fieldLabelId=\"uris\" />\n }\n >\n <MultiLineInput\n name=\"uris\"\n type=\"url\"\n aria-label={t(\"uris\")}\n addButtonLabel=\"addUri\"\n />\n </FormGroup>\n <ScopePicker clientId={id} />\n <TextControl\n name=\"icon_uri\"\n label={t(\"iconUri\")}\n labelIcon={t(\"iconUriHelp\")}\n type=\"url\"\n />\n <DefaultSwitchControl\n name=\"ownerManagedAccess\"\n label={t(\"ownerManagedAccess\")}\n labelIcon={t(\"ownerManagedAccessHelp\")}\n />\n <FormGroup\n hasNoPaddingTop\n label={t(\"resourceAttribute\")}\n labelIcon={\n <HelpItem\n helpText={t(\"resourceAttributeHelp\")}\n fieldLabelId=\"resourceAttribute\"\n />\n }\n fieldId=\"resourceAttribute\"\n >\n <KeyValueInput name=\"attributes\" isDisabled={isDisabled} />\n </FormGroup>\n <ActionGroup>\n <div className=\"pf-v5-u-mt-md\">\n <Button\n variant={ButtonVariant.primary}\n type=\"submit\"\n data-testid=\"save\"\n >\n {t(\"save\")}\n </Button>\n\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link\n {...props}\n to={toAuthorizationTab({\n realm,\n clientId: id,\n tab: \"resources\",\n })}\n ></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n </div>\n </ActionGroup>\n </FormAccess>\n </FormProvider>\n </PageSection>\n </>\n );\n}\n"],"names":["ResourceDetails","adminClient","useAdminClient","t","useTranslation","client","setClient","useState","resource","setResource","permissions","setPermission","addAlert","addError","useAlerts","form","useForm","setValue","handleSubmit","id","resourceId","realm","useParams","navigate","useNavigate","setupForm","convertToFormValues","hasAccess","useAccess","isDisabled","useFetch","submit","submitted","convertFormValuesToObject","result","toResourceDetails","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","jsxs","Fragment","jsx","Alert","permission","toAuthorizationTab","ViewHeader","DropdownItem","PageSection","FormProvider","FormAccess","TextControl","FormGroup","HelpItem","MultiLineInput","ScopePicker","DefaultSwitchControl","KeyValueInput","ActionGroup","Button","ButtonVariant","props","Link","KeycloakSpinner"],"mappings":"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"}
|
@@ -1,18 +1,18 @@
|
|
1
1
|
import { jsxs as c, Fragment as D, jsx as t } from "react/jsx-runtime";
|
2
|
-
import { u as w,
|
3
|
-
import { useState as
|
4
|
-
import { useTranslation as
|
5
|
-
import { useNavigate as
|
6
|
-
function
|
7
|
-
const { adminClient: r } = w(), { t: e } =
|
2
|
+
import { u as w, ao as N, V as z, Q as F, b as k, n as C, aF as H, ay as l, c as U, K as V, P, F as x, d as B, Y as d, A as E, B as m, l as T, e as j } from "./index-CRHbhwXr.js";
|
3
|
+
import { useState as q } from "react";
|
4
|
+
import { useTranslation as K } from "react-i18next";
|
5
|
+
import { useNavigate as Y, Link as G } from "react-router-dom";
|
6
|
+
function R() {
|
7
|
+
const { adminClient: r } = w(), { t: e } = K(), { id: o, scopeId: i, realm: s } = N(), p = Y(), { addAlert: b, addError: v } = z(), [f, u] = F(), [n, h] = q(), g = k({
|
8
8
|
mode: "onChange"
|
9
|
-
}), { reset:
|
10
|
-
|
9
|
+
}), { reset: S, handleSubmit: y } = g;
|
10
|
+
C(
|
11
11
|
async () => {
|
12
|
-
if (
|
12
|
+
if (i) {
|
13
13
|
const a = await r.clients.getAuthorizationScope({
|
14
|
-
id:
|
15
|
-
scopeId:
|
14
|
+
id: o,
|
15
|
+
scopeId: i
|
16
16
|
});
|
17
17
|
if (!a)
|
18
18
|
throw new Error(e("notFound"));
|
@@ -20,48 +20,48 @@ function W() {
|
|
20
20
|
}
|
21
21
|
},
|
22
22
|
(a) => {
|
23
|
-
h(a),
|
23
|
+
h(a), S({ ...a });
|
24
24
|
},
|
25
25
|
[]
|
26
26
|
);
|
27
27
|
const A = async (a) => {
|
28
28
|
try {
|
29
|
-
|
30
|
-
{ id:
|
29
|
+
i ? (await r.clients.updateAuthorizationScope(
|
30
|
+
{ id: o, scopeId: i },
|
31
31
|
a
|
32
32
|
), h(a)) : (await r.clients.createAuthorizationScope(
|
33
|
-
{ id:
|
33
|
+
{ id: o },
|
34
34
|
{
|
35
35
|
name: a.name,
|
36
36
|
displayName: a.displayName,
|
37
37
|
iconUri: a.iconUri
|
38
38
|
}
|
39
|
-
), p(l({ realm: s, clientId:
|
40
|
-
e((
|
41
|
-
|
39
|
+
), p(l({ realm: s, clientId: o, tab: "scopes" }))), b(
|
40
|
+
e((i ? "update" : "create") + "ScopeSuccess"),
|
41
|
+
j.success
|
42
42
|
);
|
43
43
|
} catch (I) {
|
44
|
-
|
44
|
+
v("scopeSaveError", I);
|
45
45
|
}
|
46
46
|
};
|
47
47
|
return /* @__PURE__ */ c(D, { children: [
|
48
48
|
/* @__PURE__ */ t(
|
49
|
-
|
49
|
+
H,
|
50
50
|
{
|
51
|
-
clientId:
|
52
|
-
open:
|
51
|
+
clientId: o,
|
52
|
+
open: f,
|
53
53
|
toggleDialog: u,
|
54
54
|
selectedScope: n,
|
55
|
-
refresh: () => p(l({ realm: s, clientId:
|
55
|
+
refresh: () => p(l({ realm: s, clientId: o, tab: "scopes" }))
|
56
56
|
}
|
57
57
|
),
|
58
58
|
/* @__PURE__ */ t(
|
59
59
|
U,
|
60
60
|
{
|
61
|
-
titleKey:
|
62
|
-
dropdownItems:
|
61
|
+
titleKey: i ? n?.name : e("createAuthorizationScope"),
|
62
|
+
dropdownItems: i ? [
|
63
63
|
/* @__PURE__ */ t(
|
64
|
-
|
64
|
+
V,
|
65
65
|
{
|
66
66
|
"data-testid": "delete-resource",
|
67
67
|
onClick: () => u(),
|
@@ -72,8 +72,8 @@ function W() {
|
|
72
72
|
] : void 0
|
73
73
|
}
|
74
74
|
),
|
75
|
-
/* @__PURE__ */ t(P, { variant: "light", children: /* @__PURE__ */ t(
|
76
|
-
|
75
|
+
/* @__PURE__ */ t(P, { variant: "light", children: /* @__PURE__ */ t(x, { ...g, children: /* @__PURE__ */ c(
|
76
|
+
B,
|
77
77
|
{
|
78
78
|
isHorizontal: !0,
|
79
79
|
role: "manage-authorization",
|
@@ -104,11 +104,11 @@ function W() {
|
|
104
104
|
labelIcon: e("iconUriHelp")
|
105
105
|
}
|
106
106
|
),
|
107
|
-
/* @__PURE__ */ t(
|
107
|
+
/* @__PURE__ */ t(E, { children: /* @__PURE__ */ c("div", { className: "pf-v5-u-mt-md", children: [
|
108
108
|
/* @__PURE__ */ t(
|
109
109
|
m,
|
110
110
|
{
|
111
|
-
variant:
|
111
|
+
variant: T.primary,
|
112
112
|
type: "submit",
|
113
113
|
"data-testid": "save",
|
114
114
|
children: e("save")
|
@@ -119,7 +119,7 @@ function W() {
|
|
119
119
|
{
|
120
120
|
variant: "link",
|
121
121
|
"data-testid": "revert",
|
122
|
-
onClick: () =>
|
122
|
+
onClick: () => S({ ...n }),
|
123
123
|
children: e("revert")
|
124
124
|
}
|
125
125
|
) : /* @__PURE__ */ t(
|
@@ -128,12 +128,12 @@ function W() {
|
|
128
128
|
variant: "link",
|
129
129
|
"data-testid": "cancel",
|
130
130
|
component: (a) => /* @__PURE__ */ t(
|
131
|
-
|
131
|
+
G,
|
132
132
|
{
|
133
133
|
...a,
|
134
134
|
to: l({
|
135
135
|
realm: s,
|
136
|
-
clientId:
|
136
|
+
clientId: o,
|
137
137
|
tab: "scopes"
|
138
138
|
})
|
139
139
|
}
|
@@ -148,6 +148,6 @@ function W() {
|
|
148
148
|
] });
|
149
149
|
}
|
150
150
|
export {
|
151
|
-
|
151
|
+
R as default
|
152
152
|
};
|
153
|
-
//# sourceMappingURL=ScopeDetails-
|
153
|
+
//# sourceMappingURL=ScopeDetails-nDvWwhgg.js.map
|