@bigbinary/neeto-team-members-frontend 5.0.28 → 5.0.30

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 (194) hide show
  1. package/app/javascript/src/translations/ar.json +6 -4
  2. package/app/javascript/src/translations/bg.json +6 -4
  3. package/app/javascript/src/translations/ca.json +8 -6
  4. package/app/javascript/src/translations/cs.json +4 -2
  5. package/app/javascript/src/translations/da.json +4 -2
  6. package/app/javascript/src/translations/de.json +4 -2
  7. package/app/javascript/src/translations/en.json +8 -6
  8. package/app/javascript/src/translations/es-MX.json +8 -6
  9. package/app/javascript/src/translations/es.json +8 -6
  10. package/app/javascript/src/translations/et.json +6 -4
  11. package/app/javascript/src/translations/fi.json +4 -2
  12. package/app/javascript/src/translations/fil.json +9 -7
  13. package/app/javascript/src/translations/fr.json +5 -3
  14. package/app/javascript/src/translations/he.json +5 -3
  15. package/app/javascript/src/translations/hi.json +7 -5
  16. package/app/javascript/src/translations/hr.json +4 -2
  17. package/app/javascript/src/translations/hu.json +4 -2
  18. package/app/javascript/src/translations/id.json +10 -8
  19. package/app/javascript/src/translations/it.json +8 -6
  20. package/app/javascript/src/translations/ja.json +6 -4
  21. package/app/javascript/src/translations/ko.json +4 -2
  22. package/app/javascript/src/translations/nl.json +7 -5
  23. package/app/javascript/src/translations/pl.json +5 -3
  24. package/app/javascript/src/translations/pt-BR.json +10 -8
  25. package/app/javascript/src/translations/pt.json +10 -8
  26. package/app/javascript/src/translations/ro.json +9 -7
  27. package/app/javascript/src/translations/ru.json +5 -3
  28. package/app/javascript/src/translations/sk.json +6 -4
  29. package/app/javascript/src/translations/sl.json +7 -5
  30. package/app/javascript/src/translations/sv.json +4 -2
  31. package/app/javascript/src/translations/th.json +5 -3
  32. package/app/javascript/src/translations/tr.json +10 -8
  33. package/app/javascript/src/translations/uk.json +7 -5
  34. package/app/javascript/src/translations/vi.json +7 -5
  35. package/app/javascript/src/translations/zh-CN.json +6 -4
  36. package/app/javascript/src/translations/zh-TW.json +5 -3
  37. package/dist/.ready +1 -1
  38. package/dist/ActionBlock-C9Iy0jGZ.js +53 -0
  39. package/dist/ActionBlock-C9Iy0jGZ.js.map +1 -0
  40. package/dist/ActionBlock-jgw1N-As.js +46 -0
  41. package/dist/ActionBlock-jgw1N-As.js.map +1 -0
  42. package/dist/Groups.js +1 -0
  43. package/dist/Groups.js.map +1 -1
  44. package/dist/InviteLinkError-AphtWLhe.js +63 -0
  45. package/dist/InviteLinkError-AphtWLhe.js.map +1 -0
  46. package/dist/InviteLinkError-C6OLGrD0.js +41 -0
  47. package/dist/InviteLinkError-C6OLGrD0.js.map +1 -0
  48. package/dist/ManageMember.js +3 -2
  49. package/dist/ManageMember.js.map +1 -1
  50. package/dist/MembersInvite.js +1 -38
  51. package/dist/MembersInvite.js.map +1 -1
  52. package/dist/Permissions-Bd6kLoPt.js +233 -0
  53. package/dist/Permissions-Bd6kLoPt.js.map +1 -0
  54. package/dist/Permissions-Bn862irP.js +244 -0
  55. package/dist/Permissions-Bn862irP.js.map +1 -0
  56. package/dist/Profile.js +125 -106
  57. package/dist/Profile.js.map +1 -1
  58. package/dist/{ProfileImage-Cpprgo-V.js → ProfileImage-QeSzsfzl.js} +1 -7
  59. package/dist/{ProfileImage-B_gfcE6b.js.map → ProfileImage-QeSzsfzl.js.map} +1 -1
  60. package/dist/{ProfileImage-B_gfcE6b.js → ProfileImage-Ypf3HreX.js} +2 -7
  61. package/dist/{ProfileImage-Cpprgo-V.js.map → ProfileImage-Ypf3HreX.js.map} +1 -1
  62. package/dist/Roles.js +3 -1398
  63. package/dist/Roles.js.map +1 -1
  64. package/dist/RolesRadioGroup-fBmS68cW.js +393 -0
  65. package/dist/RolesRadioGroup-fBmS68cW.js.map +1 -0
  66. package/dist/RolesRadioGroup-tSNC-Wtu.js +352 -0
  67. package/dist/RolesRadioGroup-tSNC-Wtu.js.map +1 -0
  68. package/dist/Select-CshPoN2b.js +119 -0
  69. package/dist/Select-CshPoN2b.js.map +1 -0
  70. package/dist/Select-DZ56UG-l.js +109 -0
  71. package/dist/Select-DZ56UG-l.js.map +1 -0
  72. package/dist/TeamMembers.js +3 -2
  73. package/dist/TeamMembers.js.map +1 -1
  74. package/dist/cjs/Groups.js +1 -0
  75. package/dist/cjs/Groups.js.map +1 -1
  76. package/dist/cjs/ManageMember.js +3 -2
  77. package/dist/cjs/ManageMember.js.map +1 -1
  78. package/dist/cjs/MembersInvite.js +2 -39
  79. package/dist/cjs/MembersInvite.js.map +1 -1
  80. package/dist/cjs/Profile.js +125 -104
  81. package/dist/cjs/Profile.js.map +1 -1
  82. package/dist/cjs/Roles.js +6 -1402
  83. package/dist/cjs/Roles.js.map +1 -1
  84. package/dist/cjs/TeamMembers.js +3 -2
  85. package/dist/cjs/TeamMembers.js.map +1 -1
  86. package/dist/cjs/index.js +6 -2
  87. package/dist/cjs/index.js.map +1 -1
  88. package/dist/cjs/utils.js +3 -512
  89. package/dist/cjs/utils.js.map +1 -1
  90. package/dist/cjs/v2/Groups.js +781 -0
  91. package/dist/cjs/v2/Groups.js.map +1 -0
  92. package/dist/cjs/v2/ManageMember.js +49 -0
  93. package/dist/cjs/v2/ManageMember.js.map +1 -0
  94. package/dist/cjs/v2/MembersDropdown.js +200 -0
  95. package/dist/cjs/v2/MembersDropdown.js.map +1 -0
  96. package/dist/cjs/v2/MembersInvite.js +270 -0
  97. package/dist/cjs/v2/MembersInvite.js.map +1 -0
  98. package/dist/cjs/v2/Permissions.js +19 -0
  99. package/dist/cjs/v2/Permissions.js.map +1 -0
  100. package/dist/cjs/v2/Profile.js +686 -0
  101. package/dist/cjs/v2/Profile.js.map +1 -0
  102. package/dist/cjs/v2/Roles.js +1258 -0
  103. package/dist/cjs/v2/Roles.js.map +1 -0
  104. package/dist/cjs/v2/RolesRadioGroup.js +26 -0
  105. package/dist/cjs/v2/RolesRadioGroup.js.map +1 -0
  106. package/dist/cjs/v2/TeamMembers.js +949 -0
  107. package/dist/cjs/v2/TeamMembers.js.map +1 -0
  108. package/dist/cjs/v2/TeamsAndMembersDropdown.js +438 -0
  109. package/dist/cjs/v2/TeamsAndMembersDropdown.js.map +1 -0
  110. package/dist/cjs/v2/TeamsDropdown.js +112 -0
  111. package/dist/cjs/v2/TeamsDropdown.js.map +1 -0
  112. package/dist/cjs/v2/constants.js +28 -0
  113. package/dist/cjs/v2/constants.js.map +1 -0
  114. package/dist/cjs/v2/hooks.js +33 -0
  115. package/dist/cjs/v2/hooks.js.map +1 -0
  116. package/dist/cjs/v2/utils.js +34 -0
  117. package/dist/cjs/v2/utils.js.map +1 -0
  118. package/dist/constants-B1L6arSR.js +49 -0
  119. package/dist/constants-B1L6arSR.js.map +1 -0
  120. package/dist/constants-CMNbKvoF.js +61 -0
  121. package/dist/constants-CMNbKvoF.js.map +1 -0
  122. package/dist/index-BkEJugj1.js +184 -0
  123. package/dist/index-BkEJugj1.js.map +1 -0
  124. package/dist/index-C6ph58Vg.js +169 -0
  125. package/dist/index-C6ph58Vg.js.map +1 -0
  126. package/dist/{index-C26Vdbk5.js → index-DFFRcH_S.js} +2 -2
  127. package/dist/{index-C26Vdbk5.js.map → index-DFFRcH_S.js.map} +1 -1
  128. package/dist/{index-CeAVMlhg.js → index-DTONHIze.js} +2 -2
  129. package/dist/{index-CeAVMlhg.js.map → index-DTONHIze.js.map} +1 -1
  130. package/dist/index-DeYRFiJy.js +119 -0
  131. package/dist/index-DeYRFiJy.js.map +1 -0
  132. package/dist/index-DgxgaCRt.js +1317 -0
  133. package/dist/index-DgxgaCRt.js.map +1 -0
  134. package/dist/index-DqqXniGT.js +126 -0
  135. package/dist/index-DqqXniGT.js.map +1 -0
  136. package/dist/index-Dus0cbgo.js +1407 -0
  137. package/dist/index-Dus0cbgo.js.map +1 -0
  138. package/dist/index-aJIUa1Bd.js +1342 -0
  139. package/dist/index-aJIUa1Bd.js.map +1 -0
  140. package/dist/index-ureO6U2w.js +1401 -0
  141. package/dist/index-ureO6U2w.js.map +1 -0
  142. package/dist/index.js +6 -2
  143. package/dist/index.js.map +1 -1
  144. package/dist/pluralize-BoSEafiC.js +514 -0
  145. package/dist/pluralize-BoSEafiC.js.map +1 -0
  146. package/dist/pluralize-CFlSRsRn.js +516 -0
  147. package/dist/pluralize-CFlSRsRn.js.map +1 -0
  148. package/dist/queryClient-B-JFya8X.js +16 -0
  149. package/dist/queryClient-B-JFya8X.js.map +1 -0
  150. package/dist/queryClient-BncpekSV.js +14 -0
  151. package/dist/queryClient-BncpekSV.js.map +1 -0
  152. package/dist/useCountries-CQdvJz0R.js +249 -0
  153. package/dist/useCountries-CQdvJz0R.js.map +1 -0
  154. package/dist/useCountries-DePOPtue.js +235 -0
  155. package/dist/useCountries-DePOPtue.js.map +1 -0
  156. package/dist/useTeamsApi-CWp4G7JZ.js +179 -0
  157. package/dist/useTeamsApi-CWp4G7JZ.js.map +1 -0
  158. package/dist/useTeamsApi-Ch5sHR2_.js +197 -0
  159. package/dist/useTeamsApi-Ch5sHR2_.js.map +1 -0
  160. package/dist/utils.js +2 -511
  161. package/dist/utils.js.map +1 -1
  162. package/dist/v2/Groups.js +749 -0
  163. package/dist/v2/Groups.js.map +1 -0
  164. package/dist/v2/ManageMember.js +43 -0
  165. package/dist/v2/ManageMember.js.map +1 -0
  166. package/dist/v2/MembersDropdown.js +193 -0
  167. package/dist/v2/MembersDropdown.js.map +1 -0
  168. package/dist/v2/MembersInvite.js +242 -0
  169. package/dist/v2/MembersInvite.js.map +1 -0
  170. package/dist/v2/Permissions.js +13 -0
  171. package/dist/v2/Permissions.js.map +1 -0
  172. package/dist/v2/Profile.js +656 -0
  173. package/dist/v2/Profile.js.map +1 -0
  174. package/dist/v2/Roles.js +1242 -0
  175. package/dist/v2/Roles.js.map +1 -0
  176. package/dist/v2/RolesRadioGroup.js +20 -0
  177. package/dist/v2/RolesRadioGroup.js.map +1 -0
  178. package/dist/v2/TeamMembers.js +937 -0
  179. package/dist/v2/TeamMembers.js.map +1 -0
  180. package/dist/v2/TeamsAndMembersDropdown.js +430 -0
  181. package/dist/v2/TeamsAndMembersDropdown.js.map +1 -0
  182. package/dist/v2/TeamsDropdown.js +106 -0
  183. package/dist/v2/TeamsDropdown.js.map +1 -0
  184. package/dist/v2/constants.js +21 -0
  185. package/dist/v2/constants.js.map +1 -0
  186. package/dist/v2/hooks.js +29 -0
  187. package/dist/v2/hooks.js.map +1 -0
  188. package/dist/v2/utils.js +30 -0
  189. package/dist/v2/utils.js.map +1 -0
  190. package/dist/withReactQuery-CSuiy5RK.js +20 -0
  191. package/dist/withReactQuery-CSuiy5RK.js.map +1 -0
  192. package/dist/withReactQuery-DvSkXhEx.js +26 -0
  193. package/dist/withReactQuery-DvSkXhEx.js.map +1 -0
  194. package/package.json +31 -17
@@ -0,0 +1,1242 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import { useRef, useEffect, Fragment as Fragment$1, memo, useCallback, useState, useMemo, createElement } from 'react';
3
+ import { Tooltip, Button, Sheet, Checkbox, Typography, Alert, Empty, Spinner } from '@bigbinary/neeto-atoms';
4
+ import { d as distExports } from '../index-ureO6U2w.js';
5
+ import i18next, { t } from 'i18next';
6
+ import { isNotEmpty, isPresent, hyphenate, noop } from '@bigbinary/neeto-cist';
7
+ import { PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
8
+ import { useQueryParams, withTitle } from '@bigbinary/neeto-commons-frontend/react-utils';
9
+ import Container from '@bigbinary/neeto-molecules/v2/Container';
10
+ import { not, map, prop, identical, includes, __, groupBy, pluck, isEmpty, filter } from 'ramda';
11
+ import { w as withReactQuery } from '../withReactQuery-CSuiy5RK.js';
12
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
13
+ import { useQuery } from '@tanstack/react-query';
14
+ import axios from 'axios';
15
+ import { B as BASE_URL, Q as QUERY_KEYS, A as ADMIN_ROLES } from '../constants-B1L6arSR.js';
16
+ import { b as useCreateRole, c as useUpdateRole, S as ScrollToErrorField, d as useDestroyRole, u as useFetchRoles, e as useBulkUpdateRoles } from '../index-C6ph58Vg.js';
17
+ import NeetoHeader from '@bigbinary/neeto-molecules/v2/Header';
18
+ import { useTranslation, Trans } from 'react-i18next';
19
+ import { taxonomies } from '@bigbinary/neeto-commons-frontend/initializers';
20
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
21
+ import { Input, Textarea } from '@bigbinary/neeto-atoms/formik';
22
+ import { F as FormikActionBlock } from '../ActionBlock-jgw1N-As.js';
23
+ import { a as FormikForm } from '../Select-DZ56UG-l.js';
24
+ import '@babel/runtime/helpers/objectWithoutProperties';
25
+ import 'formik';
26
+ import { object, string } from 'yup';
27
+ import { P as Permissions, g as getChildrenRemovedFromRoot, s as sortPermissionsBySequence, a as getPermissionGroups, b as getModifiedPermissions } from '../Permissions-Bd6kLoPt.js';
28
+ import classnames from 'classnames';
29
+ import '@babel/runtime/helpers/toConsumableArray';
30
+ import _typeof from '@babel/runtime/helpers/typeof';
31
+ import { Info, ChevronUp, ChevronDown } from 'lucide-react';
32
+ import HelpPopover from '@bigbinary/neeto-molecules/v2/HelpPopover';
33
+ import MoreDropdown from '@bigbinary/neeto-molecules/v2/MoreDropdown';
34
+ import Search from '@bigbinary/neeto-molecules/v2/Search';
35
+ import { n } from '../inject-css-C2dztUxs.js';
36
+ import '../_commonjsHelpers-BFTU3MAI.js';
37
+ import '../queryClient-BncpekSV.js';
38
+
39
+ // eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis
40
+ var fetch = function fetch() {
41
+ return axios.get("".concat(BASE_URL, "/permissions"));
42
+ };
43
+ var permissionsApi = {
44
+ fetch: fetch
45
+ };
46
+
47
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
48
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
49
+ var useFetchPermissions = function useFetchPermissions() {
50
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
51
+ return useQuery(_objectSpread$1({
52
+ queryKey: [QUERY_KEYS.PERMISSIONS],
53
+ queryFn: permissionsApi.fetch,
54
+ select: function select(response) {
55
+ return response === null || response === void 0 ? void 0 : response.permissions;
56
+ }
57
+ }, options));
58
+ };
59
+
60
+ var renderSearchProps = function renderSearchProps() {
61
+ return {
62
+ "data-testid": "ntm-search-roles-input",
63
+ placeholder: t("neetoTeamMembers.placeholders.searchRole", PLURAL)
64
+ };
65
+ };
66
+ var renderBreadcrumbs = function renderBreadcrumbs(breadcrumbs) {
67
+ return breadcrumbs !== null && breadcrumbs !== void 0 ? breadcrumbs : [{
68
+ text: taxonomies.member.plural,
69
+ link: "/members"
70
+ }];
71
+ };
72
+
73
+ var AddRoleButton = function AddRoleButton(_ref) {
74
+ var config = _ref.config,
75
+ onClick = _ref.onClick;
76
+ var _useTranslation = useTranslation(),
77
+ t = _useTranslation.t;
78
+ var isCreatePermissionGranted = config.permissions.create;
79
+ return /*#__PURE__*/jsx(Tooltip, {
80
+ position: "bottom",
81
+ content: !isCreatePermissionGranted ? t("neetoTeamMembers.tooltips.noPermissionToAddRole") : null,
82
+ children: /*#__PURE__*/jsx("span", {
83
+ children: /*#__PURE__*/jsx(Button, {
84
+ onClick: onClick,
85
+ "data-testid": "ntm-add-role-button",
86
+ disabled: !isCreatePermissionGranted,
87
+ children: t("neetoTeamMembers.labels.addNewRole")
88
+ })
89
+ })
90
+ });
91
+ };
92
+
93
+ var Header = function Header(_ref) {
94
+ var _config$header, _config$header$titleH, _config$header2;
95
+ var config = _ref.config,
96
+ handleReset = _ref.handleReset,
97
+ handleSubmit = _ref.handleSubmit,
98
+ _ref$isDirty = _ref.isDirty,
99
+ isDirty = _ref$isDirty === void 0 ? false : _ref$isDirty,
100
+ setIsNewRolePaneOpen = _ref.setIsNewRolePaneOpen,
101
+ roles = _ref.roles;
102
+ var _useTranslation = useTranslation(),
103
+ t = _useTranslation.t;
104
+ var isUpdatePermissionGranted = config.permissions.update;
105
+ return /*#__PURE__*/jsx(NeetoHeader, {
106
+ breadcrumbs: renderBreadcrumbs(config === null || config === void 0 || (_config$header = config.header) === null || _config$header === void 0 ? void 0 : _config$header.breadcrumbs),
107
+ className: "ntm-roles-header",
108
+ searchProps: isNotEmpty(roles) ? renderSearchProps() : null,
109
+ title: t("neetoTeamMembers.common.role", PLURAL),
110
+ titleHelpPopoverProps: (_config$header$titleH = config === null || config === void 0 || (_config$header2 = config.header) === null || _config$header2 === void 0 ? void 0 : _config$header2.titleHelpPopoverProps) !== null && _config$header$titleH !== void 0 ? _config$header$titleH : {},
111
+ actionBlock: isDirty ? /*#__PURE__*/jsxs("div", {
112
+ className: "flex items-center gap-2",
113
+ children: [/*#__PURE__*/jsx(Tooltip, {
114
+ position: "bottom",
115
+ content: !isUpdatePermissionGranted ? t("neetoTeamMembers.tooltips.noPermissionToEditRoles") : null,
116
+ children: /*#__PURE__*/jsx("span", {
117
+ children: /*#__PURE__*/jsx(Button, {
118
+ "data-testid": "ntm-role-submission-button",
119
+ disabled: !isUpdatePermissionGranted,
120
+ type: "submit",
121
+ onClick: handleSubmit,
122
+ children: t("neetoTeamMembers.buttons.saveChanges")
123
+ })
124
+ })
125
+ }), /*#__PURE__*/jsx(Button, {
126
+ "data-testid": "ntm-role-reset-button",
127
+ type: "reset",
128
+ variant: "ghost",
129
+ onClick: handleReset,
130
+ children: t("neetoTeamMembers.buttons.reset")
131
+ })]
132
+ }) : /*#__PURE__*/jsx(AddRoleButton, {
133
+ config: config,
134
+ onClick: function onClick() {
135
+ return setIsNewRolePaneOpen(true);
136
+ }
137
+ })
138
+ });
139
+ };
140
+
141
+ var ROLE_NAME_MAX_LENGTH = 40;
142
+ var ROLE_DESCRIPTION_MAX_LENGTH = 255;
143
+ var ADD_ROLE_FORM_VALIDATION_SCHEMA = object({
144
+ name: string().trim().max(ROLE_NAME_MAX_LENGTH,
145
+ // @ts-ignore
146
+ t("neetoTeamMembers.validations.nameLimitExceeded", {
147
+ limit: ROLE_NAME_MAX_LENGTH
148
+ }))
149
+ // @ts-ignore
150
+ .required(t("neetoTeamMembers.validations.enterRoleName")),
151
+ description: string().nullable().trim().max(ROLE_DESCRIPTION_MAX_LENGTH,
152
+ // @ts-ignore
153
+ t("neetoTeamMembers.validations.descriptionLimitExceeded", {
154
+ limit: ROLE_DESCRIPTION_MAX_LENGTH
155
+ }))
156
+ });
157
+ var ADD_ROLE_FORM_INITIAL_VALUES = {
158
+ name: "",
159
+ description: "",
160
+ permissionIds: []
161
+ };
162
+ var ROLE_FORMIK_PROPS = {
163
+ validationSchema: ADD_ROLE_FORM_VALIDATION_SCHEMA
164
+ };
165
+
166
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
167
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
168
+ var ManageRoles = function ManageRoles(_ref) {
169
+ var _selectedRole$permiss;
170
+ var config = _ref.config,
171
+ _ref$isOpen = _ref.isOpen,
172
+ isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
173
+ onClose = _ref.onClose,
174
+ _ref$permissions = _ref.permissions,
175
+ permissions = _ref$permissions === void 0 ? [] : _ref$permissions,
176
+ _ref$selectedRole = _ref.selectedRole,
177
+ selectedRole = _ref$selectedRole === void 0 ? {} : _ref$selectedRole,
178
+ _ref$scrollTo = _ref.scrollTo,
179
+ scrollTo = _ref$scrollTo === void 0 ? null : _ref$scrollTo;
180
+ var _useTranslation = useTranslation(),
181
+ t = _useTranslation.t;
182
+ var formReference = useRef(null);
183
+ var inputReference = useRef(null);
184
+ var lastScrollKeyRef = useRef(null);
185
+ var _useCreateRole = useCreateRole({
186
+ onSuccess: onClose
187
+ }),
188
+ createRole = _useCreateRole.mutate,
189
+ isCreatingRole = _useCreateRole.isPending;
190
+ var _useUpdateRole = useUpdateRole({
191
+ onSuccess: onClose
192
+ }),
193
+ updateRole = _useUpdateRole.mutate,
194
+ isUpdatingRole = _useUpdateRole.isPending;
195
+ var isEdit = isPresent(selectedRole);
196
+ var isSubmitting = isCreatingRole || isUpdatingRole;
197
+ var handleSubmit = function handleSubmit(formValues) {
198
+ var payload = {
199
+ organizationRole: _objectSpread(_objectSpread({}, formValues), {}, {
200
+ name: formValues.name.trim(),
201
+ description: formValues.description.trim()
202
+ })
203
+ };
204
+ isEdit ? updateRole({
205
+ payload: payload,
206
+ id: selectedRole.id
207
+ }) : createRole(payload);
208
+ };
209
+ var initialValues = isEdit ? _objectSpread(_objectSpread({}, selectedRole), {}, {
210
+ permissionIds: (_selectedRole$permiss = selectedRole.permissionIds) === null || _selectedRole$permiss === void 0 ? void 0 : _selectedRole$permiss.sort(),
211
+ description: selectedRole.description || ""
212
+ }) : ADD_ROLE_FORM_INITIAL_VALUES;
213
+ var formikProps = _objectSpread(_objectSpread({}, ROLE_FORMIK_PROPS), {}, {
214
+ initialValues: initialValues,
215
+ onSubmit: handleSubmit
216
+ });
217
+ var isReadOnly = selectedRole.kind === "system";
218
+ var isDisabled = ADMIN_ROLES.includes(selectedRole.name) && isReadOnly;
219
+ useEffect(function () {
220
+ var _selectedRole$id, _ref2, _scrollTo$permissionI;
221
+ var activeClassName = "ntm-roles-permission-category-card--active";
222
+ var blinkClassName = "ntm-roles-permission__card--blink";
223
+ var getScrollableParent = function getScrollableParent(node) {
224
+ var current = node === null || node === void 0 ? void 0 : node.parentElement;
225
+ while (current) {
226
+ var style = getComputedStyle(current);
227
+ var overflowY = style.overflowY;
228
+ var isScrollable = (overflowY === "auto" || overflowY === "scroll") && current.scrollHeight > current.clientHeight;
229
+ if (isScrollable) return current;
230
+ current = current.parentElement;
231
+ }
232
+ return document.scrollingElement || document.documentElement;
233
+ };
234
+ if (!isOpen) {
235
+ lastScrollKeyRef.current = null;
236
+ document.querySelectorAll(".".concat(activeClassName)).forEach(function (node) {
237
+ return node.classList.remove(activeClassName);
238
+ });
239
+ document.querySelectorAll(".".concat(blinkClassName)).forEach(function (node) {
240
+ return node.classList.remove(blinkClassName);
241
+ });
242
+ return function () {};
243
+ }
244
+ if (!scrollTo) return function () {};
245
+ var key = "".concat((_selectedRole$id = selectedRole === null || selectedRole === void 0 ? void 0 : selectedRole.id) !== null && _selectedRole$id !== void 0 ? _selectedRole$id : "new", ":").concat(scrollTo.type, ":").concat((_ref2 = (_scrollTo$permissionI = scrollTo.permissionId) !== null && _scrollTo$permissionI !== void 0 ? _scrollTo$permissionI : scrollTo.category) !== null && _ref2 !== void 0 ? _ref2 : "");
246
+ if (lastScrollKeyRef.current === key) return function () {};
247
+ lastScrollKeyRef.current = key;
248
+ var timeoutId;
249
+ var highlightTimeoutId;
250
+ var blinkTimeoutId;
251
+ var scrollEndTimeoutId;
252
+ var attempts = 0;
253
+ var highlightedCard = null;
254
+ var blinkedPermissionCard = null;
255
+ var _attemptScroll = function attemptScroll() {
256
+ attempts += 1;
257
+ var elementId = scrollTo.type === "permission" ? "ntm-role-permission-".concat(scrollTo.permissionId) : "ntm-role-permission-category-".concat(hyphenate(scrollTo.category || ""));
258
+ var el = document.getElementById(elementId);
259
+ if (el) {
260
+ el.scrollIntoView({
261
+ behavior: "smooth",
262
+ block: "center"
263
+ });
264
+ var categoryCard = scrollTo.type === "permission" ? el.closest(".ntm-roles-permission-category-card") : el.querySelector(".ntm-roles-permission-category-card");
265
+ var scrollContainer = getScrollableParent(el);
266
+ var startHighlight = function startHighlight() {
267
+ if (!categoryCard) return;
268
+ document.querySelectorAll(".".concat(activeClassName)).forEach(function (node) {
269
+ return node.classList.remove(activeClassName);
270
+ });
271
+ categoryCard.classList.add(activeClassName);
272
+ highlightedCard = categoryCard;
273
+ clearTimeout(highlightTimeoutId);
274
+ highlightTimeoutId = setTimeout(function () {
275
+ categoryCard.classList.remove(activeClassName);
276
+ }, 3000);
277
+ };
278
+ if (scrollTo.type === "permission") {
279
+ var animationDurationMs = 600;
280
+ var animationIterations = 3;
281
+ var totalDurationMs = animationDurationMs * animationIterations + 100;
282
+ var startBlink = function startBlink() {
283
+ document.querySelectorAll(".".concat(blinkClassName)).forEach(function (node) {
284
+ return node.classList.remove(blinkClassName);
285
+ });
286
+ el.classList.remove(blinkClassName);
287
+ // Restart animation if the class was already present
288
+ void el.offsetWidth;
289
+ el.classList.add(blinkClassName);
290
+ blinkedPermissionCard = el;
291
+ clearTimeout(blinkTimeoutId);
292
+ blinkTimeoutId = setTimeout(function () {
293
+ el.classList.remove(blinkClassName);
294
+ }, totalDurationMs);
295
+ };
296
+
297
+ // Start animation only after scroll settles (or after a max wait).
298
+ var started = false;
299
+ var maxWaitTimeoutId = setTimeout(function () {
300
+ if (started) return;
301
+ started = true;
302
+ startHighlight();
303
+ startBlink();
304
+ scrollContainer.removeEventListener("scroll", _scheduleStart);
305
+ }, 1200);
306
+ var _scheduleStart = function scheduleStart() {
307
+ clearTimeout(scrollEndTimeoutId);
308
+ scrollEndTimeoutId = setTimeout(function () {
309
+ if (started) return;
310
+ started = true;
311
+ startHighlight();
312
+ startBlink();
313
+ scrollContainer.removeEventListener("scroll", _scheduleStart);
314
+ clearTimeout(maxWaitTimeoutId);
315
+ }, 150);
316
+ };
317
+ scrollContainer.addEventListener("scroll", _scheduleStart, {
318
+ passive: true
319
+ });
320
+ _scheduleStart();
321
+ } else {
322
+ // Highlight should also start only after scroll settles.
323
+ var _started = false;
324
+ var _maxWaitTimeoutId = setTimeout(function () {
325
+ if (_started) return;
326
+ _started = true;
327
+ startHighlight();
328
+ scrollContainer.removeEventListener("scroll", _scheduleStart2);
329
+ }, 1200);
330
+ var _scheduleStart2 = function scheduleStart() {
331
+ clearTimeout(scrollEndTimeoutId);
332
+ scrollEndTimeoutId = setTimeout(function () {
333
+ if (_started) return;
334
+ _started = true;
335
+ startHighlight();
336
+ scrollContainer.removeEventListener("scroll", _scheduleStart2);
337
+ clearTimeout(_maxWaitTimeoutId);
338
+ }, 150);
339
+ };
340
+ scrollContainer.addEventListener("scroll", _scheduleStart2, {
341
+ passive: true
342
+ });
343
+ _scheduleStart2();
344
+ }
345
+ return;
346
+ }
347
+
348
+ // Sheet content can mount after open animation; retry briefly.
349
+ if (attempts < 5) timeoutId = setTimeout(_attemptScroll, 100);
350
+ };
351
+ timeoutId = setTimeout(_attemptScroll, 0);
352
+ return function () {
353
+ var _highlightedCard, _blinkedPermissionCar;
354
+ clearTimeout(timeoutId);
355
+ clearTimeout(highlightTimeoutId);
356
+ clearTimeout(blinkTimeoutId);
357
+ clearTimeout(scrollEndTimeoutId);
358
+ (_highlightedCard = highlightedCard) === null || _highlightedCard === void 0 || _highlightedCard.classList.remove(activeClassName);
359
+ (_blinkedPermissionCar = blinkedPermissionCard) === null || _blinkedPermissionCar === void 0 || _blinkedPermissionCar.classList.remove(blinkClassName);
360
+ };
361
+ }, [isOpen, scrollTo, selectedRole === null || selectedRole === void 0 ? void 0 : selectedRole.id]);
362
+ return /*#__PURE__*/jsxs(Sheet, {
363
+ isOpen: isOpen,
364
+ onClose: onClose,
365
+ size: "large",
366
+ children: [/*#__PURE__*/jsx(Sheet.Header, {
367
+ children: /*#__PURE__*/jsx(Sheet.Title, {
368
+ "data-testid": "ntm-add-role-title",
369
+ children: isEdit ? t("neetoTeamMembers.labels.editRole") : t("neetoTeamMembers.labels.addNewRole")
370
+ })
371
+ }), /*#__PURE__*/jsx(FormikForm, {
372
+ formikProps: formikProps,
373
+ className: "flex min-h-0 flex-1 flex-col",
374
+ ref: formReference,
375
+ children: function children(_ref3) {
376
+ var _config$permissionRel;
377
+ var dirty = _ref3.dirty;
378
+ return /*#__PURE__*/jsxs(Fragment, {
379
+ children: [/*#__PURE__*/jsx(ScrollToErrorField, {
380
+ formRef: formReference
381
+ }), /*#__PURE__*/jsx(Sheet.Body, {
382
+ children: /*#__PURE__*/jsxs("div", {
383
+ className: "mb-6 w-full space-y-6",
384
+ children: [/*#__PURE__*/jsxs("div", {
385
+ className: "space-y-4",
386
+ children: [/*#__PURE__*/jsx(Input, {
387
+ required: true,
388
+ "data-testid": "ntm-add-role-name-text-field",
389
+ label: t("neetoTeamMembers.common.name"),
390
+ maxLength: ROLE_NAME_MAX_LENGTH,
391
+ name: "name",
392
+ placeholder: t("neetoTeamMembers.placeholders.enterName"),
393
+ readOnly: isReadOnly,
394
+ ref: !isEdit ? inputReference : undefined
395
+ }), /*#__PURE__*/jsx(Textarea, {
396
+ "data-testid": "ntm-add-role-description-text-field",
397
+ label: t("neetoTeamMembers.common.description"),
398
+ maxLength: ROLE_DESCRIPTION_MAX_LENGTH,
399
+ name: "description",
400
+ readOnly: isDisabled,
401
+ placeholder: t("neetoTeamMembers.placeholders.enterDescription")
402
+ })]
403
+ }), /*#__PURE__*/jsx(Permissions, {
404
+ isDisabled: isDisabled,
405
+ permissions: permissions,
406
+ permissionRelationConfig: (_config$permissionRel = config === null || config === void 0 ? void 0 : config.permissionRelation) !== null && _config$permissionRel !== void 0 ? _config$permissionRel : {}
407
+ })]
408
+ })
409
+ }), /*#__PURE__*/jsx(Sheet.Footer, {
410
+ children: /*#__PURE__*/jsx(FormikActionBlock, {
411
+ isSubmitting: isSubmitting,
412
+ className: "flex gap-2",
413
+ cancelButtonProps: {
414
+ "data-testid": "ntm-add-role-cancel-button",
415
+ onClick: onClose
416
+ },
417
+ submitButtonProps: {
418
+ "data-testid": "ntm-add-role-submit-button",
419
+ disabled: isSubmitting || isDisabled || !dirty
420
+ }
421
+ })
422
+ })]
423
+ });
424
+ }
425
+ })]
426
+ });
427
+ };
428
+
429
+ var DEFAULT_MANAGE_ROLE_VALUES = {
430
+ isDelete: false,
431
+ isEdit: false,
432
+ selectedRole: {},
433
+ scrollTo: null
434
+ };
435
+ var MENU_ITEMS = {
436
+ EDIT: "edit",
437
+ DELETE: "delete"
438
+ };
439
+ var SIDEBAR_CELL_SELECTOR = ".ntm-roles-table-sidebar__list-item-cell";
440
+ var COLUMN_ROW_SELECTOR = ".ntm-roles-table__rows > div[data-testid], .ntm-roles-table__empty-row";
441
+
442
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = true, u = false; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = true, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
443
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
444
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
445
+ var _deepClone = function deepClone(object) {
446
+ if (!object || true === object) {
447
+ //this also handles boolean as true and false
448
+ return object;
449
+ }
450
+ var objectType = _typeof(object);
451
+ if ("number" === objectType || "string" === objectType) {
452
+ // add your immutables here
453
+ return object;
454
+ }
455
+ var result = null;
456
+ if (Array.isArray(object)) {
457
+ result = [];
458
+ } else if (!object.constructor) {
459
+ result = {};
460
+ } else {
461
+ result = new object.constructor();
462
+ }
463
+ if (object instanceof Map) {
464
+ var _iterator = _createForOfIteratorHelper(object.keys()),
465
+ _step;
466
+ try {
467
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
468
+ var key = _step.value;
469
+ result.set(key, _deepClone(object.get(key)));
470
+ }
471
+ } catch (err) {
472
+ _iterator.e(err);
473
+ } finally {
474
+ _iterator.f();
475
+ }
476
+ }
477
+ Object.keys(object).forEach(function (key) {
478
+ if (Object.prototype.hasOwnProperty.call(object, key)) {
479
+ result[key] = _deepClone(object[key]);
480
+ }
481
+ });
482
+ return result;
483
+ };
484
+ var renderRolesTooltipContent = function renderRolesTooltipContent(roleName) {
485
+ return Object.is(roleName, "Admin") || Object.is(roleName, "Owner") ? t("neetoTeamMembers.tooltips.adminMustHaveAccess", {
486
+ roleName: roleName
487
+ }) : t("neetoTeamMembers.tooltips.noPermissionToEditRoles");
488
+ };
489
+ var updatePermissionVisibility = function updatePermissionVisibility(categoryName, permissions) {
490
+ var category = permissions.get(categoryName);
491
+ var isPermissionVisible = category.get("isPermissionVisible");
492
+ category.set("isPermissionVisible", !isPermissionVisible);
493
+ return new Map(permissions.set(categoryName, category));
494
+ };
495
+ var filterPermissionsBySearch = function filterPermissionsBySearch(searchTerm, permissionGroups) {
496
+ var newValue = _deepClone(permissionGroups);
497
+ newValue.forEach(function (value) {
498
+ var permissions = value.get("permissions");
499
+ var filteredPermissions = permissions.filter(function (permission) {
500
+ var _permission$descripti;
501
+ return permission === null || permission === void 0 || (_permission$descripti = permission.description) === null || _permission$descripti === void 0 || (_permission$descripti = _permission$descripti.toLowerCase()) === null || _permission$descripti === void 0 || (_permission$descripti = _permission$descripti.trim()) === null || _permission$descripti === void 0 ? void 0 : _permission$descripti.includes(searchTerm.toLowerCase().trim());
502
+ });
503
+ value.set("permissions", filteredPermissions);
504
+ });
505
+ return newValue;
506
+ };
507
+ var getMenuItems = function getMenuItems(_ref) {
508
+ var isDeletePermissionGranted = _ref.isDeletePermissionGranted,
509
+ isUpdatePermissionGranted = _ref.isUpdatePermissionGranted,
510
+ role = _ref.role,
511
+ setManageRole = _ref.setManageRole,
512
+ isSystemRole = _ref.isSystemRole;
513
+ return [{
514
+ key: MENU_ITEMS.EDIT,
515
+ className: "ntm-dropdown__button",
516
+ "data-testid": "ntm-roles-table-edit-role-button",
517
+ isDisabled: not(isUpdatePermissionGranted),
518
+ size: "small",
519
+ tooltipProps: {
520
+ content: t("neetoTeamMembers.tooltips.noPermissionToEditRoles"),
521
+ disabled: isUpdatePermissionGranted,
522
+ position: "left"
523
+ },
524
+ label: t("neetoTeamMembers.common.edit"),
525
+ onClick: function onClick() {
526
+ return setManageRole({
527
+ isEdit: true,
528
+ selectedRole: role,
529
+ scrollTo: null
530
+ });
531
+ }
532
+ }, {
533
+ key: MENU_ITEMS.DELETE,
534
+ className: "ntm-dropdown__button",
535
+ "data-testid": "ntm-roles-table-delete-role-button",
536
+ isDisabled: not(isDeletePermissionGranted),
537
+ size: "small",
538
+ isVisible: not(isSystemRole),
539
+ tooltipProps: {
540
+ content: t("neetoTeamMembers.tooltips.noPermissionToRemoveRoles"),
541
+ disabled: isDeletePermissionGranted,
542
+ position: "left"
543
+ },
544
+ label: t("neetoTeamMembers.common.delete"),
545
+ onClick: function onClick() {
546
+ return setManageRole({
547
+ isDelete: true,
548
+ selectedRole: role,
549
+ scrollTo: null
550
+ });
551
+ }
552
+ }];
553
+ };
554
+
555
+ var Row = function Row(_ref) {
556
+ var _ref$allPermissionsOf = _ref.allPermissionsOfCategory,
557
+ allPermissionsOfCategory = _ref$allPermissionsOf === void 0 ? null : _ref$allPermissionsOf,
558
+ _ref$category = _ref.category,
559
+ category = _ref$category === void 0 ? "" : _ref$category,
560
+ config = _ref.config,
561
+ _ref$permission = _ref.permission,
562
+ permission = _ref$permission === void 0 ? null : _ref$permission,
563
+ roles = _ref.roles,
564
+ _ref$setManageRole = _ref.setManageRole,
565
+ setManageRole = _ref$setManageRole === void 0 ? noop : _ref$setManageRole;
566
+ var isUpdatePermissionGranted = config.permissions.update;
567
+ var permissions = (allPermissionsOfCategory === null || allPermissionsOfCategory === void 0 ? void 0 : allPermissionsOfCategory.get("permissions")) || [];
568
+ var allPermissionIdsOfCategory = map(prop("id"), permissions);
569
+ var handleSubmit = function handleSubmit(role) {
570
+ var scrollTo = permission !== null && permission !== void 0 && permission.id ? {
571
+ type: "permission",
572
+ permissionId: permission.id
573
+ } : {
574
+ type: "category",
575
+ category: category
576
+ };
577
+ setManageRole({
578
+ isEdit: true,
579
+ selectedRole: role,
580
+ scrollTo: scrollTo
581
+ });
582
+ };
583
+ var isCheckboxChecked = function isCheckboxChecked(role) {
584
+ return !allPermissionsOfCategory ? includes(permission === null || permission === void 0 ? void 0 : permission.id, role.permissionIds) : allPermissionIdsOfCategory.every(includes(__, role.permissionIds));
585
+ };
586
+ return /*#__PURE__*/jsx("div", {
587
+ className: classnames("ntm-roles-table__row", {
588
+ "ntm-roles-table__row--highlighted": !!allPermissionsOfCategory
589
+ }),
590
+ children: roles.map(function (role) {
591
+ return /*#__PURE__*/jsx("div", {
592
+ className: "ntm-roles-table__cell",
593
+ "data-testid": "".concat(hyphenate(role.name), "-role-cell"),
594
+ children: /*#__PURE__*/jsx(Tooltip, {
595
+ position: "top",
596
+ content: !(isUpdatePermissionGranted && !identical(role.name, "Admin") && !identical(role.name, "Owner")) ? renderRolesTooltipContent(role.name) : null,
597
+ children: /*#__PURE__*/jsx("div", {
598
+ className: "absolute z-10 m-auto size-4",
599
+ children: /*#__PURE__*/jsx(Checkbox, {
600
+ checked: isCheckboxChecked(role),
601
+ className: "ntm-roles-table-cell__checkbox z-10",
602
+ "data-testid": "ntm-roles-table-permission-checkbox",
603
+ disabled: identical(role.name, "Admin") || identical(role.name, "Owner") || !isUpdatePermissionGranted,
604
+ onCheckedChange: function onCheckedChange() {
605
+ return handleSubmit(role);
606
+ }
607
+ })
608
+ })
609
+ })
610
+ }, role.id);
611
+ })
612
+ });
613
+ };
614
+
615
+ var isOverflown = function isOverflown(_ref) {
616
+ var clientWidth = _ref.clientWidth,
617
+ clientHeight = _ref.clientHeight,
618
+ scrollWidth = _ref.scrollWidth,
619
+ scrollHeight = _ref.scrollHeight;
620
+ return scrollHeight > clientHeight || scrollWidth > clientWidth;
621
+ };
622
+ var getScrollBarWidth = function getScrollBarWidth() {
623
+ var innerElement = document.createElement("p");
624
+ innerElement.classList.add("ntm-scrollbar__inner");
625
+ var outerElement = document.createElement("div");
626
+ outerElement.classList.add("ntm-scrollbar__outer");
627
+ outerElement.appendChild(innerElement);
628
+ document.body.appendChild(outerElement);
629
+ var w1 = innerElement.offsetWidth;
630
+ outerElement.style.overflow = "scroll";
631
+ var w2 = innerElement.offsetWidth;
632
+ if (w1 === w2) w2 = outerElement.clientWidth;
633
+ document.body.removeChild(outerElement);
634
+ return w1 - w2;
635
+ };
636
+
637
+ var _renderDescription = function renderDescription(permissions, filteredPermissions) {
638
+ var permissionTooltip = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
639
+ return permissions === null || permissions === void 0 ? void 0 : permissions.map(function (_ref) {
640
+ var id = _ref.id,
641
+ name = _ref.name,
642
+ description = _ref.description,
643
+ children = _ref.children;
644
+ var tooltipContent = permissionTooltip[name];
645
+ return /*#__PURE__*/jsxs(Fragment$1, {
646
+ children: [filteredPermissions.includes(id) && /*#__PURE__*/jsxs("div", {
647
+ className: "ntm-roles-table-sidebar__list-item flex min-h-[var(--ntm-roles-table-cell-height)] flex-row items-center gap-1 whitespace-normal break-words",
648
+ "data-name": description,
649
+ children: [/*#__PURE__*/jsx(Typography, {
650
+ className: "text-[0.9375rem] font-medium leading-normal",
651
+ "data-testid": "ntm-permission-category-description",
652
+ children: description
653
+ }), tooltipContent && /*#__PURE__*/jsx(HelpPopover, {
654
+ description: tooltipContent,
655
+ icon: Info,
656
+ size: "default"
657
+ })]
658
+ }), /*#__PURE__*/jsx("div", {
659
+ className: "ntm-roles-table-sidebar__sub-blocks relative pl-6",
660
+ children: _renderDescription(children, filteredPermissions, permissionTooltip)
661
+ })]
662
+ }, id);
663
+ });
664
+ };
665
+ var getSearchWrapperStyle = function getSearchWrapperStyle() {
666
+ var scrollBarWidth = getScrollBarWidth();
667
+ document.documentElement.style.setProperty("--ntm-roles-table-default-scroll", "".concat(scrollBarWidth, "px"));
668
+ return {
669
+ marginBottom: "".concat(scrollBarWidth, "px")
670
+ };
671
+ };
672
+ var getFilteredCategories = function getFilteredCategories(filteredGroupPermissions) {
673
+ return Array.from((filteredGroupPermissions === null || filteredGroupPermissions === void 0 ? void 0 : filteredGroupPermissions.keys()) || []).filter(function (category) {
674
+ var groupedPermissions = filteredGroupPermissions.get(category);
675
+ var permissions = groupedPermissions.get("permissions") || [];
676
+ return permissions.length > 0;
677
+ });
678
+ };
679
+
680
+ var TableHeader$1 = function TableHeader(_ref) {
681
+ var config = _ref.config,
682
+ roles = _ref.roles,
683
+ setManageRole = _ref.setManageRole,
684
+ setIsScrollPresent = _ref.setIsScrollPresent;
685
+ var isUpdatePermissionGranted = config.permissions.update;
686
+ var isDeletePermissionGranted = config.permissions["delete"];
687
+ var scrollSyncElement = useRef(null);
688
+ var getOverflowStatus = useCallback(function () {
689
+ if (!scrollSyncElement.current) return;
690
+ var headerElement = scrollSyncElement.current.node;
691
+ var isScrollBarPresent = isOverflown(headerElement);
692
+ setIsScrollPresent(isScrollBarPresent);
693
+ }, [setIsScrollPresent]);
694
+ useEffect(function () {
695
+ addEventListener("resize", getOverflowStatus);
696
+ return function () {
697
+ return removeEventListener("resize", getOverflowStatus);
698
+ };
699
+ // eslint-disable-next-line react-hooks/exhaustive-deps
700
+ }, []);
701
+ useEffect(getOverflowStatus, [getOverflowStatus, scrollSyncElement, roles]);
702
+ return /*#__PURE__*/jsx(distExports.ScrollSyncPane, {
703
+ group: "horizontal",
704
+ ref: scrollSyncElement,
705
+ children: /*#__PURE__*/jsx("div", {
706
+ className: "ntm-roles-table__header",
707
+ "data-testid": "ntm-roles-table-header",
708
+ children: roles === null || roles === void 0 ? void 0 : roles.map(function (role, index) {
709
+ var isSystemRole = identical("system", role.kind);
710
+ var isAdminRole = ADMIN_ROLES.includes(role.name) && isSystemRole;
711
+ return /*#__PURE__*/jsx("div", {
712
+ className: "ntm-roles-table__cell",
713
+ children: /*#__PURE__*/jsxs("div", {
714
+ className: "flex w-full items-center justify-between overflow-hidden",
715
+ "data-testid": "ntm-roles-table-role-header",
716
+ children: [/*#__PURE__*/jsx(Typography, {
717
+ className: "w-full overflow-hidden text-ellipsis whitespace-nowrap text-center text-sm font-semibold leading-normal",
718
+ "data-testid": "ntm-roles-table-header-role-title",
719
+ children: role.name
720
+ }), !isAdminRole && /*#__PURE__*/jsx(MoreDropdown, {
721
+ dropdownProps: {
722
+ autoWidth: true
723
+ },
724
+ dropdownButtonProps: {
725
+ className: "m-0.5 shrink-0",
726
+ "data-testid": "ntm-roles-table-header-role-dropdown-button"
727
+ },
728
+ menuItems: getMenuItems({
729
+ isDeletePermissionGranted: isDeletePermissionGranted,
730
+ isUpdatePermissionGranted: isUpdatePermissionGranted,
731
+ role: role,
732
+ setManageRole: setManageRole,
733
+ isSystemRole: isSystemRole
734
+ })
735
+ })]
736
+ })
737
+ }, "ntm-roles-".concat(index));
738
+ })
739
+ })
740
+ });
741
+ };
742
+ var TableHeader = /*#__PURE__*/memo(TableHeader$1);
743
+
744
+ var Delete = function Delete(_ref) {
745
+ var isOpen = _ref.isOpen,
746
+ onClose = _ref.onClose,
747
+ selectedRole = _ref.selectedRole,
748
+ roles = _ref.roles;
749
+ var _useTranslation = useTranslation(),
750
+ t = _useTranslation.t;
751
+ var _useDestroyRole = useDestroyRole({
752
+ onSuccess: onClose
753
+ }),
754
+ deleteRole = _useDestroyRole.mutate,
755
+ isDeleting = _useDestroyRole.isPending;
756
+ var handleDelete = function handleDelete() {
757
+ var _roles$find;
758
+ var id = selectedRole.id;
759
+ var payload = {
760
+ newRoleId: (_roles$find = roles.find(function (role) {
761
+ return role.id !== id;
762
+ })) === null || _roles$find === void 0 ? void 0 : _roles$find.id
763
+ };
764
+ deleteRole({
765
+ id: id,
766
+ payload: payload
767
+ });
768
+ };
769
+ return /*#__PURE__*/jsx(Alert, {
770
+ isOpen: isOpen,
771
+ onClose: onClose,
772
+ cancelButtonLabel: t("neetoTeamMembers.buttons.cancel"),
773
+ isSubmitting: isDeleting,
774
+ submitButtonLabel: t("neetoTeamMembers.buttons.delete"),
775
+ title: t("neetoTeamMembers.labels.deleteRole"),
776
+ message: /*#__PURE__*/jsx(Trans, {
777
+ i18nKey: "neetoTeamMembers.alerts.messages.deletingRole",
778
+ values: {
779
+ name: selectedRole === null || selectedRole === void 0 ? void 0 : selectedRole.name
780
+ }
781
+ }),
782
+ onSubmit: handleDelete
783
+ });
784
+ };
785
+
786
+ var Columns = function Columns(_ref) {
787
+ var config = _ref.config,
788
+ filteredGroupPermissions = _ref.filteredGroupPermissions,
789
+ filteredRoles = _ref.filteredRoles,
790
+ permissions = _ref.permissions,
791
+ roles = _ref.roles,
792
+ setIsScrollPresent = _ref.setIsScrollPresent;
793
+ var _useState = useState(DEFAULT_MANAGE_ROLE_VALUES),
794
+ _useState2 = _slicedToArray(_useState, 2),
795
+ manageRole = _useState2[0],
796
+ setManageRole = _useState2[1];
797
+ var categories = useMemo(function () {
798
+ return getFilteredCategories(filteredGroupPermissions);
799
+ }, [filteredGroupPermissions]);
800
+ var onClose = function onClose() {
801
+ return setManageRole(DEFAULT_MANAGE_ROLE_VALUES);
802
+ };
803
+ return /*#__PURE__*/jsxs("div", {
804
+ className: "ntm-roles-table__columns",
805
+ children: [/*#__PURE__*/jsx(TableHeader, {
806
+ config: config,
807
+ setIsScrollPresent: setIsScrollPresent,
808
+ setManageRole: setManageRole,
809
+ roles: filteredRoles
810
+ }), /*#__PURE__*/jsx(distExports.ScrollSyncPane, {
811
+ group: ["horizontal", "vertical"],
812
+ children: /*#__PURE__*/jsx("div", {
813
+ className: "ntm-roles-table__rows",
814
+ children: categories.length === 0 ? /*#__PURE__*/jsx("div", {
815
+ className: "ntm-roles-table__empty-row",
816
+ children: /*#__PURE__*/jsx("div", {
817
+ className: "ntm-roles-table__row",
818
+ children: /*#__PURE__*/jsx("div", {
819
+ className: "ntm-roles-table__cell",
820
+ children: /*#__PURE__*/jsx("div", {
821
+ children: "\xA0"
822
+ })
823
+ })
824
+ })
825
+ }) : categories.map(function (category, index) {
826
+ var groupedPermissions = filteredGroupPermissions.get(category);
827
+ var isPermissionVisible = groupedPermissions.get("isPermissionVisible");
828
+ var permissions = groupedPermissions.get("permissions");
829
+ return /*#__PURE__*/jsxs("div", {
830
+ "data-testid": "".concat(hyphenate(category), "-permission-card"),
831
+ children: [/*#__PURE__*/jsx(Row, {
832
+ category: category,
833
+ config: config,
834
+ setManageRole: setManageRole,
835
+ allPermissionsOfCategory: groupedPermissions,
836
+ roles: filteredRoles
837
+ }), isPermissionVisible && permissions.map(function (permission) {
838
+ return /*#__PURE__*/createElement(Row, {
839
+ config: config,
840
+ permission: permission,
841
+ setManageRole: setManageRole,
842
+ "data-testid": "".concat(hyphenate(permission), "-permission-row"),
843
+ key: permission.id,
844
+ roles: filteredRoles
845
+ });
846
+ })]
847
+ }, index);
848
+ })
849
+ })
850
+ }), /*#__PURE__*/jsx(ManageRoles, {
851
+ config: config,
852
+ onClose: onClose,
853
+ permissions: permissions,
854
+ isOpen: manageRole.isEdit,
855
+ scrollTo: manageRole.scrollTo,
856
+ selectedRole: manageRole.selectedRole
857
+ }), /*#__PURE__*/jsx(Delete, {
858
+ onClose: onClose,
859
+ roles: roles,
860
+ isOpen: manageRole.isDelete,
861
+ selectedRole: manageRole.selectedRole
862
+ })]
863
+ });
864
+ };
865
+
866
+ var ToggleDropdown = function ToggleDropdown(_ref) {
867
+ var isVisible = _ref.isVisible;
868
+ return isVisible ? /*#__PURE__*/jsx(ChevronUp, {
869
+ className: "ntm-roles-table-sidebar__drop-down-button cursor-pointer text-muted-foreground",
870
+ "data-testid": "ntm-permission-category-hide-button",
871
+ size: 16,
872
+ strokeWidth: 2
873
+ }) : /*#__PURE__*/jsx(ChevronDown, {
874
+ className: "ntm-roles-table-sidebar__drop-down-button cursor-pointer text-muted-foreground",
875
+ "data-testid": "ntm-permission-category-show-button",
876
+ size: 16,
877
+ strokeWidth: 2
878
+ });
879
+ };
880
+
881
+ var Sidebar = function Sidebar(_ref) {
882
+ var filteredGroupPermissions = _ref.filteredGroupPermissions,
883
+ toggleDropdown = _ref.toggleDropdown,
884
+ isScrollPresent = _ref.isScrollPresent,
885
+ _ref$permissions = _ref.permissions,
886
+ permissions = _ref$permissions === void 0 ? [] : _ref$permissions,
887
+ _ref$permissionRelati = _ref.permissionRelationConfig,
888
+ permissionRelationConfig = _ref$permissionRelati === void 0 ? {} : _ref$permissionRelati,
889
+ _ref$permissionToolti = _ref.permissionTooltip,
890
+ permissionTooltip = _ref$permissionToolti === void 0 ? {} : _ref$permissionToolti;
891
+ var _useTranslation = useTranslation(),
892
+ t = _useTranslation.t;
893
+ var categories = useMemo(function () {
894
+ return getFilteredCategories(filteredGroupPermissions);
895
+ }, [filteredGroupPermissions]);
896
+ var searchWrapperStyle = isScrollPresent ? getSearchWrapperStyle() : {};
897
+ var permissionsNameMap = groupBy(prop("name"))(permissions);
898
+ var groupedPermissionsWithChildren = useMemo(function () {
899
+ var childrenRemovedFromRoot = getChildrenRemovedFromRoot({
900
+ permissions: permissions,
901
+ permissionsNameMap: permissionsNameMap,
902
+ permissionRelationConfig: permissionRelationConfig
903
+ });
904
+ return groupBy(prop("category"))(childrenRemovedFromRoot);
905
+ }, [permissions]); // eslint-disable-line react-hooks/exhaustive-deps
906
+
907
+ return /*#__PURE__*/jsxs("div", {
908
+ className: "ntm-roles-table__sidebar",
909
+ children: [/*#__PURE__*/jsx("div", {
910
+ className: "ntm-roles-table-sidebar__search",
911
+ style: searchWrapperStyle,
912
+ children: /*#__PURE__*/jsx(Search, {
913
+ enableUrlSync: true,
914
+ "data-testid": "ntm-search-permissions-input",
915
+ searchParamName: "permission_search_term",
916
+ placeholder: t("neetoTeamMembers.placeholders.searchPermission", PLURAL)
917
+ })
918
+ }), /*#__PURE__*/jsx(distExports.ScrollSyncPane, {
919
+ group: "vertical",
920
+ children: /*#__PURE__*/jsx("div", {
921
+ className: "ntm-roles-table-sidebar__list",
922
+ children: categories.length === 0 ? /*#__PURE__*/jsx("div", {
923
+ className: "ntm-roles-table-sidebar__list-item-cell",
924
+ children: /*#__PURE__*/jsx("div", {
925
+ className: "ntm-roles-table-sidebar__list-item ntm-roles-table-sidebar__list-item--highlighted",
926
+ children: /*#__PURE__*/jsx(Typography, {
927
+ className: "text-sm font-semibold leading-normal",
928
+ "data-testid": "ntm-empty-category-row",
929
+ children: t("neetoTeamMembers.labels.permissionsNotFound")
930
+ })
931
+ })
932
+ }) : categories.map(function (category, index) {
933
+ var groupedPermissions = filteredGroupPermissions.get(category);
934
+ var isPermissionVisible = groupedPermissions.get("isPermissionVisible");
935
+ return /*#__PURE__*/jsxs("div", {
936
+ className: "ntm-roles-table-sidebar__list-item-cell",
937
+ children: [/*#__PURE__*/jsxs("div", {
938
+ className: "ntm-roles-table-sidebar__list-item ntm-roles-table-sidebar__list-item--highlighted flex cursor-pointer items-center justify-between border-t border-border bg-muted px-6 py-2.5",
939
+ onClick: function onClick() {
940
+ return toggleDropdown(category);
941
+ },
942
+ children: [/*#__PURE__*/jsx(Typography, {
943
+ className: "text-sm font-semibold leading-normal",
944
+ "data-testid": "ntm-permission-category-title",
945
+ children: category
946
+ }), /*#__PURE__*/jsx(ToggleDropdown, {
947
+ isVisible: isPermissionVisible
948
+ })]
949
+ }), isPermissionVisible && /*#__PURE__*/jsx("div", {
950
+ className: "ntm-roles-table-sidebar__list-item-spacing-handler ms-3 px-6",
951
+ children: _renderDescription(groupedPermissionsWithChildren[category], pluck("id", filteredGroupPermissions.get(category).get("permissions") || []), permissionTooltip)
952
+ })]
953
+ }, index);
954
+ })
955
+ })
956
+ })]
957
+ });
958
+ };
959
+
960
+ var syncRowHeights = function syncRowHeights() {
961
+ var sidebarCells = document.querySelectorAll(SIDEBAR_CELL_SELECTOR);
962
+ var columnRows = document.querySelectorAll(COLUMN_ROW_SELECTOR);
963
+ var count = Math.min(sidebarCells.length, columnRows.length);
964
+ for (var i = 0; i < count; i++) {
965
+ // Reset heights so we can measure natural size
966
+ sidebarCells[i].style.height = "auto";
967
+ var sidebarChildren = sidebarCells[i].children;
968
+ for (var j = 0; j < sidebarChildren.length; j++) {
969
+ sidebarChildren[j].style.height = "auto";
970
+ }
971
+ var columnChildren = columnRows[i].children;
972
+ for (var _j = 0; _j < columnChildren.length; _j++) {
973
+ var cells = columnChildren[_j].querySelectorAll(".ntm-roles-table__cell");
974
+ cells.forEach(function (cell) {
975
+ cell.style.height = "auto";
976
+ });
977
+ }
978
+ }
979
+
980
+ // Force reflow before measuring
981
+
982
+ document.body.offsetHeight;
983
+ var _loop = function _loop() {
984
+ // For each row group (category header + its permission rows),
985
+ // sync the sidebar cell block with the column row block.
986
+ var sidebarBlock = sidebarCells[_i];
987
+ var columnBlock = columnRows[_i];
988
+
989
+ // Sync the category header row (first child of each block)
990
+ var sidebarHeader = sidebarBlock.querySelector(".ntm-roles-table-sidebar__list-item--highlighted");
991
+ var columnHeader = columnBlock.querySelector(".ntm-roles-table__row--highlighted");
992
+ if (sidebarHeader && columnHeader) {
993
+ var _columnHeaderCells$;
994
+ var columnHeaderCells = columnHeader.querySelectorAll(".ntm-roles-table__cell");
995
+ var sidebarH = sidebarHeader.getBoundingClientRect().height;
996
+ var columnH = ((_columnHeaderCells$ = columnHeaderCells[0]) === null || _columnHeaderCells$ === void 0 ? void 0 : _columnHeaderCells$.getBoundingClientRect().height) || 0;
997
+ var maxH = Math.max(sidebarH, columnH);
998
+ sidebarHeader.style.height = "".concat(maxH, "px");
999
+ columnHeaderCells.forEach(function (cell) {
1000
+ cell.style.height = "".concat(maxH, "px");
1001
+ });
1002
+ }
1003
+
1004
+ // Sync individual permission rows
1005
+ var sidebarItems = sidebarBlock.querySelectorAll(".ntm-roles-table-sidebar__list-item:not(.ntm-roles-table-sidebar__list-item--highlighted)");
1006
+ var columnPermRows = columnBlock.querySelectorAll(".ntm-roles-table__row:not(.ntm-roles-table__row--highlighted)");
1007
+ var permCount = Math.min(sidebarItems.length, columnPermRows.length);
1008
+ var _loop2 = function _loop2() {
1009
+ var _columnCells$;
1010
+ var sidebarH = sidebarItems[_j2].getBoundingClientRect().height;
1011
+ var columnCells = columnPermRows[_j2].querySelectorAll(".ntm-roles-table__cell");
1012
+ var columnH = ((_columnCells$ = columnCells[0]) === null || _columnCells$ === void 0 ? void 0 : _columnCells$.getBoundingClientRect().height) || 0;
1013
+ var maxH = Math.max(sidebarH, columnH);
1014
+ sidebarItems[_j2].style.height = "".concat(maxH, "px");
1015
+ columnCells.forEach(function (cell) {
1016
+ cell.style.height = "".concat(maxH, "px");
1017
+ });
1018
+ };
1019
+ for (var _j2 = 0; _j2 < permCount; _j2++) {
1020
+ _loop2();
1021
+ }
1022
+ };
1023
+ for (var _i = 0; _i < count; _i++) {
1024
+ _loop();
1025
+ }
1026
+ };
1027
+ var useRowHeightSync = function useRowHeightSync(filteredGroupPermissions) {
1028
+ var sync = useCallback(function () {
1029
+ requestAnimationFrame(syncRowHeights);
1030
+ }, []);
1031
+ useEffect(function () {
1032
+ sync();
1033
+ }, [filteredGroupPermissions, sync]);
1034
+ useEffect(function () {
1035
+ var observer = new ResizeObserver(sync);
1036
+ var container = document.querySelector(".ntm-roles-table__container");
1037
+ if (container) observer.observe(container);
1038
+ window.addEventListener("resize", sync);
1039
+ return function () {
1040
+ observer.disconnect();
1041
+ window.removeEventListener("resize", sync);
1042
+ };
1043
+ }, [sync]);
1044
+ };
1045
+
1046
+ var Table = function Table(_ref) {
1047
+ var _config$permissionRel, _config$permissionToo;
1048
+ var config = _ref.config,
1049
+ filteredRoles = _ref.filteredRoles,
1050
+ roles = _ref.roles,
1051
+ permissionGroups = _ref.permissionGroups,
1052
+ permissions = _ref.permissions,
1053
+ setModifiedRoles = _ref.setModifiedRoles,
1054
+ setIsNewRolePaneOpen = _ref.setIsNewRolePaneOpen;
1055
+ var _useTranslation = useTranslation(),
1056
+ t = _useTranslation.t;
1057
+ var _useQueryParams = useQueryParams(),
1058
+ _useQueryParams$permi = _useQueryParams.permissionSearchTerm,
1059
+ permissionSearchTerm = _useQueryParams$permi === void 0 ? "" : _useQueryParams$permi;
1060
+ var isCreatePermissionGranted = config.permissions.create;
1061
+ var _useState = useState(permissionGroups),
1062
+ _useState2 = _slicedToArray(_useState, 2),
1063
+ filteredGroupPermissions = _useState2[0],
1064
+ setFilteredGroupPermissions = _useState2[1];
1065
+ var _useState3 = useState(false),
1066
+ _useState4 = _slicedToArray(_useState3, 2),
1067
+ isScrollPresent = _useState4[0],
1068
+ setIsScrollPresent = _useState4[1];
1069
+ var _useState5 = useState(undefined),
1070
+ _useState6 = _slicedToArray(_useState5, 2),
1071
+ selectedRole = _useState6[0],
1072
+ setSelectedRole = _useState6[1];
1073
+ var _useState7 = useState(false),
1074
+ _useState8 = _slicedToArray(_useState7, 2),
1075
+ isDeleteAlertOpen = _useState8[0],
1076
+ setIsDeleteAlertOpen = _useState8[1];
1077
+ var _useState9 = useState(false),
1078
+ _useState10 = _slicedToArray(_useState9, 2),
1079
+ isEditPaneOpen = _useState10[0],
1080
+ setIsEditPaneOpen = _useState10[1];
1081
+ var toggleDropdown = function toggleDropdown(category) {
1082
+ var permissions = updatePermissionVisibility(category, filteredGroupPermissions);
1083
+ setFilteredGroupPermissions(permissions);
1084
+ };
1085
+ useRowHeightSync(filteredGroupPermissions);
1086
+ useEffect(function () {
1087
+ var newValue = filterPermissionsBySearch(permissionSearchTerm, permissionGroups);
1088
+ setFilteredGroupPermissions(newValue);
1089
+ }, [permissionGroups, permissionSearchTerm]);
1090
+ return /*#__PURE__*/jsxs(Fragment, {
1091
+ children: [/*#__PURE__*/jsx("div", {
1092
+ className: "ntm-roles-table__wrapper",
1093
+ children: /*#__PURE__*/jsx("div", {
1094
+ className: "ntm-roles-table__container",
1095
+ children: isEmpty(filteredRoles) ? /*#__PURE__*/jsx("div", {
1096
+ className: "flex h-full w-full items-center justify-center",
1097
+ children: /*#__PURE__*/jsx(Empty, {
1098
+ title: t("neetoTeamMembers.labels.roleNotFound", PLURAL),
1099
+ children: /*#__PURE__*/jsx(Button, {
1100
+ "data-testid": "ntm-add-role-button",
1101
+ disabled: !isCreatePermissionGranted,
1102
+ onClick: function onClick() {
1103
+ return setIsNewRolePaneOpen(true);
1104
+ },
1105
+ children: t("neetoTeamMembers.labels.addNewRole")
1106
+ })
1107
+ })
1108
+ }) : /*#__PURE__*/jsxs(Fragment, {
1109
+ children: [/*#__PURE__*/jsx(Sidebar, {
1110
+ filteredGroupPermissions: filteredGroupPermissions,
1111
+ isScrollPresent: isScrollPresent,
1112
+ permissions: permissions,
1113
+ toggleDropdown: toggleDropdown,
1114
+ permissionRelationConfig: (_config$permissionRel = config === null || config === void 0 ? void 0 : config.permissionRelation) !== null && _config$permissionRel !== void 0 ? _config$permissionRel : {},
1115
+ permissionTooltip: (_config$permissionToo = config === null || config === void 0 ? void 0 : config.permissionTooltip) !== null && _config$permissionToo !== void 0 ? _config$permissionToo : {}
1116
+ }), /*#__PURE__*/jsx(Columns, {
1117
+ config: config,
1118
+ filteredGroupPermissions: filteredGroupPermissions,
1119
+ filteredRoles: filteredRoles,
1120
+ permissions: permissions,
1121
+ roles: roles,
1122
+ setIsScrollPresent: setIsScrollPresent,
1123
+ setModifiedRoles: setModifiedRoles
1124
+ })]
1125
+ })
1126
+ })
1127
+ }), /*#__PURE__*/jsx(ManageRoles, {
1128
+ config: config,
1129
+ permissions: permissions,
1130
+ selectedRole: selectedRole,
1131
+ isOpen: isEditPaneOpen,
1132
+ onClose: function onClose() {
1133
+ setSelectedRole(undefined);
1134
+ setIsEditPaneOpen(false);
1135
+ }
1136
+ }), /*#__PURE__*/jsx(Delete, {
1137
+ roles: roles,
1138
+ selectedRole: selectedRole,
1139
+ isOpen: isDeleteAlertOpen,
1140
+ onClose: function onClose() {
1141
+ setSelectedRole(undefined);
1142
+ setIsDeleteAlertOpen(false);
1143
+ }
1144
+ })]
1145
+ });
1146
+ };
1147
+
1148
+ var css = ":root{--ntm-roles-table-default-scroll:0.9375rem;--ntm-roles-table-cell-height:3rem;--ntm-roles-sidebar-width:480px;--ntm-roles-table-header-height:3rem}.ntm-scrollbar__inner{height:12.5rem;width:100%}.ntm-scrollbar__outer{height:9.375rem;inset-inline-start:0;overflow:hidden;position:absolute;top:0;visibility:hidden;width:12.5rem}.ntm-empty-state{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.ntm-roles-pane__body{margin-bottom:1.5rem;width:100%}.ntm-roles-pane__body-wrapper>*+*{margin-top:1rem}.ntm-roles-pane__body>*+*{margin-top:1.5rem}.ntm-roles-pane__footer{display:flex;gap:.5rem}.ntm-roles-permission__heading{padding-top:.5rem}.ntm-roles-permission__card{background-color:var(--background);display:flex;flex-direction:column;gap:.75rem;padding:.4rem 0;position:relative}.ntm-roles-permission__card:after{background-color:var(--border);content:\"\";height:1px;inset-inline-start:-.9375rem;position:absolute;top:.875rem;width:.625rem}.ntm-roles-permission__card--description{flex-grow:1}.ntm-roles-permission__card--checkbox{padding:0 .5rem}.ntm-roles-permission__sub-blocks{position:relative}.ntm-roles-permission__sub-blocks:before{background-color:var(--border);content:\"\";height:calc(100% - .875rem);inset-inline-start:.5rem;position:absolute;top:0;width:.0625rem}.ntm-roles-permission__sub-blocks:empty{display:none}.ntm-roles-permission-category-card{border:1px solid var(--border);border-radius:.375rem;border-radius:var(--radius,.375rem);padding:.625rem 1.25rem;transition:all .3s}.ntm-roles-permission-category-card--active{background-color:color-mix(in oklch,var(--primary) 10%,transparent);border-color:var(--primary);outline:1px solid var(--primary)}.ntm-roles-permission-category-card--active .ntm-roles-permission__card{background-color:transparent}.ntm-roles-permission-category-card>.ntm-roles-permission__card:after{display:none}@keyframes ntm-roles-permission-blink{0%,to{color:inherit}50%{color:var(--primary);font-weight:700}}.ntm-roles-permission__card--blink label{animation:ntm-roles-permission-blink .6s ease-in-out 0s 3}.ntm-roles-table__wrapper{padding:0 2.5rem;width:100%}.ntm-roles-table__container{border:1px solid var(--border);border-radius:.5rem;border-radius:var(--radius-lg,.5rem);display:flex;max-height:calc(100vh - var(--neeto-molecules-main-header-with-breadcrumbs-height) - 28px);overflow:hidden}.ntm-roles-table__container>*{max-height:inherit}.ntm-roles-table__sidebar{min-width:480px;min-width:var(--ntm-roles-sidebar-width);width:480px;width:var(--ntm-roles-sidebar-width)}.ntm-roles-table-sidebar__search{background-color:var(--muted);border-bottom:thin solid var(--border);border-right:thin solid var(--border);height:3rem;height:var(--ntm-roles-table-header-height);padding:.5rem 1rem}.ntm-roles-table-sidebar__list{border-right:thin solid var(--border);max-height:calc(100vh - var(--neeto-molecules-main-header-with-breadcrumbs-height) - 3rem - 30px);max-height:calc(100vh - var(--neeto-molecules-main-header-with-breadcrumbs-height) - var(--ntm-roles-table-header-height) - 30px);overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.ntm-roles-table-sidebar__list::-webkit-scrollbar{height:0;width:0}.ntm-roles-table-sidebar__list-item{display:flex;flex-direction:column;min-height:3rem;min-height:var(--ntm-roles-table-cell-height);overflow-wrap:break-word;position:relative;white-space:normal}.ntm-roles-table-sidebar__list-item:after{background-color:var(--border);content:\"\";height:.0625rem;inset-inline-start:-1.125rem;position:absolute;top:1.4375rem;width:.875rem}.ntm-roles-table-sidebar__list-item.ntm-roles-table-sidebar__list-item--highlighted{align-items:center;background-color:var(--muted);border-bottom:thin solid var(--border);border-top:thin solid var(--border);flex-direction:row;justify-content:space-between;min-height:3rem;min-height:var(--ntm-roles-table-cell-height);padding:.6875rem 1.5rem}.ntm-roles-table__columns{flex-grow:1;overflow:hidden}.ntm-roles-table__cell{align-items:center;border-inline-end:thin solid var(--border);display:flex;height:3rem;height:var(--ntm-roles-table-cell-height);justify-content:center;min-height:3rem;min-height:var(--ntm-roles-table-cell-height);min-width:200px;padding:.75rem .5rem;width:100%}.ntm-roles-table__cell:last-child{border-inline-end:none}.ntm-roles-table-cell__checkbox-wrapper{height:1rem;margin:auto;position:absolute;width:1rem;z-index:10}.ntm-roles-table-cell__checkbox{z-index:10}.ntm-roles-table__header{align-items:center;display:flex;overflow-x:auto}.ntm-roles-table__header .ntm-roles-table__cell{background-color:var(--muted);border-bottom:thin solid var(--border);height:3rem;height:var(--ntm-roles-table-header-height)}.ntm-roles-table-header-cell__container{align-items:center;display:flex;justify-content:space-between;overflow:hidden;width:100%}.ntm-roles-table-header__dropdown{flex-shrink:0;margin:.1875rem}.ntm-roles-table-header__role-name{overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%}.ntm-roles-table__rows{max-height:calc(100vh - var(--neeto-molecules-main-header-with-breadcrumbs-height) - 3rem - 30px);max-height:calc(100vh - var(--neeto-molecules-main-header-with-breadcrumbs-height) - var(--ntm-roles-table-header-height) - 30px);overflow-y:auto;scrollbar-width:none;width:100%}.ntm-roles-table__rows::-webkit-scrollbar{height:0;width:0}.ntm-roles-table__rows::-webkit-scrollbar-thumb{background:var(--border);border-radius:3.125rem}.ntm-roles-table__rows::-webkit-scrollbar-thumb:hover{border-radius:3.125rem}.ntm-roles-table__rows::-webkit-scrollbar-track{background:var(--border)}.ntm-roles-table__row{align-items:center;display:flex}.ntm-roles-table__row .ntm-roles-table__cell{border-top:thin solid var(--border);overflow:hidden;position:relative}.ntm-roles-table__row--highlighted+.ntm-roles-table__row .ntm-roles-table__cell{border-top:none}.ntm-roles-table__row .ntm-roles-table__cell p{min-width:340px;opacity:0;width:340px}.ntm-roles-table__row.ntm-roles-table__row--highlighted .ntm-roles-table__cell{background-color:var(--muted);border-bottom:thin solid var(--border)}.ntm-roles-table-sidebar__drop-down-button{color:var(--muted-foreground);cursor:pointer}.ntm-roles-modal__body>*+*{margin-top:1rem}.ntm-roles-modal__footer{display:flex;gap:.5rem}.ntm-roles-help-url-wrapper{align-items:center;display:flex;justify-content:center;padding:1rem 0;width:100%}.ntm-roles-table-sidebar__list-item-spacing-handler>.ntm-roles-table-sidebar__list-item .neeto-ui-text-body2{font-size:.9375rem;font-weight:500}.ntm-roles-table-sidebar__list-item-spacing-handler>.ntm-roles-table-sidebar__list-item:after,.ntm-roles-table-sidebar__list-item-spacing-handler>.ntm-roles-table-sidebar__list-item:before{display:none}.ntm-roles-table-sidebar__list-item-spacing-handler .ntm-roles-table-sidebar__list-item{align-items:center;flex-direction:row;gap:.25rem}.ntm-roles-table-sidebar__sub-blocks{position:relative}.ntm-roles-table-sidebar__sub-blocks:before{background-color:var(--border);content:\"\";height:calc(100% - 1.5rem);inset-inline-start:.375rem;position:absolute;top:0;width:.0625rem}.ntm-roles-table-sidebar__sub-blocks:empty{display:none}@media screen and (max-width:1024px){.ntm-roles-table__wrapper{--neeto-molecules-main-header-with-breadcrumbs-height:216px}.ntm-roles-table__sidebar{--ntm-roles-sidebar-width:260px;height:100%}}@media screen and (max-width:768px){.ntm-roles-table__wrapper{--neeto-molecules-main-header-with-breadcrumbs-height:186px;overflow:hidden;padding:0 1.25rem}.ntm-roles-table__container{height:auto;overflow-y:auto}.ntm-roles-table__sidebar{height:100%}.ntm-roles-table__columns,.ntm-roles-table__header{overflow:visible;overflow:initial}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9jb21wb25lbnRzL3YyL3N0eWxlcy9yb290LmNzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9jb21wb25lbnRzL3YyL3N0eWxlcy9iYXNlLmNzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9jb21wb25lbnRzL3YyL3N0eWxlcy9lbXB0eS1zdGF0ZS5jc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvY29tcG9uZW50cy92Mi9zdHlsZXMvcm9sZXMtcGVybWlzc2lvbnMuY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL2NvbXBvbmVudHMvdjIvc3R5bGVzL3JvbGVzLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUNFLDBDQUEyQyxDQUMzQyxrQ0FBbUMsQ0FDbkMsK0JBQWdDLENBQ2hDLG9DQUNGLENDTEEsc0JBRUUsY0FBZSxDQURmLFVBRUYsQ0FFQSxzQkFLRSxlQUFnQixDQUZoQixvQkFBdUIsQ0FHdkIsZUFBZ0IsQ0FMaEIsaUJBQWtCLENBQ2xCLEtBQVEsQ0FLUixpQkFBa0IsQ0FIbEIsYUFJRixDQ2JBLGlCQUlFLGtCQUFtQixDQURuQixZQUFhLENBRGIsV0FBWSxDQUdaLHNCQUF1QixDQUp2QixVQUtGLENDTkEsc0JBRUUsb0JBQXFCLENBRHJCLFVBRUYsQ0FFQSxrQ0FDRSxlQUNGLENBRUEsMEJBQ0UsaUJBQ0YsQ0FFQSx3QkFDRSxZQUFhLENBQ2IsU0FDRixDQUVBLCtCQUNFLGlCQUNGLENBRUEsNEJBQ0Usa0NBQW1DLENBRW5DLFlBQWEsQ0FDYixxQkFBc0IsQ0FDdEIsVUFBWSxDQUNaLGVBQWlCLENBSmpCLGlCQUtGLENBRUEsa0NBQ0UsOEJBQStCLENBQy9CLFVBQVcsQ0FDWCxVQUFXLENBQ1gsNEJBQThCLENBQzlCLGlCQUFrQixDQUNsQixXQUFhLENBQ2IsYUFDRixDQUVBLHlDQUNFLFdBQ0YsQ0FFQSxzQ0FDRSxlQUNGLENBRUEsa0NBQ0UsaUJBQ0YsQ0FFQSx5Q0FDRSw4QkFBK0IsQ0FFL0IsVUFBVyxDQUNYLDJCQUE2QixDQUM3Qix3QkFBMEIsQ0FDMUIsaUJBQWtCLENBSmxCLEtBQU0sQ0FLTixjQUNGLENBRUEsd0NBQ0UsWUFDRixDQUVBLG9DQUdFLDhCQUErQixDQUQvQixxQkFBc0MsQ0FBdEMsbUNBQXNDLENBRHRDLHVCQUF5QixDQUd6QixrQkFDRixDQUVBLDRDQUdFLG1FQUFzRSxDQUZ0RSwyQkFBNEIsQ0FDNUIsZ0NBRUYsQ0FFQSx3RUFDRSw0QkFDRixDQUVBLHNFQUNFLFlBQ0YsQ0FFQSxzQ0FFRSxNQUVFLGFBQ0YsQ0FFQSxJQUNFLG9CQUFxQixDQUNyQixlQUNGLENBQ0YsQ0FFQSx5Q0FDRSx5REFDRixDQ2xHQSwwQkFFRSxnQkFBaUIsQ0FEakIsVUFFRixDQUVBLDRCQUtFLDhCQUErQixDQUQvQixtQkFBdUMsQ0FBdkMsb0NBQXVDLENBSHZDLFlBQWEsQ0FDYiwwRkFBMkYsQ0FDM0YsZUFHRixDQUVBLDhCQUNFLGtCQUNGLENBRUEsMEJBRUUsZUFBeUMsQ0FBekMsd0NBQXlDLENBRHpDLFdBQXFDLENBQXJDLG9DQUVGLENBRUEsaUNBS0UsNkJBQThCLENBRDlCLHNDQUF1QyxDQUR2QyxxQ0FBc0MsQ0FEdEMsV0FBNEMsQ0FBNUMsMkNBQTRDLENBRDVDLGtCQUtGLENBRUEsK0JBSUUscUNBQXNDLENBRHRDLGlHQUFrSSxDQUFsSSxpSUFBa0ksQ0FEbEksaUJBQWtCLENBRGxCLGVBQWdCLENBSWhCLG9CQUNGLENBRUEsa0RBRUUsUUFBVyxDQURYLE9BRUYsQ0FFQSxvQ0FDRSxZQUFhLENBQ2IscUJBQXNCLENBQ3RCLGVBQThDLENBQTlDLDZDQUE4QyxDQUc5Qyx3QkFBeUIsQ0FGekIsaUJBQWtCLENBQ2xCLGtCQUVGLENBRUEsMENBQ0UsOEJBQStCLENBQy9CLFVBQVcsQ0FDWCxlQUFpQixDQUNqQiw0QkFBNkIsQ0FDN0IsaUJBQWtCLENBQ2xCLGFBQWMsQ0FDZCxhQUNGLENBRUEsb0ZBR0Usa0JBQW1CLENBQ25CLDZCQUE4QixDQUk5QixzQ0FBdUMsQ0FEdkMsbUNBQW9DLENBTnBDLGtCQUFtQixDQUNuQiw2QkFBOEIsQ0FHOUIsZUFBOEMsQ0FBOUMsNkNBQThDLENBQzlDLHVCQUdGLENBRUEsMEJBQ0UsV0FBWSxDQUNaLGVBQ0YsQ0FFQSx1QkFRRSxrQkFBbUIsQ0FDbkIsMENBQTJDLENBSDNDLFlBQWEsQ0FIYixXQUEwQyxDQUExQyx5Q0FBMEMsQ0FJMUMsc0JBQXVCLENBSHZCLGVBQThDLENBQTlDLDZDQUE4QyxDQUY5QyxlQUFnQixDQUdoQixvQkFBdUIsQ0FKdkIsVUFTRixDQUVBLGtDQUNFLHNCQUNGLENBRUEsd0NBRUUsV0FBWSxDQUVaLFdBQVksQ0FIWixpQkFBa0IsQ0FFbEIsVUFBVyxDQUVYLFVBQ0YsQ0FFQSxnQ0FDRSxVQUNGLENBRUEseUJBRUUsa0JBQW1CLENBRG5CLFlBQWEsQ0FFYixlQUNGLENBRUEsZ0RBR0UsNkJBQThCLENBRDlCLHNDQUF1QyxDQUR2QyxXQUE0QyxDQUE1QywyQ0FHRixDQUVBLHdDQUdFLGtCQUFtQixDQUZuQixZQUFhLENBQ2IsNkJBQThCLENBRzlCLGVBQWdCLENBRGhCLFVBRUYsQ0FFQSxrQ0FFRSxhQUFjLENBRGQsZUFFRixDQUVBLG1DQUNFLGVBQWdCLENBR2hCLGlCQUFrQixDQUZsQixzQkFBdUIsQ0FDdkIsa0JBQW1CLENBRW5CLFVBQ0YsQ0FFQSx1QkFFRSxpR0FBa0ksQ0FBbEksaUlBQWtJLENBQ2xJLGVBQWdCLENBQ2hCLG9CQUFxQixDQUhyQixVQUlGLENBRUEsMENBRUUsUUFBVyxDQURYLE9BRUYsQ0FFQSxnREFDRSx3QkFBeUIsQ0FDekIsc0JBQ0YsQ0FFQSxzREFDRSxzQkFDRixDQUVBLGdEQUNFLHdCQUNGLENBR0Esc0JBRUUsa0JBQW1CLENBRG5CLFlBRUYsQ0FFQSw2Q0FHRSxtQ0FBb0MsQ0FGcEMsZUFBZ0IsQ0FDaEIsaUJBRUYsQ0FFQSxnRkFDRSxlQUNGLENBRUEsK0NBR0UsZUFBZ0IsQ0FGaEIsU0FBVSxDQUNWLFdBRUYsQ0FFQSwrRUFDRSw2QkFBOEIsQ0FDOUIsc0NBQ0YsQ0FFQSwyQ0FDRSw2QkFBOEIsQ0FDOUIsY0FDRixDQUVBLDJCQUNFLGVBQ0YsQ0FFQSx5QkFDRSxZQUFhLENBQ2IsU0FDRixDQUVBLDRCQUdFLGtCQUFtQixDQUZuQixZQUFhLENBR2Isc0JBQXVCLENBQ3ZCLGNBQWUsQ0FIZixVQUlGLENBRUEsNkdBQ0Usa0JBQW9CLENBQ3BCLGVBQ0YsQ0FNQSw2TEFDRSxZQUNGLENBRUEsd0ZBRUUsa0JBQW1CLENBRG5CLGtCQUFtQixDQUVuQixVQUNGLENBRUEscUNBQ0UsaUJBQ0YsQ0FFQSw0Q0FDRSw4QkFBK0IsQ0FFL0IsVUFBVyxDQUNYLDBCQUEyQixDQUMzQiwwQkFBNEIsQ0FDNUIsaUJBQWtCLENBSmxCLEtBQU0sQ0FLTixjQUNGLENBRUEsMkNBQ0UsWUFDRixDQUdBLHFDQUNFLDBCQUNFLDJEQUNGLENBRUEsMEJBQ0UsK0JBQWdDLENBQ2hDLFdBQ0YsQ0FDRixDQUVBLG9DQUNFLDBCQUNFLDJEQUE0RCxDQUU1RCxlQUFnQixDQURoQixpQkFFRixDQUVBLDRCQUVFLFdBQVksQ0FEWixlQUVGLENBRUEsMEJBQ0UsV0FDRixDQU1BLG1EQUNFLGdCQUFlLENBQWYsZ0JBQ0YsQ0FDRiIsInNvdXJjZXNDb250ZW50IjpbIjpyb290IHtcbiAgLS1udG0tcm9sZXMtdGFibGUtZGVmYXVsdC1zY3JvbGw6IDAuOTM3NXJlbTtcbiAgLS1udG0tcm9sZXMtdGFibGUtY2VsbC1oZWlnaHQ6IDNyZW07XG4gIC0tbnRtLXJvbGVzLXNpZGViYXItd2lkdGg6IDQ4MHB4O1xuICAtLW50bS1yb2xlcy10YWJsZS1oZWFkZXItaGVpZ2h0OiAzcmVtO1xufVxuIiwiLm50bS1zY3JvbGxiYXJfX2lubmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTIuNXJlbTtcbn1cblxuLm50bS1zY3JvbGxiYXJfX291dGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDBweDtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwcHg7XG4gIHdpZHRoOiAxMi41cmVtO1xuICBoZWlnaHQ6IDkuMzc1cmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4iLCIubnRtLWVtcHR5LXN0YXRlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4iLCIubnRtLXJvbGVzLXBhbmVfX2JvZHkge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXBhbmVfX2JvZHktd3JhcHBlcj4qKyoge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG4ubnRtLXJvbGVzLXBhbmVfX2JvZHk+KisqIHtcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXBhbmVfX2Zvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMC41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXBlcm1pc3Npb25fX2hlYWRpbmcge1xuICBwYWRkaW5nLXRvcDogMC41cmVtO1xufVxuXG4ubnRtLXJvbGVzLXBlcm1pc3Npb25fX2NhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDAuNHJlbSAwO1xufVxuXG4ubnRtLXJvbGVzLXBlcm1pc3Npb25fX2NhcmQ6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYm9yZGVyKTtcbiAgY29udGVudDogXCJcIjtcbiAgaGVpZ2h0OiAxcHg7XG4gIGluc2V0LWlubGluZS1zdGFydDogLTAuOTM3NXJlbTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAuODc1cmVtO1xuICB3aWR0aDogMC42MjVyZW07XG59XG5cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZC0tZGVzY3JpcHRpb24ge1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZC0tY2hlY2tib3gge1xuICBwYWRkaW5nOiAwIDAuNXJlbTtcbn1cblxuLm50bS1yb2xlcy1wZXJtaXNzaW9uX19zdWItYmxvY2tzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubnRtLXJvbGVzLXBlcm1pc3Npb25fX3N1Yi1ibG9ja3M6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJvcmRlcik7XG4gIHRvcDogMDtcbiAgY29udGVudDogXCJcIjtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAwLjg3NXJlbSk7XG4gIGluc2V0LWlubGluZS1zdGFydDogMC41cmVtO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAwLjA2MjVyZW07XG59XG5cbi5udG0tcm9sZXMtcGVybWlzc2lvbl9fc3ViLWJsb2NrczplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5udG0tcm9sZXMtcGVybWlzc2lvbi1jYXRlZ29yeS1jYXJkIHtcbiAgcGFkZGluZzogMC42MjVyZW0gMS4yNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLCAwLjM3NXJlbSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzO1xufVxuXG4ubnRtLXJvbGVzLXBlcm1pc3Npb24tY2F0ZWdvcnktY2FyZC0tYWN0aXZlIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgb3V0bGluZTogMXB4IHNvbGlkIHZhcigtLXByaW1hcnkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci1taXgoaW4gb2tsY2gsIHZhcigtLXByaW1hcnkpIDEwJSwgdHJhbnNwYXJlbnQpO1xufVxuXG4ubnRtLXJvbGVzLXBlcm1pc3Npb24tY2F0ZWdvcnktY2FyZC0tYWN0aXZlIC5udG0tcm9sZXMtcGVybWlzc2lvbl9fY2FyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4ubnRtLXJvbGVzLXBlcm1pc3Npb24tY2F0ZWdvcnktY2FyZD4ubnRtLXJvbGVzLXBlcm1pc3Npb25fX2NhcmQ6OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuQGtleWZyYW1lcyBudG0tcm9sZXMtcGVybWlzc2lvbi1ibGluayB7XG5cbiAgMCUsXG4gIDEwMCUge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG5cbiAgNTAlIHtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuLm50bS1yb2xlcy1wZXJtaXNzaW9uX19jYXJkLS1ibGluayBsYWJlbCB7XG4gIGFuaW1hdGlvbjogbnRtLXJvbGVzLXBlcm1pc3Npb24tYmxpbmsgNjAwbXMgZWFzZS1pbi1vdXQgMHMgMztcbn1cbiIsIkBpbXBvcnQgJy4vcm9vdC5jc3MnO1xuQGltcG9ydCAnLi9iYXNlLmNzcyc7XG5AaW1wb3J0ICcuL2VtcHR5LXN0YXRlLmNzcyc7XG5AaW1wb3J0ICcuL3JvbGVzLXBlcm1pc3Npb25zLmNzcyc7XG5cbi5udG0tcm9sZXMtdGFibGVfX3dyYXBwZXIge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMCAyLjVyZW07XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1uZWV0by1tb2xlY3VsZXMtbWFpbi1oZWFkZXItd2l0aC1icmVhZGNydW1icy1oZWlnaHQpIC0gMjhweCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZywgMC41cmVtKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9fY29udGFpbmVyID4gKiB7XG4gIG1heC1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX3NpZGViYXIge1xuICB3aWR0aDogdmFyKC0tbnRtLXJvbGVzLXNpZGViYXItd2lkdGgpO1xuICBtaW4td2lkdGg6IHZhcigtLW50bS1yb2xlcy1zaWRlYmFyLXdpZHRoKTtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19zZWFyY2gge1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgaGVpZ2h0OiB2YXIoLS1udG0tcm9sZXMtdGFibGUtaGVhZGVyLWhlaWdodCk7XG4gIGJvcmRlci1yaWdodDogdGhpbiBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItYm90dG9tOiB0aGluIHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW11dGVkKTtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19saXN0IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tbmVldG8tbW9sZWN1bGVzLW1haW4taGVhZGVyLXdpdGgtYnJlYWRjcnVtYnMtaGVpZ2h0KSAtIHZhcigtLW50bS1yb2xlcy10YWJsZS1oZWFkZXItaGVpZ2h0KSAtIDMwcHgpO1xuICBib3JkZXItcmlnaHQ6IHRoaW4gc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDBweDtcbiAgaGVpZ2h0OiAwcHg7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fbGlzdC1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLWhlaWdodDogdmFyKC0tbnRtLXJvbGVzLXRhYmxlLWNlbGwtaGVpZ2h0KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbTo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ib3JkZXIpO1xuICBjb250ZW50OiBcIlwiO1xuICBoZWlnaHQ6IDAuMDYyNXJlbTtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAtMS4xMjVyZW07XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxLjQzNzVyZW07XG4gIHdpZHRoOiAwLjg3NXJlbTtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19saXN0LWl0ZW0ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbS0taGlnaGxpZ2h0ZWQge1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW11dGVkKTtcbiAgbWluLWhlaWdodDogdmFyKC0tbnRtLXJvbGVzLXRhYmxlLWNlbGwtaGVpZ2h0KTtcbiAgcGFkZGluZzogMC42ODc1cmVtIDEuNXJlbTtcbiAgYm9yZGVyLXRvcDogdGhpbiBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItYm90dG9tOiB0aGluIHNvbGlkIHZhcigtLWJvcmRlcik7XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX2NvbHVtbnMge1xuICBmbGV4LWdyb3c6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX2NlbGwge1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgaGVpZ2h0OiB2YXIoLS1udG0tcm9sZXMtdGFibGUtY2VsbC1oZWlnaHQpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1udG0tcm9sZXMtdGFibGUtY2VsbC1oZWlnaHQpO1xuICBwYWRkaW5nOiAwLjc1cmVtIDAuNXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci1pbmxpbmUtZW5kOiB0aGluIHNvbGlkIHZhcigtLWJvcmRlcik7XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX2NlbGw6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1pbmxpbmUtZW5kOiBub25lO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLWNlbGxfX2NoZWNrYm94LXdyYXBwZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMXJlbTtcbiAgd2lkdGg6IDFyZW07XG4gIG1hcmdpbjogYXV0bztcbiAgei1pbmRleDogMTA7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtY2VsbF9fY2hlY2tib3gge1xuICB6LWluZGV4OiAxMDtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9faGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLm50bS1yb2xlcy10YWJsZV9faGVhZGVyIC5udG0tcm9sZXMtdGFibGVfX2NlbGwge1xuICBoZWlnaHQ6IHZhcigtLW50bS1yb2xlcy10YWJsZS1oZWFkZXItaGVpZ2h0KTtcbiAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tdXRlZCk7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtaGVhZGVyLWNlbGxfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5udG0tcm9sZXMtdGFibGUtaGVhZGVyX19kcm9wZG93biB7XG4gIG1hcmdpbjogMC4xODc1cmVtO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1oZWFkZXJfX3JvbGUtbmFtZSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlX19yb3dzIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1uZWV0by1tb2xlY3VsZXMtbWFpbi1oZWFkZXItd2l0aC1icmVhZGNydW1icy1oZWlnaHQpIC0gdmFyKC0tbnRtLXJvbGVzLXRhYmxlLWhlYWRlci1oZWlnaHQpIC0gMzBweCk7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9fcm93czo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogMHB4O1xuICBoZWlnaHQ6IDBweDtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9fcm93czo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAzLjEyNXJlbTtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9fcm93czo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBib3JkZXItcmFkaXVzOiAzLjEyNXJlbTtcbn1cblxuLm50bS1yb2xlcy10YWJsZV9fcm93czo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXIpO1xufVxuXG5cbi5udG0tcm9sZXMtdGFibGVfX3JvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX3JvdyAubnRtLXJvbGVzLXRhYmxlX19jZWxsIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItdG9wOiB0aGluIHNvbGlkIHZhcigtLWJvcmRlcik7XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX3Jvdy0taGlnaGxpZ2h0ZWQgKyAubnRtLXJvbGVzLXRhYmxlX19yb3cgLm50bS1yb2xlcy10YWJsZV9fY2VsbCB7XG4gIGJvcmRlci10b3A6IG5vbmU7XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX3JvdyAubnRtLXJvbGVzLXRhYmxlX19jZWxsIHAge1xuICBvcGFjaXR5OiAwO1xuICB3aWR0aDogMzQwcHg7XG4gIG1pbi13aWR0aDogMzQwcHg7XG59XG5cbi5udG0tcm9sZXMtdGFibGVfX3Jvdy5udG0tcm9sZXMtdGFibGVfX3Jvdy0taGlnaGxpZ2h0ZWQgLm50bS1yb2xlcy10YWJsZV9fY2VsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW11dGVkKTtcbiAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCB2YXIoLS1ib3JkZXIpO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2Ryb3AtZG93bi1idXR0b24ge1xuICBjb2xvcjogdmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm50bS1yb2xlcy1tb2RhbF9fYm9keT4qKyoge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG4ubnRtLXJvbGVzLW1vZGFsX19mb290ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLm50bS1yb2xlcy1oZWxwLXVybC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAxcmVtIDA7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fbGlzdC1pdGVtLXNwYWNpbmctaGFuZGxlcj4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbSAubmVldG8tdWktdGV4dC1ib2R5MiB7XG4gIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbS1zcGFjaW5nLWhhbmRsZXI+Lm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19saXN0LWl0ZW06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fbGlzdC1pdGVtLXNwYWNpbmctaGFuZGxlcj4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX2xpc3QtaXRlbS1zcGFjaW5nLWhhbmRsZXIgLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19saXN0LWl0ZW0ge1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuMjVyZW07XG59XG5cbi5udG0tcm9sZXMtdGFibGUtc2lkZWJhcl9fc3ViLWJsb2NrcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm50bS1yb2xlcy10YWJsZS1zaWRlYmFyX19zdWItYmxvY2tzOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ib3JkZXIpO1xuICB0b3A6IDA7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMS41cmVtKTtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwLjM3NXJlbTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMC4wNjI1cmVtO1xufVxuXG4ubnRtLXJvbGVzLXRhYmxlLXNpZGViYXJfX3N1Yi1ibG9ja3M6ZW1wdHkge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAubnRtLXJvbGVzLXRhYmxlX193cmFwcGVyIHtcbiAgICAtLW5lZXRvLW1vbGVjdWxlcy1tYWluLWhlYWRlci13aXRoLWJyZWFkY3J1bWJzLWhlaWdodDogMjE2cHg7XG4gIH1cblxuICAubnRtLXJvbGVzLXRhYmxlX19zaWRlYmFyIHtcbiAgICAtLW50bS1yb2xlcy1zaWRlYmFyLXdpZHRoOiAyNjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLm50bS1yb2xlcy10YWJsZV9fd3JhcHBlciB7XG4gICAgLS1uZWV0by1tb2xlY3VsZXMtbWFpbi1oZWFkZXItd2l0aC1icmVhZGNydW1icy1oZWlnaHQ6IDE4NnB4O1xuICAgIHBhZGRpbmc6IDAgMS4yNXJlbTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLm50bS1yb2xlcy10YWJsZV9fY29udGFpbmVyIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIC5udG0tcm9sZXMtdGFibGVfX3NpZGViYXIge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5udG0tcm9sZXMtdGFibGVfX2NvbHVtbnMge1xuICAgIG92ZXJmbG93OiB1bnNldDtcbiAgfVxuXG4gIC5udG0tcm9sZXMtdGFibGVfX2hlYWRlciB7XG4gICAgb3ZlcmZsb3c6IHVuc2V0O1xuICB9XG59XG4iXX0= */";
1149
+ n(css,{});
1150
+
1151
+ var Roles = function Roles(_ref) {
1152
+ var config = _ref.config;
1153
+ var isViewPermissionGranted = config.permissions.view;
1154
+ var isUpdatePermissionGranted = config.permissions.update;
1155
+ var _useState = useState([]),
1156
+ _useState2 = _slicedToArray(_useState, 2),
1157
+ modifiedRoles = _useState2[0],
1158
+ setModifiedRoles = _useState2[1];
1159
+ var _useState3 = useState(false),
1160
+ _useState4 = _slicedToArray(_useState3, 2),
1161
+ isNewRolePaneOpen = _useState4[0],
1162
+ setIsNewRolePaneOpen = _useState4[1];
1163
+ var _useFetchRoles = useFetchRoles({
1164
+ enabled: isViewPermissionGranted
1165
+ }),
1166
+ _useFetchRoles$data = _useFetchRoles.data,
1167
+ roles = _useFetchRoles$data === void 0 ? [] : _useFetchRoles$data,
1168
+ isRolesLoading = _useFetchRoles.isLoading,
1169
+ status = _useFetchRoles.status;
1170
+ var _useQueryParams = useQueryParams(),
1171
+ _useQueryParams$searc = _useQueryParams.searchTerm,
1172
+ searchTerm = _useQueryParams$searc === void 0 ? "" : _useQueryParams$searc;
1173
+ var _useFetchPermissions = useFetchPermissions({
1174
+ enabled: isViewPermissionGranted
1175
+ }),
1176
+ permissionData = _useFetchPermissions.data,
1177
+ isPermissionsLoading = _useFetchPermissions.isLoading;
1178
+ var _useBulkUpdateRoles = useBulkUpdateRoles({
1179
+ enabled: isUpdatePermissionGranted
1180
+ }),
1181
+ bulkUpdate = _useBulkUpdateRoles.mutate;
1182
+ var permissions = sortPermissionsBySequence(permissionData);
1183
+ var permissionGroups = getPermissionGroups(permissions);
1184
+ var filteredRoles = filter(function (_ref2) {
1185
+ var name = _ref2.name;
1186
+ return includes(searchTerm.toLowerCase().trim(), name.toLowerCase().trim());
1187
+ }, isNotEmpty(modifiedRoles) ? modifiedRoles : roles);
1188
+ var handleSubmit = function handleSubmit() {
1189
+ var updatedRoles = getModifiedPermissions(roles, modifiedRoles);
1190
+ bulkUpdate({
1191
+ organizationRoles: {
1192
+ updatedRoles: updatedRoles
1193
+ }
1194
+ });
1195
+ };
1196
+ var handleReset = function handleReset() {
1197
+ return setModifiedRoles(roles);
1198
+ };
1199
+ useEffect(function () {
1200
+ if (status !== "success") return;
1201
+ setModifiedRoles(roles);
1202
+ }, [roles, status]);
1203
+ if (isRolesLoading || isPermissionsLoading) {
1204
+ return /*#__PURE__*/jsx("div", {
1205
+ className: "flex h-full min-h-screen w-full items-center justify-center",
1206
+ children: /*#__PURE__*/jsx(Spinner, {})
1207
+ });
1208
+ }
1209
+ return /*#__PURE__*/jsxs(Fragment, {
1210
+ children: [/*#__PURE__*/jsx(distExports.ScrollSync, {
1211
+ children: /*#__PURE__*/jsxs(Container, {
1212
+ isHeaderFixed: true,
1213
+ children: [/*#__PURE__*/jsx(Header, {
1214
+ config: config,
1215
+ handleReset: handleReset,
1216
+ handleSubmit: handleSubmit,
1217
+ roles: roles,
1218
+ setIsNewRolePaneOpen: setIsNewRolePaneOpen
1219
+ }), /*#__PURE__*/jsx(Table, {
1220
+ config: config,
1221
+ filteredRoles: filteredRoles,
1222
+ permissionGroups: permissionGroups,
1223
+ permissions: permissions,
1224
+ roles: roles,
1225
+ setIsNewRolePaneOpen: setIsNewRolePaneOpen,
1226
+ setModifiedRoles: setModifiedRoles
1227
+ })]
1228
+ })
1229
+ }), /*#__PURE__*/jsx(ManageRoles, {
1230
+ config: config,
1231
+ permissions: permissions,
1232
+ isOpen: isNewRolePaneOpen,
1233
+ onClose: function onClose() {
1234
+ return setIsNewRolePaneOpen(false);
1235
+ }
1236
+ })]
1237
+ });
1238
+ };
1239
+ var index = withTitle(withReactQuery(Roles), i18next.t("neetoTeamMembers.common.role", PLURAL));
1240
+
1241
+ export { index as default };
1242
+ //# sourceMappingURL=Roles.js.map