@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,937 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
+ import { useState, useMemo, memo, useEffect } from 'react';
4
+ import { Button, Tooltip, DropdownMenu, Input, Typography, Alert, Sheet, RadioGroup, Spinner, DataTable, Empty } from '@bigbinary/neeto-atoms';
5
+ import { DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
6
+ import { taxonomies, globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
7
+ import { useQueryParams, useFuncDebounce, useDebounce, withT, withTitle, useBreakpoints } from '@bigbinary/neeto-commons-frontend/react-utils';
8
+ import { captureAnalyticsEvent, buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
9
+ import FiltersBar from '@bigbinary/neeto-filters-frontend/Bar';
10
+ import { useTableConfigurations } from '@bigbinary/neeto-molecules/v2/Columns';
11
+ import Container from '@bigbinary/neeto-molecules/v2/Container';
12
+ import SubHeader$1 from '@bigbinary/neeto-molecules/v2/SubHeader';
13
+ import { mergeLeft, isNil, assoc, pluck, filter, includes, trim, toLower, reverse } from 'ramda';
14
+ import { useTranslation, Trans } from 'react-i18next';
15
+ import { useHistory } from 'react-router-dom';
16
+ import { w as withReactQuery } from '../withReactQuery-CSuiy5RK.js';
17
+ import { u as useFetchRoles } from '../index-C6ph58Vg.js';
18
+ import { b as useFetchFilterOptions, c as useBulkUpdateMembers, d as useExportMembers, u as useFetchMembers, e as useUpdateMember } from '../useTeamsApi-CWp4G7JZ.js';
19
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
20
+ import { buildFiltersFromURL } from '@bigbinary/neeto-filters-frontend/utils';
21
+ import { d as defaultNeetoFiltersColumns, D as DEFAULT_FILTER_VALUES, b as buildFilterColumns, a as DEFAULT_IS_OPEN_VALUES, c as DEFAULT_SELECTED_ROWS, h as handlePageChange, g as getFilteredRoles, e as getColumnData, f as generateNoDataContent, i as DEFAULT_RADIX, M as ManageMember, r as renderUpdateAlert } from '../index-DgxgaCRt.js';
22
+ import { noop, isNotEmpty, hyphenate, findBy } from '@bigbinary/neeto-cist';
23
+ import { t } from 'i18next';
24
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
25
+ import { Search } from 'lucide-react';
26
+ import { TABLE_KEYS, EVENTS } from './constants.js';
27
+ import { toast } from 'sonner';
28
+ import NeetoHeader from '@bigbinary/neeto-molecules/v2/Header';
29
+ import '@tanstack/react-query';
30
+ import '../queryClient-BncpekSV.js';
31
+ import '@babel/runtime/helpers/objectWithoutProperties';
32
+ import 'axios';
33
+ import '../constants-B1L6arSR.js';
34
+ import 'formik';
35
+ import 'qs';
36
+ import '@babel/runtime/helpers/asyncToGenerator';
37
+ import '@babel/runtime/regenerator';
38
+ import 'classnames';
39
+ import '@bigbinary/neeto-image-uploader-frontend/hooks';
40
+ import '../ActionBlock-jgw1N-As.js';
41
+ import '../Select-DZ56UG-l.js';
42
+ import '../useCountries-DePOPtue.js';
43
+ import '../RolesRadioGroup-tSNC-Wtu.js';
44
+ import 'yup';
45
+ import '@bigbinary/neeto-atoms/formik';
46
+ import './utils.js';
47
+ import '../pluralize-BoSEafiC.js';
48
+ import '../_commonjsHelpers-BFTU3MAI.js';
49
+ import '@bigbinary/neeto-time-zones';
50
+ import '@bigbinary/neeto-atoms/primitives';
51
+ import '@bigbinary/neeto-molecules/v2/MoreDropdown';
52
+
53
+ function ownKeys$6(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; }
54
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
55
+ var useFilters = function useFilters(_ref) {
56
+ var _config$filterColumns;
57
+ var config = _ref.config;
58
+ var _useTranslation = useTranslation(),
59
+ t = _useTranslation.t;
60
+ var _useQueryParams = useQueryParams(),
61
+ _useQueryParams$searc = _useQueryParams.searchTerm,
62
+ searchTerm = _useQueryParams$searc === void 0 ? "" : _useQueryParams$searc;
63
+ var searchKeywordProps = {
64
+ node: "first_name,last_name,email",
65
+ value: searchTerm,
66
+ key: "search_term"
67
+ };
68
+ var _useState = useState(""),
69
+ _useState2 = _slicedToArray(_useState, 2),
70
+ emailSearchTerm = _useState2[0],
71
+ setEmailSearchTerm = _useState2[1];
72
+ var defaultNeetoFilters = buildFiltersFromURL([].concat(_toConsumableArray((_config$filterColumns = config === null || config === void 0 ? void 0 : config.filterColumns) !== null && _config$filterColumns !== void 0 ? _config$filterColumns : defaultNeetoFiltersColumns()), [searchKeywordProps]));
73
+ var _useState3 = useState(_objectSpread$6(_objectSpread$6(_objectSpread$6({}, DEFAULT_FILTER_VALUES), config === null || config === void 0 ? void 0 : config.defaultFilterValues), {}, {
74
+ neetoFilters: defaultNeetoFilters
75
+ })),
76
+ _useState4 = _slicedToArray(_useState3, 2),
77
+ filters = _useState4[0],
78
+ setFilters = _useState4[1];
79
+ var resetPage = useFuncDebounce(function () {
80
+ return setFilters(mergeLeft({
81
+ page: DEFAULT_PAGE_INDEX
82
+ }));
83
+ });
84
+ var debouncedEmailSearchTerm = useDebounce(emailSearchTerm, 750);
85
+ var shouldFetchFilterOptions = isNil(config === null || config === void 0 ? void 0 : config.filterColumns);
86
+ var _useFetchFilterOption = useFetchFilterOptions({
87
+ params: {
88
+ emailSearchTerm: debouncedEmailSearchTerm
89
+ },
90
+ options: {
91
+ enabled: shouldFetchFilterOptions
92
+ }
93
+ }),
94
+ _useFetchFilterOption2 = _useFetchFilterOption.data,
95
+ filterOptions = _useFetchFilterOption2 === void 0 ? {} : _useFetchFilterOption2,
96
+ isFilterOptionsLoading = _useFetchFilterOption.isLoading;
97
+ var filterColumns = shouldFetchFilterOptions ? buildFilterColumns({
98
+ options: filterOptions,
99
+ emailConfig: {
100
+ setSearchTerm: setEmailSearchTerm,
101
+ isLoading: isFilterOptionsLoading
102
+ }
103
+ }) : config === null || config === void 0 ? void 0 : config.filterColumns;
104
+ var searchProps = useMemo(function () {
105
+ return {
106
+ "data-testid": "ntm-search-members-input",
107
+ placeholder: t("neetoTeamMembers.common.search_", {
108
+ what: taxonomies.member.plural
109
+ }),
110
+ onChange: resetPage
111
+ };
112
+ }, []);
113
+ return {
114
+ filters: filters,
115
+ setFilters: setFilters,
116
+ filterColumns: filterColumns,
117
+ searchProps: searchProps,
118
+ searchKeywordProps: searchKeywordProps
119
+ };
120
+ };
121
+
122
+ function ownKeys$5(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; }
123
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
124
+ var useTeams = function useTeams(_ref) {
125
+ var config = _ref.config,
126
+ filters = _ref.filters,
127
+ setFilters = _ref.setFilters,
128
+ updateMember = _ref.updateMember;
129
+ var history = useHistory();
130
+ var _useState = useState(null),
131
+ _useState2 = _slicedToArray(_useState, 2),
132
+ selectedMember = _useState2[0],
133
+ setSelectedMember = _useState2[1];
134
+ var _useState3 = useState(DEFAULT_IS_OPEN_VALUES),
135
+ _useState4 = _slicedToArray(_useState3, 2),
136
+ isOpen = _useState4[0],
137
+ setIsOpen = _useState4[1];
138
+ var _useState5 = useState(DEFAULT_SELECTED_ROWS),
139
+ _useState6 = _slicedToArray(_useState5, 2),
140
+ selectedRows = _useState6[0],
141
+ setSelectedRows = _useState6[1];
142
+ var handleRemoveMember = function handleRemoveMember() {
143
+ if (!selectedMember) return;
144
+ var id = selectedMember.id;
145
+ var payload = {
146
+ active: false
147
+ };
148
+ updateMember({
149
+ id: id,
150
+ payload: payload
151
+ });
152
+ };
153
+ var handleUpdateStatus = function handleUpdateStatus(user) {
154
+ setSelectedMember(user);
155
+ setIsOpen(assoc("alert", true));
156
+ };
157
+ var handleUpdateRole = function handleUpdateRole(user) {
158
+ setSelectedMember(user);
159
+ setIsOpen(assoc("manageMember", true));
160
+ };
161
+ var handleAlertClose = function handleAlertClose() {
162
+ setIsOpen(assoc("alert", false));
163
+ setSelectedMember(null);
164
+ };
165
+ var handlePaneClose = function handlePaneClose() {
166
+ setIsOpen(assoc("manageMember", false));
167
+ setSelectedMember(null);
168
+ };
169
+ var resetSelectedRows = function resetSelectedRows() {
170
+ return setSelectedRows(DEFAULT_SELECTED_ROWS);
171
+ };
172
+ var handleMemberFilterChange = function handleMemberFilterChange() {
173
+ var _filters$pageSize;
174
+ setSelectedRows(DEFAULT_SELECTED_ROWS);
175
+ handlePageChange(setFilters, history)(DEFAULT_PAGE_INDEX, (_filters$pageSize = filters.pageSize) !== null && _filters$pageSize !== void 0 ? _filters$pageSize : DEFAULT_PAGE_SIZE);
176
+ };
177
+ var handleTableChange = function handleTableChange(_, __, sorter) {
178
+ setFilters(mergeLeft({
179
+ sortBy: sorter.field,
180
+ orderBy: sorter.order
181
+ }));
182
+ };
183
+ var handleRowSelect = function handleRowSelect(keys, rowData) {
184
+ var _config$table, _config$table$onRowSe;
185
+ var rows = {
186
+ active: pluck("active", rowData),
187
+ displayNames: pluck("displayName", rowData),
188
+ emails: pluck("email", rowData),
189
+ keys: keys
190
+ };
191
+ setSelectedRows(_objectSpread$5({}, rows));
192
+ config === null || config === void 0 || (_config$table = config.table) === null || _config$table === void 0 || (_config$table$onRowSe = _config$table.onRowSelect) === null || _config$table$onRowSe === void 0 || _config$table$onRowSe.call(_config$table, {
193
+ rows: rows,
194
+ resetSelectedRows: resetSelectedRows,
195
+ rowData: rowData
196
+ });
197
+ };
198
+ return {
199
+ handleAlertClose: handleAlertClose,
200
+ handleMemberFilterChange: handleMemberFilterChange,
201
+ handlePaneClose: handlePaneClose,
202
+ handleRowSelect: handleRowSelect,
203
+ handleTableChange: handleTableChange,
204
+ handleRemoveMember: handleRemoveMember,
205
+ handleUpdateRole: handleUpdateRole,
206
+ handleUpdateStatus: handleUpdateStatus,
207
+ isOpen: isOpen,
208
+ selectedMember: selectedMember,
209
+ selectedRows: selectedRows,
210
+ setIsOpen: setIsOpen,
211
+ setSelectedRows: setSelectedRows
212
+ };
213
+ };
214
+
215
+ var FIXED_COLUMNS = ["name", "actions"];
216
+ var MANAGE_ROLES_BUTTON_LABEL = t("neetoTeamMembers.labels.manageRole", PLURAL);
217
+
218
+ function ownKeys$4(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; }
219
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
220
+ var Header$2 = function Header(_ref) {
221
+ var isCreatePermissionGranted = _ref.isCreatePermissionGranted,
222
+ otherActionBlock = _ref.otherActionBlock,
223
+ _ref$onClick = _ref.onClick,
224
+ onClick = _ref$onClick === void 0 ? noop : _ref$onClick,
225
+ rolesButtonProps = _ref.rolesButtonProps;
226
+ var _useTranslation = useTranslation(),
227
+ t = _useTranslation.t;
228
+ var isRolesButtonVisible = !!rolesButtonProps;
229
+ var isOtherActionBlockVisible = !!otherActionBlock;
230
+ return /*#__PURE__*/jsxs(Fragment, {
231
+ children: [isOtherActionBlockVisible && otherActionBlock(), isRolesButtonVisible ? /*#__PURE__*/jsx(Button, _objectSpread$4(_objectSpread$4({
232
+ "data-testid": "ntm-manage-roles-button",
233
+ variant: "outline"
234
+ }, rolesButtonProps), {}, {
235
+ children: MANAGE_ROLES_BUTTON_LABEL
236
+ })) : null, /*#__PURE__*/jsx(Tooltip, {
237
+ content: !isCreatePermissionGranted ? t("neetoTeamMembers.tooltips.noPermissionToAddMember") : null,
238
+ children: /*#__PURE__*/jsx("span", {
239
+ children: /*#__PURE__*/jsx(Button, {
240
+ onClick: onClick,
241
+ "data-testid": "ntm-add-member-button",
242
+ disabled: !isCreatePermissionGranted,
243
+ children: t("neetoTeamMembers.common.addNew_", {
244
+ what: taxonomies.member.singular
245
+ })
246
+ })
247
+ })
248
+ })]
249
+ });
250
+ };
251
+ var HeaderActionBlock = /*#__PURE__*/memo(Header$2);
252
+
253
+ var filterBySearchTerm = function filterBySearchTerm(searchTerm, roles) {
254
+ return filter(function (_ref) {
255
+ var name = _ref.name;
256
+ return includes(trim(toLower(searchTerm)), trim(toLower(name)));
257
+ }, roles);
258
+ };
259
+ var getDeactivatedButtonVisible = function getDeactivatedButtonVisible(selectedRows, config) {
260
+ var _config$hiddenBulkAct;
261
+ return selectedRows.active.some(function (active) {
262
+ return active === true;
263
+ }) && !(config !== null && config !== void 0 && (_config$hiddenBulkAct = config.hiddenBulkActions) !== null && _config$hiddenBulkAct !== void 0 && _config$hiddenBulkAct.includes("remove"));
264
+ };
265
+
266
+ var RolesDropdown = function RolesDropdown(_ref) {
267
+ var _ref$disabled = _ref.disabled,
268
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
269
+ hasUpdatePermission = _ref.hasUpdatePermission,
270
+ _ref$isSearchable = _ref.isSearchable,
271
+ isSearchable = _ref$isSearchable === void 0 ? false : _ref$isSearchable,
272
+ _ref$roles = _ref.roles,
273
+ roles = _ref$roles === void 0 ? [] : _ref$roles,
274
+ _ref$selectedMembersC = _ref.selectedMembersCount,
275
+ selectedMembersCount = _ref$selectedMembersC === void 0 ? 0 : _ref$selectedMembersC,
276
+ setAlertType = _ref.setAlertType,
277
+ setBulkUpdateRole = _ref.setBulkUpdateRole;
278
+ var _useTranslation = useTranslation(),
279
+ t = _useTranslation.t;
280
+ var _useState = useState(""),
281
+ _useState2 = _slicedToArray(_useState, 2),
282
+ searchTerm = _useState2[0],
283
+ setSearchTerm = _useState2[1];
284
+ var filteredRoles = filterBySearchTerm(searchTerm, roles);
285
+ var isUpdatingAllowed = hasUpdatePermission && !disabled;
286
+ var handleSearch = function handleSearch(_ref2) {
287
+ var value = _ref2.target.value;
288
+ return setSearchTerm(value);
289
+ };
290
+ var handleSelectRole = function handleSelectRole(role) {
291
+ setBulkUpdateRole(role);
292
+ setAlertType("role");
293
+ };
294
+ return /*#__PURE__*/jsx(Tooltip, {
295
+ content: !isUpdatingAllowed ? t("neetoTeamMembers.tooltips.activateUserToEdit", {
296
+ count: selectedMembersCount
297
+ }) : null,
298
+ children: /*#__PURE__*/jsx("span", {
299
+ children: /*#__PURE__*/jsxs(DropdownMenu.SubMenu, {
300
+ contentProps: {
301
+ align: "end"
302
+ },
303
+ label: t("neetoTeamMembers.buttons.changeRole"),
304
+ triggerProps: {
305
+ disabled: !isUpdatingAllowed
306
+ },
307
+ children: [isSearchable && /*#__PURE__*/jsx("div", {
308
+ className: "px-3 py-2",
309
+ onClick: function onClick(e) {
310
+ return e.stopPropagation();
311
+ },
312
+ children: /*#__PURE__*/jsxs("div", {
313
+ className: "relative",
314
+ children: [/*#__PURE__*/jsx(Search, {
315
+ className: "absolute left-2 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"
316
+ }), /*#__PURE__*/jsx(Input, {
317
+ className: "ps-8",
318
+ "data-testid": "ntm-members-roles-search-input",
319
+ type: "search",
320
+ value: searchTerm,
321
+ placeholder: t("neetoTeamMembers.placeholders.searchRole", PLURAL),
322
+ onChange: handleSearch
323
+ })]
324
+ })
325
+ }), isNotEmpty(filteredRoles) ? filteredRoles.map(function (_ref3) {
326
+ var id = _ref3.id,
327
+ name = _ref3.name;
328
+ return /*#__PURE__*/jsx(DropdownMenu.MenuItem, {
329
+ children: /*#__PURE__*/jsx(DropdownMenu.MenuItem.Button, {
330
+ "data-testid": "change-role-".concat(hyphenate(name), "-button"),
331
+ onClick: function onClick() {
332
+ return handleSelectRole(name);
333
+ },
334
+ children: name
335
+ })
336
+ }, id);
337
+ }) : /*#__PURE__*/jsx("div", {
338
+ className: "flex justify-center p-1",
339
+ children: /*#__PURE__*/jsx(Typography, {
340
+ className: "text-muted-foreground text-sm",
341
+ children: t("neetoTeamMembers.helpers.noRolesFound")
342
+ })
343
+ })]
344
+ })
345
+ })
346
+ });
347
+ };
348
+
349
+ function ownKeys$3(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; }
350
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
351
+ var Left = function Left(_ref) {
352
+ var _ref2, _selectedRows$keys, _selectedRows$active, _config$hiddenBulkAct, _config$otherBulkActi;
353
+ var config = _ref.config,
354
+ filteredCount = _ref.filteredCount,
355
+ resetToFirstPage = _ref.resetToFirstPage,
356
+ roles = _ref.roles,
357
+ selectedRows = _ref.selectedRows,
358
+ setSelectedRows = _ref.setSelectedRows,
359
+ selectedRowsCount = _ref.selectedRowsCount,
360
+ bulkParams = _ref.bulkParams;
361
+ var _useTranslation = useTranslation(),
362
+ t = _useTranslation.t;
363
+ var isUpdatePermissionGranted = config.permissions.update;
364
+ var _useState = useState(""),
365
+ _useState2 = _slicedToArray(_useState, 2),
366
+ alertType = _useState2[0],
367
+ setAlertType = _useState2[1];
368
+ var _useState3 = useState(""),
369
+ _useState4 = _slicedToArray(_useState3, 2),
370
+ bulkUpdateRole = _useState4[0],
371
+ setBulkUpdateRole = _useState4[1];
372
+ var hasSelectedRows = isNotEmpty(selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.keys);
373
+ var selectedMembersCountValues = {
374
+ count: (_ref2 = selectedRowsCount || (selectedRows === null || selectedRows === void 0 || (_selectedRows$keys = selectedRows.keys) === null || _selectedRows$keys === void 0 ? void 0 : _selectedRows$keys.length) || filteredCount) !== null && _ref2 !== void 0 ? _ref2 : 0,
375
+ metaName: hasSelectedRows && (selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.keys.length) > 1 ? taxonomies.member.plural : taxonomies.member.singular,
376
+ totalCount: filteredCount !== null && filteredCount !== void 0 ? filteredCount : 0
377
+ };
378
+ var hasDeactivateMembers = selectedRows === null || selectedRows === void 0 || (_selectedRows$active = selectedRows.active) === null || _selectedRows$active === void 0 ? void 0 : _selectedRows$active.some(function (active) {
379
+ return !active;
380
+ });
381
+ var _useBulkUpdateMembers = useBulkUpdateMembers({
382
+ onSuccess: function onSuccess() {
383
+ var _config$bulkUpdateMem;
384
+ setSelectedRows(DEFAULT_SELECTED_ROWS);
385
+ resetToFirstPage();
386
+ config === null || config === void 0 || (_config$bulkUpdateMem = config.bulkUpdateMembers) === null || _config$bulkUpdateMem === void 0 || (_config$bulkUpdateMem = _config$bulkUpdateMem.onSuccess) === null || _config$bulkUpdateMem === void 0 || _config$bulkUpdateMem.callback();
387
+ }
388
+ }),
389
+ bulkUpdateMember = _useBulkUpdateMembers.mutate;
390
+ var handleDeactivateMembers = function handleDeactivateMembers() {
391
+ bulkUpdateMember({
392
+ users: {
393
+ active: false,
394
+ emails: selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.emails
395
+ },
396
+ filterParams: bulkParams
397
+ });
398
+ };
399
+ var resetSelectedRows = function resetSelectedRows() {
400
+ return setSelectedRows(DEFAULT_SELECTED_ROWS);
401
+ };
402
+ var handleRoleChange = function handleRoleChange(role) {
403
+ bulkUpdateMember({
404
+ users: {
405
+ active: true,
406
+ emails: selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.emails,
407
+ organization_role: role
408
+ },
409
+ filterParams: bulkParams
410
+ });
411
+ };
412
+ var alertTypes = [{
413
+ message: "neetoTeamMembers.alerts.messages.removeMember",
414
+ onSubmit: handleDeactivateMembers,
415
+ title: t("neetoTeamMembers.common.remove_", {
416
+ what: selectedMembersCountValues === null || selectedMembersCountValues === void 0 ? void 0 : selectedMembersCountValues.metaName
417
+ }),
418
+ type: "remove"
419
+ }, {
420
+ message: "neetoTeamMembers.alerts.messages.changeRole",
421
+ onSubmit: handleRoleChange,
422
+ title: t("neetoTeamMembers.common.changeRole"),
423
+ type: "role"
424
+ }];
425
+ var selectedAlert = findBy({
426
+ type: alertType
427
+ }, alertTypes);
428
+ var handleAlertClose = function handleAlertClose() {
429
+ selectedAlert.onSubmit(bulkUpdateRole);
430
+ setAlertType("");
431
+ };
432
+ var getButtonLabel = function getButtonLabel(type) {
433
+ if (type === "role") {
434
+ return t("neetoTeamMembers.buttons.changeRole");
435
+ }
436
+ return t("neetoTeamMembers.buttons.remove");
437
+ };
438
+ return /*#__PURE__*/jsxs("div", {
439
+ className: "flex items-center gap-4",
440
+ children: [/*#__PURE__*/jsx(Typography, {
441
+ "data-testid": "ntm-filtered-members-count",
442
+ children: /*#__PURE__*/jsx(Trans, {
443
+ components: {
444
+ span: /*#__PURE__*/jsx("span", {
445
+ className: "text-muted-foreground"
446
+ })
447
+ },
448
+ values: selectedMembersCountValues,
449
+ i18nKey: hasSelectedRows ? "neetoTeamMembers.helpers.selectedMembersCount" : "neetoTeamMembers.helpers.metaNameWithCount"
450
+ })
451
+ }), hasSelectedRows && /*#__PURE__*/jsx(Tooltip, {
452
+ content: !isUpdatePermissionGranted ? t("neetoTeamMembers.tooltips.noPermissionToEditMembers") : null,
453
+ children: /*#__PURE__*/jsx("span", {
454
+ children: /*#__PURE__*/jsxs(DropdownMenu, {
455
+ buttonStyle: "tertiary",
456
+ disabled: !isUpdatePermissionGranted,
457
+ label: t("neetoTeamMembers.common.takeAction"),
458
+ buttonProps: {
459
+ "data-testid": "ntm-members-take-action-dropdown-button"
460
+ },
461
+ children: [!(config !== null && config !== void 0 && (_config$hiddenBulkAct = config.hiddenBulkActions) !== null && _config$hiddenBulkAct !== void 0 && _config$hiddenBulkAct.includes("role")) && /*#__PURE__*/jsx(RolesDropdown, {
462
+ roles: roles,
463
+ setAlertType: setAlertType,
464
+ setBulkUpdateRole: setBulkUpdateRole,
465
+ disabled: hasDeactivateMembers,
466
+ hasUpdatePermission: isUpdatePermissionGranted,
467
+ selectedMembersCount: selectedMembersCountValues === null || selectedMembersCountValues === void 0 ? void 0 : selectedMembersCountValues.count
468
+ }), config === null || config === void 0 || (_config$otherBulkActi = config.otherBulkActions) === null || _config$otherBulkActi === void 0 ? void 0 : _config$otherBulkActi.call(config, resetSelectedRows, selectedRows), getDeactivatedButtonVisible(selectedRows, config) && /*#__PURE__*/jsx(DropdownMenu.MenuItem, {
469
+ children: /*#__PURE__*/jsx(DropdownMenu.MenuItem.Button, {
470
+ "data-testid": "ntm-deactivate-members-button",
471
+ isDisabled: !isUpdatePermissionGranted,
472
+ onClick: function onClick() {
473
+ return setAlertType("remove");
474
+ },
475
+ children: t("neetoTeamMembers.common.remove")
476
+ })
477
+ })]
478
+ })
479
+ })
480
+ }), /*#__PURE__*/jsx(Alert, {
481
+ cancelButtonLabel: t("neetoTeamMembers.buttons.cancel"),
482
+ isOpen: !!selectedAlert,
483
+ submitButtonLabel: getButtonLabel(selectedAlert === null || selectedAlert === void 0 ? void 0 : selectedAlert.type),
484
+ title: selectedAlert === null || selectedAlert === void 0 ? void 0 : selectedAlert.title,
485
+ message: /*#__PURE__*/jsx(Trans, {
486
+ i18nKey: selectedAlert === null || selectedAlert === void 0 ? void 0 : selectedAlert.message,
487
+ values: _objectSpread$3(_objectSpread$3({}, selectedMembersCountValues), {}, {
488
+ person: selectedRows.displayNames[0],
489
+ role: bulkUpdateRole
490
+ })
491
+ }),
492
+ onClose: function onClose() {
493
+ return setAlertType("");
494
+ },
495
+ onSubmit: handleAlertClose
496
+ })]
497
+ });
498
+ };
499
+ var Right = withT(function (_ref3) {
500
+ var t = _ref3.t,
501
+ columns = _ref3.columns,
502
+ filterColumns = _ref3.filterColumns,
503
+ handleNeetoFilterChange = _ref3.handleNeetoFilterChange,
504
+ isFiltersPaneOpen = _ref3.isFiltersPaneOpen,
505
+ searchKeywordProps = _ref3.searchKeywordProps,
506
+ setIsDownloadPaneOpen = _ref3.setIsDownloadPaneOpen,
507
+ setIsFiltersPaneOpen = _ref3.setIsFiltersPaneOpen;
508
+ return /*#__PURE__*/jsx(SubHeader$1.RightBlock, {
509
+ columnsButtonProps: {
510
+ columnData: columns,
511
+ fixedColumns: FIXED_COLUMNS,
512
+ tableKey: TABLE_KEYS.TEAM_MEMBERS_TABLE,
513
+ noColumnMessage: t("neetoTeamMembers.columns.noColumnsFound"),
514
+ searchProps: {
515
+ placeholder: t("neetoTeamMembers.columns.search")
516
+ }
517
+ },
518
+ downloadButtonProps: {
519
+ isVisible: true,
520
+ tooltipProps: {
521
+ content: t("neetoTeamMembers.buttons.export")
522
+ },
523
+ onClick: function onClick() {
524
+ return setIsDownloadPaneOpen(true);
525
+ }
526
+ },
527
+ filterProps: {
528
+ columns: filterColumns,
529
+ isOpen: isFiltersPaneOpen,
530
+ setIsOpen: setIsFiltersPaneOpen,
531
+ onChange: handleNeetoFilterChange,
532
+ keyword: searchKeywordProps
533
+ }
534
+ });
535
+ });
536
+ var SubHeader = {
537
+ Left: Left,
538
+ Right: Right
539
+ };
540
+
541
+ var EXPORT_TYPES = {
542
+ PDF: "pdf",
543
+ CSV: "csv",
544
+ EXCEL: "xlsx"
545
+ };
546
+ var DEFAULT_EXPORT_OPTIONS = {
547
+ exportType: EXPORT_TYPES.EXCEL
548
+ };
549
+ var EXPORT_OPTIONS = [{
550
+ type: EXPORT_TYPES.EXCEL,
551
+ individualExportLabel: t("neetoTeamMembers.labels.exports.xlsx"),
552
+ bulkExportLabel: t("neetoTeamMembers.labels.exportAs", {
553
+ format: t("neetoTeamMembers.labels.exports.xlsx")
554
+ }),
555
+ dataTestid: "download-as-excel-radio-item"
556
+ }, {
557
+ type: EXPORT_TYPES.CSV,
558
+ individualExportLabel: t("neetoTeamMembers.labels.exports.csv"),
559
+ bulkExportLabel: t("neetoTeamMembers.labels.exportAs", {
560
+ format: t("neetoTeamMembers.labels.exports.csv")
561
+ }),
562
+ dataTestid: "download-as-csv-radio-item"
563
+ }, {
564
+ type: EXPORT_TYPES.PDF,
565
+ individualExportLabel: t("neetoTeamMembers.labels.exports.pdf"),
566
+ bulkExportLabel: t("neetoTeamMembers.labels.exportAs", {
567
+ format: t("neetoTeamMembers.labels.exports.pdf")
568
+ }),
569
+ dataTestid: "download-as-pdf-radio-item"
570
+ }];
571
+
572
+ function ownKeys$2(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; }
573
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
574
+ var ExportPane = function ExportPane(_ref) {
575
+ var isOpen = _ref.isOpen,
576
+ onClose = _ref.onClose,
577
+ appliedFilters = _ref.appliedFilters,
578
+ hasBulkSelectedAllRows = _ref.hasBulkSelectedAllRows,
579
+ selectedMemberIds = _ref.selectedMemberIds,
580
+ selectedRowsCount = _ref.selectedRowsCount;
581
+ var _useState = useState(DEFAULT_EXPORT_OPTIONS),
582
+ _useState2 = _slicedToArray(_useState, 2),
583
+ exportOptions = _useState2[0],
584
+ setExportOptions = _useState2[1];
585
+ var _useTranslation = useTranslation(),
586
+ t = _useTranslation.t;
587
+ var setExportOption = function setExportOption(options) {
588
+ return setExportOptions(mergeLeft(options));
589
+ };
590
+ var exportType = exportOptions.exportType;
591
+ var getParams = function getParams() {
592
+ return _objectSpread$2(_objectSpread$2({}, exportOptions), {}, {
593
+ filters: appliedFilters || undefined,
594
+ considerAllMembers: hasBulkSelectedAllRows,
595
+ memberIds: hasBulkSelectedAllRows ? undefined : selectedMemberIds
596
+ });
597
+ };
598
+ var _useExportMembers = useExportMembers({
599
+ onSuccess: function onSuccess() {
600
+ var _globalProps$user;
601
+ onClose();
602
+ setExportOptions(DEFAULT_EXPORT_OPTIONS);
603
+ toast.success(/*#__PURE__*/jsx(Trans, {
604
+ i18nKey: "toastr.success.exportMembers",
605
+ values: {
606
+ email: (_globalProps$user = globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.email
607
+ }
608
+ }));
609
+ captureAnalyticsEvent(EVENTS.TEAM_MEMBERS_DOWNLOADED, _objectSpread$2({}, exportOptions));
610
+ },
611
+ onError: function onError(error) {
612
+ return toast.error(error.message);
613
+ }
614
+ }),
615
+ exportMembers = _useExportMembers.mutate;
616
+ var description = isNotEmpty(selectedMemberIds) || hasBulkSelectedAllRows ? t("neetoTeamMembers.exportPane.description.selectedMembers", {
617
+ count: selectedRowsCount
618
+ }) : t("neetoTeamMembers.exportPane.description.allMembers");
619
+ return /*#__PURE__*/jsxs(Sheet, {
620
+ isOpen: isOpen,
621
+ onClose: onClose,
622
+ children: [/*#__PURE__*/jsx(Sheet.Header, {
623
+ children: /*#__PURE__*/jsx(Sheet.Title, {
624
+ "data-testid": "export-member-heading",
625
+ children: t("neetoTeamMembers.exportPane.title")
626
+ })
627
+ }), /*#__PURE__*/jsx(Sheet.Body, {
628
+ children: /*#__PURE__*/jsxs("div", {
629
+ className: "space-y-4",
630
+ children: [/*#__PURE__*/jsx(Typography, {
631
+ className: "text-sm",
632
+ children: description
633
+ }), /*#__PURE__*/jsx(RadioGroup, {
634
+ value: exportType,
635
+ onValueChange: function onValueChange(type) {
636
+ return setExportOption({
637
+ exportType: type
638
+ });
639
+ },
640
+ children: EXPORT_OPTIONS.map(function (_ref2) {
641
+ var type = _ref2.type,
642
+ bulkExportLabel = _ref2.bulkExportLabel,
643
+ dataTestid = _ref2.dataTestid;
644
+ return /*#__PURE__*/jsx(RadioGroup.Item, {
645
+ "data-testid": dataTestid,
646
+ id: type,
647
+ label: bulkExportLabel,
648
+ value: type
649
+ }, type);
650
+ })
651
+ })]
652
+ })
653
+ }), /*#__PURE__*/jsxs(Sheet.Footer, {
654
+ className: "gap-x-2",
655
+ children: [/*#__PURE__*/jsx(Button, {
656
+ "data-testid": "export-submit-button",
657
+ onClick: function onClick() {
658
+ return exportMembers({
659
+ "export": getParams()
660
+ });
661
+ },
662
+ children: t("neetoTeamMembers.buttons.export")
663
+ }), /*#__PURE__*/jsx(Button, {
664
+ "data-testid": "export-cancel-button",
665
+ variant: "ghost",
666
+ onClick: onClose,
667
+ children: t("neetoTeamMembers.buttons.cancel")
668
+ })]
669
+ })]
670
+ });
671
+ };
672
+
673
+ 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; }
674
+ 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; }
675
+ var Header$1 = function Header(_ref) {
676
+ var _config$header, _config$header2;
677
+ var config = _ref.config,
678
+ setIsOpen = _ref.setIsOpen,
679
+ searchProps = _ref.searchProps;
680
+ return /*#__PURE__*/jsx(NeetoHeader, _objectSpread$1({
681
+ searchProps: searchProps,
682
+ title: taxonomies.member.plural,
683
+ actionBlock: /*#__PURE__*/jsx(HeaderActionBlock, {
684
+ isCreatePermissionGranted: config.permissions.create,
685
+ otherActionBlock: (_config$header = config.header) === null || _config$header === void 0 ? void 0 : _config$header.otherActionBlock,
686
+ rolesButtonProps: config.rolesButtonProps,
687
+ onClick: function onClick() {
688
+ return setIsOpen(assoc("manageMember", true));
689
+ }
690
+ })
691
+ }, config === null || config === void 0 || (_config$header2 = config.header) === null || _config$header2 === void 0 ? void 0 : _config$header2.otherProps));
692
+ };
693
+ var Header = /*#__PURE__*/memo(Header$1);
694
+
695
+ 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; }
696
+ 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; }
697
+ var TeamMembers = function TeamMembers(_ref) {
698
+ var _config$fetchApiRespo, _config$table, _config$table$onDropd, _config$table2, _filters$pageSize3;
699
+ var config = _ref.config;
700
+ var _useTranslation = useTranslation(),
701
+ t = _useTranslation.t;
702
+ var history = useHistory();
703
+ var _useBreakpoints = useBreakpoints(),
704
+ isSize = _useBreakpoints.isSize;
705
+ var queryParams = useQueryParams();
706
+ var isViewPermissionGranted = config.permissions.view;
707
+ var isCreatePermissionGranted = config.permissions.create;
708
+ var _useState = useState(false),
709
+ _useState2 = _slicedToArray(_useState, 2),
710
+ isFiltersPaneOpen = _useState2[0],
711
+ setIsFiltersPaneOpen = _useState2[1];
712
+ var _useState3 = useState(false),
713
+ _useState4 = _slicedToArray(_useState3, 2),
714
+ isDownloadPaneOpen = _useState4[0],
715
+ setIsDownloadPaneOpen = _useState4[1];
716
+ var _useState5 = useState(false),
717
+ _useState6 = _slicedToArray(_useState5, 2),
718
+ hasBulkSelectedAllRows = _useState6[0],
719
+ setHasBulkSelectedAllRows = _useState6[1];
720
+ useEffect(function () {
721
+ handleMemberFilterChange();
722
+ }, []);
723
+ var _useFilters = useFilters({
724
+ config: config
725
+ }),
726
+ filters = _useFilters.filters,
727
+ setFilters = _useFilters.setFilters,
728
+ filterColumns = _useFilters.filterColumns,
729
+ searchProps = _useFilters.searchProps,
730
+ searchKeywordProps = _useFilters.searchKeywordProps;
731
+ var _useFetchMembers = useFetchMembers(_objectSpread({}, filters), {
732
+ enabled: isViewPermissionGranted
733
+ }),
734
+ team = _useFetchMembers.data,
735
+ isMembersLoading = _useFetchMembers.isLoading,
736
+ isMembersFetching = _useFetchMembers.isFetching;
737
+ var bulkParams = {
738
+ neetoFilters: filters["neetoFilters"],
739
+ considerAllTeamMembers: hasBulkSelectedAllRows
740
+ };
741
+ var _useFetchRoles = useFetchRoles({
742
+ select: function select(response) {
743
+ var _response$organizatio;
744
+ return reverse((_response$organizatio = response === null || response === void 0 ? void 0 : response.organizationRoles) !== null && _response$organizatio !== void 0 ? _response$organizatio : []);
745
+ },
746
+ enabled: isViewPermissionGranted
747
+ }),
748
+ roles = _useFetchRoles.data,
749
+ isRolesLoading = _useFetchRoles.isLoading;
750
+ var _useUpdateMember = useUpdateMember({
751
+ onSuccess: function onSuccess() {
752
+ var _filters$pageSize, _config$updateMember;
753
+ handleAlertClose();
754
+ handlePageChange(setFilters, history)(DEFAULT_PAGE_INDEX, (_filters$pageSize = filters.pageSize) !== null && _filters$pageSize !== void 0 ? _filters$pageSize : DEFAULT_PAGE_SIZE);
755
+ config === null || config === void 0 || (_config$updateMember = config.updateMember) === null || _config$updateMember === void 0 || (_config$updateMember = _config$updateMember.onSuccess) === null || _config$updateMember === void 0 || _config$updateMember.callback();
756
+ }
757
+ }),
758
+ updateMember = _useUpdateMember.mutate,
759
+ isUpdatingMember = _useUpdateMember.isPending;
760
+ var filteredRoles = getFilteredRoles(roles, config);
761
+ var _useTeams = useTeams({
762
+ config: config,
763
+ filters: filters,
764
+ setFilters: setFilters,
765
+ updateMember: updateMember
766
+ }),
767
+ handleAlertClose = _useTeams.handleAlertClose,
768
+ handleMemberFilterChange = _useTeams.handleMemberFilterChange,
769
+ handlePaneClose = _useTeams.handlePaneClose,
770
+ handleRowSelect = _useTeams.handleRowSelect,
771
+ handleRemoveMember = _useTeams.handleRemoveMember,
772
+ handleUpdateRole = _useTeams.handleUpdateRole,
773
+ handleUpdateStatus = _useTeams.handleUpdateStatus,
774
+ isOpen = _useTeams.isOpen,
775
+ selectedMember = _useTeams.selectedMember,
776
+ selectedRows = _useTeams.selectedRows,
777
+ setIsOpen = _useTeams.setIsOpen,
778
+ setSelectedRows = _useTeams.setSelectedRows;
779
+ var selectedRowsCount = hasBulkSelectedAllRows ? team === null || team === void 0 ? void 0 : team.membersCount : selectedRows.keys.length;
780
+ config === null || config === void 0 || (_config$fetchApiRespo = config.fetchApiResponse) === null || _config$fetchApiRespo === void 0 || _config$fetchApiRespo.call(config, {
781
+ team: team
782
+ });
783
+ var hasMembers = (team === null || team === void 0 ? void 0 : team.activeUsersCount) > 0;
784
+ var updateMemberAlertProps = {
785
+ member: selectedMember,
786
+ config: config
787
+ };
788
+ config === null || config === void 0 || (_config$table = config.table) === null || _config$table === void 0 || (_config$table$onDropd = _config$table.onDropdownClick) === null || _config$table$onDropd === void 0 || _config$table$onDropd.call(_config$table, {
789
+ handleUpdateRole: handleUpdateRole,
790
+ handleUpdateStatus: handleUpdateStatus
791
+ });
792
+ var columns = useMemo(function () {
793
+ return getColumnData({
794
+ config: config,
795
+ handleUpdateRole: handleUpdateRole,
796
+ handleUpdateStatus: handleUpdateStatus,
797
+ isSize: isSize
798
+ });
799
+ }, [(_config$table2 = config.table) === null || _config$table2 === void 0 ? void 0 : _config$table2.dropdownProps] // eslint-disable-line react-hooks/exhaustive-deps
800
+ );
801
+ var _useTableConfiguratio = useTableConfigurations(TABLE_KEYS.TEAM_MEMBERS_TABLE, columns),
802
+ isTableConfigurationLoading = _useTableConfiguratio.isTableConfigurationLoading,
803
+ customizedColumns = _useTableConfiguratio.customizedColumns,
804
+ hideColumn = _useTableConfiguratio.hideColumn;
805
+ var handleNeetoFilterChange = function handleNeetoFilterChange(filters) {
806
+ setFilters(mergeLeft({
807
+ neetoFilters: filters,
808
+ page: DEFAULT_PAGE_INDEX
809
+ }));
810
+ setSelectedRows(DEFAULT_SELECTED_ROWS);
811
+ history.push(buildUrl(window.location.pathname, mergeLeft({
812
+ page: DEFAULT_PAGE_INDEX
813
+ }, queryParams)));
814
+ };
815
+ var _generateNoDataConten = generateNoDataContent({
816
+ buttonProps: {
817
+ onClick: function onClick() {
818
+ return setIsOpen(assoc("manageMember", true));
819
+ },
820
+ disabled: !isCreatePermissionGranted
821
+ }
822
+ }),
823
+ noDataTitle = _generateNoDataConten.noDataTitle,
824
+ noDataButtonProps = _generateNoDataConten.noDataButtonProps;
825
+ if (isRolesLoading || isMembersLoading) {
826
+ return /*#__PURE__*/jsx("div", {
827
+ className: "flex h-full min-h-screen w-full items-center justify-center",
828
+ children: /*#__PURE__*/jsx(Spinner, {})
829
+ });
830
+ }
831
+ return /*#__PURE__*/jsxs(Fragment, {
832
+ children: [/*#__PURE__*/jsxs(Container, {
833
+ children: [/*#__PURE__*/jsx(Header, {
834
+ config: config,
835
+ setIsOpen: setIsOpen,
836
+ searchProps: hasMembers ? searchProps : null
837
+ }), /*#__PURE__*/jsx(SubHeader$1, {
838
+ className: "mb-4",
839
+ leftActionBlock: hasMembers && /*#__PURE__*/jsx(SubHeader.Left, {
840
+ bulkParams: bulkParams,
841
+ config: config,
842
+ selectedRows: selectedRows,
843
+ selectedRowsCount: selectedRowsCount,
844
+ setSelectedRows: setSelectedRows,
845
+ filteredCount: team === null || team === void 0 ? void 0 : team.membersCount,
846
+ roles: filteredRoles,
847
+ resetToFirstPage: function resetToFirstPage() {
848
+ var _filters$pageSize2;
849
+ return handlePageChange(setFilters, history)(DEFAULT_PAGE_INDEX, (_filters$pageSize2 = filters.pageSize) !== null && _filters$pageSize2 !== void 0 ? _filters$pageSize2 : DEFAULT_PAGE_SIZE);
850
+ }
851
+ }),
852
+ rightActionBlock: hasMembers && /*#__PURE__*/jsx(SubHeader.Right, {
853
+ columns: columns,
854
+ filterColumns: filterColumns,
855
+ handleNeetoFilterChange: handleNeetoFilterChange,
856
+ isFiltersPaneOpen: isFiltersPaneOpen,
857
+ searchKeywordProps: searchKeywordProps,
858
+ setIsDownloadPaneOpen: setIsDownloadPaneOpen,
859
+ setIsFiltersPaneOpen: setIsFiltersPaneOpen
860
+ })
861
+ }), /*#__PURE__*/jsx(FiltersBar, {
862
+ className: "mb-4",
863
+ columns: filterColumns,
864
+ keyword: searchKeywordProps,
865
+ setIsPaneOpen: setIsFiltersPaneOpen,
866
+ onChange: handleNeetoFilterChange
867
+ }), /*#__PURE__*/jsx(ExportPane, {
868
+ hasBulkSelectedAllRows: hasBulkSelectedAllRows,
869
+ selectedRowsCount: selectedRowsCount,
870
+ appliedFilters: filters,
871
+ isOpen: isDownloadPaneOpen,
872
+ selectedMemberIds: selectedRows.keys,
873
+ onClose: function onClose() {
874
+ return setIsDownloadPaneOpen(false);
875
+ }
876
+ }), (team === null || team === void 0 ? void 0 : team.membersCount) !== 0 ? /*#__PURE__*/jsx(DataTable, {
877
+ fixedHeight: true,
878
+ allowRowClick: false,
879
+ columns: customizedColumns,
880
+ currentPage: parseInt(filters.page, DEFAULT_RADIX),
881
+ data: (team === null || team === void 0 ? void 0 : team.members) || [],
882
+ "data-testid": "ntm-members-table",
883
+ loading: isMembersFetching || isTableConfigurationLoading,
884
+ pageSize: (_filters$pageSize3 = filters.pageSize) !== null && _filters$pageSize3 !== void 0 ? _filters$pageSize3 : DEFAULT_PAGE_SIZE,
885
+ selectedRowKeys: selectedRows.keys,
886
+ totalCount: team === null || team === void 0 ? void 0 : team.membersCount,
887
+ bulkSelectAllRowsProps: {
888
+ selectAllRowMessage: t("neetoTeamMembers.helpers.selectedMembers", {
889
+ count: selectedRowsCount
890
+ }),
891
+ selectAllRowButtonLabel: t("neetoTeamMembers.helpers.selectAll", {
892
+ count: team === null || team === void 0 ? void 0 : team.membersCount
893
+ }),
894
+ setBulkSelectedAllRows: setHasBulkSelectedAllRows
895
+ },
896
+ onColumnHide: function onColumnHide(_ref2) {
897
+ var key = _ref2.key;
898
+ return hideColumn(key);
899
+ },
900
+ onPageChange: handlePageChange(setFilters, history),
901
+ onRowSelect: handleRowSelect
902
+ }) : /*#__PURE__*/jsx("div", {
903
+ className: "flex h-full w-full items-center justify-center",
904
+ children: /*#__PURE__*/jsx(Empty, {
905
+ title: noDataTitle,
906
+ children: /*#__PURE__*/jsx(Button, {
907
+ "data-testid": noDataButtonProps["data-testid"],
908
+ disabled: noDataButtonProps.disabled,
909
+ onClick: noDataButtonProps.onClick,
910
+ children: noDataButtonProps.label
911
+ })
912
+ })
913
+ })]
914
+ }), /*#__PURE__*/jsx(ManageMember, {
915
+ config: config,
916
+ selectedMember: selectedMember,
917
+ componentConfig: {
918
+ isOpen: isOpen.manageMember
919
+ },
920
+ roles: filteredRoles,
921
+ onComplete: handlePaneClose
922
+ }), /*#__PURE__*/jsx(Alert, {
923
+ cancelButtonLabel: t("neetoTeamMembers.buttons.cancel"),
924
+ isOpen: isOpen.alert,
925
+ isSubmitting: isUpdatingMember,
926
+ message: renderUpdateAlert("message", updateMemberAlertProps),
927
+ submitButtonLabel: t("neetoTeamMembers.buttons.remove"),
928
+ title: renderUpdateAlert("title", updateMemberAlertProps),
929
+ onClose: handleAlertClose,
930
+ onSubmit: handleRemoveMember
931
+ })]
932
+ });
933
+ };
934
+ var index = withTitle(withReactQuery(TeamMembers), taxonomies.member.plural);
935
+
936
+ export { index as default };
937
+ //# sourceMappingURL=TeamMembers.js.map