@bigbinary/neeto-approvals-frontend 1.1.0 → 1.2.1

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