@bigbinary/neeto-team-members-frontend 4.2.6 → 4.3.0

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 (132) hide show
  1. package/README.md +25 -29
  2. package/dist/Groups.js +767 -0
  3. package/dist/Groups.js.map +1 -0
  4. package/dist/ManageMember.js +55 -0
  5. package/dist/ManageMember.js.map +1 -0
  6. package/dist/MembersDropdown.js +220 -0
  7. package/dist/MembersDropdown.js.map +1 -0
  8. package/dist/Permissions-6735df34.js +223 -0
  9. package/dist/Permissions-6735df34.js.map +1 -0
  10. package/dist/Permissions-952ec2fa.js +235 -0
  11. package/dist/Permissions-952ec2fa.js.map +1 -0
  12. package/dist/Permissions.js +16 -0
  13. package/dist/Permissions.js.map +1 -0
  14. package/dist/Profile.js +961 -0
  15. package/dist/Profile.js.map +1 -0
  16. package/dist/Roles.js +2353 -0
  17. package/dist/Roles.js.map +1 -0
  18. package/dist/RolesRadioGroup-3aa7b822.js +297 -0
  19. package/dist/RolesRadioGroup-3aa7b822.js.map +1 -0
  20. package/dist/RolesRadioGroup-94aca05f.js +337 -0
  21. package/dist/RolesRadioGroup-94aca05f.js.map +1 -0
  22. package/dist/RolesRadioGroup.js +22 -0
  23. package/dist/RolesRadioGroup.js.map +1 -0
  24. package/dist/TeamMembers.js +817 -0
  25. package/dist/TeamMembers.js.map +1 -0
  26. package/dist/TeamsAndMembersDropdown.js +414 -0
  27. package/dist/TeamsAndMembersDropdown.js.map +1 -0
  28. package/dist/TeamsDropdown.js +110 -0
  29. package/dist/TeamsDropdown.js.map +1 -0
  30. package/dist/_commonjsHelpers-1789f0cf.js +8 -0
  31. package/dist/_commonjsHelpers-1789f0cf.js.map +1 -0
  32. package/dist/_commonjsHelpers-b3309d7b.js +11 -0
  33. package/dist/_commonjsHelpers-b3309d7b.js.map +1 -0
  34. package/dist/cjs/Groups.js +812 -0
  35. package/dist/cjs/Groups.js.map +1 -0
  36. package/dist/cjs/ManageMember.js +61 -0
  37. package/dist/cjs/ManageMember.js.map +1 -0
  38. package/dist/cjs/MembersDropdown.js +231 -0
  39. package/dist/cjs/MembersDropdown.js.map +1 -0
  40. package/dist/cjs/Permissions.js +22 -0
  41. package/dist/cjs/Permissions.js.map +1 -0
  42. package/dist/cjs/Profile.js +1003 -0
  43. package/dist/cjs/Profile.js.map +1 -0
  44. package/dist/cjs/Roles.js +2382 -0
  45. package/dist/cjs/Roles.js.map +1 -0
  46. package/dist/cjs/RolesRadioGroup.js +28 -0
  47. package/dist/cjs/RolesRadioGroup.js.map +1 -0
  48. package/dist/cjs/TeamMembers.js +837 -0
  49. package/dist/cjs/TeamMembers.js.map +1 -0
  50. package/dist/cjs/TeamsAndMembersDropdown.js +427 -0
  51. package/dist/cjs/TeamsAndMembersDropdown.js.map +1 -0
  52. package/dist/cjs/TeamsDropdown.js +119 -0
  53. package/dist/cjs/TeamsDropdown.js.map +1 -0
  54. package/dist/cjs/constants.js +15 -0
  55. package/dist/cjs/constants.js.map +1 -0
  56. package/dist/cjs/hooks.js +28 -0
  57. package/dist/cjs/hooks.js.map +1 -0
  58. package/dist/cjs/index.js +124 -0
  59. package/dist/cjs/index.js.map +1 -0
  60. package/dist/cjs/utils.js +544 -0
  61. package/dist/cjs/utils.js.map +1 -0
  62. package/dist/constants-2685e5d6.js +57 -0
  63. package/dist/constants-2685e5d6.js.map +1 -0
  64. package/dist/constants-576b89ac.js +45 -0
  65. package/dist/constants-576b89ac.js.map +1 -0
  66. package/dist/constants.js +4 -0
  67. package/dist/constants.js.map +1 -0
  68. package/dist/defineProperty-2cb3c6e2.js +43 -0
  69. package/dist/defineProperty-2cb3c6e2.js.map +1 -0
  70. package/dist/defineProperty-9b13c73c.js +46 -0
  71. package/dist/defineProperty-9b13c73c.js.map +1 -0
  72. package/dist/hooks.js +18 -0
  73. package/dist/hooks.js.map +1 -0
  74. package/dist/index-2757050a.js +1022 -0
  75. package/dist/index-2757050a.js.map +1 -0
  76. package/dist/index-5f1a8667.js +179 -0
  77. package/dist/index-5f1a8667.js.map +1 -0
  78. package/dist/index-7b978a0f.js +149 -0
  79. package/dist/index-7b978a0f.js.map +1 -0
  80. package/dist/index-9d0683d6.js +137 -0
  81. package/dist/index-9d0683d6.js.map +1 -0
  82. package/dist/index-cbfbc296.js +167 -0
  83. package/dist/index-cbfbc296.js.map +1 -0
  84. package/dist/index-f4f1d674.js +981 -0
  85. package/dist/index-f4f1d674.js.map +1 -0
  86. package/dist/index.js +97 -10060
  87. package/dist/index.js.map +1 -1
  88. package/dist/inject-css-80a5faa3.js +6 -0
  89. package/dist/inject-css-80a5faa3.js.map +1 -0
  90. package/dist/inject-css-c86de496.js +4 -0
  91. package/dist/inject-css-c86de496.js.map +1 -0
  92. package/dist/objectWithoutProperties-2fed2d7d.js +33 -0
  93. package/dist/objectWithoutProperties-2fed2d7d.js.map +1 -0
  94. package/dist/objectWithoutProperties-a0edb288.js +31 -0
  95. package/dist/objectWithoutProperties-a0edb288.js.map +1 -0
  96. package/dist/queryClient-71ecdd08.js +14 -0
  97. package/dist/queryClient-71ecdd08.js.map +1 -0
  98. package/dist/queryClient-febad37e.js +16 -0
  99. package/dist/queryClient-febad37e.js.map +1 -0
  100. package/dist/slicedToArray-6674c4b8.js +44 -0
  101. package/dist/slicedToArray-6674c4b8.js.map +1 -0
  102. package/dist/slicedToArray-8e69d42b.js +46 -0
  103. package/dist/slicedToArray-8e69d42b.js.map +1 -0
  104. package/dist/toConsumableArray-0e395868.js +20 -0
  105. package/dist/toConsumableArray-0e395868.js.map +1 -0
  106. package/dist/toConsumableArray-e41a15ba.js +22 -0
  107. package/dist/toConsumableArray-e41a15ba.js.map +1 -0
  108. package/dist/unsupportedIterableToArray-7c7192e5.js +17 -0
  109. package/dist/unsupportedIterableToArray-7c7192e5.js.map +1 -0
  110. package/dist/unsupportedIterableToArray-fa2816fd.js +20 -0
  111. package/dist/unsupportedIterableToArray-fa2816fd.js.map +1 -0
  112. package/dist/useMembersSidenav-68b9f94e.js +17 -0
  113. package/dist/useMembersSidenav-68b9f94e.js.map +1 -0
  114. package/dist/useMembersSidenav-7aaa6f93.js +23 -0
  115. package/dist/useMembersSidenav-7aaa6f93.js.map +1 -0
  116. package/dist/useTeamsApi-6254d23b.js +2208 -0
  117. package/dist/useTeamsApi-6254d23b.js.map +1 -0
  118. package/dist/useTeamsApi-da997902.js +2194 -0
  119. package/dist/useTeamsApi-da997902.js.map +1 -0
  120. package/dist/utils-531cc50b.js +41 -0
  121. package/dist/utils-531cc50b.js.map +1 -0
  122. package/dist/utils-d5dc0b0b.js +45 -0
  123. package/dist/utils-d5dc0b0b.js.map +1 -0
  124. package/dist/utils.js +538 -0
  125. package/dist/utils.js.map +1 -0
  126. package/dist/withReactQuery-efba53ba.js +21 -0
  127. package/dist/withReactQuery-efba53ba.js.map +1 -0
  128. package/dist/withReactQuery-f0b38396.js +19 -0
  129. package/dist/withReactQuery-f0b38396.js.map +1 -0
  130. package/package.json +15 -3
  131. package/dist/index.cjs.js +0 -10157
  132. package/dist/index.cjs.js.map +0 -1
@@ -0,0 +1,981 @@
1
+ import { a as _defineProperty } from './defineProperty-2cb3c6e2.js';
2
+ import { _ as _slicedToArray } from './slicedToArray-6674c4b8.js';
3
+ import { useState, useEffect, useRef } from 'react';
4
+ import classnames from 'classnames';
5
+ import { taxonomies, globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
6
+ import { getQueryParams, buildUrl, hyphenize, currencyFormat, showThumbsUpToastr } from '@bigbinary/neeto-commons-frontend/utils';
7
+ import Info from '@bigbinary/neeto-icons/Info';
8
+ import LeftArrow from '@bigbinary/neeto-icons/LeftArrow';
9
+ import Button from '@bigbinary/neetoui/Button';
10
+ import Typography from '@bigbinary/neetoui/Typography';
11
+ import Toastr from '@bigbinary/neetoui/Toastr';
12
+ import Callout from '@bigbinary/neetoui/Callout';
13
+ import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
14
+ import Form from '@bigbinary/neetoui/formik/Form';
15
+ import { clamp, curry, filter, identical, mergeLeft, assoc, not, pluck, head, isEmpty, reverse, groupBy, prop } from 'ramda';
16
+ import { Trans, useTranslation } from 'react-i18next';
17
+ import { c as useFetchRoles, e as useFetchGlobalRoles, S as ScrollToErrorField } from './index-cbfbc296.js';
18
+ import { u as useFetchMembers, e as useCreateMember, f as useMembersCreationStatus, r as refetchMembers, d as useUpdateMember } from './useTeamsApi-da997902.js';
19
+ import { n } from './inject-css-c86de496.js';
20
+ import { useFormikContext } from 'formik';
21
+ import { isNotEmpty, toLabelAndValue, filterBy } from '@bigbinary/neeto-cist';
22
+ import useFetchNeetoApps from '@bigbinary/neeto-commons-frontend/react-utils/useFetchNeetoApps';
23
+ import Checkbox from '@bigbinary/neetoui/Checkbox';
24
+ import Tooltip from '@bigbinary/neetoui/Tooltip';
25
+ import Select from '@bigbinary/neetoui/formik/Select';
26
+ import Switch from '@bigbinary/neetoui/formik/Switch';
27
+ import { n as neetoAuthManageProductUrl, g as getSingleInvitationTranslationProps, C as COUNTER_PROPS, F as FILTER_INVALID_EMAILS, E as EMAIL_REGEX, a as FORM_PAGES, D as DEFAULT_COMPONENT_CONFIG, M as MEMBERS_FORM_COMPONENT_MAPPER, r as renderInitialValues, b as buildValidationSchema, R as RolesRadioGroup, c as renderPayload } from './RolesRadioGroup-3aa7b822.js';
28
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
29
+ import { DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE, SINGULAR, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
30
+ import MultiEmailInput from '@bigbinary/neetoui/formik/MultiEmailInput';
31
+ import Input from '@bigbinary/neetoui/formik/Input';
32
+ import Warning from '@bigbinary/neeto-icons/Warning';
33
+ import Checkbox$1 from '@bigbinary/neetoui/formik/Checkbox';
34
+ import { S as SUBSCRIPTION_PLANS } from './constants-576b89ac.js';
35
+ import i18next from 'i18next';
36
+ import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
37
+ import Avatar from '@bigbinary/neetoui/Avatar';
38
+ import Dropdown from '@bigbinary/neetoui/Dropdown';
39
+ import Tag from '@bigbinary/neetoui/Tag';
40
+
41
+ var _getQueryParams = getQueryParams(),
42
+ page = _getQueryParams.page,
43
+ pageSize = _getQueryParams.pageSize;
44
+ var DEFAULT_RADIX = 10;
45
+ var DEFAULT_IS_OPEN_VALUES = {
46
+ menuBar: false,
47
+ manageMember: false,
48
+ alert: false
49
+ };
50
+ var DEFAULT_FILTER_VALUES = {
51
+ page: clamp(1, Infinity, parseInt(page)) || DEFAULT_PAGE_INDEX,
52
+ pageSize: clamp(10, 100, parseInt(pageSize)) || DEFAULT_PAGE_SIZE,
53
+ sortBy: "",
54
+ orderBy: "",
55
+ neetoFilters: []
56
+ };
57
+ var DEFAULT_SELECTED_ROWS = {
58
+ active: [],
59
+ emails: [],
60
+ keys: [],
61
+ displayNames: []
62
+ };
63
+ var TEAM_MEMBERS_HIDDEN_COLUMNS = "TEAM_MEMBERS_TABLE_HIDDEN_COLUMNS";
64
+
65
+ 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; }
66
+ 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; }
67
+ var MenuItem = Dropdown.MenuItem;
68
+ var renderNameColumn = function renderNameColumn(_ref) {
69
+ var config = _ref.config,
70
+ handleUpdateRole = _ref.handleUpdateRole,
71
+ handleUpdateStatus = _ref.handleUpdateStatus,
72
+ tableData = _ref.tableData;
73
+ var name = tableData.displayName,
74
+ imageUrl = tableData.profileImageUrl,
75
+ subscriptionPlan = tableData.subscriptionPlan;
76
+ return /*#__PURE__*/jsxs("div", {
77
+ className: "ntm-members-table__wrapper",
78
+ children: [/*#__PURE__*/jsxs("div", {
79
+ className: "ntm-members-table__column",
80
+ children: [/*#__PURE__*/jsx(Avatar, {
81
+ size: "medium",
82
+ user: {
83
+ name: name,
84
+ imageUrl: imageUrl
85
+ }
86
+ }), /*#__PURE__*/jsx(Typography, {
87
+ "data-cy": "ntm-member-name-".concat(hyphenize(name)),
88
+ style: "body2",
89
+ children: name
90
+ }), subscriptionPlan === SUBSCRIPTION_PLANS.PRO && /*#__PURE__*/jsx(Tag, {
91
+ className: "neeto-ui-text-transform-uppercase",
92
+ "data-cy": "ntm-member-subscription-plan-tag",
93
+ label: i18next.t("neetoTeamMembers.common.pro"),
94
+ style: "info",
95
+ type: "outline"
96
+ })]
97
+ }), renderDropdownButton({
98
+ config: config,
99
+ handleUpdateRole: handleUpdateRole,
100
+ handleUpdateStatus: handleUpdateStatus,
101
+ tableData: tableData
102
+ })]
103
+ });
104
+ };
105
+ var renderDropdownButton = function renderDropdownButton(_ref2) {
106
+ var _config$table, _config$table$dropdow;
107
+ var config = _ref2.config,
108
+ handleUpdateRole = _ref2.handleUpdateRole,
109
+ handleUpdateStatus = _ref2.handleUpdateStatus,
110
+ tableData = _ref2.tableData;
111
+ return /*#__PURE__*/jsx(MoreDropdown, {
112
+ dropdownProps: {
113
+ appendTo: function appendTo() {
114
+ return document.body;
115
+ },
116
+ strategy: "fixed"
117
+ },
118
+ isDisabled: not(config.permissions.update),
119
+ dropdownButtonProps: {
120
+ className: "flex-shrink-0",
121
+ "data-cy": "ntm-members-table-row-dropdown-button",
122
+ tooltipProps: {
123
+ content: i18next.t("neetoTeamMembers.tooltips.noPermissionToEditMembers"),
124
+ disabled: config.permissions.update,
125
+ position: "top"
126
+ }
127
+ },
128
+ menuTopChildren: /*#__PURE__*/jsxs(Fragment, {
129
+ children: [/*#__PURE__*/jsx(MenuItem.Button, {
130
+ className: "ntm-dropdown__button",
131
+ "data-cy": "ntm-edit-member-button",
132
+ size: "small",
133
+ onClick: function onClick() {
134
+ return handleUpdateRole(tableData);
135
+ },
136
+ children: i18next.t("neetoTeamMembers.common.edit")
137
+ }), config === null || config === void 0 || (_config$table = config.table) === null || _config$table === void 0 || (_config$table$dropdow = _config$table.dropdownProps) === null || _config$table$dropdow === void 0 ? void 0 : _config$table$dropdow.call(_config$table, tableData), /*#__PURE__*/jsx(MenuItem.Button, {
138
+ className: "ntm-dropdown__button",
139
+ "data-cy": "ntm-deactivate-member-button",
140
+ size: "small",
141
+ onClick: function onClick() {
142
+ return handleUpdateStatus(tableData);
143
+ },
144
+ children: i18next.t("neetoTeamMembers.common.remove")
145
+ })]
146
+ })
147
+ });
148
+ };
149
+ var getDefaultAlertTitle = function getDefaultAlertTitle(_ref3) {
150
+ var member = _ref3.member;
151
+ return member !== null && member !== void 0 && member.active ? i18next.t("neetoTeamMembers.common.remove_", {
152
+ what: taxonomies.member.singular
153
+ }) : i18next.t("neetoTeamMembers.common.activate_", {
154
+ what: taxonomies.member.singular
155
+ });
156
+ };
157
+ var getDefaultAlertMessage = function getDefaultAlertMessage(_ref4) {
158
+ var member = _ref4.member;
159
+ return /*#__PURE__*/jsx(Trans, {
160
+ i18nKey: "neetoTeamMembers.alerts.messages.removeMember",
161
+ values: _objectSpread$1(_objectSpread$1({}, SINGULAR), {}, {
162
+ person: member === null || member === void 0 ? void 0 : member.displayName
163
+ })
164
+ });
165
+ };
166
+ var getDefaultColumns = function getDefaultColumns(_ref5) {
167
+ var config = _ref5.config,
168
+ handleUpdateRole = _ref5.handleUpdateRole,
169
+ handleUpdateStatus = _ref5.handleUpdateStatus,
170
+ otherColumns = _ref5.otherColumns,
171
+ isSize = _ref5.isSize;
172
+ return [{
173
+ dataIndex: "name",
174
+ key: "name",
175
+ width: 300,
176
+ fixed: isNotEmpty(otherColumns) && !isSize("mobile"),
177
+ render: function render(_, tableData) {
178
+ return renderNameColumn({
179
+ config: config,
180
+ handleUpdateRole: handleUpdateRole,
181
+ handleUpdateStatus: handleUpdateStatus,
182
+ tableData: tableData
183
+ });
184
+ },
185
+ sorter: true,
186
+ title: i18next.t("neetoTeamMembers.common.name"),
187
+ isHidable: false
188
+ }, {
189
+ dataIndex: "email",
190
+ key: "email",
191
+ sorter: true,
192
+ width: 350,
193
+ title: i18next.t("neetoTeamMembers.common.email", SINGULAR)
194
+ }, {
195
+ dataIndex: "role",
196
+ key: "organization_role",
197
+ sorter: true,
198
+ width: 200,
199
+ title: i18next.t("neetoTeamMembers.common.role", SINGULAR)
200
+ }, {
201
+ dataIndex: "subscriptionPlan",
202
+ key: "subscription_plan",
203
+ hidden: true,
204
+ isHidable: false,
205
+ title: ""
206
+ }];
207
+ };
208
+ var removeExcludedRole = curry(function (excludedRoles, role) {
209
+ return !(excludedRoles !== null && excludedRoles !== void 0 && excludedRoles.includes(role === null || role === void 0 ? void 0 : role.name));
210
+ });
211
+ var getSubscriptionLabelAndValue = function getSubscriptionLabelAndValue() {
212
+ return Object.entries(SUBSCRIPTION_PLANS).map(function (_ref6) {
213
+ var _ref7 = _slicedToArray(_ref6, 2),
214
+ key = _ref7[0],
215
+ value = _ref7[1];
216
+ return {
217
+ label: key,
218
+ value: value
219
+ };
220
+ });
221
+ };
222
+ var getColumnData = function getColumnData(_ref8) {
223
+ var _config$otherColumns;
224
+ var config = _ref8.config,
225
+ handleUpdateRole = _ref8.handleUpdateRole,
226
+ handleUpdateStatus = _ref8.handleUpdateStatus,
227
+ isSize = _ref8.isSize;
228
+ var otherColumns = (_config$otherColumns = config === null || config === void 0 ? void 0 : config.otherColumns) !== null && _config$otherColumns !== void 0 ? _config$otherColumns : [];
229
+ var defaultColumns = getDefaultColumns({
230
+ config: config,
231
+ handleUpdateRole: handleUpdateRole,
232
+ handleUpdateStatus: handleUpdateStatus,
233
+ otherColumns: otherColumns,
234
+ isSize: isSize
235
+ });
236
+ var columns = defaultColumns.map(function (column) {
237
+ var otherColumn = otherColumns.find(function (_ref9) {
238
+ var dataIndex = _ref9.dataIndex;
239
+ return identical(dataIndex, column.dataIndex);
240
+ });
241
+ return otherColumn || column;
242
+ });
243
+ otherColumns.forEach(function (otherColumn) {
244
+ var column = columns.find(function (_ref10) {
245
+ var dataIndex = _ref10.dataIndex;
246
+ return identical(dataIndex, otherColumn.dataIndex);
247
+ });
248
+ if (!column) columns.push(otherColumn);
249
+ });
250
+ return columns;
251
+ };
252
+ var renderUpdateAlert = function renderUpdateAlert(field, props) {
253
+ var _config$alert;
254
+ var config = props.config,
255
+ member = props.member;
256
+ if (config !== null && config !== void 0 && (_config$alert = config.alert) !== null && _config$alert !== void 0 && _config$alert[field]) {
257
+ var _config$alert2;
258
+ return (_config$alert2 = config.alert) === null || _config$alert2 === void 0 ? void 0 : _config$alert2[field]({
259
+ active: member === null || member === void 0 ? void 0 : member.active,
260
+ id: member === null || member === void 0 ? void 0 : member.id,
261
+ name: member === null || member === void 0 ? void 0 : member.displayName
262
+ });
263
+ }
264
+ return field === "title" ? getDefaultAlertTitle(props) : getDefaultAlertMessage(props);
265
+ };
266
+ var handlePageChange = function handlePageChange(setFilters, history) {
267
+ return function (page, pageSize) {
268
+ var searchParams = getQueryParams({
269
+ toCamelCase: false
270
+ });
271
+ history.replace(buildUrl(window.location.pathname, mergeLeft({
272
+ page: page,
273
+ page_size: pageSize
274
+ }, searchParams)));
275
+ setFilters(mergeLeft({
276
+ page: page,
277
+ pageSize: pageSize
278
+ }));
279
+ };
280
+ };
281
+ var renderPaginationProps = function renderPaginationProps(size) {
282
+ return {
283
+ pageSize: parseInt(size, DEFAULT_RADIX)
284
+ };
285
+ };
286
+ var defaultNeetoFiltersColumns = function defaultNeetoFiltersColumns() {
287
+ return [{
288
+ key: "email",
289
+ label: i18next.t("neetoTeamMembers.common.email", SINGULAR),
290
+ model: "User",
291
+ node: "email",
292
+ showRuleSelector: true,
293
+ type: "text"
294
+ }, {
295
+ key: "name",
296
+ label: i18next.t("neetoTeamMembers.common.name"),
297
+ model: "User",
298
+ node: "first_name,last_name",
299
+ type: "text",
300
+ values: ""
301
+ }, {
302
+ key: "role",
303
+ label: i18next.t("neetoTeamMembers.common.role", SINGULAR),
304
+ model: "OrganizationRole",
305
+ node: "organization_role.name",
306
+ type: "multi_option",
307
+ values: []
308
+ }, {
309
+ key: "subscription_plan",
310
+ label: i18next.t("neetoTeamMembers.common.subscriptionPlan", SINGULAR),
311
+ model: "User",
312
+ node: "subscription_plan",
313
+ type: "single_option",
314
+ values: []
315
+ }];
316
+ };
317
+ var buildFilterColumns = function buildFilterColumns(_ref11) {
318
+ var _ref11$options = _ref11.options,
319
+ _ref11$options$emails = _ref11$options.emails,
320
+ emails = _ref11$options$emails === void 0 ? [] : _ref11$options$emails,
321
+ _ref11$options$organi = _ref11$options.organizationRoles,
322
+ organizationRoles = _ref11$options$organi === void 0 ? [] : _ref11$options$organi,
323
+ _ref11$emailConfig = _ref11.emailConfig,
324
+ setSearchTerm = _ref11$emailConfig.setSearchTerm,
325
+ isLoading = _ref11$emailConfig.isLoading;
326
+ var columnValues = {
327
+ email: emails.map(toLabelAndValue),
328
+ role: organizationRoles.map(toLabelAndValue),
329
+ subscription_plan: getSubscriptionLabelAndValue()
330
+ };
331
+ return defaultNeetoFiltersColumns().map(function (column) {
332
+ var values = columnValues[column.key];
333
+ if (column.key === "role") return assoc("values", values, column);
334
+ var emailConfig = {
335
+ values: values,
336
+ isLoading: isLoading,
337
+ onInputChange: setSearchTerm
338
+ };
339
+ return mergeLeft(emailConfig, column);
340
+ });
341
+ };
342
+ var getFilteredRoles = function getFilteredRoles() {
343
+ var roles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
344
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
345
+ return filter(removeExcludedRole(config === null || config === void 0 ? void 0 : config.excludedRoles), roles);
346
+ };
347
+ var generateNoDataContent = function generateNoDataContent(_ref12) {
348
+ var buttonProps = _ref12.buttonProps;
349
+ var disabled = buttonProps.disabled,
350
+ onClick = buttonProps.onClick;
351
+ var noDataTitleTranslationKey = "notFound_";
352
+ var noDataTitle = i18next.t("neetoTeamMembers.common.".concat(noDataTitleTranslationKey), {
353
+ what: taxonomies.member.plural
354
+ });
355
+ var noDataButtonProps = {
356
+ "data-cy": "ntm-add-member-button",
357
+ disabled: disabled,
358
+ label: i18next.t("neetoTeamMembers.common.addNew_", {
359
+ what: taxonomies.member.singular
360
+ }),
361
+ onClick: onClick
362
+ };
363
+ return {
364
+ noDataTitle: noDataTitle,
365
+ noDataButtonProps: noDataButtonProps
366
+ };
367
+ };
368
+
369
+ var css = ".ntm-manage-members__header{align-items:flex-start;display:flex}.ntm-manage-members__header>*+*{margin-left:.5rem}.ntm-product-roles-table th{color:rgb(var(--neeto-ui-gray-700));font-size:var(--neeto-ui-text-xs);font-weight:var(--neeto-ui-font-bold);text-transform:uppercase;vertical-align:middle}.ntm-product-roles-table td,.ntm-product-roles-table th{border:1px solid rgb(var(--neeto-ui-gray-200));padding:8px;text-align:left}.ntm-manage-members__app-roles{align-items:center;display:flex;justify-content:space-between;padding:.5rem 0;width:100%}.ntm-manage-members-app-roles__select-wrapper{max-width:250px;width:50%}.ntm-manage-members-effective-app-roles{align-items:center;display:flex;justify-content:space-between;padding:.25rem 0}.ntm-manage-members-effective-app-roles__role-name{max-width:300px;width:67%}.ntm-manage-members__checkbox-align-start.neeto-ui-checkbox__wrapper .neeto-ui-checkbox__container{align-items:flex-start}.ntm-manage-members__checkbox-align-start.neeto-ui-checkbox__wrapper .neeto-ui-checkbox[type=checkbox]{margin-top:4px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19tYW5hZ2UtbWVtYmVycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUVFLHNCQUFBLENBREEsWUFFRixDQUNFLGdDQUNFLGlCQUNKLENBSUUsNEJBQ0UsbUNBQUEsQ0FDQSxpQ0FBQSxDQUVBLHFDQUFBLENBQ0Esd0JBQUEsQ0FGQSxxQkFDSixDQUdFLHdEQUVFLDhDQUFBLENBRUEsV0FBQSxDQURBLGVBQUosQ0FLQSwrQkFFRSxrQkFBQSxDQURBLFlBQUEsQ0FFQSw2QkFBQSxDQUVBLGVBQUEsQ0FEQSxVQURGLENBS0EsOENBRUUsZUFBQSxDQURBLFNBREYsQ0FLQSx3Q0FFRSxrQkFBQSxDQURBLFlBQUEsQ0FFQSw2QkFBQSxDQUNBLGdCQUZGLENBS0EsbURBRUUsZUFBQSxDQURBLFNBREYsQ0FNRSxtR0FDRSxzQkFISixDQUtFLHVHQUNFLGNBSEoiLCJzb3VyY2VzQ29udGVudCI6WyIubnRtLW1hbmFnZS1tZW1iZXJzX19oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAmID4gKiArICoge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gIH1cbn1cblxuLm50bS1wcm9kdWN0LXJvbGVzLXRhYmxlIHtcbiAgdGgge1xuICAgIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbiAgICBmb250LXNpemU6IHZhcigtLW5lZXRvLXVpLXRleHQteHMpO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLW5lZXRvLXVpLWZvbnQtYm9sZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgfVxuICB0ZCxcbiAgdGgge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcGFkZGluZzogOHB4O1xuICB9XG59XG5cbi5udG0tbWFuYWdlLW1lbWJlcnNfX2FwcC1yb2xlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAuNXJlbSAwO1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzLWFwcC1yb2xlc19fc2VsZWN0LXdyYXBwZXIge1xuICB3aWR0aDogNTAlO1xuICBtYXgtd2lkdGg6IDI1MHB4O1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzLWVmZmVjdGl2ZS1hcHAtcm9sZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDAuMjVyZW0gMDtcbn1cblxuLm50bS1tYW5hZ2UtbWVtYmVycy1lZmZlY3RpdmUtYXBwLXJvbGVzX19yb2xlLW5hbWUge1xuICB3aWR0aDogNjclO1xuICBtYXgtd2lkdGg6IDMwMHB4O1xufVxuXG4ubnRtLW1hbmFnZS1tZW1iZXJzX19jaGVja2JveC1hbGlnbi1zdGFydC5uZWV0by11aS1jaGVja2JveF9fd3JhcHBlciB7XG4gIC5uZWV0by11aS1jaGVja2JveF9fY29udGFpbmVyIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgfVxuICAubmVldG8tdWktY2hlY2tib3hbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gIH1cbn1cbiJdfQ== */";
370
+ n(css,{});
371
+
372
+ var AppList = function AppList(_ref) {
373
+ var globalRoles = _ref.globalRoles,
374
+ savedStateRef = _ref.savedStateRef;
375
+ var _useTranslation = useTranslation(),
376
+ t = _useTranslation.t;
377
+ var _useState = useState(savedStateRef.current.isAppListEnabled),
378
+ _useState2 = _slicedToArray(_useState, 2),
379
+ isAppListEnabled = _useState2[0],
380
+ setIsAppListEnabled = _useState2[1];
381
+ var _useFetchNeetoApps = useFetchNeetoApps(),
382
+ _useFetchNeetoApps$da = _useFetchNeetoApps.data,
383
+ _useFetchNeetoApps$da2 = _useFetchNeetoApps$da === void 0 ? {} : _useFetchNeetoApps$da,
384
+ isOwner = _useFetchNeetoApps$da2.isOwner,
385
+ neetoApps = _useFetchNeetoApps$da2.neetoApps;
386
+ var _useFormikContext = useFormikContext(),
387
+ _useFormikContext$val = _useFormikContext.values,
388
+ _useFormikContext$val2 = _useFormikContext$val.emails,
389
+ emails = _useFormikContext$val2 === void 0 ? [] : _useFormikContext$val2,
390
+ _useFormikContext$val3 = _useFormikContext$val.appRoles,
391
+ appRoles = _useFormikContext$val3 === void 0 ? [] : _useFormikContext$val3,
392
+ setFieldValue = _useFormikContext.setFieldValue;
393
+ var selectedEmail = pluck("value", emails);
394
+ var isManageProductsLinkEnabled = isOwner && (neetoApps === null || neetoApps === void 0 ? void 0 : neetoApps.length) >= 3;
395
+ useEffect(function () {
396
+ if (savedStateRef.current.isAppListEnabled !== isAppListEnabled) {
397
+ appRoles === null || appRoles === void 0 || appRoles.forEach(function (appRole, index) {
398
+ var _globalProps$appName;
399
+ if ((appRole === null || appRole === void 0 ? void 0 : appRole.appName) === ((_globalProps$appName = globalProps.appName) === null || _globalProps$appName === void 0 ? void 0 : _globalProps$appName.substring(5))) {
400
+ setFieldValue("appRoles[".concat(index, "].isEnabled"), true);
401
+ return;
402
+ }
403
+ setFieldValue("appRoles[".concat(index, "].isEnabled"), isAppListEnabled);
404
+ });
405
+ }
406
+ savedStateRef.current.isAppListEnabled = isAppListEnabled;
407
+ }, [isAppListEnabled]); // eslint-disable-line react-hooks/exhaustive-deps
408
+
409
+ var buildRoleOptions = function buildRoleOptions(roles) {
410
+ return roles.map(function (role) {
411
+ return toLabelAndValue(role.name);
412
+ });
413
+ };
414
+ return /*#__PURE__*/jsxs("div", {
415
+ className: "neeto-ui-flex neeto-ui-flex-col neeto-ui-gap-6",
416
+ children: [/*#__PURE__*/jsxs("div", {
417
+ className: "neeto-ui-w-full space-y-3",
418
+ children: [/*#__PURE__*/jsx(Checkbox, {
419
+ checked: isAppListEnabled,
420
+ className: "ntm-manage-members__checkbox-align-start",
421
+ "data-cy": "ntm-manage-members-app-list-checkbox",
422
+ label: /*#__PURE__*/jsx(Typography, {
423
+ component: "span",
424
+ lineHeight: "relaxed",
425
+ style: "body2",
426
+ children: /*#__PURE__*/jsx(Trans, {
427
+ i18nKey: "neetoTeamMembers.helpers.addMembersToNeetoProducts",
428
+ values: {
429
+ emails: selectedEmail
430
+ }
431
+ })
432
+ }),
433
+ onChange: function onChange() {
434
+ return setIsAppListEnabled(not);
435
+ }
436
+ }), isManageProductsLinkEnabled && /*#__PURE__*/jsx(Typography, {
437
+ style: "body2",
438
+ children: /*#__PURE__*/jsx(Trans, {
439
+ i18nKey: "neetoTeamMembers.helpers.manageProducts",
440
+ components: {
441
+ button: /*#__PURE__*/jsx(Button, {
442
+ href: neetoAuthManageProductUrl,
443
+ style: "link"
444
+ })
445
+ }
446
+ })
447
+ })]
448
+ }), /*#__PURE__*/jsx("div", {
449
+ className: "neeto-ui-w-full",
450
+ children: appRoles.map(function (_ref2, index) {
451
+ var _globalProps$appName2;
452
+ var appName = _ref2.appName,
453
+ isEnabled = _ref2.isEnabled;
454
+ var isCurrentApp = appName === ((_globalProps$appName2 = globalProps.appName) === null || _globalProps$appName2 === void 0 ? void 0 : _globalProps$appName2.substring(5));
455
+ var isAppRoleSelectionChecked = isCurrentApp || isEnabled;
456
+ return /*#__PURE__*/jsxs("div", {
457
+ className: "ntm-manage-members__app-roles",
458
+ children: [/*#__PURE__*/jsx(Tooltip, {
459
+ content: t("neetoTeamMembers.tooltips.hostAppIsRequired"),
460
+ disabled: !isCurrentApp,
461
+ position: "left",
462
+ children: /*#__PURE__*/jsx("span", {
463
+ children: /*#__PURE__*/jsx(Switch, {
464
+ checked: isAppRoleSelectionChecked,
465
+ disabled: isCurrentApp,
466
+ name: "appsRoles[".concat(index, "].isEnabled"),
467
+ label: t("neetoTeamMembers.labels.neeto_", {
468
+ product: appName
469
+ }),
470
+ onChange: function onChange(_ref3) {
471
+ var target = _ref3.target;
472
+ setFieldValue("appRoles[".concat(index, "].isEnabled"), target.checked);
473
+ }
474
+ })
475
+ })
476
+ }), /*#__PURE__*/jsx(Tooltip, {
477
+ content: t("neetoTeamMembers.tooltips.goBackToChangeRole"),
478
+ disabled: !isCurrentApp,
479
+ position: "top",
480
+ children: /*#__PURE__*/jsx("span", {
481
+ className: "ntm-manage-members-app-roles__select-wrapper",
482
+ children: /*#__PURE__*/jsx(Select, {
483
+ isDisabled: isCurrentApp || !isEnabled,
484
+ name: "appRoles[".concat(index, "].activeRole"),
485
+ options: buildRoleOptions(globalRoles[appName]),
486
+ size: "small",
487
+ strategy: "fixed",
488
+ onChange: function onChange(_ref4) {
489
+ var value = _ref4.value;
490
+ setFieldValue("appRoles[".concat(index, "].activeRole"), value);
491
+ }
492
+ })
493
+ })
494
+ })]
495
+ }, appName);
496
+ })
497
+ })]
498
+ });
499
+ };
500
+
501
+ var Confirmation = function Confirmation() {
502
+ var _globalProps$organiza;
503
+ var _useTranslation = useTranslation(),
504
+ t = _useTranslation.t;
505
+ var _useFormikContext = useFormikContext(),
506
+ _useFormikContext$val = _useFormikContext.values,
507
+ emails = _useFormikContext$val.emails,
508
+ role = _useFormikContext$val.role,
509
+ appRoles = _useFormikContext$val.appRoles;
510
+ var selectedEmail = pluck("value", emails);
511
+ var activeAppRoles = filterBy({
512
+ isEnabled: true
513
+ }, appRoles);
514
+ return activeAppRoles.length > 1 ? /*#__PURE__*/jsxs("div", {
515
+ className: "neeto-ui-flex neeto-ui-flex-col neeto-ui-gap-6",
516
+ children: [/*#__PURE__*/jsx("div", {
517
+ className: "neeto-ui-w-full",
518
+ children: /*#__PURE__*/jsx(Typography, {
519
+ component: "span",
520
+ lineHeight: "relaxed",
521
+ style: "body2",
522
+ children: /*#__PURE__*/jsx(Trans, {
523
+ i18nKey: "neetoTeamMembers.helpers.multipleProductInvitation",
524
+ values: {
525
+ count: selectedEmail.length,
526
+ emails: selectedEmail,
527
+ orgName: (_globalProps$organiza = globalProps.organization) === null || _globalProps$organiza === void 0 ? void 0 : _globalProps$organiza.name
528
+ }
529
+ })
530
+ })
531
+ }), /*#__PURE__*/jsxs("table", {
532
+ className: "neeto-ui-w-full ntm-product-roles-table",
533
+ children: [/*#__PURE__*/jsx("thead", {
534
+ children: /*#__PURE__*/jsxs("tr", {
535
+ children: [/*#__PURE__*/jsx("th", {
536
+ children: t("neetoTeamMembers.common.productName")
537
+ }), /*#__PURE__*/jsx("th", {
538
+ children: t("neetoTeamMembers.common.role", SINGULAR)
539
+ })]
540
+ })
541
+ }), /*#__PURE__*/jsx("tbody", {
542
+ children: activeAppRoles.map(function (_ref) {
543
+ var appName = _ref.appName,
544
+ activeRole = _ref.activeRole;
545
+ return /*#__PURE__*/jsxs("tr", {
546
+ children: [/*#__PURE__*/jsx("td", {
547
+ children: /*#__PURE__*/jsx(Typography, {
548
+ component: "span",
549
+ lineHeight: "relaxed",
550
+ style: "body2",
551
+ children: t("neetoTeamMembers.labels.neeto_", {
552
+ product: appName
553
+ })
554
+ })
555
+ }), /*#__PURE__*/jsx("td", {
556
+ children: /*#__PURE__*/jsx(Typography, {
557
+ component: "span",
558
+ lineHeight: "relaxed",
559
+ style: "body2",
560
+ children: activeRole
561
+ })
562
+ })]
563
+ }, appName);
564
+ })
565
+ })]
566
+ })]
567
+ }) : /*#__PURE__*/jsx(Typography, {
568
+ component: "span",
569
+ lineHeight: "relaxed",
570
+ style: "body2",
571
+ children: /*#__PURE__*/jsx(Trans, {
572
+ i18nKey: "neetoTeamMembers.helpers.singleProductInvitation",
573
+ values: getSingleInvitationTranslationProps({
574
+ activeAppRoles: activeAppRoles,
575
+ role: role,
576
+ selectedEmail: selectedEmail
577
+ })
578
+ })
579
+ });
580
+ };
581
+
582
+ var MultipleEmailInput = function MultipleEmailInput(_ref) {
583
+ var _head;
584
+ var _ref$emails = _ref.emails,
585
+ emails = _ref$emails === void 0 ? [] : _ref$emails,
586
+ innerRef = _ref.innerRef,
587
+ _ref$selectedMember = _ref.selectedMember,
588
+ selectedMember = _ref$selectedMember === void 0 ? null : _ref$selectedMember;
589
+ var _useTranslation = useTranslation(),
590
+ t = _useTranslation.t;
591
+ var _useFormikContext = useFormikContext(),
592
+ setFieldValue = _useFormikContext.setFieldValue;
593
+ var handleInputChange = function handleInputChange(event) {
594
+ var email = event.target.value;
595
+ var emailList = [{
596
+ label: email,
597
+ value: email,
598
+ valid: EMAIL_REGEX.test(email)
599
+ }];
600
+ setFieldValue("emails", emailList);
601
+ };
602
+ return /*#__PURE__*/jsx("div", {
603
+ className: "neeto-ui-w-full",
604
+ children: selectedMember ? /*#__PURE__*/jsx(Input, {
605
+ "data-cy": "ntm-manage-member-email-input",
606
+ name: "emails",
607
+ size: "medium",
608
+ type: "email",
609
+ value: (_head = head(emails)) === null || _head === void 0 ? void 0 : _head.value,
610
+ label: /*#__PURE__*/jsx("span", {
611
+ className: "neeto-ui-w-full neeto-ui-flex neeto-ui-justify-between",
612
+ children: /*#__PURE__*/jsx(Typography, {
613
+ component: "span",
614
+ style: "body2",
615
+ children: t("neetoTeamMembers.common.email", SINGULAR)
616
+ })
617
+ }),
618
+ onChange: handleInputChange
619
+ }) : /*#__PURE__*/jsx(MultiEmailInput, {
620
+ required: true,
621
+ counter: COUNTER_PROPS,
622
+ "data-cy": "ntm-manage-member-email-input",
623
+ filterInvalidEmails: FILTER_INVALID_EMAILS,
624
+ helpText: t("neetoTeamMembers.helpers.enterMultipleEmails"),
625
+ label: t("neetoTeamMembers.common.email", PLURAL),
626
+ name: "emails",
627
+ placeholder: t("neetoTeamMembers.placeholders.email"),
628
+ ref: innerRef
629
+ })
630
+ });
631
+ };
632
+
633
+ var NameInputs = function NameInputs(_ref) {
634
+ var innerRef = _ref.innerRef;
635
+ var _useTranslation = useTranslation(),
636
+ t = _useTranslation.t;
637
+ return /*#__PURE__*/jsxs("div", {
638
+ className: "neeto-ui-flex neeto-ui-w-full neeto-ui-gap-4",
639
+ children: [/*#__PURE__*/jsx(Input, {
640
+ "data-cy": "ntm-edit-member-first-name-text-field",
641
+ label: t("neetoTeamMembers.labels.firstName"),
642
+ name: "firstName",
643
+ ref: innerRef
644
+ }), /*#__PURE__*/jsx(Input, {
645
+ "data-cy": "ntm-edit-member-last-name-text-field",
646
+ label: t("neetoTeamMembers.labels.lastName"),
647
+ name: "lastName"
648
+ })]
649
+ });
650
+ };
651
+
652
+ var SubscriptionPlan = function SubscriptionPlan(_ref) {
653
+ var _subscription$plan, _subscription$plan2;
654
+ var subscription = _ref.subscription;
655
+ var _useFormikContext = useFormikContext(),
656
+ values = _useFormikContext.values,
657
+ setFieldValue = _useFormikContext.setFieldValue;
658
+ var isProPlan = (values === null || values === void 0 ? void 0 : values.subscriptionPlan) === SUBSCRIPTION_PLANS.PRO;
659
+ var handleChange = function handleChange(event) {
660
+ return setFieldValue("subscriptionPlan", event.target.checked ? SUBSCRIPTION_PLANS.PRO : SUBSCRIPTION_PLANS.FREE);
661
+ };
662
+ return /*#__PURE__*/jsxs("div", {
663
+ className: "flex flex-col space-y-4",
664
+ children: [/*#__PURE__*/jsx(Checkbox$1, {
665
+ label: /*#__PURE__*/jsx(Trans, {
666
+ i18nKey: "neetoTeamMembers.labels.upgradeToProPlan"
667
+ }),
668
+ name: "isSubscriptionProPlan",
669
+ onChange: handleChange
670
+ }), isProPlan && /*#__PURE__*/jsx(Callout, {
671
+ icon: Warning,
672
+ style: "warning",
673
+ children: /*#__PURE__*/jsx(Typography, {
674
+ style: "body2",
675
+ weight: "normal",
676
+ children: /*#__PURE__*/jsx(Trans, {
677
+ i18nKey: "neetoTeamMembers.helpers.subscriptionWarning",
678
+ values: {
679
+ amount: currencyFormat.withSymbol(subscription === null || subscription === void 0 || (_subscription$plan = subscription.plan) === null || _subscription$plan === void 0 ? void 0 : _subscription$plan.amount, subscription === null || subscription === void 0 || (_subscription$plan2 = subscription.plan) === null || _subscription$plan2 === void 0 || (_subscription$plan2 = _subscription$plan2.currency) === null || _subscription$plan2 === void 0 ? void 0 : _subscription$plan2.toUpperCase(), {
680
+ maximumFractionDigits: 2,
681
+ minimumFractionDigits: 0
682
+ })
683
+ }
684
+ })
685
+ })
686
+ })]
687
+ });
688
+ };
689
+
690
+ 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; }
691
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).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; }
692
+ var ManageMember = function ManageMember(_ref) {
693
+ var _config$subscription, _manageMemberComponen, _config$additionalFie2;
694
+ var config = _ref.config,
695
+ onComplete = _ref.onComplete,
696
+ _ref$roles = _ref.roles,
697
+ roles = _ref$roles === void 0 ? [] : _ref$roles,
698
+ _ref$selectedMember = _ref.selectedMember,
699
+ selectedMember = _ref$selectedMember === void 0 ? null : _ref$selectedMember,
700
+ _ref$componentConfig = _ref.componentConfig,
701
+ componentConfig = _ref$componentConfig === void 0 ? {} : _ref$componentConfig;
702
+ var _useTranslation = useTranslation(),
703
+ t = _useTranslation.t;
704
+ var _useState = useState(false),
705
+ _useState2 = _slicedToArray(_useState, 2),
706
+ isCreationStatusPollingEnabled = _useState2[0],
707
+ setIsCreationStatusPollingEnabled = _useState2[1];
708
+ var isViewPermissionGranted = config.permissions.view;
709
+ var isNotDevelopment = globalProps.railsEnv !== "development";
710
+ var _useFetchMembers = useFetchMembers({
711
+ enabled: isViewPermissionGranted
712
+ }),
713
+ team = _useFetchMembers.data;
714
+ var _useState3 = useState(FORM_PAGES.MAIN),
715
+ _useState4 = _slicedToArray(_useState3, 2),
716
+ currentPage = _useState4[0],
717
+ setCurrentPage = _useState4[1];
718
+ var formReference = useRef(null);
719
+ var inputReference = useRef(null);
720
+ var appListSavedStateReference = useRef({
721
+ isAppListEnabled: true
722
+ });
723
+ var shouldSkipAppListPage = useRef(false);
724
+ var formikValues = useRef(null);
725
+ var manageMemberComponentConfig = _objectSpread(_objectSpread({}, DEFAULT_COMPONENT_CONFIG), {}, {
726
+ initialFocusRef: inputReference
727
+ }, componentConfig);
728
+ var Component = MEMBERS_FORM_COMPONENT_MAPPER[manageMemberComponentConfig.type || "pane"];
729
+ var haveToFetchRoles = isEmpty(roles) && isViewPermissionGranted;
730
+ var isEditForm = !!selectedMember;
731
+ var isLastPage = currentPage === FORM_PAGES.CONFIRMATION || isEditForm;
732
+ var isSubscriptionVisible = !isEditForm && ((_config$subscription = config.subscription) === null || _config$subscription === void 0 ? void 0 : _config$subscription.isActive);
733
+ var _useFetchRoles = useFetchRoles({
734
+ select: function select(response) {
735
+ var _response$organizatio;
736
+ return reverse((_response$organizatio = response.organizationRoles) !== null && _response$organizatio !== void 0 ? _response$organizatio : []);
737
+ },
738
+ enabled: haveToFetchRoles
739
+ }),
740
+ _useFetchRoles$data = _useFetchRoles.data,
741
+ rolesList = _useFetchRoles$data === void 0 ? roles : _useFetchRoles$data,
742
+ isRolesLoading = _useFetchRoles.isLoading;
743
+ var _useFetchGlobalRoles = useFetchGlobalRoles({
744
+ select: function select(response) {
745
+ return groupBy(prop("appName"), response !== null && response !== void 0 ? response : []);
746
+ },
747
+ enabled: isNotDevelopment && !selectedMember && isViewPermissionGranted
748
+ }),
749
+ _useFetchGlobalRoles$ = _useFetchGlobalRoles.data,
750
+ globalRoles = _useFetchGlobalRoles$ === void 0 ? {} : _useFetchGlobalRoles$,
751
+ isGlobalRolesLoading = _useFetchGlobalRoles.isLoading;
752
+ var filteredRoles = getFilteredRoles(rolesList, config);
753
+ var _useCreateMember = useCreateMember({
754
+ onSuccess: function onSuccess() {
755
+ return setIsCreationStatusPollingEnabled(true);
756
+ }
757
+ }),
758
+ _useCreateMember$data = _useCreateMember.data,
759
+ _useCreateMember$data2 = _useCreateMember$data === void 0 ? {} : _useCreateMember$data,
760
+ jobId = _useCreateMember$data2.jobId,
761
+ totalCount = _useCreateMember$data2.totalCount,
762
+ createMember = _useCreateMember.mutate,
763
+ isCreatingMember = _useCreateMember.isLoading;
764
+ var refetchInterval = function refetchInterval(query) {
765
+ var _ref2 = query.state.data || {},
766
+ isCompleted = _ref2.isCompleted;
767
+ if (isCompleted) {
768
+ setIsCreationStatusPollingEnabled(false);
769
+ return false;
770
+ }
771
+ return 2000;
772
+ };
773
+ var _useMembersCreationSt = useMembersCreationStatus(jobId, {
774
+ refetchInterval: refetchInterval,
775
+ enabled: isCreationStatusPollingEnabled
776
+ }),
777
+ creationStatus = _useMembersCreationSt.data;
778
+ useEffect(function () {
779
+ var _config$createMember;
780
+ var _ref3 = creationStatus || {},
781
+ isCompleted = _ref3.isCompleted,
782
+ isSuccessful = _ref3.isSuccessful,
783
+ users = _ref3.users,
784
+ error = _ref3.error;
785
+ if (!isCompleted) return;
786
+ handleClose();
787
+ config === null || config === void 0 || (_config$createMember = config.createMember) === null || _config$createMember === void 0 || (_config$createMember = _config$createMember.onSuccess) === null || _config$createMember === void 0 || _config$createMember.callback({
788
+ users: users
789
+ });
790
+ if (isSuccessful) {
791
+ showThumbsUpToastr();
792
+ } else {
793
+ Toastr.error(error);
794
+ }
795
+ refetchMembers();
796
+ }, [creationStatus]);
797
+ var _useUpdateMember = useUpdateMember({
798
+ onSuccess: function onSuccess() {
799
+ var _config$updateMember;
800
+ handleClose(true);
801
+ 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();
802
+ }
803
+ }),
804
+ updateMember = _useUpdateMember.mutate,
805
+ isUpdatingMember = _useUpdateMember.isPending;
806
+ var hasRoleChanged = function hasRoleChanged(_ref4) {
807
+ var submitted = _ref4.submitted,
808
+ values = _ref4.values;
809
+ return submitted && (values === null || values === void 0 ? void 0 : values.role) !== (selectedMember === null || selectedMember === void 0 ? void 0 : selectedMember.role);
810
+ };
811
+ var handleClose = function handleClose() {
812
+ var submitted = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
813
+ onComplete({
814
+ submitted: hasRoleChanged({
815
+ submitted: submitted,
816
+ values: formikValues.current
817
+ })
818
+ });
819
+ setCurrentPage(FORM_PAGES.MAIN);
820
+ appListSavedStateReference.current = {
821
+ isAppListEnabled: true
822
+ };
823
+ setIsCreationStatusPollingEnabled(false);
824
+ };
825
+ var isSubmitting = isCreatingMember || isUpdatingMember || isRolesLoading || isGlobalRolesLoading;
826
+ var handleAddMember = function handleAddMember(values) {
827
+ selectedMember ?
828
+ // @ts-ignore
829
+ updateMember({
830
+ id: selectedMember.id,
831
+ payload: renderPayload(values, selectedMember)
832
+ }) : createMember(renderPayload(values));
833
+ };
834
+ var handleOnSubmit = function handleOnSubmit(values) {
835
+ shouldSkipAppListPage.current = isEmpty(values.appRoles);
836
+ if (isLastPage) {
837
+ handleAddMember(values);
838
+ } else if (currentPage === FORM_PAGES.APP_LIST || shouldSkipAppListPage.current) {
839
+ setCurrentPage(FORM_PAGES.CONFIRMATION);
840
+ } else if (currentPage === FORM_PAGES.MAIN) {
841
+ setCurrentPage(FORM_PAGES.APP_LIST);
842
+ }
843
+ };
844
+ var handleBackButton = function handleBackButton() {
845
+ if (currentPage === FORM_PAGES.APP_LIST || shouldSkipAppListPage.current) {
846
+ setCurrentPage(FORM_PAGES.MAIN);
847
+ } else if (currentPage === FORM_PAGES.CONFIRMATION) {
848
+ setCurrentPage(FORM_PAGES.APP_LIST);
849
+ }
850
+ };
851
+ var getTitle = function getTitle() {
852
+ return selectedMember ? t("neetoTeamMembers.common.edit_", {
853
+ what: taxonomies.member.singular
854
+ }) : t("neetoTeamMembers.common.addNew_", {
855
+ what: taxonomies.member.singular
856
+ });
857
+ };
858
+ var renderFormPage = function renderFormPage(page, emails, role) {
859
+ var _config$additionalFie;
860
+ switch (page) {
861
+ case FORM_PAGES.MAIN:
862
+ return /*#__PURE__*/jsxs(Fragment, {
863
+ children: [selectedMember && /*#__PURE__*/jsx(NameInputs, {
864
+ innerRef: inputReference
865
+ }), /*#__PURE__*/jsx(MultipleEmailInput, {
866
+ emails: emails,
867
+ selectedMember: selectedMember,
868
+ innerRef: inputReference
869
+ }), isSubscriptionVisible && /*#__PURE__*/jsx(SubscriptionPlan, {
870
+ handleClose: handleClose,
871
+ subscription: config.subscription
872
+ }), /*#__PURE__*/jsx(RolesRadioGroup, {
873
+ config: config,
874
+ globalRoles: globalRoles,
875
+ role: role,
876
+ isEdit: !!selectedMember,
877
+ roles: filteredRoles
878
+ }), (_config$additionalFie = config.additionalFields) === null || _config$additionalFie === void 0 ? void 0 : _config$additionalFie.component]
879
+ });
880
+ case FORM_PAGES.APP_LIST:
881
+ return /*#__PURE__*/jsx(AppList, {
882
+ globalRoles: globalRoles,
883
+ savedStateRef: appListSavedStateReference
884
+ });
885
+ case FORM_PAGES.CONFIRMATION:
886
+ return /*#__PURE__*/jsx(Confirmation, {});
887
+ default:
888
+ return null;
889
+ }
890
+ };
891
+ return /*#__PURE__*/jsxs(Component, {
892
+ className: manageMemberComponentConfig.className,
893
+ "data-cy": "ntm-manage-members-pane-wrapper",
894
+ initialFocusRef: manageMemberComponentConfig.initialFocusRef,
895
+ isOpen: manageMemberComponentConfig.isOpen,
896
+ onClose: function onClose() {
897
+ return handleClose(false);
898
+ },
899
+ children: [/*#__PURE__*/jsxs(Component.Header, _objectSpread(_objectSpread({}, manageMemberComponentConfig.headerProps), {}, {
900
+ className: classnames([{
901
+ "ntm-manage-members__header": currentPage !== FORM_PAGES.MAIN
902
+ }, (_manageMemberComponen = manageMemberComponentConfig.headerProps) === null || _manageMemberComponen === void 0 ? void 0 : _manageMemberComponen.className]),
903
+ children: [currentPage !== FORM_PAGES.MAIN && /*#__PURE__*/jsx(Button, {
904
+ "aria-label": "Back",
905
+ icon: LeftArrow,
906
+ size: "medium",
907
+ style: "text",
908
+ tooltipProps: {
909
+ content: t("neetoTeamMembers.buttons.back"),
910
+ position: "bottom"
911
+ },
912
+ onClick: handleBackButton
913
+ }), /*#__PURE__*/jsx(Typography, {
914
+ className: "ntm-members-form__header",
915
+ "data-cy": "ntm-manage-members-pane-header",
916
+ style: "h2",
917
+ weight: "semibold",
918
+ children: getTitle()
919
+ })]
920
+ })), /*#__PURE__*/jsx(Form, {
921
+ ref: formReference,
922
+ formikProps: {
923
+ enableReinitialize: true,
924
+ initialValues: renderInitialValues({
925
+ additionalFieldsInitialValues: (_config$additionalFie2 = config.additionalFields) === null || _config$additionalFie2 === void 0 ? void 0 : _config$additionalFie2.initialValues,
926
+ globalRoles: globalRoles,
927
+ roles: filteredRoles,
928
+ selectedMember: selectedMember
929
+ }),
930
+ onSubmit: handleOnSubmit,
931
+ validationSchema: buildValidationSchema(_objectSpread({
932
+ selectedMember: selectedMember
933
+ }, team))
934
+ },
935
+ children: function children(_ref5) {
936
+ var _manageMemberComponen2, _creationStatus$progr, _manageMemberComponen3;
937
+ var values = _ref5.values,
938
+ isValid = _ref5.isValid;
939
+ var emails = values.emails,
940
+ role = values.role;
941
+ formikValues.current = values;
942
+ return /*#__PURE__*/jsxs(Fragment, {
943
+ children: [/*#__PURE__*/jsx(ScrollToErrorField, {
944
+ formRef: formReference
945
+ }), /*#__PURE__*/jsxs(Component.Body, _objectSpread(_objectSpread({}, manageMemberComponentConfig.bodyProps), {}, {
946
+ className: classnames(["ntm-members-form__body", (_manageMemberComponen2 = manageMemberComponentConfig.bodyProps) === null || _manageMemberComponen2 === void 0 ? void 0 : _manageMemberComponen2.className]),
947
+ children: [isCreationStatusPollingEnabled && /*#__PURE__*/jsx(Callout, {
948
+ className: "w-full",
949
+ icon: Info,
950
+ style: "info",
951
+ children: t("neetoTeamMembers.helpers.memberCreationStatus", {
952
+ count: emails.length,
953
+ completedCount: creationStatus === null || creationStatus === void 0 || (_creationStatus$progr = creationStatus.progress) === null || _creationStatus$progr === void 0 ? void 0 : _creationStatus$progr.completedCount,
954
+ totalCount: totalCount
955
+ })
956
+ }), renderFormPage(currentPage, emails, role)]
957
+ })), /*#__PURE__*/jsx(Component.Footer, _objectSpread(_objectSpread({}, manageMemberComponentConfig.footerProps), {}, {
958
+ className: classnames(["ntm-members-form__footer", (_manageMemberComponen3 = manageMemberComponentConfig.footerProps) === null || _manageMemberComponen3 === void 0 ? void 0 : _manageMemberComponen3.className]),
959
+ children: /*#__PURE__*/jsx(ActionBlock, {
960
+ isSubmitting: isSubmitting || isCreationStatusPollingEnabled,
961
+ cancelButtonProps: {
962
+ "data-cy": "ntm-manage-member-cancel-button",
963
+ onClick: function onClick() {
964
+ return handleClose(false);
965
+ }
966
+ },
967
+ submitButtonProps: {
968
+ "data-cy": isLastPage ? "ntm-manage-member-submit-button" : "ntm-manage-member-continue-button",
969
+ label: isLastPage ? t("neetoTeamMembers.buttons.saveChanges") : t("neetoTeamMembers.buttons.continue"),
970
+ disabled: !isValid
971
+ }
972
+ })
973
+ }))]
974
+ });
975
+ }
976
+ })]
977
+ });
978
+ };
979
+
980
+ export { DEFAULT_FILTER_VALUES as D, ManageMember as M, TEAM_MEMBERS_HIDDEN_COLUMNS as T, DEFAULT_IS_OPEN_VALUES as a, buildFilterColumns as b, DEFAULT_SELECTED_ROWS as c, defaultNeetoFiltersColumns as d, getColumnData as e, generateNoDataContent as f, getFilteredRoles as g, handlePageChange as h, DEFAULT_RADIX as i, renderUpdateAlert as j, renderPaginationProps as r };
981
+ //# sourceMappingURL=index-f4f1d674.js.map