@keycloakify/keycloak-account-ui 25.0.4-rc.7 → 26.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/KcAccountUiLoader.d.ts +1 -0
  2. package/KcAccountUiLoader.js +2 -1
  3. package/KcAccountUiLoader.js.map +1 -1
  4. package/README.md +19 -19
  5. package/account-security/AccountRow.js +5 -4
  6. package/account-security/AccountRow.js.map +1 -1
  7. package/account-security/DeviceActivity.js +5 -4
  8. package/account-security/DeviceActivity.js.map +1 -1
  9. package/account-security/LinkedAccounts.js +24 -9
  10. package/account-security/LinkedAccounts.js.map +1 -1
  11. package/account-security/LinkedAccountsToolbar.d.ts +12 -0
  12. package/account-security/LinkedAccountsToolbar.js +24 -0
  13. package/account-security/LinkedAccountsToolbar.js.map +1 -0
  14. package/account-security/SigningIn.js +1 -1
  15. package/account-security/SigningIn.js.map +1 -1
  16. package/api/methods.d.ts +7 -1
  17. package/api/methods.js +9 -2
  18. package/api/methods.js.map +1 -1
  19. package/api/parse-links.js +3 -3
  20. package/api/parse-links.js.map +1 -1
  21. package/api/parse-response.d.ts +2 -0
  22. package/api/parse-response.js +11 -15
  23. package/api/parse-response.js.map +1 -1
  24. package/api/request.js +1 -1
  25. package/api/request.js.map +1 -1
  26. package/api.js +1 -7
  27. package/api.js.map +1 -1
  28. package/applications/Applications.js +5 -4
  29. package/applications/Applications.js.map +1 -1
  30. package/environment.d.ts +1 -0
  31. package/environment.js.map +1 -1
  32. package/messages/messages_ca.properties +105 -12
  33. package/messages/messages_de.properties +23 -1
  34. package/messages/messages_en.properties +16 -1
  35. package/messages/messages_es.properties +1 -1
  36. package/messages/messages_fr.properties +64 -19
  37. package/messages/messages_it.properties +3 -0
  38. package/messages/messages_ka.properties +15 -0
  39. package/messages/messages_nl.properties +2 -0
  40. package/organizations/Organizations.d.ts +2 -0
  41. package/organizations/Organizations.js +19 -0
  42. package/organizations/Organizations.js.map +1 -0
  43. package/package.json +89 -29
  44. package/personal-info/PersonalInfo.js +11 -9
  45. package/personal-info/PersonalInfo.js.map +1 -1
  46. package/public/content.d.ts +4 -0
  47. package/public/content.js +5 -0
  48. package/public/content.js.map +1 -1
  49. package/resources/EditTheResource.js +4 -3
  50. package/resources/EditTheResource.js.map +1 -1
  51. package/resources/PermissionRequest.js +4 -3
  52. package/resources/PermissionRequest.js.map +1 -1
  53. package/resources/ResourcesTab.js +4 -3
  54. package/resources/ResourcesTab.js.map +1 -1
  55. package/resources/ShareTheResource.js +4 -3
  56. package/resources/ShareTheResource.js.map +1 -1
  57. package/root/Header.js +1 -1
  58. package/root/Header.js.map +1 -1
  59. package/root/PageNav.js +1 -1
  60. package/root/PageNav.js.map +1 -1
  61. package/routes.d.ts +1 -0
  62. package/routes.js +6 -0
  63. package/routes.js.map +1 -1
  64. package/src/KcAccountUiLoader.tsx +2 -0
  65. package/src/account-security/AccountRow.tsx +6 -8
  66. package/src/account-security/DeviceActivity.tsx +10 -9
  67. package/src/account-security/LinkedAccounts.tsx +107 -30
  68. package/src/account-security/LinkedAccountsToolbar.tsx +88 -0
  69. package/src/account-security/SigningIn.tsx +1 -1
  70. package/src/api/methods.ts +22 -2
  71. package/src/api/parse-links.ts +3 -3
  72. package/src/api/parse-response.ts +22 -23
  73. package/src/api/request.ts +1 -1
  74. package/src/api.ts +1 -7
  75. package/src/applications/Applications.tsx +19 -11
  76. package/src/environment.ts +1 -0
  77. package/src/organizations/Organizations.tsx +48 -0
  78. package/src/personal-info/PersonalInfo.tsx +10 -8
  79. package/src/public/content.ts +5 -0
  80. package/src/resources/EditTheResource.tsx +8 -7
  81. package/src/resources/PermissionRequest.tsx +5 -3
  82. package/src/resources/ResourcesTab.tsx +8 -7
  83. package/src/resources/ShareTheResource.tsx +9 -8
  84. package/src/root/Header.tsx +0 -1
  85. package/src/root/PageNav.tsx +1 -1
  86. package/src/routes.tsx +7 -0
  87. package/src/ui-shared/alerts/AlertPanel.tsx +43 -0
  88. package/src/ui-shared/alerts/Alerts.tsx +48 -52
  89. package/src/ui-shared/context/environment.ts +1 -1
  90. package/src/ui-shared/controls/KeycloakSpinner.tsx +12 -0
  91. package/src/ui-shared/controls/OrganizationTable.tsx +122 -0
  92. package/src/ui-shared/controls/select-control/SingleSelectControl.tsx +3 -1
  93. package/src/ui-shared/controls/select-control/TypeaheadSelectControl.tsx +5 -3
  94. package/src/ui-shared/controls/table/KeycloakDataTable.tsx +597 -0
  95. package/src/ui-shared/controls/table/ListEmptyState.tsx +86 -0
  96. package/src/ui-shared/controls/table/PaginatingTableToolbar.tsx +106 -0
  97. package/src/ui-shared/controls/table/TableToolbar.tsx +92 -0
  98. package/src/ui-shared/main.ts +35 -1
  99. package/src/ui-shared/masthead/Masthead.tsx +64 -48
  100. package/src/ui-shared/select/SingleSelect.tsx +2 -0
  101. package/src/ui-shared/select/TypeaheadSelect.tsx +2 -0
  102. package/src/ui-shared/user-profile/LocaleSelector.tsx +1 -1
  103. package/src/ui-shared/user-profile/UserProfileFields.tsx +18 -21
  104. package/src/ui-shared/user-profile/UserProfileGroup.tsx +3 -2
  105. package/src/ui-shared/user-profile/utils.ts +12 -6
  106. package/src/ui-shared/utils/ErrorBoundary.tsx +77 -0
  107. package/src/ui-shared/utils/darkMode.ts +19 -0
  108. package/src/ui-shared/utils/errors.ts +55 -0
  109. package/src/ui-shared/utils/generateId.ts +1 -0
  110. package/src/ui-shared/utils/useFetch.ts +44 -0
  111. package/src/ui-shared/utils/useSetTimeout.ts +40 -0
  112. package/src/utils/useAccountAlerts.ts +28 -0
  113. package/src/utils/usePromise.ts +8 -3
  114. package/src/zKcContextLike.ts +1 -0
  115. package/ui-shared/alerts/AlertPanel.d.ts +6 -0
  116. package/ui-shared/alerts/AlertPanel.js +6 -0
  117. package/ui-shared/alerts/AlertPanel.js.map +1 -0
  118. package/ui-shared/alerts/Alerts.d.ts +2 -3
  119. package/ui-shared/alerts/Alerts.js +32 -22
  120. package/ui-shared/alerts/Alerts.js.map +1 -1
  121. package/ui-shared/context/environment.js +1 -1
  122. package/ui-shared/context/environment.js.map +1 -1
  123. package/ui-shared/controls/KeycloakSpinner.d.ts +1 -0
  124. package/ui-shared/controls/KeycloakSpinner.js +8 -0
  125. package/ui-shared/controls/KeycloakSpinner.js.map +1 -0
  126. package/ui-shared/controls/OrganizationTable.d.ts +16 -0
  127. package/ui-shared/controls/OrganizationTable.js +45 -0
  128. package/ui-shared/controls/OrganizationTable.js.map +1 -0
  129. package/ui-shared/controls/select-control/SingleSelectControl.js +3 -1
  130. package/ui-shared/controls/select-control/SingleSelectControl.js.map +1 -1
  131. package/ui-shared/controls/select-control/TypeaheadSelectControl.js +5 -3
  132. package/ui-shared/controls/select-control/TypeaheadSelectControl.js.map +1 -1
  133. package/ui-shared/controls/table/KeycloakDataTable.d.ts +64 -0
  134. package/ui-shared/controls/table/KeycloakDataTable.js +279 -0
  135. package/ui-shared/controls/table/KeycloakDataTable.js.map +1 -0
  136. package/ui-shared/controls/table/ListEmptyState.d.ts +20 -0
  137. package/ui-shared/controls/table/ListEmptyState.js +11 -0
  138. package/ui-shared/controls/table/ListEmptyState.js.map +1 -0
  139. package/ui-shared/controls/table/PaginatingTableToolbar.d.ts +21 -0
  140. package/ui-shared/controls/table/PaginatingTableToolbar.js +27 -0
  141. package/ui-shared/controls/table/PaginatingTableToolbar.js.map +1 -0
  142. package/ui-shared/controls/table/TableToolbar.d.ts +12 -0
  143. package/ui-shared/controls/table/TableToolbar.js +30 -0
  144. package/ui-shared/controls/table/TableToolbar.js.map +1 -0
  145. package/ui-shared/main.d.ts +15 -1
  146. package/ui-shared/main.js +13 -1
  147. package/ui-shared/main.js.map +1 -1
  148. package/ui-shared/masthead/Masthead.d.ts +4 -7
  149. package/ui-shared/masthead/Masthead.js +14 -14
  150. package/ui-shared/masthead/Masthead.js.map +1 -1
  151. package/ui-shared/select/SingleSelect.d.ts +1 -1
  152. package/ui-shared/select/SingleSelect.js +2 -2
  153. package/ui-shared/select/SingleSelect.js.map +1 -1
  154. package/ui-shared/select/TypeaheadSelect.d.ts +1 -1
  155. package/ui-shared/select/TypeaheadSelect.js +2 -2
  156. package/ui-shared/select/TypeaheadSelect.js.map +1 -1
  157. package/ui-shared/user-profile/LocaleSelector.js +1 -1
  158. package/ui-shared/user-profile/LocaleSelector.js.map +1 -1
  159. package/ui-shared/user-profile/UserProfileFields.d.ts +2 -4
  160. package/ui-shared/user-profile/UserProfileFields.js +0 -18
  161. package/ui-shared/user-profile/UserProfileFields.js.map +1 -1
  162. package/ui-shared/user-profile/UserProfileGroup.js.map +1 -1
  163. package/ui-shared/user-profile/utils.js +2 -2
  164. package/ui-shared/user-profile/utils.js.map +1 -1
  165. package/ui-shared/utils/ErrorBoundary.d.ts +26 -0
  166. package/ui-shared/utils/ErrorBoundary.js +29 -0
  167. package/ui-shared/utils/ErrorBoundary.js.map +1 -0
  168. package/ui-shared/utils/darkMode.d.ts +1 -0
  169. package/ui-shared/utils/darkMode.js +16 -0
  170. package/ui-shared/utils/darkMode.js.map +1 -0
  171. package/ui-shared/utils/errors.d.ts +4 -0
  172. package/ui-shared/utils/errors.js +42 -0
  173. package/ui-shared/utils/errors.js.map +1 -0
  174. package/ui-shared/utils/generateId.d.ts +1 -0
  175. package/ui-shared/utils/generateId.js +2 -0
  176. package/ui-shared/utils/generateId.js.map +1 -0
  177. package/ui-shared/utils/useFetch.d.ts +17 -0
  178. package/ui-shared/utils/useFetch.js +38 -0
  179. package/ui-shared/utils/useFetch.js.map +1 -0
  180. package/ui-shared/utils/useSetTimeout.d.ts +1 -0
  181. package/ui-shared/utils/useSetTimeout.js +32 -0
  182. package/ui-shared/utils/useSetTimeout.js.map +1 -0
  183. package/utils/useAccountAlerts.d.ts +4 -0
  184. package/utils/useAccountAlerts.js +19 -0
  185. package/utils/useAccountAlerts.js.map +1 -0
  186. package/utils/usePromise.js +7 -3
  187. package/utils/usePromise.js.map +1 -1
  188. package/zKcContextLike.js +1 -0
  189. package/zKcContextLike.js.map +1 -1
  190. package/src/utils/isRecord.ts +0 -2
  191. package/utils/isRecord.d.ts +0 -1
  192. package/utils/isRecord.js +0 -2
  193. package/utils/isRecord.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import { NetworkError } from "@keycloak/keycloak-admin-client";
2
+
3
+ const ERROR_FIELDS = ["error", "errorMessage"];
4
+ const ERROR_DESCRIPTION_FIELD = "error_description";
5
+
6
+ export function getErrorMessage(error: unknown) {
7
+ if (typeof error === "string") {
8
+ return error;
9
+ }
10
+
11
+ if (error instanceof NetworkError) {
12
+ return getNetworkErrorMessage(error.responseData);
13
+ }
14
+
15
+ if (error instanceof Error) {
16
+ return error.message;
17
+ }
18
+
19
+ throw new Error("Unable to determine error message.");
20
+ }
21
+
22
+ export function getErrorDescription(error: unknown) {
23
+ if (!(error instanceof NetworkError)) {
24
+ return;
25
+ }
26
+
27
+ const data = error.responseData;
28
+
29
+ return getNetworkErrorDescription(data);
30
+ }
31
+
32
+ export function getNetworkErrorDescription(data: unknown) {
33
+ if (
34
+ typeof data === "object" &&
35
+ data !== null &&
36
+ ERROR_DESCRIPTION_FIELD in data &&
37
+ typeof data[ERROR_DESCRIPTION_FIELD] === "string"
38
+ ) {
39
+ return data[ERROR_DESCRIPTION_FIELD];
40
+ }
41
+ }
42
+
43
+ export function getNetworkErrorMessage(data: unknown) {
44
+ if (typeof data !== "object" || data === null) {
45
+ return;
46
+ }
47
+
48
+ for (const key of ERROR_FIELDS) {
49
+ const value = (data as Record<string, unknown>)[key];
50
+
51
+ if (typeof value === "string") {
52
+ return value;
53
+ }
54
+ }
55
+ }
@@ -0,0 +1 @@
1
+ export const generateId = () => Math.floor(Math.random() * 1000);
@@ -0,0 +1,44 @@
1
+ import { DependencyList, useEffect } from "react";
2
+ import { useErrorBoundary } from "@keycloakify/keycloak-account-ui/ui-shared/utils/ErrorBoundary";
3
+
4
+ /**
5
+ * Util function to only set the state when the component is still mounted.
6
+ *
7
+ * It takes 2 functions one you do your adminClient call in and the other to set your state
8
+ *
9
+ * @example
10
+ * useFetch(
11
+ * () => adminClient.components.findOne({ id }),
12
+ * (component) => setupForm(component),
13
+ * []
14
+ * );
15
+ *
16
+ * @param adminClientCall use this to do your adminClient call
17
+ * @param callback when the data is fetched this is where you set your state
18
+ */
19
+ export function useFetch<T>(
20
+ adminClientCall: () => Promise<T>,
21
+ callback: (param: T) => void,
22
+ deps?: DependencyList,
23
+ ) {
24
+ const { showBoundary } = useErrorBoundary();
25
+
26
+ useEffect(() => {
27
+ const controller = new AbortController();
28
+ const { signal } = controller;
29
+ adminClientCall()
30
+ .then((result) => {
31
+ if (!signal.aborted) {
32
+ callback(result);
33
+ }
34
+ })
35
+ .catch((error) => {
36
+ console.error(error);
37
+ if (!signal.aborted) {
38
+ showBoundary(error);
39
+ }
40
+ });
41
+
42
+ return () => controller.abort();
43
+ }, deps);
44
+ }
@@ -0,0 +1,40 @@
1
+ import { useEffect, useRef, useCallback } from "react";
2
+
3
+ export function useSetTimeout() {
4
+ const didUnmountRef = useRef(false);
5
+ const scheduledTimersRef = useRef(new Set<number>());
6
+
7
+ useEffect(() => {
8
+ didUnmountRef.current = false;
9
+
10
+ return () => {
11
+ didUnmountRef.current = true;
12
+ clearAll();
13
+ };
14
+ }, []);
15
+
16
+ function clearAll() {
17
+ scheduledTimersRef.current.forEach((timer) => clearTimeout(timer));
18
+ scheduledTimersRef.current.clear();
19
+ }
20
+
21
+ return useCallback((callback: () => void, delay: number) => {
22
+ if (didUnmountRef.current) {
23
+ throw new Error("Can't schedule a timeout on an unmounted component.");
24
+ }
25
+
26
+ const timer = Number(setTimeout(handleCallback, delay));
27
+
28
+ scheduledTimersRef.current.add(timer);
29
+
30
+ function handleCallback() {
31
+ scheduledTimersRef.current.delete(timer);
32
+ callback();
33
+ }
34
+
35
+ return function cancelTimeout() {
36
+ clearTimeout(timer);
37
+ scheduledTimersRef.current.delete(timer);
38
+ };
39
+ }, []);
40
+ }
@@ -0,0 +1,28 @@
1
+ import { useAlerts } from "@keycloakify/keycloak-account-ui/ui-shared";
2
+ import { AlertVariant } from "@patternfly/react-core";
3
+ import { useCallback, useMemo } from "react";
4
+ import { useTranslation } from "react-i18next";
5
+
6
+ import { ApiError } from "@keycloakify/keycloak-account-ui/api/parse-response";
7
+
8
+ export function useAccountAlerts() {
9
+ const { t } = useTranslation();
10
+ const { addAlert, addError } = useAlerts();
11
+ const addAccountError = useCallback(
12
+ (messageKey: string, error: unknown) => {
13
+ if (!(error instanceof ApiError)) {
14
+ addError(messageKey, error);
15
+ return;
16
+ }
17
+
18
+ const message = t(messageKey, { error: error.message });
19
+ addAlert(message, AlertVariant.danger, error.description);
20
+ },
21
+ [addAlert, addError, t],
22
+ );
23
+
24
+ return useMemo(
25
+ () => ({ addAlert, addError: addAccountError }),
26
+ [addAccountError, addAlert],
27
+ );
28
+ }
@@ -1,5 +1,5 @@
1
1
  import type { DependencyList } from "react";
2
- import { useEffect } from "react";
2
+ import { useEffect, useState } from "react";
3
3
 
4
4
  /**
5
5
  * Function that creates a Promise. Receives an [AbortSignal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
@@ -47,6 +47,7 @@ export function usePromise<T>(
47
47
  callback: PromiseResolvedFn<T>,
48
48
  deps: DependencyList = [],
49
49
  ) {
50
+ const [error, setError] = useState<unknown>();
50
51
  useEffect(() => {
51
52
  const controller = new AbortController();
52
53
  const { signal } = controller;
@@ -61,8 +62,7 @@ export function usePromise<T>(
61
62
  return;
62
63
  }
63
64
 
64
- // Rethrow other errors.
65
- throw error;
65
+ setError(error);
66
66
  }
67
67
  }
68
68
 
@@ -71,4 +71,9 @@ export function usePromise<T>(
71
71
  // Abort the Promise when the component unmounts, or the dependencies change.
72
72
  return () => controller.abort();
73
73
  }, deps);
74
+
75
+ // Rethrow other errors.
76
+ if (error) {
77
+ throw error;
78
+ }
74
79
  }
@@ -28,6 +28,7 @@ const zKcContextLikeCommon = (() => {
28
28
  deleteAccountAllowed: z.boolean(),
29
29
  updateEmailFeatureEnabled: z.boolean(),
30
30
  updateEmailActionEnabled: z.boolean(),
31
+ isViewOrganizationsEnabled: z.boolean().optional(),
31
32
  });
32
33
 
33
34
  assert<Equals<z.infer<typeof zTargetType>, TargetType>>();
@@ -0,0 +1,6 @@
1
+ import type { AlertEntry } from "../../ui-shared/alerts/Alerts";
2
+ export type AlertPanelProps = {
3
+ alerts: AlertEntry[];
4
+ onCloseAlert: (id: number) => void;
5
+ };
6
+ export declare function AlertPanel({ alerts, onCloseAlert }: AlertPanelProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AlertGroup, Alert, AlertActionCloseButton, AlertVariant, } from "@patternfly/react-core";
3
+ export function AlertPanel({ alerts, onCloseAlert }) {
4
+ return (_jsx(AlertGroup, { "data-testid": "global-alerts", isToast: true, style: { whiteSpace: "pre-wrap" }, children: alerts.map(({ id, variant, message, description }, index) => (_jsx(Alert, { "data-testid": index === 0 ? "last-alert" : undefined, isLiveRegion: true, variant: AlertVariant[variant], component: "p", variantLabel: "", title: message, actionClose: _jsx(AlertActionCloseButton, { title: message, onClose: () => onCloseAlert(id) }), children: description && _jsx("p", { children: description }) }, id))) }));
5
+ }
6
+ //# sourceMappingURL=AlertPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertPanel.js","sourceRoot":"","sources":["../../src/ui-shared/alerts/AlertPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,UAAU,EACV,KAAK,EACL,sBAAsB,EACtB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAShC,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,EAAmB;IAClE,OAAO,CACL,KAAC,UAAU,mBACG,eAAe,EAC3B,OAAO,QACP,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,YAEhC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5D,KAAC,KAAK,mBAES,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EACnD,YAAY,QACZ,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAC9B,SAAS,EAAC,GAAG,EACb,YAAY,EAAC,EAAE,EACf,KAAK,EAAE,OAAO,EACd,WAAW,EACT,KAAC,sBAAsB,IACrB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,GAC/B,YAGH,WAAW,IAAI,sBAAI,WAAW,GAAK,IAd/B,EAAE,CAeD,CACT,CAAC,GACS,CACd,CAAC;AACJ,CAAC"}
@@ -1,14 +1,13 @@
1
1
  import { AlertVariant } from "@patternfly/react-core";
2
2
  import { PropsWithChildren } from "react";
3
3
  export type AddAlertFunction = (message: string, variant?: AlertVariant, description?: string) => void;
4
- export type AddErrorFunction = (message: string) => void;
4
+ export type AddErrorFunction = (messageKey: string, error: unknown) => void;
5
5
  export type AlertProps = {
6
6
  addAlert: AddAlertFunction;
7
7
  addError: AddErrorFunction;
8
8
  };
9
- export declare const AlertContext: import("react").Context<AlertProps | undefined>;
10
9
  export declare const useAlerts: () => AlertProps;
11
- export type AlertType = {
10
+ export type AlertEntry = {
12
11
  id: number;
13
12
  message: string;
14
13
  variant: AlertVariant;
@@ -1,27 +1,37 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Alert, AlertActionCloseButton, AlertGroup, AlertVariant, } from "@patternfly/react-core";
3
- import { createContext, useContext, useState } from "react";
4
- export const AlertContext = createContext(undefined);
5
- export const useAlerts = () => useContext(AlertContext);
2
+ import { AlertVariant } from "@patternfly/react-core";
3
+ import { useCallback, useMemo, useState } from "react";
4
+ import { useTranslation } from "react-i18next";
5
+ import { createNamedContext } from "../../ui-shared/utils/createNamedContext";
6
+ import { getErrorDescription, getErrorMessage } from "../../ui-shared/utils/errors";
7
+ import { generateId } from "../../ui-shared/utils/generateId";
8
+ import { useRequiredContext } from "../../ui-shared/utils/useRequiredContext";
9
+ import { useSetTimeout } from "../../ui-shared/utils/useSetTimeout";
10
+ import { AlertPanel } from "../../ui-shared/alerts/AlertPanel";
11
+ const ALERT_TIMEOUT = 8000;
12
+ const AlertContext = createNamedContext("AlertContext", undefined);
13
+ export const useAlerts = () => useRequiredContext(AlertContext);
6
14
  export const AlertProvider = ({ children }) => {
15
+ const { t } = useTranslation();
16
+ const setTimeout = useSetTimeout();
7
17
  const [alerts, setAlerts] = useState([]);
8
- const hideAlert = (id) => {
9
- setAlerts((alerts) => alerts.filter((alert) => alert.id !== id));
10
- };
11
- const addAlert = (message, variant = AlertVariant.success, description) => {
12
- setAlerts([
13
- {
14
- id: Math.random() * 100,
15
- message,
16
- variant,
17
- description,
18
- },
19
- ...alerts,
20
- ]);
21
- };
22
- const addError = (message) => {
23
- addAlert(message, AlertVariant.danger);
24
- };
25
- return (_jsxs(AlertContext.Provider, { value: { addAlert, addError }, children: [_jsx(AlertGroup, { isToast: true, "data-testid": "alerts", children: alerts.map(({ id, variant, message, description }) => (_jsx(Alert, { isLiveRegion: true, variant: AlertVariant[variant], variantLabel: "", title: message, actionClose: _jsx(AlertActionCloseButton, { title: message, onClose: () => hideAlert(id) }), timeout: true, onTimeout: () => hideAlert(id), children: description && _jsx("p", { children: description }) }, id))) }), children] }));
18
+ const removeAlert = (id) => setAlerts((alerts) => alerts.filter((alert) => alert.id !== id));
19
+ const addAlert = useCallback((message, variant = AlertVariant.success, description) => {
20
+ const alert = {
21
+ id: generateId(),
22
+ message,
23
+ variant,
24
+ description,
25
+ };
26
+ setAlerts((alerts) => [alert, ...alerts]);
27
+ setTimeout(() => removeAlert(alert.id), ALERT_TIMEOUT);
28
+ }, [setTimeout]);
29
+ const addError = useCallback((messageKey, error) => {
30
+ const message = t(messageKey, { error: getErrorMessage(error) });
31
+ const description = getErrorDescription(error);
32
+ addAlert(message, AlertVariant.danger, description);
33
+ }, [addAlert, t]);
34
+ const value = useMemo(() => ({ addAlert, addError }), [addAlert, addError]);
35
+ return (_jsxs(AlertContext.Provider, { value: value, children: [_jsx(AlertPanel, { alerts: alerts, onCloseAlert: removeAlert }), children] }));
26
36
  };
27
37
  //# sourceMappingURL=Alerts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Alerts.js","sourceRoot":"","sources":["../../src/ui-shared/alerts/Alerts.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,EACL,sBAAsB,EACtB,UAAU,EACV,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAqB,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAe/E,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAyB,SAAS,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC;AASzD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAqB,EAAE,EAAE;IAC/D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,EAAE;QAC/B,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CACf,OAAe,EACf,UAAwB,YAAY,CAAC,OAAO,EAC5C,WAAoB,EACpB,EAAE;QACF,SAAS,CAAC;YACR;gBACE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;gBACvB,OAAO;gBACP,OAAO;gBACP,WAAW;aACZ;YACD,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,EAAE;QACnC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAClD,KAAC,UAAU,IAAC,OAAO,uBAAa,QAAQ,YACrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CACrD,KAAC,KAAK,IAEJ,YAAY,QACZ,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAC9B,YAAY,EAAC,EAAE,EACf,KAAK,EAAE,OAAO,EACd,WAAW,EACT,KAAC,sBAAsB,IACrB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAC5B,EAEJ,OAAO,QACP,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,YAE7B,WAAW,IAAI,sBAAI,WAAW,GAAK,IAd/B,EAAE,CAeD,CACT,CAAC,GACS,EACZ,QAAQ,IACa,CACzB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Alerts.js","sourceRoot":"","sources":["../../src/ui-shared/alerts/Alerts.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAqB,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qEAAqE,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAC/G,OAAO,EAAE,UAAU,EAAE,MAAM,6DAA6D,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qEAAqE,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,gEAAgE,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,8DAA8D,CAAC;AAE1F,MAAM,aAAa,GAAG,IAAI,CAAC;AAe3B,MAAM,YAAY,GAAG,kBAAkB,CACrC,cAAc,EACd,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAShE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAqB,EAAE,EAAE;IAC/D,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IAEvD,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,EAAE,CACjC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAEnE,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE;QACvD,MAAM,KAAK,GAAe;YACxB,EAAE,EAAE,UAAU,EAAE;YAChB,OAAO;YACP,OAAO;YACP,WAAW;SACZ,CAAC;QAEF,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QAC1C,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE/C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC,EACD,CAAC,QAAQ,EAAE,CAAC,CAAC,CACd,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE5E,OAAO,CACL,MAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,aACjC,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,GAAI,EACxD,QAAQ,IACa,CACzB,CAAC;AACJ,CAAC,CAAC"}
@@ -20,7 +20,7 @@ export function getInjectedEnvironment() {
20
20
  try {
21
21
  return JSON.parse(contents);
22
22
  }
23
- catch (error) {
23
+ catch (_a) {
24
24
  throw new Error("Unable to parse environment variables as JSON.");
25
25
  }
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/ui-shared/context/environment.ts"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC;IAEtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/ui-shared/context/environment.ts"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC;IAEtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const KeycloakSpinner: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Bullseye, Spinner } from "@patternfly/react-core";
3
+ import { useTranslation } from "react-i18next";
4
+ export const KeycloakSpinner = () => {
5
+ const { t } = useTranslation();
6
+ return (_jsx(Bullseye, { children: _jsx(Spinner, { "aria-label": t("spinnerLoading") }) }));
7
+ };
8
+ //# sourceMappingURL=KeycloakSpinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeycloakSpinner.js","sourceRoot":"","sources":["../../src/ui-shared/controls/KeycloakSpinner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/B,OAAO,CACL,KAAC,QAAQ,cACP,KAAC,OAAO,kBAAa,CAAC,CAAC,gBAAgB,CAAC,GAAI,GACnC,CACZ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import OrganizationRepresentation from "@keycloak/keycloak-admin-client/lib/defs/organizationRepresentation";
2
+ import { FunctionComponent, PropsWithChildren, ReactNode } from "react";
3
+ import { LoaderFunction } from "../../ui-shared/controls/table/KeycloakDataTable";
4
+ type OrganizationTableProps = PropsWithChildren & {
5
+ loader: LoaderFunction<OrganizationRepresentation> | OrganizationRepresentation[];
6
+ link: FunctionComponent<PropsWithChildren<{
7
+ organization: OrganizationRepresentation;
8
+ }>>;
9
+ toolbarItem?: ReactNode;
10
+ isPaginated?: boolean;
11
+ onSelect?: (orgs: OrganizationRepresentation[]) => void;
12
+ onDelete?: (org: OrganizationRepresentation) => void;
13
+ deleteLabel?: string;
14
+ };
15
+ export declare const OrganizationTable: ({ loader, toolbarItem, isPaginated, onSelect, onDelete, deleteLabel, link, children, }: OrganizationTableProps) => import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Badge, Chip, ChipGroup } from "@patternfly/react-core";
3
+ import { TableText } from "@patternfly/react-table";
4
+ import { useTranslation } from "react-i18next";
5
+ import { KeycloakDataTable } from "../../ui-shared/controls/table/KeycloakDataTable";
6
+ const OrgDetailLink = ({ link, organization }) => {
7
+ const { t } = useTranslation();
8
+ const Component = link;
9
+ return (_jsx(TableText, { wrapModifier: "truncate", children: _jsxs(Component, { organization: organization, children: [organization.name, !organization.enabled && (_jsx(Badge, { isRead: true, className: "pf-v5-u-ml-sm", children: t("disabled") }, `${organization.id}-disabled`))] }) }));
10
+ };
11
+ const Domains = (org) => {
12
+ var _a;
13
+ const { t } = useTranslation();
14
+ return (_jsx(ChipGroup, { numChips: 2, expandedText: t("hide"), collapsedText: t("showRemaining"), children: (_a = org.domains) === null || _a === void 0 ? void 0 : _a.map((dn) => {
15
+ const name = typeof dn === "string" ? dn : dn.name;
16
+ return (_jsx(Chip, { isReadOnly: true, children: name }, name));
17
+ }) }));
18
+ };
19
+ export const OrganizationTable = ({ loader, toolbarItem, isPaginated = false, onSelect, onDelete, deleteLabel = "delete", link, children, }) => {
20
+ const { t } = useTranslation();
21
+ return (_jsx(KeycloakDataTable, { loader: loader, isPaginated: isPaginated, ariaLabelKey: "organizationList", searchPlaceholderKey: "searchOrganization", toolbarItem: toolbarItem, onSelect: onSelect, canSelectAll: onSelect !== undefined, actions: onDelete
22
+ ? [
23
+ {
24
+ title: t(deleteLabel),
25
+ onRowClick: onDelete,
26
+ },
27
+ ]
28
+ : undefined, columns: [
29
+ {
30
+ name: "name",
31
+ displayKey: "name",
32
+ cellRenderer: (row) => (_jsx(OrgDetailLink, { link: link, organization: row })),
33
+ },
34
+ {
35
+ name: "domains",
36
+ displayKey: "domains",
37
+ cellRenderer: Domains,
38
+ },
39
+ {
40
+ name: "description",
41
+ displayKey: "description",
42
+ },
43
+ ], emptyState: children }));
44
+ };
45
+ //# sourceMappingURL=OrganizationTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationTable.js","sourceRoot":"","sources":["../../src/ui-shared/controls/OrganizationTable.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAkB,MAAM,6EAA6E,CAAC;AAShI,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,EAAsB,EAAE,EAAE;IACnE,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,OAAO,CACL,KAAC,SAAS,IAAC,YAAY,EAAC,UAAU,YAChC,MAAC,SAAS,IAAC,YAAY,EAAE,YAAY,aAClC,YAAY,CAAC,IAAI,EACjB,CAAC,YAAY,CAAC,OAAO,IAAI,CACxB,KAAC,KAAK,IAEJ,MAAM,QACN,SAAS,EAAC,eAAe,YAExB,CAAC,CAAC,UAAU,CAAC,IAJT,GAAG,YAAY,CAAC,EAAE,WAAW,CAK5B,CACT,IACS,GACF,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,GAA+B,EAAE,EAAE;;IAClD,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,OAAO,CACL,KAAC,SAAS,IACR,QAAQ,EAAE,CAAC,EACX,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EACvB,aAAa,EAAE,CAAC,CAAC,eAAe,CAAC,YAEhC,MAAA,GAAG,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;YACnD,OAAO,CACL,KAAC,IAAI,IAAY,UAAU,kBACxB,IAAI,IADI,IAAI,CAER,CACR,CAAC;QACJ,CAAC,CAAC,GACQ,CACb,CAAC;AACJ,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,MAAM,EACN,WAAW,EACX,WAAW,GAAG,KAAK,EACnB,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,QAAQ,EACtB,IAAI,EACJ,QAAQ,GACe,EAAE,EAAE;IAC3B,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/B,OAAO,CACL,KAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,YAAY,EAAC,kBAAkB,EAC/B,oBAAoB,EAAC,oBAAoB,EACzC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,QAAQ,KAAK,SAAS,EACpC,OAAO,EACL,QAAQ;YACN,CAAC,CAAC;gBACE;oBACE,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC;oBACrB,UAAU,EAAE,QAAQ;iBACrB;aACF;YACH,CAAC,CAAC,SAAS,EAEf,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,MAAM;gBAClB,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CACrB,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,GAAI,CACjD;aACF;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,SAAS;gBACrB,YAAY,EAAE,OAAO;aACtB;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,aAAa;aAC1B;SACF,EACD,UAAU,EAAE,QAAQ,GACpB,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -14,6 +14,7 @@ import { MenuToggle, MenuToggleStatus, Select, SelectList, SelectOption, } from
14
14
  import { get } from "lodash-es";
15
15
  import { useState } from "react";
16
16
  import { Controller, useFormContext, } from "react-hook-form";
17
+ import { getRuleValue } from "../../../ui-shared/utils/getRuleValue";
17
18
  import { FormLabel } from "../../../ui-shared/controls/FormLabel";
18
19
  import { isSelectBasedOptions, isString, key, } from "../../../ui-shared/controls/select-control/SelectControl";
19
20
  export const SingleSelectControl = (_a) => {
@@ -21,7 +22,8 @@ export const SingleSelectControl = (_a) => {
21
22
  var { id, name, label, options, controller, labelIcon } = _a, rest = __rest(_a, ["id", "name", "label", "options", "controller", "labelIcon"]);
22
23
  const { control, formState: { errors }, } = useFormContext();
23
24
  const [open, setOpen] = useState(false);
24
- return (_jsx(FormLabel, { name: name, label: label, isRequired: !!((_b = controller.rules) === null || _b === void 0 ? void 0 : _b.required), error: get(errors, name), labelIcon: labelIcon, children: _jsx(Controller, Object.assign({}, controller, { name: name, control: control, render: ({ field: { onChange, value } }) => (_jsx(Select, Object.assign({}, rest, { onClick: () => setOpen(!open), onOpenChange: () => setOpen(false), selected: isSelectBasedOptions(options)
25
+ const required = getRuleValue((_b = controller.rules) === null || _b === void 0 ? void 0 : _b.required) === true;
26
+ return (_jsx(FormLabel, { name: name, label: label, isRequired: required, error: get(errors, name), labelIcon: labelIcon, children: _jsx(Controller, Object.assign({}, controller, { name: name, control: control, render: ({ field: { onChange, value } }) => (_jsx(Select, Object.assign({}, rest, { onClick: () => setOpen(!open), onOpenChange: () => setOpen(false), selected: isSelectBasedOptions(options)
25
27
  ? options
26
28
  .filter((o) => Array.isArray(value)
27
29
  ? value.includes(o.key)
@@ -1 +1 @@
1
- {"version":3,"file":"SingleSelectControl.js","sourceRoot":"","sources":["../../../src/ui-shared/controls/select-control/SingleSelectControl.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SingleSelectControl.js","sourceRoot":"","sources":["../../../src/ui-shared/controls/select-control/SingleSelectControl.tsx"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ import { TimesIcon } from "@patternfly/react-icons";
15
15
  import { get } from "lodash-es";
16
16
  import { useMemo, useRef, useState } from "react";
17
17
  import { Controller, useFormContext, } from "react-hook-form";
18
+ import { getRuleValue } from "../../../ui-shared/utils/getRuleValue";
18
19
  import { FormLabel } from "../../../ui-shared/controls/FormLabel";
19
20
  import { SelectVariant, isSelectBasedOptions, isString, key, } from "../../../ui-shared/controls/select-control/SelectControl";
20
21
  const getValue = (option) => isString(option) ? option : option.value;
@@ -26,6 +27,7 @@ export const TypeaheadSelectControl = (_a) => {
26
27
  const [filterValue, setFilterValue] = useState("");
27
28
  const [focusedItemIndex, setFocusedItemIndex] = useState(0);
28
29
  const textInputRef = useRef();
30
+ const required = getRuleValue((_b = controller.rules) === null || _b === void 0 ? void 0 : _b.required) === true;
29
31
  const filteredOptions = options.filter((option) => getValue(option).toLowerCase().startsWith(filterValue.toLowerCase()));
30
32
  const convert = useMemo(() => filteredOptions.map((option, index) => (_jsx(SelectOption, { value: key(option), isFocused: focusedItemIndex === index, children: getValue(option) }, key(option)))), [focusedItemIndex, filteredOptions]);
31
33
  const onInputKeyDown = (event, field) => {
@@ -84,7 +86,7 @@ export const TypeaheadSelectControl = (_a) => {
84
86
  }
85
87
  }
86
88
  };
87
- return (_jsx(FormLabel, { name: name, label: label, isRequired: !!((_b = controller.rules) === null || _b === void 0 ? void 0 : _b.required), error: get(errors, name), labelIcon: labelIcon, children: _jsx(Controller, Object.assign({}, controller, { name: name, control: control, render: ({ field }) => (_jsx(Select, Object.assign({}, rest, { onClick: () => setOpen(!open), onOpenChange: () => setOpen(false), selected: isSelectBasedOptions(options)
89
+ return (_jsx(FormLabel, { name: name, label: label, isRequired: required, error: get(errors, name), labelIcon: labelIcon, children: _jsx(Controller, Object.assign({}, controller, { name: name, control: control, render: ({ field }) => (_jsx(Select, Object.assign({}, rest, { onClick: () => setOpen(!open), onOpenChange: () => setOpen(false), selected: isSelectBasedOptions(options)
88
90
  ? options
89
91
  .filter((o) => Array.isArray(field.value)
90
92
  ? field.value.includes(o.key)
@@ -111,10 +113,10 @@ export const TypeaheadSelectControl = (_a) => {
111
113
  }, children: isSelectBasedOptions(options)
112
114
  ? (_a = options.find((o) => selection === o.key)) === null || _a === void 0 ? void 0 : _a.value
113
115
  : getValue(selection) }, index));
114
- }) })) }), _jsx(TextInputGroupUtilities, { children: !!filterValue && (_jsx(Button, { variant: "plain", onClick: () => {
116
+ }) })) }), _jsx(TextInputGroupUtilities, { children: (!!filterValue || field.value) && (_jsx(Button, { variant: "plain", onClick: () => {
115
117
  var _a;
116
- field.onChange(undefined);
117
118
  setFilterValue("");
119
+ field.onChange("");
118
120
  (_a = textInputRef === null || textInputRef === void 0 ? void 0 : textInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
119
121
  }, "aria-label": "Clear input value", children: _jsx(TimesIcon, { "aria-hidden": true }) })) })] }) }));
120
122
  }, onSelect: (event, v) => {
@@ -1 +1 @@
1
- {"version":3,"file":"TypeaheadSelectControl.js","sourceRoot":"","sources":["../../../src/ui-shared/controls/select-control/TypeaheadSelectControl.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypeaheadSelectControl.js","sourceRoot":"","sources":["../../../src/ui-shared/controls/select-control/TypeaheadSelectControl.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACL,MAAM,EACN,IAAI,EACJ,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EACL,UAAU,EAIV,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,+DAA+D,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,+DAA+D,CAAC;AAC1F,OAAO,EAGL,aAAa,EACb,oBAAoB,EACpB,QAAQ,EACR,GAAG,GACJ,MAAM,kFAAkF,CAAC;AAE1F,MAAM,QAAQ,GAAG,CAAC,MAAoC,EAAE,EAAE,CACxD,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAE3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAGpC,EAWyB,EAAE,EAAE;;QAX7B,EACA,EAAE,EACF,IAAI,EACJ,KAAK,EACL,OAAO,EACP,UAAU,EACV,SAAS,EACT,eAAe,EACf,QAAQ,EACR,OAAO,OAEkB,EADtB,IAAI,cAVP,uGAWD,CADQ;IAEP,MAAM,EACJ,OAAO,EACP,SAAS,EAAE,EAAE,MAAM,EAAE,GACtB,GAAG,cAAc,EAAE,CAAC;IACrB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,MAAM,EAAoB,CAAC;IAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAA,UAAU,CAAC,KAAK,0CAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;IAEnE,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAChD,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CACrE,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACrC,KAAC,YAAY,IAEX,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAClB,SAAS,EAAE,gBAAgB,KAAK,KAAK,YAEpC,QAAQ,CAAC,MAAM,CAAC,IAJZ,GAAG,CAAC,MAAM,CAAC,CAKH,CAChB,CAAC,EACJ,CAAC,gBAAgB,EAAE,eAAe,CAAC,CACpC,CAAC;IAEF,MAAM,cAAc,GAAG,CACrB,KAA0C,EAC1C,KAAiD,EACjD,EAAE;QACF,MAAM,WAAW,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC;QAEd,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,IAAI,OAAO,KAAK,aAAa,CAAC,cAAc,EAAE,CAAC;oBAC7C,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,EAAE,CAAC,CAAC;gBACrB,CAAC;gBAED,KAAK,CAAC,QAAQ,CACZ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;oBACxB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;oBACpC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CACrB,CAAC;gBACF,OAAO,CAAC,KAAK,CAAC,CAAC;gBACf,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBAEvB,MAAM;YACR,CAAC;YACD,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,CAAC;gBACf,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,OAAO,KAAK,aAAa,CAAC,SAAS,EAAE,CAAC;oBACxC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACrB,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC;YACf,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,IAAI,YAAY,GAAG,CAAC,CAAC;gBAErB,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBAC5B,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;wBAC3B,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,YAAY,GAAG,gBAAgB,GAAG,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;gBAED,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;oBAC9B,IAAI,gBAAgB,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5C,YAAY,GAAG,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,YAAY,GAAG,gBAAgB,GAAG,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;gBAED,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAClC,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,SAAS,IACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,QAAQ,EACpB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EACxB,SAAS,EAAE,SAAS,YAEpB,KAAC,UAAU,oBACL,UAAU,IACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrB,KAAC,MAAM,oBACD,IAAI,IACR,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAClC,QAAQ,EACN,oBAAoB,CAAC,OAAO,CAAC;oBAC3B,CAAC,CAAC,OAAO;yBACJ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACZ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;wBACxB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC7B,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAC1B;yBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;oBACxB,CAAC,CAAC,KAAK,CAAC,KAAK,EAEjB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;;oBAAC,OAAA,CACf,KAAC,UAAU,IACT,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAC/C,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAC7B,UAAU,EAAE,IAAI,EAChB,WAAW,QACX,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAE/D,MAAC,cAAc,IAAC,OAAO,mBACrB,KAAC,kBAAkB,IACjB,WAAW,EAAE,eAAe,EAC5B,KAAK,EACH,OAAO,KAAK,aAAa,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK;wCAChD,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC;4CAC7B,CAAC,CAAC,MAAA,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,GAAG;gDACL,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;oDACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oDAChB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CACnB,0CAAE,KAAK;4CACV,CAAC,CAAC,KAAK,CAAC,KAAK;wCACf,CAAC,CAAC,WAAW,EAEjB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;wCACrB,cAAc,CAAC,KAAK,CAAC,CAAC;wCACtB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,KAAK,CAAC,CAAC;oCACpB,CAAC,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,EAClD,YAAY,EAAC,KAAK,EAClB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAC,UAAU,EACf,UAAU,EAAE,IAAI,mBACF,0BAA0B,YAEvC,OAAO,KAAK,aAAa,CAAC,cAAc;wCACvC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAC5B,KAAC,SAAS,kBAAY,oBAAoB,YACvC,KAAK,CAAC,KAAK,CAAC,GAAG,CACd,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE;;4CAAC,OAAA,CACpC,KAAC,IAAI,IAEH,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;oDACd,EAAE,CAAC,eAAe,EAAE,CAAC;oDACrB,KAAK,CAAC,QAAQ,CACZ,KAAK,CAAC,KAAK,CAAC,MAAM,CAChB,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,CAC1C,CACF,CAAC;gDACJ,CAAC,YAEA,oBAAoB,CAAC,OAAO,CAAC;oDAC5B,CAAC,CAAC,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,CAAC,0CACpC,KAAK;oDACX,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAblB,KAAK,CAcL,CACR,CAAA;yCAAA,CACF,GACS,CACb,GACgB,EACrB,KAAC,uBAAuB,cACrB,CAAC,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CACjC,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,GAAG,EAAE;;4CACZ,cAAc,CAAC,EAAE,CAAC,CAAC;4CACnB,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;4CACnB,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,0CAAE,KAAK,EAAE,CAAC;wCACjC,CAAC,gBACU,mBAAmB,YAE9B,KAAC,SAAS,0BAAe,GAClB,CACV,GACuB,IACX,GACN,CACd,CAAA;iBAAA,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,EAAE,CAAC;oBACzB,MAAM,MAAM,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,EAAE,CAAC;oBAC7B,IACE,OAAO,KAAK,aAAa,CAAC,cAAc;wBACxC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAC1B,CAAC;wBACD,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BACjC,KAAK,CAAC,QAAQ,CACZ,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CACtD,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;wBAC3C,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBAC/D,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC,EACD,MAAM,EAAE,IAAI,YAEZ,KAAC,UAAU,cAAE,OAAO,GAAc,IAC3B,CACV,IACD,GACQ,CACb,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,64 @@
1
+ import type { SVGIconProps } from "@patternfly/react-icons/dist/js/createIcon";
2
+ import { IAction, IActionsResolver, IFormatter, ITransform, TableProps } from "@patternfly/react-table";
3
+ import { ComponentClass, ReactNode, type JSX } from "react";
4
+ export type Field<T> = {
5
+ name: string;
6
+ displayKey?: string;
7
+ cellFormatters?: IFormatter[];
8
+ transforms?: ITransform[];
9
+ cellRenderer?: (row: T) => JSX.Element | string;
10
+ };
11
+ export type DetailField<T> = {
12
+ name: string;
13
+ enabled?: (row: T) => boolean;
14
+ cellRenderer?: (row: T) => JSX.Element | string;
15
+ };
16
+ export type Action<T> = IAction & {
17
+ onRowClick?: (row: T) => Promise<boolean | void> | void;
18
+ };
19
+ export type LoaderFunction<T> = (first?: number, max?: number, search?: string) => Promise<T[]>;
20
+ export type DataListProps<T> = Omit<TableProps, "rows" | "cells" | "onSelect"> & {
21
+ loader: T[] | LoaderFunction<T>;
22
+ onSelect?: (value: T[]) => void;
23
+ canSelectAll?: boolean;
24
+ detailColumns?: DetailField<T>[];
25
+ isRowDisabled?: (value: T) => boolean;
26
+ isPaginated?: boolean;
27
+ ariaLabelKey: string;
28
+ searchPlaceholderKey?: string;
29
+ columns: Field<T>[];
30
+ actions?: Action<T>[];
31
+ actionResolver?: IActionsResolver;
32
+ searchTypeComponent?: ReactNode;
33
+ toolbarItem?: ReactNode;
34
+ subToolbar?: ReactNode;
35
+ emptyState?: ReactNode;
36
+ icon?: ComponentClass<SVGIconProps>;
37
+ isNotCompact?: boolean;
38
+ isRadio?: boolean;
39
+ isSearching?: boolean;
40
+ };
41
+ /**
42
+ * A generic component that can be used to show the initial list most sections have. Takes care of the loading of the date and filtering.
43
+ * All you have to define is how the columns are displayed.
44
+ * @example
45
+ * <KeycloakDataTable columns={[
46
+ * {
47
+ * name: "clientId", //name of the field from the array of object the loader returns to display in this column
48
+ * displayKey: "clientId", //i18n key to use to lookup the name of the column header
49
+ * cellRenderer: ClientDetailLink, //optionally you can use a component to render the column when you don't want just the content of the field, the whole row / entire object is passed in.
50
+ * }
51
+ * ]}
52
+ * @param {DataListProps} props - The properties.
53
+ * @param {string} props.ariaLabelKey - The aria label key i18n key to lookup the label
54
+ * @param {string} props.searchPlaceholderKey - The i18n key to lookup the placeholder for the search box
55
+ * @param {boolean} props.isPaginated - if true the the loader will be called with first, max and search and a pager will be added in the header
56
+ * @param {(first?: number, max?: number, search?: string) => Promise<T[]>} props.loader - loader function that will fetch the data to display first, max and search are only applicable when isPaginated = true
57
+ * @param {Field<T>} props.columns - definition of the columns
58
+ * @param {Field<T>} props.detailColumns - definition of the columns expandable columns
59
+ * @param {Action[]} props.actions - the actions that appear on the row
60
+ * @param {IActionsResolver} props.actionResolver Resolver for the given action
61
+ * @param {ReactNode} props.toolbarItem - Toolbar items that appear on the top of the table {@link toolbarItem}
62
+ * @param {ReactNode} props.emptyState - ReactNode show when the list is empty could be any component but best to use {@link ListEmptyState}
63
+ */
64
+ export declare function KeycloakDataTable<T>({ ariaLabelKey, searchPlaceholderKey, isPaginated, onSelect, canSelectAll, isNotCompact, isRadio, detailColumns, isRowDisabled, loader, columns, actions, actionResolver, searchTypeComponent, toolbarItem, subToolbar, emptyState, icon, isSearching, ...props }: DataListProps<T>): import("react/jsx-runtime").JSX.Element;