@bigbinary/neeto-team-members-frontend 4.4.27 → 4.5.1

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 (44) hide show
  1. package/app/javascript/src/translations/en.json +22 -1
  2. package/dist/Groups.js +1 -1
  3. package/dist/ManageMember.js +2 -2
  4. package/dist/MembersDropdown.js +1 -1
  5. package/dist/TeamMembers.js +172 -21
  6. package/dist/TeamMembers.js.map +1 -1
  7. package/dist/TeamsDropdown.js +1 -1
  8. package/dist/cjs/Groups.js +1 -1
  9. package/dist/cjs/ManageMember.js +2 -2
  10. package/dist/cjs/MembersDropdown.js +1 -1
  11. package/dist/cjs/TeamMembers.js +171 -20
  12. package/dist/cjs/TeamMembers.js.map +1 -1
  13. package/dist/cjs/TeamsDropdown.js +1 -1
  14. package/dist/cjs/constants.js +4 -1
  15. package/dist/cjs/constants.js.map +1 -1
  16. package/dist/cjs/hooks.js +1 -1
  17. package/dist/cjs/index.js +5 -3
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/utils.js +1 -1
  20. package/dist/constants.js +6 -0
  21. package/dist/constants.js.map +1 -1
  22. package/dist/hooks.js +1 -1
  23. package/dist/{index-CKp_a6SU.js → index-C2ciZlLk.js} +4 -3
  24. package/dist/index-C2ciZlLk.js.map +1 -0
  25. package/dist/{index-D0Ev1DvT.js → index-Cpad1EmZ.js} +6 -5
  26. package/dist/index-Cpad1EmZ.js.map +1 -0
  27. package/dist/{index-yFl2aYDN.js → index-DPMt5r_V.js} +4 -3
  28. package/dist/index-DPMt5r_V.js.map +1 -0
  29. package/dist/{index-C_Q5GzdX.js → index-DX_qEZeG.js} +6 -5
  30. package/dist/index-DX_qEZeG.js.map +1 -0
  31. package/dist/index.js +5 -3
  32. package/dist/index.js.map +1 -1
  33. package/dist/{useTeamsApi-DReZnkbo.js → useTeamsApi-DLoZKPuX.js} +14 -3
  34. package/dist/useTeamsApi-DLoZKPuX.js.map +1 -0
  35. package/dist/{useTeamsApi-DMq-AW7A.js → useTeamsApi-DqizqY5S.js} +14 -2
  36. package/dist/useTeamsApi-DqizqY5S.js.map +1 -0
  37. package/dist/utils.js +1 -1
  38. package/package.json +9 -9
  39. package/dist/index-CKp_a6SU.js.map +0 -1
  40. package/dist/index-C_Q5GzdX.js.map +0 -1
  41. package/dist/index-D0Ev1DvT.js.map +0 -1
  42. package/dist/index-yFl2aYDN.js.map +0 -1
  43. package/dist/useTeamsApi-DMq-AW7A.js.map +0 -1
  44. package/dist/useTeamsApi-DReZnkbo.js.map +0 -1
@@ -31,6 +31,7 @@
31
31
  "back": "Back",
32
32
  "cancel": "Cancel",
33
33
  "continue": "Continue",
34
+ "download": "Download",
34
35
  "editBasicInfo": "Edit basic info",
35
36
  "manageBillingAndSubscriptions": "Manage billing and subscriptions",
36
37
  "reset": "Reset",
@@ -63,6 +64,7 @@
63
64
  "edit_": "Edit {{what}}",
64
65
  "email_one": "Email",
65
66
  "email_other": "Emails",
67
+ "format": "Format",
66
68
  "name": "Name",
67
69
  "notFound_": "There are no {{what}} to show",
68
70
  "notFoundWithKind_": "There are no {{kind}} {{what}} to show",
@@ -120,7 +122,13 @@
120
122
  "removeMember": "Remove {{member}}?",
121
123
  "timeZone": "Time zone",
122
124
  "totalMembers": "Total {{taxonomies.member.plural}}",
123
- "groupName": "{{taxonomies.group.singular, anyCase}} name"
125
+ "groupName": "{{taxonomies.group.singular, anyCase}} name",
126
+ "downloadAs": "Download as {{format, anyCase}}",
127
+ "downloads": {
128
+ "pdf": "PDF",
129
+ "csv": "CSV",
130
+ "xlsx": "Excel"
131
+ }
124
132
  },
125
133
  "placeholders": {
126
134
  "email": "Please enter the email addresses",
@@ -161,6 +169,14 @@
161
169
  "noWhiteSpaces": "{{what, anyCase}} should not lead or end with white spaces",
162
170
  "max": "Field must be less than {{size}} characters"
163
171
  },
172
+ "downloadPane": {
173
+ "title": "Download {{taxonomies.member.plural}}",
174
+ "description": {
175
+ "selectedMembers_one": "Download selected {{taxonomies.member.singular}}",
176
+ "selectedMembers_other": "Download {{count}} selected {{taxonomies.member.plural}}",
177
+ "allMembers": "Download all {{taxonomies.member.plural}}"
178
+ }
179
+ },
164
180
  "profile": {
165
181
  "common": {
166
182
  "myProfile": "My Profile",
@@ -208,5 +224,10 @@
208
224
  "dotsNotAllowed": "Dots are not allowed"
209
225
  }
210
226
  }
227
+ },
228
+ "toastr": {
229
+ "success": {
230
+ "downloadMembers": "Your file is being prepared. It will be sent to <strong>{{email}}</strong> shortly."
231
+ }
211
232
  }
212
233
  }
package/dist/Groups.js CHANGED
@@ -37,7 +37,7 @@ import Tooltip from '@bigbinary/neetoui/Tooltip';
37
37
  import { pluralizeLabelUsingTaxonomy } from './utils.js';
38
38
  import '@bigbinary/neeto-commons-frontend/constants';
39
39
  import './_commonjsHelpers-BFTU3MAI.js';
40
- import './useTeamsApi-DReZnkbo.js';
40
+ import './useTeamsApi-DLoZKPuX.js';
41
41
  import '@babel/runtime/helpers/objectWithoutProperties';
42
42
  import 'qs';
43
43
  import './queryClient-Dsu-gu4Y.js';
@@ -16,8 +16,8 @@ import '@bigbinary/neetoui/formik/Form';
16
16
  import 'ramda';
17
17
  import 'react-i18next';
18
18
  import './index-Dvjcz-b3.js';
19
- import './useTeamsApi-DReZnkbo.js';
20
- export { M as default } from './index-CKp_a6SU.js';
19
+ import './useTeamsApi-DLoZKPuX.js';
20
+ export { M as default } from './index-C2ciZlLk.js';
21
21
  import './RolesRadioGroup-Bxt7zZkh.js';
22
22
  import 'react/jsx-runtime';
23
23
  import '@babel/runtime/helpers/objectWithoutProperties';
@@ -6,7 +6,7 @@ import Dropdown from '@bigbinary/neetoui/Dropdown';
6
6
  import Spinner from '@bigbinary/neetoui/Spinner';
7
7
  import { includes, toLower, map, append, pluck, any, not, isEmpty } from 'ramda';
8
8
  import { useTranslation } from 'react-i18next';
9
- import { A as AssignList } from './index-D0Ev1DvT.js';
9
+ import { A as AssignList } from './index-Cpad1EmZ.js';
10
10
  import Down from '@bigbinary/neeto-icons/Down';
11
11
  import Avatar from '@bigbinary/neetoui/Avatar';
12
12
  import Tooltip from '@bigbinary/neetoui/Tooltip';
@@ -4,7 +4,7 @@ import { useState, useMemo, memo, useEffect } from 'react';
4
4
  import { DEFAULT_PAGE_INDEX, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
5
5
  import { taxonomies, globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
6
6
  import { useQueryParams, useFuncDebounce, useDebounce, withT, withTitle, useBreakpoints } from '@bigbinary/neeto-commons-frontend/react-utils';
7
- import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
7
+ import { captureAnalyticsEvent, buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
8
8
  import FiltersBar from '@bigbinary/neeto-filters-frontend/Bar';
9
9
  import { useHiddenColumns } from '@bigbinary/neeto-molecules/Columns';
10
10
  import Container from '@bigbinary/neeto-molecules/Container';
@@ -19,10 +19,10 @@ import { useTranslation, Trans } from 'react-i18next';
19
19
  import { useHistory } from 'react-router-dom';
20
20
  import { w as withReactQuery } from './withReactQuery-CHybbL5V.js';
21
21
  import { u as useFetchRoles } from './index-Dvjcz-b3.js';
22
- import { e as useFetchFilterOptions, f as useBulkUpdateMembers, u as useFetchMembers, d as useUpdateMember } from './useTeamsApi-DReZnkbo.js';
22
+ import { e as useFetchFilterOptions, f as useBulkUpdateMembers, g as useExportMembers, u as useFetchMembers, d as useUpdateMember } from './useTeamsApi-DLoZKPuX.js';
23
23
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
24
24
  import { buildFiltersFromURL } from '@bigbinary/neeto-filters-frontend/utils';
25
- 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, T as TEAM_MEMBERS_HIDDEN_COLUMNS, g as getFilteredRoles, e as getColumnData, f as generateNoDataContent, i as DEFAULT_RADIX, r as renderPaginationProps, M as ManageMember, j as renderUpdateAlert } from './index-CKp_a6SU.js';
25
+ 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, T as TEAM_MEMBERS_HIDDEN_COLUMNS, g as getFilteredRoles, e as getColumnData, f as generateNoDataContent, i as DEFAULT_RADIX, r as renderPaginationProps, M as ManageMember, j as renderUpdateAlert } from './index-C2ciZlLk.js';
26
26
  import { n } from './inject-css-DmrvuTKK.js';
27
27
  import { noop, isNotEmpty, hyphenate, findBy } from '@bigbinary/neeto-cist';
28
28
  import Button from '@bigbinary/neetoui/Button';
@@ -34,6 +34,10 @@ import Typography from '@bigbinary/neetoui/Typography';
34
34
  import Right$1 from '@bigbinary/neeto-icons/Right';
35
35
  import Search from '@bigbinary/neeto-icons/Search';
36
36
  import Input from '@bigbinary/neetoui/Input';
37
+ import Pane from '@bigbinary/neetoui/Pane';
38
+ import Radio from '@bigbinary/neetoui/Radio';
39
+ import Toastr from '@bigbinary/neetoui/Toastr';
40
+ import { EVENTS } from './constants.js';
37
41
  import NeetoHeader from '@bigbinary/neeto-molecules/Header';
38
42
  import '@tanstack/react-query';
39
43
  import './queryClient-Dsu-gu4Y.js';
@@ -45,7 +49,6 @@ import 'qs';
45
49
  import 'classnames';
46
50
  import '@bigbinary/neeto-icons/Info';
47
51
  import '@bigbinary/neeto-icons/LeftArrow';
48
- import '@bigbinary/neetoui/Toastr';
49
52
  import '@bigbinary/neetoui/Callout';
50
53
  import '@bigbinary/neetoui/formik/ActionBlock';
51
54
  import '@bigbinary/neetoui/formik/Form';
@@ -56,15 +59,14 @@ import './RolesRadioGroup-Bxt7zZkh.js';
56
59
  import '@bigbinary/neetoui/Label';
57
60
  import '@bigbinary/neetoui/formik/Radio';
58
61
  import 'yup';
59
- import '@bigbinary/neetoui/Pane';
60
62
  import '@bigbinary/neetoui/Modal';
61
63
  import '@bigbinary/neetoui/formik/MultiEmailInput';
62
64
  import '@bigbinary/neetoui/formik/Input';
63
65
  import '@bigbinary/neeto-molecules/MoreDropdown';
64
66
  import '@bigbinary/neetoui/Avatar';
65
67
 
66
- 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; }
67
- 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), !0).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; }
68
+ 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; }
69
+ 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), !0).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; }
68
70
  var useFilters = function useFilters(_ref) {
69
71
  var _config$filterColumns;
70
72
  var config = _ref.config;
@@ -83,7 +85,7 @@ var useFilters = function useFilters(_ref) {
83
85
  emailSearchTerm = _useState2[0],
84
86
  setEmailSearchTerm = _useState2[1];
85
87
  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]));
86
- var _useState3 = useState(_objectSpread$5(_objectSpread$5(_objectSpread$5({}, DEFAULT_FILTER_VALUES), config === null || config === void 0 ? void 0 : config.defaultFilterValues), {}, {
88
+ var _useState3 = useState(_objectSpread$6(_objectSpread$6(_objectSpread$6({}, DEFAULT_FILTER_VALUES), config === null || config === void 0 ? void 0 : config.defaultFilterValues), {}, {
87
89
  neetoFilters: defaultNeetoFilters
88
90
  })),
89
91
  _useState4 = _slicedToArray(_useState3, 2),
@@ -132,8 +134,8 @@ var useFilters = function useFilters(_ref) {
132
134
  };
133
135
  };
134
136
 
135
- 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; }
136
- 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), !0).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; }
137
+ 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; }
138
+ 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), !0).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; }
137
139
  var useTeams = function useTeams(_ref) {
138
140
  var config = _ref.config,
139
141
  filters = _ref.filters,
@@ -209,7 +211,7 @@ var useTeams = function useTeams(_ref) {
209
211
  emails: pluck("email", rowData),
210
212
  keys: keys
211
213
  };
212
- setSelectedRows(_objectSpread$4({}, rows));
214
+ setSelectedRows(_objectSpread$5({}, rows));
213
215
  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, {
214
216
  rows: rows,
215
217
  resetSelectedRows: resetSelectedRows,
@@ -239,8 +241,8 @@ n(css,{});
239
241
  var FIXED_COLUMNS = ["name", "actions"];
240
242
  var MANAGE_ROLES_BUTTON_LABEL = t("neetoTeamMembers.labels.manageRole", PLURAL);
241
243
 
242
- 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; }
243
- 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), !0).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; }
244
+ 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; }
245
+ 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), !0).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; }
244
246
  var Header$2 = function Header(_ref) {
245
247
  var isCreatePermissionGranted = _ref.isCreatePermissionGranted,
246
248
  otherActionBlock = _ref.otherActionBlock,
@@ -252,7 +254,7 @@ var Header$2 = function Header(_ref) {
252
254
  var isRolesButtonVisible = !!rolesButtonProps;
253
255
  var isOtherActionBlockVisible = !!otherActionBlock;
254
256
  return /*#__PURE__*/jsxs(Fragment, {
255
- children: [isOtherActionBlockVisible && otherActionBlock(), isRolesButtonVisible ? /*#__PURE__*/jsx(Button, _objectSpread$3({
257
+ children: [isOtherActionBlockVisible && otherActionBlock(), isRolesButtonVisible ? /*#__PURE__*/jsx(Button, _objectSpread$4({
256
258
  "data-cy": "ntm-manage-roles-button",
257
259
  label: MANAGE_ROLES_BUTTON_LABEL,
258
260
  style: "secondary"
@@ -393,8 +395,8 @@ var RolesDropdown = function RolesDropdown(_ref) {
393
395
  });
394
396
  };
395
397
 
396
- 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; }
397
- 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), !0).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; }
398
+ 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; }
399
+ 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), !0).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; }
398
400
  var Menu = Dropdown.Menu,
399
401
  MenuItem = Dropdown.MenuItem;
400
402
  var Left = function Left(_ref) {
@@ -540,7 +542,7 @@ var Left = function Left(_ref) {
540
542
  title: selectedAlert === null || selectedAlert === void 0 ? void 0 : selectedAlert.title,
541
543
  message: /*#__PURE__*/jsx(Trans, {
542
544
  i18nKey: selectedAlert === null || selectedAlert === void 0 ? void 0 : selectedAlert.message,
543
- values: _objectSpread$2(_objectSpread$2({}, selectedMembersCountValues), {}, {
545
+ values: _objectSpread$3(_objectSpread$3({}, selectedMembersCountValues), {}, {
544
546
  person: selectedRows.displayNames[0],
545
547
  role: bulkUpdateRole
546
548
  })
@@ -557,9 +559,10 @@ var Right = withT(function (_ref3) {
557
559
  columns = _ref3.columns,
558
560
  filterColumns = _ref3.filterColumns,
559
561
  handleNeetoFilterChange = _ref3.handleNeetoFilterChange,
560
- setIsFiltersPaneOpen = _ref3.setIsFiltersPaneOpen,
561
562
  isFiltersPaneOpen = _ref3.isFiltersPaneOpen,
562
- searchKeywordProps = _ref3.searchKeywordProps;
563
+ searchKeywordProps = _ref3.searchKeywordProps,
564
+ setIsDownloadPaneOpen = _ref3.setIsDownloadPaneOpen,
565
+ setIsFiltersPaneOpen = _ref3.setIsFiltersPaneOpen;
563
566
  return /*#__PURE__*/jsx(SubHeader$1.RightBlock, {
564
567
  columnsButtonProps: {
565
568
  columnData: columns,
@@ -570,6 +573,12 @@ var Right = withT(function (_ref3) {
570
573
  placeholder: t("neetoTeamMembers.columns.search")
571
574
  }
572
575
  },
576
+ downloadButtonProps: {
577
+ isVisible: true,
578
+ onClick: function onClick() {
579
+ return setIsDownloadPaneOpen(true);
580
+ }
581
+ },
573
582
  filterProps: {
574
583
  columns: filterColumns,
575
584
  isOpen: isFiltersPaneOpen,
@@ -584,6 +593,134 @@ var SubHeader = {
584
593
  Right: Right
585
594
  };
586
595
 
596
+ var EXPORT_TYPES = {
597
+ PDF: "pdf",
598
+ CSV: "csv",
599
+ EXCEL: "xlsx"
600
+ };
601
+ var DEFAULT_EXPORT_OPTIONS = {
602
+ exportType: EXPORT_TYPES.EXCEL
603
+ };
604
+ var EXPORT_OPTIONS = [{
605
+ type: EXPORT_TYPES.EXCEL,
606
+ individualExportLabel: t("neetoTeamMembers.labels.downloads.xlsx"),
607
+ bulkExportLabel: t("neetoTeamMembers.labels.downloadAs", {
608
+ format: t("neetoTeamMembers.labels.downloads.xlsx")
609
+ }),
610
+ dataCy: "download-as-excel-radio-item"
611
+ }, {
612
+ type: EXPORT_TYPES.CSV,
613
+ individualExportLabel: t("neetoTeamMembers.labels.downloads.csv"),
614
+ bulkExportLabel: t("neetoTeamMembers.labels.downloadAs", {
615
+ format: t("neetoTeamMembers.labels.downloads.csv")
616
+ }),
617
+ dataCy: "download-as-csv-radio-item"
618
+ }, {
619
+ type: EXPORT_TYPES.PDF,
620
+ individualExportLabel: t("neetoTeamMembers.labels.downloads.pdf"),
621
+ bulkExportLabel: t("neetoTeamMembers.labels.downloadAs", {
622
+ format: t("neetoTeamMembers.labels.downloads.pdf")
623
+ }),
624
+ dataCy: "download-as-pdf-radio-item"
625
+ }];
626
+
627
+ 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; }
628
+ 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), !0).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; }
629
+ var ExportPane = function ExportPane(_ref) {
630
+ var isOpen = _ref.isOpen,
631
+ onClose = _ref.onClose,
632
+ appliedFilters = _ref.appliedFilters,
633
+ hasBulkSelectedAllRows = _ref.hasBulkSelectedAllRows,
634
+ selectedMemberIds = _ref.selectedMemberIds,
635
+ selectedRowsCount = _ref.selectedRowsCount;
636
+ var _useState = useState(DEFAULT_EXPORT_OPTIONS),
637
+ _useState2 = _slicedToArray(_useState, 2),
638
+ exportOptions = _useState2[0],
639
+ setExportOptions = _useState2[1];
640
+ var _useTranslation = useTranslation(),
641
+ t = _useTranslation.t;
642
+ var setExportOption = function setExportOption(exportOptions) {
643
+ return setExportOptions(mergeLeft(exportOptions));
644
+ };
645
+ var exportType = exportOptions.exportType;
646
+ var getParams = function getParams() {
647
+ return _objectSpread$2(_objectSpread$2({}, exportOptions), {}, {
648
+ filters: appliedFilters || undefined,
649
+ considerAllMembers: hasBulkSelectedAllRows,
650
+ memberIds: hasBulkSelectedAllRows ? undefined : selectedMemberIds
651
+ });
652
+ };
653
+ var _useExportMembers = useExportMembers({
654
+ onSuccess: function onSuccess() {
655
+ onClose();
656
+ setExportOptions(DEFAULT_EXPORT_OPTIONS);
657
+ Toastr.success(/*#__PURE__*/jsx(Trans, {
658
+ i18nKey: "toastr.success.downloadMembers",
659
+ values: {
660
+ email: globalProps.user.email
661
+ }
662
+ }));
663
+ captureAnalyticsEvent(EVENTS.TEAM_MEMBERS_DOWNLOADED, _objectSpread$2({}, exportOptions));
664
+ },
665
+ onError: function onError(error) {
666
+ return Toastr.error(error);
667
+ }
668
+ }),
669
+ exportMembers = _useExportMembers.mutate;
670
+ var description = isNotEmpty(selectedMemberIds) || hasBulkSelectedAllRows ? t("neetoTeamMembers.downloadPane.description.selectedMembers", {
671
+ count: selectedRowsCount
672
+ }) : t("neetoTeamMembers.downloadPane.description.allMembers");
673
+ return /*#__PURE__*/jsxs(Pane, {
674
+ isOpen: isOpen,
675
+ onClose: onClose,
676
+ children: [/*#__PURE__*/jsx(Pane.Header, {
677
+ children: /*#__PURE__*/jsx(Typography, {
678
+ "data-cy": "export-member-heading",
679
+ style: "h2",
680
+ children: t("neetoTeamMembers.downloadPane.title")
681
+ })
682
+ }), /*#__PURE__*/jsx(Pane.Body, {
683
+ children: /*#__PURE__*/jsx(Radio, {
684
+ stacked: true,
685
+ className: "flex-grow-0 space-y-4",
686
+ label: description,
687
+ children: EXPORT_OPTIONS.map(function (_ref2) {
688
+ var type = _ref2.type,
689
+ bulkExportLabel = _ref2.bulkExportLabel,
690
+ dataCy = _ref2.dataCy;
691
+ return /*#__PURE__*/jsx(Radio.Item, {
692
+ checked: exportType === type,
693
+ "data-cy": dataCy,
694
+ label: bulkExportLabel,
695
+ onChange: function onChange() {
696
+ return setExportOption({
697
+ exportType: type
698
+ });
699
+ }
700
+ }, type);
701
+ })
702
+ })
703
+ }), /*#__PURE__*/jsxs(Pane.Footer, {
704
+ className: "gap-x-2",
705
+ children: [/*#__PURE__*/jsx(Button, {
706
+ "data-cy": "export-submit-button",
707
+ label: t("neetoTeamMembers.buttons.download"),
708
+ onClick: function onClick() {
709
+ return exportMembers({
710
+ "export": getParams()
711
+ });
712
+ }
713
+ }), /*#__PURE__*/jsx(Button, {
714
+ className: "mr-2",
715
+ "data-cy": "export-cancel-button",
716
+ label: t("neetoTeamMembers.buttons.cancel"),
717
+ style: "text",
718
+ onClick: onClose
719
+ })]
720
+ })]
721
+ });
722
+ };
723
+
587
724
  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; }
588
725
  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), !0).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; }
589
726
  var Header = function Header(_ref) {
@@ -625,8 +762,12 @@ var TeamMembers = function TeamMembers(_ref) {
625
762
  setIsFiltersPaneOpen = _useState2[1];
626
763
  var _useState3 = useState(false),
627
764
  _useState4 = _slicedToArray(_useState3, 2),
628
- hasBulkSelectedAllRows = _useState4[0],
629
- setHasBulkSelectedAllRows = _useState4[1];
765
+ isDownloadPaneOpen = _useState4[0],
766
+ setIsDownloadPaneOpen = _useState4[1];
767
+ var _useState5 = useState(false),
768
+ _useState6 = _slicedToArray(_useState5, 2),
769
+ hasBulkSelectedAllRows = _useState6[0],
770
+ setHasBulkSelectedAllRows = _useState6[1];
630
771
  useEffect(function () {
631
772
  handleMemberFilterChange();
632
773
  }, []);
@@ -761,6 +902,7 @@ var TeamMembers = function TeamMembers(_ref) {
761
902
  handleNeetoFilterChange: handleNeetoFilterChange,
762
903
  isFiltersPaneOpen: isFiltersPaneOpen,
763
904
  searchKeywordProps: searchKeywordProps,
905
+ setIsDownloadPaneOpen: setIsDownloadPaneOpen,
764
906
  setIsFiltersPaneOpen: setIsFiltersPaneOpen
765
907
  })
766
908
  }), /*#__PURE__*/jsx(FiltersBar, {
@@ -769,6 +911,15 @@ var TeamMembers = function TeamMembers(_ref) {
769
911
  keyword: searchKeywordProps,
770
912
  setIsPaneOpen: setIsFiltersPaneOpen,
771
913
  onChange: handleNeetoFilterChange
914
+ }), /*#__PURE__*/jsx(ExportPane, {
915
+ hasBulkSelectedAllRows: hasBulkSelectedAllRows,
916
+ selectedRowsCount: selectedRowsCount,
917
+ appliedFilters: filters,
918
+ isOpen: isDownloadPaneOpen,
919
+ selectedMemberIds: selectedRows.keys,
920
+ onClose: function onClose() {
921
+ return setIsDownloadPaneOpen(false);
922
+ }
772
923
  }), /*#__PURE__*/jsx(TableWrapper, {
773
924
  hasPagination: (team === null || team === void 0 ? void 0 : team.membersCount) > filters.pageSize,
774
925
  children: (team === null || team === void 0 ? void 0 : team.membersCount) !== 0 ? /*#__PURE__*/jsx(Table, {