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