@bigbinary/neeto-approvals-frontend 1.2.15 → 1.2.18

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 (90) hide show
  1. package/README.md +0 -2
  2. package/app/javascript/src/translations/hu.json +100 -0
  3. package/dist/.ready +1 -0
  4. package/dist/Approvals.js +44 -107
  5. package/dist/Approvals.js.map +1 -1
  6. package/dist/Form.js +9 -32
  7. package/dist/Form.js.map +1 -1
  8. package/dist/Public.js +7 -50
  9. package/dist/Public.js.map +1 -1
  10. package/dist/RequestDetailsPane.js +4 -2
  11. package/dist/RequestDetailsPane.js.map +1 -1
  12. package/dist/cjs/Approvals.js +83 -146
  13. package/dist/cjs/Approvals.js.map +1 -1
  14. package/dist/cjs/Form.js +15 -38
  15. package/dist/cjs/Form.js.map +1 -1
  16. package/dist/cjs/Public.js +10 -53
  17. package/dist/cjs/Public.js.map +1 -1
  18. package/dist/cjs/RequestDetailsPane.js +4 -2
  19. package/dist/cjs/RequestDetailsPane.js.map +1 -1
  20. package/dist/cjs/index.js +12 -7
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/v2/Approvals.js +1007 -0
  23. package/dist/cjs/v2/Approvals.js.map +1 -0
  24. package/dist/cjs/v2/Form.js +199 -0
  25. package/dist/cjs/v2/Form.js.map +1 -0
  26. package/dist/cjs/v2/Public.js +130 -0
  27. package/dist/cjs/v2/Public.js.map +1 -0
  28. package/dist/cjs/v2/RequestDetailsPane.js +31 -0
  29. package/dist/cjs/v2/RequestDetailsPane.js.map +1 -0
  30. package/dist/cjs/v2/index.js +59 -0
  31. package/dist/cjs/v2/index.js.map +1 -0
  32. package/dist/{constants-BX-hlAjh.js → constants-BwvPJzqf.js} +1 -16
  33. package/dist/constants-BwvPJzqf.js.map +1 -0
  34. package/dist/constants-DaDwtZe3.js +83 -0
  35. package/dist/constants-DaDwtZe3.js.map +1 -0
  36. package/dist/constants-DzID-rqV.js +53 -0
  37. package/dist/constants-DzID-rqV.js.map +1 -0
  38. package/dist/{constants-B5EiwxHH.js → constants-qLYJlKc6.js} +2 -14
  39. package/dist/constants-qLYJlKc6.js.map +1 -0
  40. package/dist/index-C8moxeiZ.js +225 -0
  41. package/dist/index-C8moxeiZ.js.map +1 -0
  42. package/dist/{index-pLvVQgrV.js → index-CFiP9Hcn.js} +4 -49
  43. package/dist/index-CFiP9Hcn.js.map +1 -0
  44. package/dist/index-hZqdAkyl.js +229 -0
  45. package/dist/index-hZqdAkyl.js.map +1 -0
  46. package/dist/{index-BBsNL9uK.js → index-t8u9Sjvr.js} +4 -48
  47. package/dist/index-t8u9Sjvr.js.map +1 -0
  48. package/dist/index.js +12 -7
  49. package/dist/index.js.map +1 -1
  50. package/dist/queryConstants-DjYiOKxE.js +18 -0
  51. package/dist/queryConstants-DjYiOKxE.js.map +1 -0
  52. package/dist/queryConstants-Vrcjv9lF.js +14 -0
  53. package/dist/queryConstants-Vrcjv9lF.js.map +1 -0
  54. package/dist/useApprovalRequest-D_WJmB5t.js +53 -0
  55. package/dist/useApprovalRequest-D_WJmB5t.js.map +1 -0
  56. package/dist/useApprovalRequest-XjfcKfLQ.js +57 -0
  57. package/dist/useApprovalRequest-XjfcKfLQ.js.map +1 -0
  58. package/dist/useApproversApi-B7ChYonT.js +32 -0
  59. package/dist/useApproversApi-B7ChYonT.js.map +1 -0
  60. package/dist/useApproversApi-BO6XC1KJ.js +34 -0
  61. package/dist/useApproversApi-BO6XC1KJ.js.map +1 -0
  62. package/dist/useRequestsApi-DEGfFuv5.js +50 -0
  63. package/dist/useRequestsApi-DEGfFuv5.js.map +1 -0
  64. package/dist/useRequestsApi-DO-oEAzQ.js +53 -0
  65. package/dist/useRequestsApi-DO-oEAzQ.js.map +1 -0
  66. package/dist/{useTemplatesApi-CwlWKJYa.js → useTemplatesApi-BII_qvcl.js} +4 -3
  67. package/dist/useTemplatesApi-BII_qvcl.js.map +1 -0
  68. package/dist/{useTemplatesApi-BhdNkkYy.js → useTemplatesApi-ByO6idQD.js} +15 -14
  69. package/dist/useTemplatesApi-ByO6idQD.js.map +1 -0
  70. package/dist/useViewsApi-B1OpZkLp.js +76 -0
  71. package/dist/useViewsApi-B1OpZkLp.js.map +1 -0
  72. package/dist/useViewsApi-k6u7op_J.js +71 -0
  73. package/dist/useViewsApi-k6u7op_J.js.map +1 -0
  74. package/dist/v2/Approvals.js +986 -0
  75. package/dist/v2/Approvals.js.map +1 -0
  76. package/dist/v2/Form.js +197 -0
  77. package/dist/v2/Form.js.map +1 -0
  78. package/dist/v2/Public.js +128 -0
  79. package/dist/v2/Public.js.map +1 -0
  80. package/dist/v2/RequestDetailsPane.js +25 -0
  81. package/dist/v2/RequestDetailsPane.js.map +1 -0
  82. package/dist/v2/index.js +50 -0
  83. package/dist/v2/index.js.map +1 -0
  84. package/package.json +48 -38
  85. package/dist/constants-B5EiwxHH.js.map +0 -1
  86. package/dist/constants-BX-hlAjh.js.map +0 -1
  87. package/dist/index-BBsNL9uK.js.map +0 -1
  88. package/dist/index-pLvVQgrV.js.map +0 -1
  89. package/dist/useTemplatesApi-BhdNkkYy.js.map +0 -1
  90. package/dist/useTemplatesApi-CwlWKJYa.js.map +0 -1
@@ -0,0 +1,1007 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var react = require('react');
6
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/v2/react-utils');
7
+ var Container = require('@bigbinary/neeto-molecules/v2/Container');
8
+ var reactRouterDom = require('react-router-dom');
9
+ var useViewsApi = require('../../useViewsApi-B1OpZkLp.js');
10
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
11
+ var i18next = require('i18next');
12
+ var constants$1 = require('@bigbinary/neeto-commons-frontend/v2/constants');
13
+ var neetoCist = require('@bigbinary/neeto-cist');
14
+ var TableWrapper = require('@bigbinary/neeto-molecules/v2/TableWrapper');
15
+ var ramda = require('ramda');
16
+ var reactI18next = require('react-i18next');
17
+ var useRequestsApi = require('../../useRequestsApi-DO-oEAzQ.js');
18
+ var DateFormat = require('@bigbinary/neeto-molecules/v2/DateFormat');
19
+ var constants = require('../../constants-DaDwtZe3.js');
20
+ var jsxRuntime = require('react/jsx-runtime');
21
+ var v2_RequestDetailsPane = require('../../index-hZqdAkyl.js');
22
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
23
+ var PageLoader = require('@bigbinary/neeto-molecules/v2/PageLoader');
24
+ var useTemplatesApi = require('../../useTemplatesApi-ByO6idQD.js');
25
+ var formik$1 = require('@bigbinary/neeto-atoms/formik');
26
+ var utils = require('@bigbinary/neeto-editor/v2/utils');
27
+ var yup = require('yup');
28
+ var formik = require('formik');
29
+ var ToggleFeatureCard = require('@bigbinary/neeto-molecules/v2/ToggleFeatureCard');
30
+ var FormikEditor = require('@bigbinary/neeto-editor/v2/FormikEditor');
31
+ var EditorContent = require('@bigbinary/neeto-editor/v2/EditorContent');
32
+ var MoreDropdown = require('@bigbinary/neeto-molecules/v2/MoreDropdown');
33
+ var NeetoHeader = require('@bigbinary/neeto-molecules/v2/Header');
34
+ require('@bigbinary/neeto-commons-frontend/constants');
35
+ require('@tanstack/react-query');
36
+ require('axios');
37
+ require('../../queryConstants-DjYiOKxE.js');
38
+ require('@bigbinary/neeto-commons-frontend/react-utils');
39
+ require('@bigbinary/neeto-commons-frontend/v2/utils');
40
+ require('@bigbinary/neeto-commons-frontend/utils/timezonePlugin');
41
+ require('dayjs/plugin/utc');
42
+ require('@bigbinary/neeto-commons-frontend/utils');
43
+ require('@bigbinary/neeto-commons-frontend/v2/initializers');
44
+ require('../../constants-BwvPJzqf.js');
45
+ require('@bigbinary/neeto-editor/utils');
46
+
47
+ function _interopNamespaceDefault(e) {
48
+ var n = Object.create(null);
49
+ if (e) {
50
+ Object.keys(e).forEach(function (k) {
51
+ if (k !== 'default') {
52
+ var d = Object.getOwnPropertyDescriptor(e, k);
53
+ Object.defineProperty(n, k, d.get ? d : {
54
+ enumerable: true,
55
+ get: function () { return e[k]; }
56
+ });
57
+ }
58
+ });
59
+ }
60
+ n.default = e;
61
+ return Object.freeze(n);
62
+ }
63
+
64
+ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
65
+
66
+ var STATUS_BADGE_VARIANT = {
67
+ primary: "default",
68
+ success: "green-subtle",
69
+ danger: "red-subtle",
70
+ warning: "amber-subtle"
71
+ };
72
+ var HISTORY_TABLE_COLUMNS = [{
73
+ accessorKey: "approvalLabel",
74
+ id: "approvalLabel",
75
+ enableSorting: true,
76
+ size: 150,
77
+ header: i18next.t("neetoApprovals.common.id"),
78
+ cell: function cell(_ref) {
79
+ var _ref$row$original = _ref.row.original,
80
+ approvalLabel = _ref$row$original.approvalLabel,
81
+ requestableUrl = _ref$row$original.requestableUrl;
82
+ var url = new URL(requestableUrl || window.location.origin);
83
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
84
+ label: approvalLabel,
85
+ to: url.pathname,
86
+ variant: "link"
87
+ });
88
+ }
89
+ }, {
90
+ accessorKey: "title",
91
+ id: "title",
92
+ enableSorting: true,
93
+ size: 400,
94
+ header: i18next.t("neetoApprovals.common.title")
95
+ }, {
96
+ accessorKey: "status",
97
+ id: "status",
98
+ enableSorting: true,
99
+ size: 200,
100
+ header: i18next.t("neetoApprovals.common.status"),
101
+ cell: function cell(_ref2) {
102
+ var status = _ref2.row.original.status;
103
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Badge, {
104
+ variant: STATUS_BADGE_VARIANT[constants.STATUS_TAG_STYLE[status]],
105
+ children: neetoCist.capitalize(status)
106
+ });
107
+ }
108
+ }, {
109
+ accessorKey: "createdAt",
110
+ id: "createdAt",
111
+ enableSorting: true,
112
+ size: 200,
113
+ header: i18next.t("neetoApprovals.common.created"),
114
+ cell: function cell(_ref3) {
115
+ var createdAt = _ref3.row.original.createdAt;
116
+ return /*#__PURE__*/jsxRuntime.jsx(DateFormat.FromNow, {
117
+ date: createdAt,
118
+ typographyProps: {
119
+ variant: "body2"
120
+ }
121
+ });
122
+ }
123
+ }];
124
+
125
+ function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
126
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
127
+ var History = function History(_ref) {
128
+ var helpDocUrl = _ref.helpDocUrl,
129
+ requestUrl = _ref.requestUrl;
130
+ var _useState = react.useState(constants.DEFAULT_FILTER_VALUES),
131
+ _useState2 = _slicedToArray(_useState, 2),
132
+ filters = _useState2[0],
133
+ setFilters = _useState2[1];
134
+ var debouncedSearchTerm = reactUtils.useDebounce(filters.searchTerm, constants.SEARCH_DELAY);
135
+ var _usePaginate = useViewsApi.usePaginate(),
136
+ pageProperties = _usePaginate.pageProperties,
137
+ handlePageChange = _usePaginate.handlePageChange;
138
+ var _useState3 = react.useState({}),
139
+ _useState4 = _slicedToArray(_useState3, 2),
140
+ approvalDetails = _useState4[0],
141
+ setApprovalDetails = _useState4[1];
142
+ var _useTranslation = reactI18next.useTranslation(),
143
+ t = _useTranslation.t;
144
+ var _useFetchRequests = useRequestsApi.useFetchRequests({
145
+ params: _objectSpread$6(_objectSpread$6(_objectSpread$6({}, pageProperties), filters), {}, {
146
+ searchTerm: debouncedSearchTerm.trim(),
147
+ status: [constants.STATUSES.approved, constants.STATUSES.rejected, constants.STATUSES.cancelled]
148
+ }),
149
+ requestUrl: requestUrl
150
+ }),
151
+ data = _useFetchRequests.data;
152
+ var _ref2 = data || {},
153
+ _ref2$requests = _ref2.requests,
154
+ approvalHistories = _ref2$requests === void 0 ? {} : _ref2$requests,
155
+ _ref2$totalCount = _ref2.totalCount,
156
+ totalCount = _ref2$totalCount === void 0 ? 0 : _ref2$totalCount;
157
+ react.useEffect(function () {
158
+ if (!data) return;
159
+ useViewsApi.handleEmptyPage(data === null || data === void 0 ? void 0 : data.requests, pageProperties, handlePageChange);
160
+ setApprovalDetails(function (approvalDetails) {
161
+ return v2_RequestDetailsPane.updateApprovalDetails({
162
+ requestsData: data === null || data === void 0 ? void 0 : data.requests,
163
+ approvalDetails: approvalDetails
164
+ });
165
+ });
166
+ }, [data]);
167
+ var handleTableChange = function handleTableChange(sorter) {
168
+ setFilters(_objectSpread$6(_objectSpread$6({}, filters), {}, {
169
+ sortBy: neetoCist.camelToSnakeCase(sorter.field || ""),
170
+ orderBy: constants.SORT_ORDER[sorter.order]
171
+ }));
172
+ };
173
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
174
+ children: [!ramda.isEmpty(approvalHistories) ? /*#__PURE__*/jsxRuntime.jsx(TableWrapper, {
175
+ className: "mt-6",
176
+ hasPagination: totalCount > pageProperties.pageSize,
177
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DataTable, {
178
+ totalCount: totalCount,
179
+ allowRowClick: true,
180
+ columns: HISTORY_TABLE_COLUMNS,
181
+ currentPage: pageProperties.page,
182
+ data: approvalHistories,
183
+ pageSize: pageProperties.pageSize,
184
+ onPageChange: handlePageChange,
185
+ onSort: function onSort(sorter) {
186
+ return handleTableChange(sorter !== null && sorter !== void 0 ? sorter : {});
187
+ },
188
+ onRowClick: function onRowClick(_, approvalDetails) {
189
+ return setApprovalDetails(approvalDetails);
190
+ }
191
+ })
192
+ }) : /*#__PURE__*/jsxRuntime.jsx("div", {
193
+ className: "flex h-full w-full flex-grow items-center justify-center",
194
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Empty, {
195
+ helpText: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
196
+ i18nKey: "neetoApprovals.common.noDataHelpTextLearnMore",
197
+ values: {
198
+ entity: t("neetoApprovals.common.history")
199
+ },
200
+ components: {
201
+ a: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
202
+ target: "_blank",
203
+ to: helpDocUrl,
204
+ variant: "link"
205
+ })
206
+ }
207
+ }),
208
+ title: t("neetoApprovals.common.notFound_", {
209
+ what: t("neetoApprovals.common.record", constants$1.PLURAL)
210
+ })
211
+ })
212
+ }), /*#__PURE__*/jsxRuntime.jsx(v2_RequestDetailsPane.RequestDetailsPane, {
213
+ approvalDetails: approvalDetails,
214
+ isOpen: neetoCist.isPresent(approvalDetails),
215
+ onClose: function onClose() {
216
+ return setApprovalDetails({});
217
+ }
218
+ })]
219
+ });
220
+ };
221
+
222
+ var PENDING_TABLE_COLUMNS = neetoCist.removeBy({
223
+ id: "status"
224
+ }, HISTORY_TABLE_COLUMNS);
225
+
226
+ function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
227
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
228
+ var PendingRequests = function PendingRequests(_ref) {
229
+ var helpDocUrl = _ref.helpDocUrl,
230
+ requestUrl = _ref.requestUrl;
231
+ var _useState = react.useState(constants.DEFAULT_FILTER_VALUES),
232
+ _useState2 = _slicedToArray(_useState, 2),
233
+ filters = _useState2[0],
234
+ setFilters = _useState2[1];
235
+ var _useState3 = react.useState({}),
236
+ _useState4 = _slicedToArray(_useState3, 2),
237
+ approvalDetails = _useState4[0],
238
+ setApprovalDetails = _useState4[1];
239
+ var debouncedSearchTerm = reactUtils.useDebounce(filters.searchTerm, constants.SEARCH_DELAY);
240
+ var _usePaginate = useViewsApi.usePaginate(),
241
+ pageProperties = _usePaginate.pageProperties,
242
+ handlePageChange = _usePaginate.handlePageChange;
243
+ var _useTranslation = reactI18next.useTranslation(),
244
+ t = _useTranslation.t;
245
+ var _useFetchRequests = useRequestsApi.useFetchRequests({
246
+ params: _objectSpread$5(_objectSpread$5(_objectSpread$5({}, pageProperties), filters), {}, {
247
+ searchTerm: debouncedSearchTerm.trim(),
248
+ status: [constants.STATUSES.pending]
249
+ }),
250
+ requestUrl: requestUrl
251
+ }),
252
+ data = _useFetchRequests.data;
253
+ var _ref2 = data || {},
254
+ _ref2$requests = _ref2.requests,
255
+ pendingRequests = _ref2$requests === void 0 ? {} : _ref2$requests,
256
+ _ref2$totalCount = _ref2.totalCount,
257
+ totalCount = _ref2$totalCount === void 0 ? 0 : _ref2$totalCount;
258
+ react.useEffect(function () {
259
+ if (!data) return;
260
+ useViewsApi.handleEmptyPage(data === null || data === void 0 ? void 0 : data.requests, pageProperties, handlePageChange);
261
+ }, [data]);
262
+ var handleTableChange = function handleTableChange(sorter) {
263
+ setFilters(_objectSpread$5(_objectSpread$5({}, filters), {}, {
264
+ sortBy: neetoCist.camelToSnakeCase(sorter.field || ""),
265
+ orderBy: constants.SORT_ORDER[sorter.order]
266
+ }));
267
+ };
268
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
269
+ children: [!ramda.isEmpty(pendingRequests) ? /*#__PURE__*/jsxRuntime.jsx(TableWrapper, {
270
+ className: "mt-6",
271
+ hasPagination: totalCount > pageProperties.pageSize,
272
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DataTable, {
273
+ totalCount: totalCount,
274
+ allowRowClick: true,
275
+ columns: PENDING_TABLE_COLUMNS,
276
+ currentPage: pageProperties.page,
277
+ data: pendingRequests,
278
+ pageSize: pageProperties.pageSize,
279
+ onPageChange: handlePageChange,
280
+ onSort: function onSort(sorter) {
281
+ return handleTableChange(sorter !== null && sorter !== void 0 ? sorter : {});
282
+ },
283
+ onRowClick: function onRowClick(_, approvalDetails) {
284
+ return setApprovalDetails(approvalDetails);
285
+ }
286
+ })
287
+ }) : /*#__PURE__*/jsxRuntime.jsx("div", {
288
+ className: "flex h-full w-full flex-grow items-center justify-center",
289
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Empty, {
290
+ helpText: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
291
+ i18nKey: "neetoApprovals.common.noDataHelpTextLearnMore",
292
+ components: {
293
+ a: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
294
+ target: "_blank",
295
+ to: helpDocUrl,
296
+ variant: "link"
297
+ })
298
+ },
299
+ values: {
300
+ entity: t("neetoApprovals.common.pendingApproval", constants$1.PLURAL)
301
+ }
302
+ }),
303
+ title: t("neetoApprovals.common.notFound_", {
304
+ what: t("neetoApprovals.common.pendingApproval", constants$1.PLURAL)
305
+ })
306
+ })
307
+ }), /*#__PURE__*/jsxRuntime.jsx(v2_RequestDetailsPane.RequestDetailsPane, {
308
+ approvalDetails: approvalDetails,
309
+ isPending: true,
310
+ isOpen: neetoCist.isPresent(approvalDetails),
311
+ onClose: function onClose() {
312
+ return setApprovalDetails({});
313
+ }
314
+ })]
315
+ });
316
+ };
317
+
318
+ var TEMPLATE_FORM_INITIAL_VALUES = {
319
+ name: "",
320
+ description: "",
321
+ message: ""
322
+ };
323
+ var TEMPLATE_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
324
+ name: yup__namespace.string().trim().required(i18next.t("neetoApprovals.validations.required", {
325
+ what: i18next.t("neetoApprovals.common.name")
326
+ })),
327
+ message: yup__namespace.string().test("message", i18next.t("neetoApprovals.validations.required", {
328
+ what: i18next.t("neetoApprovals.inputs.labels.message")
329
+ }), function (content) {
330
+ return !utils.isEditorEmpty(content);
331
+ })
332
+ });
333
+
334
+ var MessageEditor = reactUtils.withT(function (_ref) {
335
+ var t = _ref.t,
336
+ _ref$placeholders = _ref.placeholders,
337
+ placeholders = _ref$placeholders === void 0 ? [] : _ref$placeholders,
338
+ _ref$initialValue = _ref.initialValue,
339
+ initialValue = _ref$initialValue === void 0 ? "" : _ref$initialValue;
340
+ return /*#__PURE__*/jsxRuntime.jsx(FormikEditor, {
341
+ initialValue: initialValue,
342
+ required: true,
343
+ label: t("neetoApprovals.inputs.labels.message"),
344
+ name: "message",
345
+ rows: 3,
346
+ variables: placeholders,
347
+ placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
348
+ what: t("neetoApprovals.inputs.labels.message")
349
+ })
350
+ });
351
+ });
352
+
353
+ var TemplateForm = function TemplateForm(_ref) {
354
+ var placeholders = _ref.placeholders,
355
+ initialData = _ref.initialData;
356
+ var _useTranslation = reactI18next.useTranslation(),
357
+ t = _useTranslation.t;
358
+ var _useFormikContext = formik.useFormikContext(),
359
+ values = _useFormikContext.values,
360
+ setFieldValue = _useFormikContext.setFieldValue;
361
+ var handleDescriptionToggle = function handleDescriptionToggle(checked) {
362
+ setFieldValue("descriptionEnabled", checked);
363
+ if (!checked) {
364
+ setFieldValue("description", "");
365
+ }
366
+ };
367
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
368
+ className: "flex w-full flex-col space-y-6",
369
+ children: [/*#__PURE__*/jsxRuntime.jsx(formik$1.Input, {
370
+ autoFocus: true,
371
+ required: true,
372
+ label: t("neetoApprovals.common.name"),
373
+ name: "name",
374
+ placeholder: t("neetoApprovals.inputs.placeholders.name")
375
+ }), /*#__PURE__*/jsxRuntime.jsx(ToggleFeatureCard, {
376
+ switchName: "descriptionEnabled",
377
+ title: t("neetoApprovals.inputs.labels.description"),
378
+ switchProps: {
379
+ onCheckedChange: handleDescriptionToggle,
380
+ tooltipProps: {
381
+ enabledSwitchText: t("neetoApprovals.templates.descriptionToggle.enable"),
382
+ disabledSwitchText: t("neetoApprovals.templates.descriptionToggle.disable")
383
+ }
384
+ },
385
+ children: values.descriptionEnabled && /*#__PURE__*/jsxRuntime.jsx(formik$1.Textarea, {
386
+ className: "w-full",
387
+ name: "description",
388
+ placeholder: t("neetoApprovals.inputs.placeholders.description")
389
+ })
390
+ }), /*#__PURE__*/jsxRuntime.jsx(MessageEditor, {
391
+ placeholders: placeholders,
392
+ initialValue: initialData.message
393
+ })]
394
+ });
395
+ };
396
+
397
+ var Form = function Form(_ref) {
398
+ var isOpen = _ref.isOpen,
399
+ onClose = _ref.onClose,
400
+ _ref$initialData = _ref.initialData,
401
+ initialData = _ref$initialData === void 0 ? {} : _ref$initialData,
402
+ _ref$onSubmit = _ref.onSubmit,
403
+ onSubmit = _ref$onSubmit === void 0 ? neetoCist.noop : _ref$onSubmit,
404
+ _ref$isLoading = _ref.isLoading,
405
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
406
+ placeholders = _ref.placeholders;
407
+ var _useTranslation = reactI18next.useTranslation(),
408
+ t = _useTranslation.t;
409
+ var header = ramda.isEmpty(initialData) ? t("neetoApprovals.common.addNew_", {
410
+ what: t("neetoApprovals.common.template", constants$1.SINGULAR)
411
+ }) : t("neetoApprovals.common.edit_", {
412
+ what: t("neetoApprovals.common.template", constants$1.SINGULAR)
413
+ });
414
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Sheet, {
415
+ isOpen: isOpen,
416
+ onClose: onClose,
417
+ size: "large",
418
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Header, {
419
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
420
+ variant: "h2",
421
+ children: header
422
+ })
423
+ }), /*#__PURE__*/jsxRuntime.jsxs(formik$1.Form, {
424
+ formikProps: {
425
+ enableReinitialize: true,
426
+ initialValues: neetoCist.isPresent(initialData) ? initialData : TEMPLATE_FORM_INITIAL_VALUES,
427
+ validationSchema: TEMPLATE_FORM_VALIDATION_SCHEMA,
428
+ onSubmit: onSubmit
429
+ },
430
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Body, {
431
+ children: /*#__PURE__*/jsxRuntime.jsx(TemplateForm, {
432
+ initialData: initialData,
433
+ placeholders: placeholders
434
+ })
435
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Footer, {
436
+ children: /*#__PURE__*/jsxRuntime.jsx(formik$1.ActionBlock, {
437
+ isSubmitting: isLoading,
438
+ cancelButtonProps: {
439
+ "data-testid": "neeto-approvals-templates-close-template-form-btn",
440
+ onClick: onClose
441
+ },
442
+ submitButtonProps: {
443
+ "data-testid": "neeto-approvals-templates-save-template-btn"
444
+ }
445
+ })
446
+ })]
447
+ })]
448
+ });
449
+ };
450
+
451
+ var Create = function Create(_ref) {
452
+ var templateUrl = _ref.templateUrl,
453
+ isOpen = _ref.isOpen,
454
+ onClose = _ref.onClose,
455
+ templatePlaceholders = _ref.templatePlaceholders;
456
+ var _useCreateTemplate = useTemplatesApi.useCreateTemplate(),
457
+ createTemplate = _useCreateTemplate.mutate,
458
+ isPending = _useCreateTemplate.isPending;
459
+ var onSubmit = function onSubmit(template) {
460
+ var payload = {
461
+ template: template
462
+ };
463
+ createTemplate({
464
+ url: templateUrl,
465
+ payload: payload
466
+ }, {
467
+ onSuccess: onClose
468
+ });
469
+ };
470
+ return /*#__PURE__*/jsxRuntime.jsx(Form, {
471
+ isOpen: isOpen,
472
+ onClose: onClose,
473
+ onSubmit: onSubmit,
474
+ isLoading: isPending,
475
+ placeholders: templatePlaceholders
476
+ });
477
+ };
478
+
479
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
480
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
481
+ var Edit = function Edit(_ref) {
482
+ var templateUrl = _ref.templateUrl,
483
+ template = _ref.template,
484
+ setTemplate = _ref.setTemplate,
485
+ isOpen = _ref.isOpen,
486
+ onClose = _ref.onClose,
487
+ templatePlaceholders = _ref.templatePlaceholders;
488
+ var _useUpdateTemplate = useTemplatesApi.useUpdateTemplate({
489
+ onSuccess: function onSuccess() {
490
+ return setTemplate({});
491
+ }
492
+ }),
493
+ updateTemplate = _useUpdateTemplate.mutate,
494
+ isUpdating = _useUpdateTemplate.isPending;
495
+ var onSubmit = function onSubmit(template) {
496
+ var payload = {
497
+ template: template
498
+ };
499
+ updateTemplate({
500
+ id: template.id,
501
+ payload: payload,
502
+ url: templateUrl
503
+ });
504
+ };
505
+ var initialData = _objectSpread$4(_objectSpread$4({}, template), {}, {
506
+ descriptionEnabled: !!template.description
507
+ });
508
+ return /*#__PURE__*/jsxRuntime.jsx(Form, {
509
+ initialData: initialData,
510
+ isOpen: isOpen,
511
+ onClose: onClose,
512
+ onSubmit: onSubmit,
513
+ isLoading: isUpdating,
514
+ placeholders: templatePlaceholders
515
+ });
516
+ };
517
+
518
+ var Field = function Field(_ref) {
519
+ var label = _ref.label,
520
+ value = _ref.value;
521
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
522
+ className: "flex flex-col items-start justify-center",
523
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
524
+ className: "mb-1 font-normal",
525
+ children: label
526
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
527
+ variant: "body1",
528
+ weight: "medium",
529
+ children: value
530
+ })]
531
+ });
532
+ };
533
+ var Field$1 = /*#__PURE__*/react.memo(Field);
534
+
535
+ var MemoizedEditorContent = /*#__PURE__*/react.memo(EditorContent);
536
+ var TemplateDetails = function TemplateDetails(_ref) {
537
+ var isOpen = _ref.isOpen,
538
+ onClose = _ref.onClose,
539
+ template = _ref.template;
540
+ var _useTranslation = reactI18next.useTranslation(),
541
+ t = _useTranslation.t;
542
+ var name = template.name,
543
+ description = template.description,
544
+ message = template.message;
545
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Sheet, {
546
+ isOpen: isOpen,
547
+ onClose: onClose,
548
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Header, {
549
+ className: "space-y-2",
550
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
551
+ variant: "h2",
552
+ children: t("neetoApprovals.common.templateDetails")
553
+ })
554
+ }), /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Sheet.Body, {
555
+ className: "space-y-6",
556
+ children: [/*#__PURE__*/jsxRuntime.jsx(Field$1, {
557
+ label: t("neetoApprovals.common.name"),
558
+ value: name
559
+ }), /*#__PURE__*/jsxRuntime.jsx(Field$1, {
560
+ label: t("neetoApprovals.inputs.labels.description"),
561
+ value: description
562
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
563
+ className: "flex w-full flex-col space-y-4",
564
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
565
+ className: "mb-1 font-normal",
566
+ children: t("neetoApprovals.inputs.labels.message")
567
+ }), /*#__PURE__*/jsxRuntime.jsx(MemoizedEditorContent, {
568
+ className: "bg-muted rounded-lg p-3",
569
+ content: message
570
+ })]
571
+ })]
572
+ })]
573
+ });
574
+ };
575
+
576
+ var renderNoDataHelpText = function renderNoDataHelpText(_ref) {
577
+ var entity = _ref.entity,
578
+ url = _ref.url;
579
+ return /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
580
+ i18nKey: "neetoApprovals.common.noDataHelpText",
581
+ values: {
582
+ entity: entity.toLocaleLowerCase()
583
+ },
584
+ components: {
585
+ a: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
586
+ target: "_blank",
587
+ to: {
588
+ pathname: url
589
+ },
590
+ variant: "link"
591
+ })
592
+ }
593
+ });
594
+ };
595
+
596
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
597
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
598
+ var Table = function Table(_ref) {
599
+ var entity = _ref.entity,
600
+ columnData = _ref.columnData,
601
+ rowData = _ref.rowData,
602
+ totalCount = _ref.totalCount,
603
+ filters = _ref.filters,
604
+ setFilters = _ref.setFilters,
605
+ setIsPaneOpen = _ref.setIsPaneOpen,
606
+ helpDocUrl = _ref.helpDocUrl,
607
+ onEditClick = _ref.onEditClick,
608
+ onDeleteClick = _ref.onDeleteClick,
609
+ onRowClick = _ref.onRowClick,
610
+ handlePageChange = _ref.handlePageChange,
611
+ pageProperties = _ref.pageProperties;
612
+ var _useTranslation = reactI18next.useTranslation(),
613
+ t = _useTranslation.t;
614
+ var columns = columnData({
615
+ onEditClick: onEditClick,
616
+ onDeleteClick: onDeleteClick
617
+ });
618
+ var handleSort = function handleSort() {
619
+ var sorter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
620
+ setFilters(_objectSpread$3(_objectSpread$3({}, filters), {}, {
621
+ sortBy: sorter.field,
622
+ orderBy: constants.SORT_ORDER[sorter.order]
623
+ }));
624
+ };
625
+ var noDataProps = {
626
+ primaryButtonProps: {
627
+ label: t("neetoApprovals.common.addNew_", {
628
+ what: t("neetoApprovals.common.template", constants$1.SINGULAR)
629
+ }),
630
+ onClick: function onClick() {
631
+ return setIsPaneOpen(true);
632
+ }
633
+ },
634
+ helpText: renderNoDataHelpText({
635
+ entity: entity,
636
+ url: helpDocUrl
637
+ })
638
+ };
639
+ if (ramda.isEmpty(rowData)) {
640
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
641
+ className: "flex h-full w-full flex-grow items-center justify-center",
642
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Empty, _objectSpread$3({
643
+ title: t("neetoApprovals.common.notFound_", {
644
+ what: entity
645
+ })
646
+ }, !filters.searchTerm && noDataProps))
647
+ });
648
+ }
649
+ return /*#__PURE__*/jsxRuntime.jsx(TableWrapper, {
650
+ className: "mt-6",
651
+ hasPagination: totalCount > pageProperties.pageSize,
652
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DataTable, {
653
+ columns: columns,
654
+ onRowClick: onRowClick,
655
+ totalCount: totalCount,
656
+ currentPage: pageProperties.page,
657
+ data: rowData,
658
+ pageSize: pageProperties.pageSize,
659
+ onPageChange: handlePageChange,
660
+ onSort: function onSort(sorter) {
661
+ return handleSort(sorter !== null && sorter !== void 0 ? sorter : {});
662
+ }
663
+ })
664
+ });
665
+ };
666
+
667
+ var columnData = function columnData(_ref) {
668
+ var onEditClick = _ref.onEditClick,
669
+ onDeleteClick = _ref.onDeleteClick;
670
+ return [{
671
+ accessorKey: "name",
672
+ id: "name",
673
+ enableSorting: true,
674
+ header: i18next.t("neetoApprovals.common.name"),
675
+ size: 300,
676
+ cell: function cell(_ref2) {
677
+ var template = _ref2.row.original;
678
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
679
+ className: "flex items-center justify-between gap-x-3",
680
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
681
+ className: "truncate",
682
+ variant: "body2",
683
+ children: template.name
684
+ }), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
685
+ dropdownButtonProps: {
686
+ className: "me-1 my-1"
687
+ },
688
+ dropdownProps: {
689
+ onClick: function onClick(e) {
690
+ return e.stopPropagation();
691
+ }
692
+ },
693
+ menuItems: [_defineProperty({
694
+ key: "edit",
695
+ label: i18next.t("neetoApprovals.common.edit"),
696
+ onClick: function onClick(event) {
697
+ return onEditClick(event, template);
698
+ }
699
+ }, constants.DATA_TESTID_KEY, "neeto-approvals-templates-edit-template-btn"), _defineProperty({
700
+ key: "delete",
701
+ label: i18next.t("neetoApprovals.common.delete"),
702
+ onClick: function onClick(event) {
703
+ return onDeleteClick(event, template);
704
+ }
705
+ }, constants.DATA_TESTID_KEY, "neeto-approvals-templates-delete-template-btn")]
706
+ })]
707
+ });
708
+ }
709
+ }, {
710
+ accessorKey: "description",
711
+ id: "description",
712
+ header: i18next.t("neetoApprovals.inputs.labels.description"),
713
+ size: 400
714
+ }];
715
+ };
716
+
717
+ var _excluded = ["searchTerm", "isNewTemplatePaneOpen", "setIsNewTemplatePaneOpen", "helpDocUrl"];
718
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
719
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
720
+ var Templates = function Templates(_ref) {
721
+ var searchTerm = _ref.searchTerm,
722
+ isNewTemplatePaneOpen = _ref.isNewTemplatePaneOpen,
723
+ setIsNewTemplatePaneOpen = _ref.setIsNewTemplatePaneOpen,
724
+ helpDocUrl = _ref.helpDocUrl,
725
+ otherProps = _objectWithoutProperties(_ref, _excluded);
726
+ var _useState = react.useState(constants.DEFAULT_FILTER_VALUES),
727
+ _useState2 = _slicedToArray(_useState, 2),
728
+ filters = _useState2[0],
729
+ setFilters = _useState2[1];
730
+ var _useState3 = react.useState({}),
731
+ _useState4 = _slicedToArray(_useState3, 2),
732
+ selectedTemplate = _useState4[0],
733
+ setSelectedTemplate = _useState4[1];
734
+ var _useState5 = react.useState(false),
735
+ _useState6 = _slicedToArray(_useState5, 2),
736
+ isDeleteAlertOpen = _useState6[0],
737
+ setIsDeleteAlertOpen = _useState6[1];
738
+ var _useState7 = react.useState(false),
739
+ _useState8 = _slicedToArray(_useState7, 2),
740
+ isEditPaneOpen = _useState8[0],
741
+ setIsEditPaneOpen = _useState8[1];
742
+ var _useState9 = react.useState(false),
743
+ _useState0 = _slicedToArray(_useState9, 2),
744
+ isShowPaneOpen = _useState0[0],
745
+ setIsShowPaneOpen = _useState0[1];
746
+ var _usePaginate = useViewsApi.usePaginate(),
747
+ pageProperties = _usePaginate.pageProperties,
748
+ handlePageChange = _usePaginate.handlePageChange,
749
+ resetPageProperties = _usePaginate.resetPageProperties;
750
+ var _useTranslation = reactI18next.useTranslation(),
751
+ t = _useTranslation.t;
752
+ var debouncedSearchTerm = reactUtils.useDebounce(searchTerm, constants.SEARCH_DELAY);
753
+ react.useEffect(function () {
754
+ resetPageProperties();
755
+ }, [searchTerm]);
756
+ var _useFetchTemplates = useTemplatesApi.useFetchTemplates(_objectSpread$2(_objectSpread$2(_objectSpread$2({}, pageProperties), filters), {}, {
757
+ searchTerm: debouncedSearchTerm.trim()
758
+ })),
759
+ data = _useFetchTemplates.data,
760
+ isTemplateLoading = _useFetchTemplates.isLoading;
761
+ var _ref2 = data || {},
762
+ _ref2$templates = _ref2.templates,
763
+ templates = _ref2$templates === void 0 ? [] : _ref2$templates,
764
+ _ref2$totalCount = _ref2.totalCount,
765
+ totalCount = _ref2$totalCount === void 0 ? 0 : _ref2$totalCount;
766
+ react.useEffect(function () {
767
+ if (data) {
768
+ useViewsApi.handleEmptyPage(data === null || data === void 0 ? void 0 : data.templates, pageProperties, handlePageChange);
769
+ }
770
+ }, [data]);
771
+ var _useDeleteTemplate = useTemplatesApi.useDeleteTemplate(),
772
+ deleteTemplate = _useDeleteTemplate.mutate,
773
+ isDeleting = _useDeleteTemplate.isPending;
774
+ react.useEffect(function () {
775
+ if (!ramda.isEmpty(selectedTemplate)) return;
776
+ setIsDeleteAlertOpen(false);
777
+ setIsEditPaneOpen(false);
778
+ setIsShowPaneOpen(false);
779
+ }, [selectedTemplate]);
780
+ var onEditClick = function onEditClick(event, template) {
781
+ event.stopPropagation();
782
+ setSelectedTemplate(template);
783
+ setIsEditPaneOpen(true);
784
+ };
785
+ var onRowClick = function onRowClick(_, templateDetails) {
786
+ setSelectedTemplate(templateDetails);
787
+ setIsShowPaneOpen(true);
788
+ };
789
+ var onDeleteClick = function onDeleteClick(event, template) {
790
+ event.stopPropagation();
791
+ setSelectedTemplate(template);
792
+ setIsDeleteAlertOpen(true);
793
+ };
794
+ var handleDelete = function handleDelete(templateId) {
795
+ deleteTemplate({
796
+ templateId: templateId
797
+ });
798
+ setSelectedTemplate({});
799
+ };
800
+ var entity = t("neetoApprovals.common.template", constants$1.PLURAL);
801
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
802
+ children: [isTemplateLoading ? /*#__PURE__*/jsxRuntime.jsx(PageLoader, {}) : /*#__PURE__*/jsxRuntime.jsx(Table, {
803
+ columnData: columnData,
804
+ entity: entity,
805
+ filters: filters,
806
+ handlePageChange: handlePageChange,
807
+ helpDocUrl: helpDocUrl,
808
+ onDeleteClick: onDeleteClick,
809
+ onEditClick: onEditClick,
810
+ onRowClick: onRowClick,
811
+ pageProperties: pageProperties,
812
+ searchTerm: searchTerm,
813
+ setFilters: setFilters,
814
+ totalCount: totalCount,
815
+ rowData: templates,
816
+ setIsPaneOpen: setIsNewTemplatePaneOpen
817
+ }), /*#__PURE__*/jsxRuntime.jsx(Create, _objectSpread$2({
818
+ isOpen: isNewTemplatePaneOpen,
819
+ onClose: function onClose() {
820
+ return setIsNewTemplatePaneOpen(false);
821
+ }
822
+ }, otherProps)), /*#__PURE__*/jsxRuntime.jsx(Edit, _objectSpread$2(_objectSpread$2({
823
+ isOpen: isEditPaneOpen,
824
+ setTemplate: setSelectedTemplate,
825
+ template: selectedTemplate
826
+ }, otherProps), {}, {
827
+ onClose: function onClose() {
828
+ return setIsEditPaneOpen(false);
829
+ }
830
+ })), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Alert, {
831
+ isOpen: isDeleteAlertOpen,
832
+ isSubmitting: isDeleting,
833
+ submitButtonLabel: t("neetoApprovals.buttons.delete"),
834
+ message: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
835
+ i18nKey: "neetoApprovals.alerts.deleting_",
836
+ values: {
837
+ what: t("neetoApprovals.common.template", constants$1.SINGULAR),
838
+ name: selectedTemplate === null || selectedTemplate === void 0 ? void 0 : selectedTemplate.name
839
+ }
840
+ }),
841
+ title: t("neetoApprovals.common.delete_", {
842
+ what: t("neetoApprovals.common.template", constants$1.SINGULAR)
843
+ }),
844
+ onClose: function onClose() {
845
+ return setSelectedTemplate({});
846
+ },
847
+ onSubmit: function onSubmit() {
848
+ return handleDelete(selectedTemplate === null || selectedTemplate === void 0 ? void 0 : selectedTemplate.id);
849
+ }
850
+ }), /*#__PURE__*/jsxRuntime.jsx(TemplateDetails, {
851
+ isOpen: isShowPaneOpen,
852
+ template: selectedTemplate,
853
+ onClose: function onClose() {
854
+ return setSelectedTemplate({});
855
+ }
856
+ })]
857
+ });
858
+ };
859
+
860
+ 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; }
861
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
862
+ var createRoutes = function createRoutes(_ref) {
863
+ var config = _ref.config,
864
+ isNewTemplatePaneOpen = _ref.isNewTemplatePaneOpen,
865
+ searchTerm = _ref.searchTerm,
866
+ setIsNewTemplatePaneOpen = _ref.setIsNewTemplatePaneOpen;
867
+ return [{
868
+ component: function component() {
869
+ return /*#__PURE__*/jsxRuntime.jsx(Templates, _objectSpread$1({}, _objectSpread$1({
870
+ isNewTemplatePaneOpen: isNewTemplatePaneOpen,
871
+ searchTerm: searchTerm,
872
+ setIsNewTemplatePaneOpen: setIsNewTemplatePaneOpen
873
+ }, config)));
874
+ },
875
+ path: "".concat(config.approvalsPath).concat(useViewsApi.routes.templates.index),
876
+ actionBlock: function actionBlock() {
877
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
878
+ "data-testid": "neeto-approvals-templates-add-new-button",
879
+ label: i18next.t("neetoApprovals.common.addNew_", {
880
+ what: i18next.t("neetoApprovals.common.template", constants$1.SINGULAR)
881
+ }),
882
+ onClick: function onClick() {
883
+ return setIsNewTemplatePaneOpen(true);
884
+ }
885
+ });
886
+ },
887
+ searchPlaceholder: i18next.t("neetoApprovals.inputs.placeholders.search_", {
888
+ what: i18next.t("neetoApprovals.common.template", constants$1.PLURAL)
889
+ })
890
+ }, {
891
+ component: function component() {
892
+ return /*#__PURE__*/jsxRuntime.jsx(PendingRequests, _objectSpread$1({}, config));
893
+ },
894
+ path: "".concat(config.approvalsPath).concat(useViewsApi.routes.pending)
895
+ }, {
896
+ component: function component() {
897
+ return /*#__PURE__*/jsxRuntime.jsx(History, _objectSpread$1({}, config));
898
+ },
899
+ path: "".concat(config.approvalsPath).concat(useViewsApi.routes.history)
900
+ }];
901
+ };
902
+
903
+ var Header = function Header(_ref) {
904
+ var _currentTab$actionBlo;
905
+ var appRoutes = _ref.appRoutes,
906
+ breadcrumbs = _ref.breadcrumbs,
907
+ titleHelpPopoverProps = _ref.titleHelpPopoverProps;
908
+ var _useTranslation = reactI18next.useTranslation(),
909
+ t = _useTranslation.t;
910
+ var _useLocation = reactRouterDom.useLocation(),
911
+ pathname = _useLocation.pathname;
912
+ var currentTab = neetoCist.findBy({
913
+ path: pathname
914
+ }, appRoutes);
915
+ return /*#__PURE__*/jsxRuntime.jsx(NeetoHeader, {
916
+ breadcrumbs: breadcrumbs,
917
+ titleHelpPopoverProps: titleHelpPopoverProps,
918
+ actionBlock: currentTab === null || currentTab === void 0 || (_currentTab$actionBlo = currentTab.actionBlock) === null || _currentTab$actionBlo === void 0 ? void 0 : _currentTab$actionBlo.call(currentTab),
919
+ title: t("neetoApprovals.common.approval", constants$1.PLURAL),
920
+ searchProps: (currentTab === null || currentTab === void 0 ? void 0 : currentTab.searchPlaceholder) && {
921
+ placeholder: currentTab === null || currentTab === void 0 ? void 0 : currentTab.searchPlaceholder
922
+ }
923
+ });
924
+ };
925
+
926
+ var Tab = function Tab(_ref) {
927
+ var _pathname$split$;
928
+ var approvalsPath = _ref.approvalsPath;
929
+ var _useLocation = reactRouterDom.useLocation(),
930
+ pathname = _useLocation.pathname;
931
+ var history = reactRouterDom.useHistory();
932
+ var approvalFilter = v2_RequestDetailsPane.getApprovalFilter();
933
+ var approvalFilterKeys = ramda.keys(approvalFilter);
934
+ var category = (_pathname$split$ = pathname.split(useViewsApi.routes.approvals)[1]) === null || _pathname$split$ === void 0 ? void 0 : _pathname$split$.toLocaleUpperCase();
935
+ var isActive = function isActive(filter) {
936
+ return category === null || category === void 0 ? void 0 : category.includes(filter);
937
+ };
938
+ var getRoute = function getRoute(filter) {
939
+ return "".concat(approvalsPath).concat(filter.toLowerCase());
940
+ };
941
+ var activeFilter = approvalFilterKeys.find(isActive);
942
+ var _useFetchViews = useViewsApi.useFetchViews(),
943
+ _useFetchViews$data = _useFetchViews.data,
944
+ _useFetchViews$data2 = _useFetchViews$data === void 0 ? {} : _useFetchViews$data,
945
+ _useFetchViews$data2$ = _useFetchViews$data2.views,
946
+ views = _useFetchViews$data2$ === void 0 ? {} : _useFetchViews$data2$;
947
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Tabs, {
948
+ value: activeFilter,
949
+ onValueChange: function onValueChange(filter) {
950
+ return history.push(getRoute(filter));
951
+ },
952
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Tabs.List, {
953
+ children: approvalFilterKeys.map(function (filter) {
954
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Tabs.Item, {
955
+ value: filter,
956
+ children: [approvalFilter[filter].label, " (", views[filter === null || filter === void 0 ? void 0 : filter.toLocaleLowerCase()] || 0, ")"]
957
+ }, filter);
958
+ })
959
+ })
960
+ });
961
+ };
962
+
963
+ 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; }
964
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
965
+ var Approvals = function Approvals(_ref) {
966
+ var config = _ref.config;
967
+ var _useQueryParams = reactUtils.useQueryParams(),
968
+ _useQueryParams$searc = _useQueryParams.searchTerm,
969
+ searchTerm = _useQueryParams$searc === void 0 ? "" : _useQueryParams$searc;
970
+ var _useState = react.useState(false),
971
+ _useState2 = _slicedToArray(_useState, 2),
972
+ isNewTemplatePaneOpen = _useState2[0],
973
+ setIsNewTemplatePaneOpen = _useState2[1];
974
+ var appRoutes = createRoutes({
975
+ config: config,
976
+ searchTerm: searchTerm,
977
+ isNewTemplatePaneOpen: isNewTemplatePaneOpen,
978
+ setIsNewTemplatePaneOpen: setIsNewTemplatePaneOpen
979
+ });
980
+ return /*#__PURE__*/jsxRuntime.jsxs(Container, {
981
+ children: [/*#__PURE__*/jsxRuntime.jsx(Header, _objectSpread({}, _objectSpread({
982
+ appRoutes: appRoutes
983
+ }, config))), /*#__PURE__*/jsxRuntime.jsx(Tab, {
984
+ approvalsPath: config.approvalsPath
985
+ }), /*#__PURE__*/jsxRuntime.jsxs(reactRouterDom.Switch, {
986
+ children: [appRoutes.map(function (_ref2) {
987
+ var path = _ref2.path,
988
+ component = _ref2.component;
989
+ return /*#__PURE__*/react.createElement(reactRouterDom.Route, {
990
+ component: component,
991
+ path: path,
992
+ exact: true,
993
+ key: path
994
+ });
995
+ }), /*#__PURE__*/jsxRuntime.jsx(reactRouterDom.Redirect, {
996
+ exact: true,
997
+ from: config.approvalsPath
998
+ // eslint-disable-next-line @bigbinary/neeto/use-common-routes
999
+ ,
1000
+ to: "".concat(config.approvalsPath).concat(useViewsApi.routes.pending)
1001
+ })]
1002
+ })]
1003
+ });
1004
+ };
1005
+
1006
+ module.exports = Approvals;
1007
+ //# sourceMappingURL=Approvals.js.map