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