@bigbinary/neeto-team-members-frontend 5.0.29 → 5.0.31

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