@bigbinary/neeto-approvals-frontend 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js DELETED
@@ -1,1982 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
7
- var Container = require('@bigbinary/neeto-molecules/Container');
8
- var reactRouterDom = require('react-router-dom');
9
- var i18next = require('i18next');
10
- var constants = require('@bigbinary/neeto-commons-frontend/constants');
11
- var Button = require('@bigbinary/neetoui/Button');
12
- var neetoCist = require('@bigbinary/neeto-cist');
13
- var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
14
- var Table$1 = require('@bigbinary/neetoui/Table');
15
- var NoData = require('@bigbinary/neetoui/NoData');
16
- var ramda = require('ramda');
17
- var reactI18next = require('react-i18next');
18
- var reactQuery = require('@tanstack/react-query');
19
- var axios = require('axios');
20
- var Tag = require('@bigbinary/neetoui/Tag');
21
- var DateFormat = require('@bigbinary/neeto-molecules/DateFormat');
22
- var utils = require('@bigbinary/neeto-editor/utils');
23
- var yup = require('yup');
24
- var jsxRuntime = require('react/jsx-runtime');
25
- var utils$1 = require('@bigbinary/neeto-commons-frontend/utils');
26
- var EditorContent = require('@bigbinary/neeto-editor/EditorContent');
27
- var Label = require('@bigbinary/neetoui/Label');
28
- var Pane = require('@bigbinary/neetoui/Pane');
29
- var Textarea = require('@bigbinary/neetoui/Textarea');
30
- var Typography = require('@bigbinary/neetoui/Typography');
31
- var dayjs = require('dayjs');
32
- var timezone = require('dayjs/plugin/timezone');
33
- var utc = require('dayjs/plugin/utc');
34
- var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
35
- var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
36
- var Alert = require('@bigbinary/neetoui/Alert');
37
- var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
38
- var FormikForm = require('@bigbinary/neetoui/formik/Form');
39
- var formik = require('formik');
40
- var ToggleFeatureCard = require('@bigbinary/neeto-molecules/ToggleFeatureCard');
41
- var Input = require('@bigbinary/neetoui/formik/Input');
42
- var Textarea$1 = require('@bigbinary/neetoui/formik/Textarea');
43
- var FormikEditor = require('@bigbinary/neeto-editor/FormikEditor');
44
- var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
45
- var NeetoHeader = require('@bigbinary/neeto-molecules/Header');
46
- var NeetoUITab = require('@bigbinary/neetoui/Tab');
47
- var Select = require('@bigbinary/neetoui/Select');
48
- var Callout = require('@bigbinary/neetoui/Callout');
49
-
50
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
51
-
52
- function _interopNamespace(e) {
53
- if (e && e.__esModule) return e;
54
- var n = Object.create(null);
55
- if (e) {
56
- Object.keys(e).forEach(function (k) {
57
- if (k !== 'default') {
58
- var d = Object.getOwnPropertyDescriptor(e, k);
59
- Object.defineProperty(n, k, d.get ? d : {
60
- enumerable: true,
61
- get: function () { return e[k]; }
62
- });
63
- }
64
- });
65
- }
66
- n["default"] = e;
67
- return Object.freeze(n);
68
- }
69
-
70
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
71
- var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container);
72
- var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
73
- var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
74
- var TableWrapper__default = /*#__PURE__*/_interopDefaultLegacy(TableWrapper);
75
- var Table__default = /*#__PURE__*/_interopDefaultLegacy(Table$1);
76
- var NoData__default = /*#__PURE__*/_interopDefaultLegacy(NoData);
77
- var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
78
- var Tag__default = /*#__PURE__*/_interopDefaultLegacy(Tag);
79
- var DateFormat__default = /*#__PURE__*/_interopDefaultLegacy(DateFormat);
80
- var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
81
- var EditorContent__default = /*#__PURE__*/_interopDefaultLegacy(EditorContent);
82
- var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
83
- var Pane__default = /*#__PURE__*/_interopDefaultLegacy(Pane);
84
- var Textarea__default = /*#__PURE__*/_interopDefaultLegacy(Textarea);
85
- var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
86
- var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
87
- var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
88
- var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
89
- var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
90
- var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
91
- var ActionBlock__default = /*#__PURE__*/_interopDefaultLegacy(ActionBlock);
92
- var FormikForm__default = /*#__PURE__*/_interopDefaultLegacy(FormikForm);
93
- var ToggleFeatureCard__default = /*#__PURE__*/_interopDefaultLegacy(ToggleFeatureCard);
94
- var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
95
- var Textarea__default$1 = /*#__PURE__*/_interopDefaultLegacy(Textarea$1);
96
- var FormikEditor__default = /*#__PURE__*/_interopDefaultLegacy(FormikEditor);
97
- var MoreDropdown__default = /*#__PURE__*/_interopDefaultLegacy(MoreDropdown);
98
- var NeetoHeader__default = /*#__PURE__*/_interopDefaultLegacy(NeetoHeader);
99
- var NeetoUITab__default = /*#__PURE__*/_interopDefaultLegacy(NeetoUITab);
100
- var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
101
- var Callout__default = /*#__PURE__*/_interopDefaultLegacy(Callout);
102
-
103
- function _typeof(o) {
104
- "@babel/helpers - typeof";
105
-
106
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
107
- return typeof o;
108
- } : function (o) {
109
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
110
- }, _typeof(o);
111
- }
112
-
113
- function _toPrimitive(input, hint) {
114
- if (_typeof(input) !== "object" || input === null) return input;
115
- var prim = input[Symbol.toPrimitive];
116
- if (prim !== undefined) {
117
- var res = prim.call(input, hint || "default");
118
- if (_typeof(res) !== "object") return res;
119
- throw new TypeError("@@toPrimitive must return a primitive value.");
120
- }
121
- return (hint === "string" ? String : Number)(input);
122
- }
123
-
124
- function _toPropertyKey(arg) {
125
- var key = _toPrimitive(arg, "string");
126
- return _typeof(key) === "symbol" ? key : String(key);
127
- }
128
-
129
- function _defineProperty(obj, key, value) {
130
- key = _toPropertyKey(key);
131
- if (key in obj) {
132
- Object.defineProperty(obj, key, {
133
- value: value,
134
- enumerable: true,
135
- configurable: true,
136
- writable: true
137
- });
138
- } else {
139
- obj[key] = value;
140
- }
141
- return obj;
142
- }
143
-
144
- function _arrayWithHoles(arr) {
145
- if (Array.isArray(arr)) return arr;
146
- }
147
-
148
- function _iterableToArrayLimit(r, l) {
149
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
150
- if (null != t) {
151
- var e,
152
- n,
153
- i,
154
- u,
155
- a = [],
156
- f = !0,
157
- o = !1;
158
- try {
159
- if (i = (t = t.call(r)).next, 0 === l) {
160
- if (Object(t) !== t) return;
161
- f = !1;
162
- } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
163
- } catch (r) {
164
- o = !0, n = r;
165
- } finally {
166
- try {
167
- if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
168
- } finally {
169
- if (o) throw n;
170
- }
171
- }
172
- return a;
173
- }
174
- }
175
-
176
- function _arrayLikeToArray(arr, len) {
177
- if (len == null || len > arr.length) len = arr.length;
178
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
179
- return arr2;
180
- }
181
-
182
- function _unsupportedIterableToArray(o, minLen) {
183
- if (!o) return;
184
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
185
- var n = Object.prototype.toString.call(o).slice(8, -1);
186
- if (n === "Object" && o.constructor) n = o.constructor.name;
187
- if (n === "Map" || n === "Set") return Array.from(o);
188
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
189
- }
190
-
191
- function _nonIterableRest() {
192
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
193
- }
194
-
195
- function _slicedToArray(arr, i) {
196
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
197
- }
198
-
199
- var routes = {
200
- home: "/",
201
- approvals: "/approvals/",
202
- pending: "pending",
203
- history: "history",
204
- templates: {
205
- index: "templates",
206
- "new": "templates/new",
207
- edit: "templates/:id/edit"
208
- },
209
- "public": "approvals/public/request/:id"
210
- };
211
-
212
- var handleEmptyPage = function handleEmptyPage(data, pageProperties, handlePageChange) {
213
- if (ramda.isEmpty(data) && pageProperties.page !== 1) {
214
- handlePageChange(pageProperties.page - 1, pageProperties.pageSize);
215
- }
216
- };
217
-
218
- var BASE_URL = "neeto_approvals";
219
- var TEMPLATE_URL = "".concat(BASE_URL, "/templates");
220
-
221
- var fetch$3 = function fetch(params, url) {
222
- return axios__default["default"].get(url, {
223
- params: params
224
- });
225
- };
226
- var update$1 = function update(_ref) {
227
- var id = _ref.id,
228
- payload = _ref.payload;
229
- return axios__default["default"].put("".concat(BASE_URL, "/requests/").concat(id), {
230
- request: payload
231
- });
232
- };
233
- var requestsApi = {
234
- fetch: fetch$3,
235
- update: update$1
236
- };
237
-
238
- var QUERY_KEYS = {
239
- APPROVERS: "neeto-approvals-approvers",
240
- TEMPLATES: "neeto-approvals-templates",
241
- REQUESTS: "neeto-approvals-requests",
242
- SHOW_TEMPLATE: "neeto-approvals-show-template",
243
- SHOW_PUBLIC_REQUEST: "neeto-approvals-show-public-request",
244
- VIEWS: "neeto-approvals-views"
245
- };
246
-
247
- function ownKeys$b(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; }
248
- function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
249
- var useFetchRequests = function useFetchRequests(_ref) {
250
- var requestUrl = _ref.requestUrl,
251
- _ref$params = _ref.params,
252
- params = _ref$params === void 0 ? {} : _ref$params,
253
- _ref$options = _ref.options,
254
- options = _ref$options === void 0 ? {} : _ref$options;
255
- return reactQuery.useQuery(_objectSpread$b({
256
- queryKey: [QUERY_KEYS.REQUESTS, params],
257
- queryFn: function queryFn() {
258
- return requestsApi.fetch(params, requestUrl);
259
- },
260
- select: function select(response) {
261
- return response.data || response;
262
- },
263
- placeholderData: reactQuery.keepPreviousData
264
- }, options));
265
- };
266
- var useUpdateRequest = function useUpdateRequest(options) {
267
- return reactUtils.useMutationWithInvalidation(requestsApi.update, _objectSpread$b({
268
- keysToInvalidate: [[QUERY_KEYS.REQUESTS], [QUERY_KEYS.VIEWS]]
269
- }, options));
270
- };
271
-
272
- var usePaginate = function usePaginate() {
273
- var _useState = React.useState({
274
- page: constants.DEFAULT_PAGE_INDEX,
275
- pageSize: constants.DEFAULT_PAGE_SIZE
276
- }),
277
- _useState2 = _slicedToArray(_useState, 2),
278
- pageProperties = _useState2[0],
279
- setPageProperties = _useState2[1];
280
- var resetPageProperties = function resetPageProperties() {
281
- return setPageProperties({
282
- page: constants.DEFAULT_PAGE_INDEX,
283
- pageSize: constants.DEFAULT_PAGE_SIZE
284
- });
285
- };
286
- var handlePageChange = function handlePageChange(page, pageSize) {
287
- setPageProperties({
288
- page: page,
289
- pageSize: pageSize
290
- });
291
- };
292
- return {
293
- pageProperties: pageProperties,
294
- resetPageProperties: resetPageProperties,
295
- handlePageChange: handlePageChange
296
- };
297
- };
298
-
299
- var DEFAULT_FILTER_VALUES = {
300
- searchTerm: "",
301
- sortBy: "",
302
- orderBy: ""
303
- };
304
- var SEARCH_DELAY = 750;
305
- var STATUSES = {
306
- approved: "approved",
307
- rejected: "rejected",
308
- pending: "pending",
309
- cancelled: "cancelled"
310
- };
311
- var STATUS_TAG_STYLE = {
312
- pending: "primary",
313
- approved: "success",
314
- rejected: "danger",
315
- cancelled: "warning"
316
- };
317
- var APPROVAL_REQUEST_FORM_INITIAL_VALUES = {
318
- message: "",
319
- approver: {}
320
- };
321
- var STATUS_UPDATED_BY = {
322
- rejected: i18next.t("neetoApprovals.common.rejectedBy"),
323
- approved: i18next.t("neetoApprovals.common.approvedBy"),
324
- cancelled: i18next.t("neetoApprovals.common.cancelledBy")
325
- };
326
- var DATA_CY_KEY = "data-cy";
327
- var SORT_ORDER = {
328
- ascend: "asc",
329
- descend: "desc"
330
- };
331
- var REQUEST_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
332
- message: yup__namespace.string().test("message", i18next.t("neetoApprovals.validations.required", {
333
- what: i18next.t("neetoApprovals.inputs.labels.message")
334
- }), function (content) {
335
- return !utils.isEditorEmpty(content);
336
- }),
337
- approver: yup__namespace.object().required(i18next.t("neetoApprovals.validations.approver"))
338
- });
339
- var EVENTS = {
340
- APPROVAL_TEMPLATE_CREATED: "approval_template_created"
341
- };
342
-
343
- var HISTORY_TABLE_COLUMNS = [{
344
- dataIndex: "approvalLabel",
345
- key: "approvalLabel",
346
- sorter: true,
347
- width: "25%",
348
- title: i18next.t("neetoApprovals.common.id"),
349
- render: function render(approvalLabel, _ref) {
350
- var requestableUrl = _ref.requestableUrl;
351
- var url = new URL(requestableUrl || window.location.origin);
352
- return /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
353
- label: approvalLabel,
354
- style: "link",
355
- to: url.pathname
356
- });
357
- }
358
- }, {
359
- dataIndex: "title",
360
- key: "title",
361
- sorter: true,
362
- width: "25%",
363
- title: i18next.t("neetoApprovals.common.title")
364
- }, {
365
- dataIndex: "status",
366
- key: "status",
367
- sorter: true,
368
- width: "25%",
369
- title: i18next.t("neetoApprovals.common.status"),
370
- render: function render(status) {
371
- return /*#__PURE__*/jsxRuntime.jsx(Tag__default["default"], {
372
- label: neetoCist.capitalize(status),
373
- style: STATUS_TAG_STYLE[status]
374
- });
375
- }
376
- }, {
377
- dataIndex: "createdAt",
378
- key: "createdAt",
379
- sorter: true,
380
- width: "25%",
381
- title: i18next.t("neetoApprovals.common.created"),
382
- render: function render(createdAt) {
383
- return /*#__PURE__*/jsxRuntime.jsx(DateFormat__default["default"].FromNow, {
384
- date: createdAt,
385
- typographyProps: {
386
- style: "body2"
387
- }
388
- });
389
- }
390
- }];
391
-
392
- var Footer = function Footer(_ref) {
393
- var isLoading = _ref.isLoading,
394
- handleSubmit = _ref.handleSubmit,
395
- isCurrentUserApprover = _ref.isCurrentUserApprover,
396
- isCurrentUserRequester = _ref.isCurrentUserRequester;
397
- var _useTranslation = reactI18next.useTranslation(),
398
- t = _useTranslation.t;
399
- if (!isCurrentUserApprover && !isCurrentUserRequester) return null;
400
- if (isCurrentUserApprover) {
401
- return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Footer, {
402
- className: "flex gap-x-2",
403
- children: [/*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
404
- label: t("neetoApprovals.buttons.approve"),
405
- loading: isLoading,
406
- type: "submit",
407
- onClick: function onClick() {
408
- return handleSubmit(STATUSES.approved);
409
- }
410
- }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
411
- label: t("neetoApprovals.buttons.decline"),
412
- loading: isLoading,
413
- style: "text",
414
- onClick: function onClick() {
415
- return handleSubmit(STATUSES.rejected);
416
- }
417
- })]
418
- });
419
- }
420
- return /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Footer, {
421
- className: "flex gap-x-2",
422
- children: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
423
- label: t("neetoApprovals.buttons.cancelRequest"),
424
- loading: isLoading,
425
- type: "submit",
426
- onClick: function onClick() {
427
- return handleSubmit(STATUSES.cancelled);
428
- }
429
- })
430
- });
431
- };
432
-
433
- dayjs__default["default"].extend(utc__default["default"]);
434
- dayjs__default["default"].extend(timezone__default["default"]);
435
- var updateApprovalDetails = function updateApprovalDetails(_ref) {
436
- var requestsData = _ref.requestsData,
437
- approvalDetails = _ref.approvalDetails;
438
- if (neetoCist.isPresent(requestsData === null || requestsData === void 0 ? void 0 : requestsData.requests) && neetoCist.isPresent(approvalDetails)) {
439
- var request = neetoCist.findBy({
440
- id: approvalDetails.id
441
- }, requestsData.requests) || {};
442
- return request;
443
- }
444
- return {};
445
- };
446
- var timeInZone = function timeInZone(time) {
447
- var _globalProps$user, _globalProps$user2;
448
- ((_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.timeZone) && dayjs__default["default"].tz.setDefault((_globalProps$user2 = initializers.globalProps.user) === null || _globalProps$user2 === void 0 ? void 0 : _globalProps$user2.timeZone);
449
- return dayjs__default["default"](time).tz();
450
- };
451
- var getApprovalFilter = function getApprovalFilter() {
452
- return {
453
- PENDING: {
454
- label: i18next.t("neetoApprovals.common.pending"),
455
- value: "PENDING"
456
- },
457
- TEMPLATES: {
458
- label: i18next.t("neetoApprovals.common.template", constants.PLURAL),
459
- value: "TEMPLATES"
460
- },
461
- HISTORY: {
462
- label: i18next.t("neetoApprovals.common.history"),
463
- value: "HISTORY"
464
- }
465
- };
466
- };
467
-
468
- var MemoizedEditorContent$1 = /*#__PURE__*/React__default["default"].memo(EditorContent__default["default"]);
469
- var RequestDetailsPane = function RequestDetailsPane(_ref) {
470
- var _window$globalProps, _window$globalProps2;
471
- var isOpen = _ref.isOpen,
472
- onClose = _ref.onClose,
473
- approvalDetails = _ref.approvalDetails,
474
- _ref$isPending = _ref.isPending,
475
- isPending = _ref$isPending === void 0 ? false : _ref$isPending;
476
- var _useTranslation = reactI18next.useTranslation(),
477
- t = _useTranslation.t;
478
- var title = approvalDetails.title,
479
- _approvalDetails$stat = approvalDetails.status,
480
- status = _approvalDetails$stat === void 0 ? "" : _approvalDetails$stat,
481
- message = approvalDetails.message,
482
- createdAt = approvalDetails.createdAt,
483
- approverName = approvalDetails.approverName,
484
- approverEmail = approvalDetails.approverEmail,
485
- _approvalDetails$note = approvalDetails.note,
486
- initialNote = _approvalDetails$note === void 0 ? "" : _approvalDetails$note,
487
- requesterName = approvalDetails.requesterName,
488
- requesterEmail = approvalDetails.requesterEmail;
489
- var _useState = React.useState(initialNote),
490
- _useState2 = _slicedToArray(_useState, 2),
491
- note = _useState2[0],
492
- setNote = _useState2[1];
493
- var _useUpdateRequest = useUpdateRequest(),
494
- updatePendingRequest = _useUpdateRequest.mutate,
495
- isUpdateRequestPending = _useUpdateRequest.isPending;
496
- React.useEffect(function () {
497
- setNote(initialNote);
498
- }, [initialNote]);
499
- var requesterOrApproverDetails = status === STATUSES.cancelled ? "".concat(requesterName, " (").concat(requesterEmail, ")") : "".concat(approverName, " (").concat(approverEmail, ")");
500
- var isCurrentUserApprover = ((_window$globalProps = window.globalProps) === null || _window$globalProps === void 0 || (_window$globalProps = _window$globalProps.user) === null || _window$globalProps === void 0 ? void 0 : _window$globalProps.email) === approverEmail;
501
- var isCurrentUserRequester = ((_window$globalProps2 = window.globalProps) === null || _window$globalProps2 === void 0 || (_window$globalProps2 = _window$globalProps2.user) === null || _window$globalProps2 === void 0 ? void 0 : _window$globalProps2.email) === requesterEmail;
502
- var getStatusLabel = function getStatusLabel() {
503
- if (isPending) {
504
- return t("neetoApprovals.common.waitingFor");
505
- }
506
- return STATUS_UPDATED_BY[status];
507
- };
508
- var handleOnClose = function handleOnClose() {
509
- setNote("");
510
- onClose();
511
- };
512
- var handleSubmit = function handleSubmit(status) {
513
- return updatePendingRequest({
514
- id: approvalDetails.id,
515
- payload: _defineProperty({
516
- status: status,
517
- note: note
518
- }, "".concat(status, "At"), new Date())
519
- }, {
520
- onSuccess: handleOnClose
521
- });
522
- };
523
- return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"], {
524
- isOpen: isOpen,
525
- size: "large",
526
- onClose: handleOnClose,
527
- children: [/*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Header, {
528
- className: "space-y-2",
529
- children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
530
- style: "h2",
531
- children: title
532
- }), /*#__PURE__*/jsxRuntime.jsx(Tag__default["default"], {
533
- label: neetoCist.capitalize(status),
534
- style: STATUS_TAG_STYLE[status]
535
- })]
536
- }), /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Body, {
537
- className: "space-y-6",
538
- children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
539
- className: "w-full divide-y border px-3",
540
- children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
541
- className: "flex space-x-3 p-2",
542
- children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
543
- className: "font-normal",
544
- children: getStatusLabel()
545
- }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
546
- style: "body2",
547
- weight: "medium",
548
- children: requesterOrApproverDetails
549
- })]
550
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
551
- className: "flex space-x-3 p-2",
552
- children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
553
- className: "font-normal",
554
- children: t("neetoApprovals.common.created")
555
- }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
556
- style: "body2",
557
- weight: "medium",
558
- children: utils$1.dateFormat.defaultWithTime(timeInZone(createdAt))
559
- })]
560
- })]
561
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
562
- className: "w-full space-y-2",
563
- children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
564
- children: t("neetoApprovals.inputs.labels.message")
565
- }), /*#__PURE__*/jsxRuntime.jsx(MemoizedEditorContent$1, {
566
- className: "neeto-ui-bg-gray-100 p-4",
567
- content: message
568
- })]
569
- }), isPending && isCurrentUserApprover && /*#__PURE__*/jsxRuntime.jsx(Textarea__default["default"], {
570
- className: "w-full",
571
- disabled: !isPending,
572
- label: t("neetoApprovals.common.note"),
573
- value: note,
574
- placeholder: t("neetoApprovals.inputs.placeholders.add_", {
575
- what: t("neetoApprovals.common.note")
576
- }),
577
- onChange: utils$1.withEventTargetValue(setNote)
578
- }), !isPending && note && /*#__PURE__*/jsxRuntime.jsxs("div", {
579
- className: "w-full space-y-2",
580
- children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
581
- children: t("neetoApprovals.common.note")
582
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
583
- className: "neeto-ui-bg-gray-100 p-4",
584
- children: note
585
- })]
586
- })]
587
- }), isPending && /*#__PURE__*/jsxRuntime.jsx(Footer, {
588
- handleSubmit: handleSubmit,
589
- isCurrentUserApprover: isCurrentUserApprover,
590
- isCurrentUserRequester: isCurrentUserRequester,
591
- isLoading: isUpdateRequestPending
592
- })]
593
- });
594
- };
595
-
596
- function ownKeys$a(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$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
598
- var History = function History(_ref) {
599
- var helpDocUrl = _ref.helpDocUrl,
600
- requestUrl = _ref.requestUrl;
601
- var _useState = React.useState(DEFAULT_FILTER_VALUES),
602
- _useState2 = _slicedToArray(_useState, 2),
603
- filters = _useState2[0],
604
- setFilters = _useState2[1];
605
- var debouncedSearchTerm = reactUtils.useDebounce(filters.searchTerm, SEARCH_DELAY);
606
- var _usePaginate = usePaginate(),
607
- pageProperties = _usePaginate.pageProperties,
608
- handlePageChange = _usePaginate.handlePageChange;
609
- var _useState3 = React.useState({}),
610
- _useState4 = _slicedToArray(_useState3, 2),
611
- approvalDetails = _useState4[0],
612
- setApprovalDetails = _useState4[1];
613
- var _useTranslation = reactI18next.useTranslation(),
614
- t = _useTranslation.t;
615
- var _useFetchRequests = useFetchRequests({
616
- params: _objectSpread$a(_objectSpread$a(_objectSpread$a({}, pageProperties), filters), {}, {
617
- searchTerm: debouncedSearchTerm.trim(),
618
- status: [STATUSES.approved, STATUSES.rejected, STATUSES.cancelled]
619
- }),
620
- requestUrl: requestUrl
621
- }),
622
- data = _useFetchRequests.data;
623
- var _ref2 = data || {},
624
- _ref2$requests = _ref2.requests,
625
- approvalHistories = _ref2$requests === void 0 ? {} : _ref2$requests,
626
- _ref2$totalCount = _ref2.totalCount,
627
- totalCount = _ref2$totalCount === void 0 ? 0 : _ref2$totalCount;
628
- React.useEffect(function () {
629
- if (!data) return;
630
- handleEmptyPage(data === null || data === void 0 ? void 0 : data.requests, pageProperties, handlePageChange);
631
- setApprovalDetails(function (approvalDetails) {
632
- return updateApprovalDetails({
633
- requestsData: data === null || data === void 0 ? void 0 : data.requests,
634
- approvalDetails: approvalDetails
635
- });
636
- });
637
- }, [data]);
638
- var handleTableChange = function handleTableChange(_, __, sorter) {
639
- setFilters(_objectSpread$a(_objectSpread$a({}, filters), {}, {
640
- sortBy: neetoCist.camelToSnakeCase(sorter.field || ""),
641
- orderBy: SORT_ORDER[sorter.order]
642
- }));
643
- };
644
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
645
- children: [!ramda.isEmpty(approvalHistories) ? /*#__PURE__*/jsxRuntime.jsx(TableWrapper__default["default"], {
646
- className: "mt-6",
647
- hasPagination: totalCount > pageProperties.pageSize,
648
- children: /*#__PURE__*/jsxRuntime.jsx(Table__default["default"], {
649
- handlePageChange: handlePageChange,
650
- totalCount: totalCount,
651
- allowRowClick: true,
652
- fixedHeight: true,
653
- columnData: HISTORY_TABLE_COLUMNS,
654
- currentPageNumber: pageProperties.page,
655
- defaultPageSize: pageProperties.pageSize,
656
- rowData: approvalHistories,
657
- paginationProps: {
658
- hideOnSinglePage: (approvalHistories === null || approvalHistories === void 0 ? void 0 : approvalHistories.length) < constants.DEFAULT_PAGE_SIZE + 1
659
- },
660
- onChange: handleTableChange,
661
- onRowClick: function onRowClick(_, approvalDetails) {
662
- return setApprovalDetails(approvalDetails);
663
- }
664
- })
665
- }) : /*#__PURE__*/jsxRuntime.jsx("div", {
666
- className: "flex h-full w-full flex-grow items-center justify-center",
667
- children: /*#__PURE__*/jsxRuntime.jsx(NoData__default["default"], {
668
- helpText: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
669
- i18nKey: "neetoApprovals.common.noDataHelpTextLearnMore",
670
- style: "link",
671
- values: {
672
- entity: t("neetoApprovals.common.history")
673
- },
674
- components: {
675
- a: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
676
- style: "link",
677
- target: "_blank",
678
- to: {
679
- pathname: helpDocUrl
680
- }
681
- })
682
- }
683
- }),
684
- title: t("neetoApprovals.common.notFound_", {
685
- what: t("neetoApprovals.common.record", constants.PLURAL)
686
- })
687
- })
688
- }), /*#__PURE__*/jsxRuntime.jsx(RequestDetailsPane, {
689
- approvalDetails: approvalDetails,
690
- isOpen: neetoCist.isPresent(approvalDetails),
691
- onClose: function onClose() {
692
- return setApprovalDetails({});
693
- }
694
- })]
695
- });
696
- };
697
-
698
- var PENDING_TABLE_COLUMNS = neetoCist.removeBy({
699
- key: "status"
700
- }, HISTORY_TABLE_COLUMNS);
701
-
702
- function ownKeys$9(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; }
703
- function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
704
- var PendingRequests = function PendingRequests(_ref) {
705
- var helpDocUrl = _ref.helpDocUrl,
706
- requestUrl = _ref.requestUrl;
707
- var _useState = React.useState(DEFAULT_FILTER_VALUES),
708
- _useState2 = _slicedToArray(_useState, 2),
709
- filters = _useState2[0],
710
- setFilters = _useState2[1];
711
- var _useState3 = React.useState({}),
712
- _useState4 = _slicedToArray(_useState3, 2),
713
- approvalDetails = _useState4[0],
714
- setApprovalDetails = _useState4[1];
715
- var debouncedSearchTerm = reactUtils.useDebounce(filters.searchTerm, SEARCH_DELAY);
716
- var _usePaginate = usePaginate(),
717
- pageProperties = _usePaginate.pageProperties,
718
- handlePageChange = _usePaginate.handlePageChange;
719
- var _useTranslation = reactI18next.useTranslation(),
720
- t = _useTranslation.t;
721
- var _useFetchRequests = useFetchRequests({
722
- params: _objectSpread$9(_objectSpread$9(_objectSpread$9({}, pageProperties), filters), {}, {
723
- searchTerm: debouncedSearchTerm.trim(),
724
- status: [STATUSES.pending]
725
- }),
726
- requestUrl: requestUrl
727
- }),
728
- data = _useFetchRequests.data;
729
- var _ref2 = data || {},
730
- _ref2$requests = _ref2.requests,
731
- pendingRequests = _ref2$requests === void 0 ? {} : _ref2$requests,
732
- _ref2$totalCount = _ref2.totalCount,
733
- totalCount = _ref2$totalCount === void 0 ? 0 : _ref2$totalCount;
734
- React.useEffect(function () {
735
- if (!data) return;
736
- handleEmptyPage(data === null || data === void 0 ? void 0 : data.requests, pageProperties, handlePageChange);
737
- }, [data]);
738
- var handleTableChange = function handleTableChange(_, __, sorter) {
739
- setFilters(_objectSpread$9(_objectSpread$9({}, filters), {}, {
740
- sortBy: neetoCist.camelToSnakeCase(sorter.field || ""),
741
- orderBy: SORT_ORDER[sorter.order]
742
- }));
743
- };
744
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
745
- children: [!ramda.isEmpty(pendingRequests) ? /*#__PURE__*/jsxRuntime.jsx(TableWrapper__default["default"], {
746
- className: "mt-6",
747
- hasPagination: totalCount > pageProperties.pageSize,
748
- children: /*#__PURE__*/jsxRuntime.jsx(Table__default["default"], {
749
- handlePageChange: handlePageChange,
750
- totalCount: totalCount,
751
- allowRowClick: true,
752
- fixedHeight: true,
753
- columnData: PENDING_TABLE_COLUMNS,
754
- currentPageNumber: pageProperties.page,
755
- defaultPageSize: pageProperties.pageSize,
756
- rowData: pendingRequests,
757
- paginationProps: {
758
- hideOnSinglePage: (pendingRequests === null || pendingRequests === void 0 ? void 0 : pendingRequests.length) < constants.DEFAULT_PAGE_SIZE + 1
759
- },
760
- onChange: handleTableChange,
761
- onRowClick: function onRowClick(_, approvalDetails) {
762
- return setApprovalDetails(approvalDetails);
763
- }
764
- })
765
- }) : /*#__PURE__*/jsxRuntime.jsx("div", {
766
- className: "flex h-full w-full flex-grow items-center justify-center",
767
- children: /*#__PURE__*/jsxRuntime.jsx(NoData__default["default"], {
768
- helpText: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
769
- i18nKey: "neetoApprovals.common.noDataHelpTextLearnMore",
770
- style: "link",
771
- components: {
772
- a: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
773
- style: "link",
774
- target: "_blank",
775
- to: {
776
- pathname: helpDocUrl
777
- }
778
- })
779
- },
780
- values: {
781
- entity: t("neetoApprovals.common.pendingApproval", constants.PLURAL)
782
- }
783
- }),
784
- title: t("neetoApprovals.common.notFound_", {
785
- what: t("neetoApprovals.common.pendingApproval", constants.PLURAL)
786
- })
787
- })
788
- }), /*#__PURE__*/jsxRuntime.jsx(RequestDetailsPane, {
789
- approvalDetails: approvalDetails,
790
- isPending: true,
791
- isOpen: neetoCist.isPresent(approvalDetails),
792
- onClose: function onClose() {
793
- return setApprovalDetails({});
794
- }
795
- })]
796
- });
797
- };
798
-
799
- function _objectWithoutPropertiesLoose(source, excluded) {
800
- if (source == null) return {};
801
- var target = {};
802
- var sourceKeys = Object.keys(source);
803
- var key, i;
804
- for (i = 0; i < sourceKeys.length; i++) {
805
- key = sourceKeys[i];
806
- if (excluded.indexOf(key) >= 0) continue;
807
- target[key] = source[key];
808
- }
809
- return target;
810
- }
811
-
812
- function _objectWithoutProperties(source, excluded) {
813
- if (source == null) return {};
814
- var target = _objectWithoutPropertiesLoose(source, excluded);
815
- var key, i;
816
- if (Object.getOwnPropertySymbols) {
817
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
818
- for (i = 0; i < sourceSymbolKeys.length; i++) {
819
- key = sourceSymbolKeys[i];
820
- if (excluded.indexOf(key) >= 0) continue;
821
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
822
- target[key] = source[key];
823
- }
824
- }
825
- return target;
826
- }
827
-
828
- var fetch$2 = function fetch(params) {
829
- return axios__default["default"].get(TEMPLATE_URL, {
830
- params: params
831
- });
832
- };
833
- var show$1 = function show(_ref) {
834
- var id = _ref.id,
835
- params = _ref.params;
836
- return axios__default["default"].get("".concat(TEMPLATE_URL, "/").concat(id), {
837
- params: params
838
- });
839
- };
840
- var create = function create(_ref2) {
841
- var _ref2$url = _ref2.url,
842
- url = _ref2$url === void 0 ? TEMPLATE_URL : _ref2$url,
843
- payload = _ref2.payload;
844
- return axios__default["default"].post(url, payload);
845
- };
846
- var update = function update(_ref3) {
847
- var id = _ref3.id,
848
- payload = _ref3.payload,
849
- _ref3$url = _ref3.url,
850
- url = _ref3$url === void 0 ? BASE_URL : _ref3$url;
851
- return axios__default["default"].put("".concat(url, "/").concat(id), payload);
852
- };
853
- var destroy = function destroy(_ref4) {
854
- var templateId = _ref4.templateId;
855
- return axios__default["default"]["delete"]("".concat(TEMPLATE_URL, "/").concat(templateId));
856
- };
857
- var templatesApi = {
858
- create: create,
859
- fetch: fetch$2,
860
- update: update,
861
- destroy: destroy,
862
- show: show$1
863
- };
864
-
865
- function ownKeys$8(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; }
866
- function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
867
- var useFetchTemplates = function useFetchTemplates() {
868
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
869
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
870
- return reactQuery.useQuery(_objectSpread$8({
871
- queryKey: [QUERY_KEYS.TEMPLATES, params],
872
- queryFn: function queryFn() {
873
- return templatesApi.fetch(params);
874
- },
875
- select: function select(response) {
876
- return response.data || response;
877
- },
878
- placeholderData: reactQuery.keepPreviousData
879
- }, options));
880
- };
881
- var useFetchTemplate = function useFetchTemplate(_ref) {
882
- var id = _ref.id,
883
- params = _ref.params;
884
- return reactQuery.useQuery({
885
- queryKey: [QUERY_KEYS.SHOW_TEMPLATE, id, params],
886
- queryFn: function queryFn() {
887
- return templatesApi.show({
888
- id: id,
889
- params: params
890
- });
891
- },
892
- enabled: !!id
893
- });
894
- };
895
- var useCreateTemplate = function useCreateTemplate() {
896
- return reactUtils.useMutationWithInvalidation(templatesApi.create, {
897
- keysToInvalidate: [[QUERY_KEYS.TEMPLATES], [QUERY_KEYS.VIEWS]],
898
- onSuccess: function onSuccess() {
899
- return utils$1.captureAnalyticsEvent(EVENTS.APPROVAL_TEMPLATE_CREATED);
900
- }
901
- });
902
- };
903
- var useUpdateTemplate = function useUpdateTemplate(options) {
904
- return reactUtils.useMutationWithInvalidation(templatesApi.update, _objectSpread$8({
905
- keysToInvalidate: [[QUERY_KEYS.TEMPLATES], function (_, _ref2) {
906
- var id = _ref2.id;
907
- return [QUERY_KEYS.SHOW_TEMPLATE, id];
908
- }]
909
- }, options));
910
- };
911
- var useDeleteTemplate = function useDeleteTemplate(options) {
912
- return reactUtils.useMutationWithInvalidation(templatesApi.destroy, _objectSpread$8({
913
- keysToInvalidate: [[QUERY_KEYS.TEMPLATES], [QUERY_KEYS.VIEWS]]
914
- }, options));
915
- };
916
-
917
- var TEMPLATE_FORM_INITIAL_VALUES = {
918
- name: "",
919
- description: "",
920
- message: ""
921
- };
922
- var TEMPLATE_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
923
- name: yup__namespace.string().trim().required(i18next.t("neetoApprovals.validations.required", {
924
- what: i18next.t("neetoApprovals.common.name")
925
- })),
926
- message: yup__namespace.string().test("message", i18next.t("neetoApprovals.validations.required", {
927
- what: i18next.t("neetoApprovals.inputs.labels.message")
928
- }), function (content) {
929
- return !utils.isEditorEmpty(content);
930
- })
931
- });
932
-
933
- var MessageEditor = reactUtils.withT(function (_ref) {
934
- var t = _ref.t,
935
- _ref$placeholders = _ref.placeholders,
936
- placeholders = _ref$placeholders === void 0 ? [] : _ref$placeholders,
937
- _ref$initialValue = _ref.initialValue,
938
- initialValue = _ref$initialValue === void 0 ? "" : _ref$initialValue;
939
- return /*#__PURE__*/jsxRuntime.jsx(FormikEditor__default["default"], {
940
- initialValue: initialValue,
941
- required: true,
942
- label: t("neetoApprovals.inputs.labels.message"),
943
- name: "message",
944
- rows: 3,
945
- variables: placeholders,
946
- placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
947
- what: t("neetoApprovals.inputs.labels.message")
948
- })
949
- });
950
- });
951
-
952
- var TemplateForm = function TemplateForm(_ref) {
953
- var placeholders = _ref.placeholders,
954
- initialData = _ref.initialData;
955
- var _useTranslation = reactI18next.useTranslation(),
956
- t = _useTranslation.t;
957
- var _useFormikContext = formik.useFormikContext(),
958
- values = _useFormikContext.values,
959
- setFieldValue = _useFormikContext.setFieldValue;
960
- var handleDescriptionToggle = function handleDescriptionToggle(_ref2) {
961
- var checked = _ref2.target.checked;
962
- setFieldValue("descriptionEnabled", checked);
963
- if (!checked) {
964
- setFieldValue("description", "");
965
- }
966
- };
967
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
968
- className: "flex w-full flex-col space-y-6",
969
- children: [/*#__PURE__*/jsxRuntime.jsx(Input__default["default"], {
970
- autoFocus: true,
971
- required: true,
972
- label: t("neetoApprovals.common.name"),
973
- name: "name",
974
- placeholder: t("neetoApprovals.inputs.placeholders.name")
975
- }), /*#__PURE__*/jsxRuntime.jsx(ToggleFeatureCard__default["default"], {
976
- switchName: "descriptionEnabled",
977
- title: t("neetoApprovals.inputs.labels.description"),
978
- switchProps: {
979
- onChange: handleDescriptionToggle,
980
- tooltipProps: {
981
- enabledSwitchText: t("neetoApprovals.templates.descriptionToggle.enable"),
982
- disabledSwitchText: t("neetoApprovals.templates.descriptionToggle.disable")
983
- }
984
- },
985
- children: values.descriptionEnabled && /*#__PURE__*/jsxRuntime.jsx(Textarea__default$1["default"], {
986
- className: "w-full",
987
- name: "description",
988
- placeholder: t("neetoApprovals.inputs.placeholders.description")
989
- })
990
- }), /*#__PURE__*/jsxRuntime.jsx(MessageEditor, {
991
- placeholders: placeholders,
992
- initialValue: initialData.message
993
- })]
994
- });
995
- };
996
-
997
- var Form$2 = function Form(_ref) {
998
- var isOpen = _ref.isOpen,
999
- onClose = _ref.onClose,
1000
- _ref$initialData = _ref.initialData,
1001
- initialData = _ref$initialData === void 0 ? {} : _ref$initialData,
1002
- _ref$onSubmit = _ref.onSubmit,
1003
- onSubmit = _ref$onSubmit === void 0 ? neetoCist.noop : _ref$onSubmit,
1004
- _ref$isLoading = _ref.isLoading,
1005
- isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
1006
- placeholders = _ref.placeholders;
1007
- var inputReference = React.useRef(null);
1008
- var _useTranslation = reactI18next.useTranslation(),
1009
- t = _useTranslation.t;
1010
- var header = ramda.isEmpty(initialData) ? t("neetoApprovals.common.addNew_", {
1011
- what: t("neetoApprovals.common.template", constants.SINGULAR)
1012
- }) : t("neetoApprovals.common.edit_", {
1013
- what: t("neetoApprovals.common.template", constants.SINGULAR)
1014
- });
1015
- return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"], {
1016
- isOpen: isOpen,
1017
- onClose: onClose,
1018
- initialFocusRef: inputReference,
1019
- size: "large",
1020
- children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Header, {
1021
- children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1022
- style: "h2",
1023
- children: header
1024
- })
1025
- }), /*#__PURE__*/jsxRuntime.jsxs(FormikForm__default["default"], {
1026
- formikProps: {
1027
- enableReinitialize: true,
1028
- initialValues: neetoCist.isPresent(initialData) ? initialData : TEMPLATE_FORM_INITIAL_VALUES,
1029
- validationSchema: TEMPLATE_FORM_VALIDATION_SCHEMA,
1030
- onSubmit: onSubmit
1031
- },
1032
- children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Body, {
1033
- children: /*#__PURE__*/jsxRuntime.jsx(TemplateForm, {
1034
- initialData: initialData,
1035
- placeholders: placeholders
1036
- })
1037
- }), /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Footer, {
1038
- children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
1039
- isSubmitting: isLoading,
1040
- cancelButtonProps: {
1041
- "data-cy": "neeto-approvals-templates-close-template-form-btn",
1042
- onClick: onClose
1043
- },
1044
- submitButtonProps: {
1045
- "data-cy": "neeto-approvals-templates-save-template-btn"
1046
- }
1047
- })
1048
- })]
1049
- })]
1050
- });
1051
- };
1052
-
1053
- var Create = function Create(_ref) {
1054
- var templateUrl = _ref.templateUrl,
1055
- isOpen = _ref.isOpen,
1056
- onClose = _ref.onClose,
1057
- templatePlaceholders = _ref.templatePlaceholders;
1058
- var _useCreateTemplate = useCreateTemplate(),
1059
- createTemplate = _useCreateTemplate.mutate,
1060
- isPending = _useCreateTemplate.isPending;
1061
- var onSubmit = function onSubmit(template) {
1062
- var payload = {
1063
- template: template
1064
- };
1065
- createTemplate({
1066
- url: templateUrl,
1067
- payload: payload
1068
- }, {
1069
- onSuccess: onClose
1070
- });
1071
- };
1072
- return /*#__PURE__*/jsxRuntime.jsx(Form$2, {
1073
- isOpen: isOpen,
1074
- onClose: onClose,
1075
- onSubmit: onSubmit,
1076
- isLoading: isPending,
1077
- placeholders: templatePlaceholders
1078
- });
1079
- };
1080
-
1081
- 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; }
1082
- 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; }
1083
- var Edit = function Edit(_ref) {
1084
- var templateUrl = _ref.templateUrl,
1085
- template = _ref.template,
1086
- setTemplate = _ref.setTemplate,
1087
- isOpen = _ref.isOpen,
1088
- onClose = _ref.onClose,
1089
- templatePlaceholders = _ref.templatePlaceholders;
1090
- var _useUpdateTemplate = useUpdateTemplate({
1091
- onSuccess: function onSuccess() {
1092
- return setTemplate({});
1093
- }
1094
- }),
1095
- updateTemplate = _useUpdateTemplate.mutate,
1096
- isUpdating = _useUpdateTemplate.isPending;
1097
- var onSubmit = function onSubmit(template) {
1098
- var payload = {
1099
- template: template
1100
- };
1101
- updateTemplate({
1102
- id: template.id,
1103
- payload: payload,
1104
- url: templateUrl
1105
- });
1106
- };
1107
- var initialData = _objectSpread$7(_objectSpread$7({}, template), {}, {
1108
- descriptionEnabled: !!template.description
1109
- });
1110
- return /*#__PURE__*/jsxRuntime.jsx(Form$2, {
1111
- initialData: initialData,
1112
- isOpen: isOpen,
1113
- onClose: onClose,
1114
- onSubmit: onSubmit,
1115
- isLoading: isUpdating,
1116
- placeholders: templatePlaceholders
1117
- });
1118
- };
1119
-
1120
- var Field = function Field(_ref) {
1121
- var label = _ref.label,
1122
- value = _ref.value;
1123
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1124
- className: "flex flex-col items-start justify-center",
1125
- children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
1126
- className: "mb-1 font-normal",
1127
- children: label
1128
- }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1129
- style: "body1",
1130
- weight: "medium",
1131
- children: value
1132
- })]
1133
- });
1134
- };
1135
- var Field$1 = /*#__PURE__*/React__default["default"].memo(Field);
1136
-
1137
- var MemoizedEditorContent = /*#__PURE__*/React__default["default"].memo(EditorContent__default["default"]);
1138
- var TemplateDetails = function TemplateDetails(_ref) {
1139
- var isOpen = _ref.isOpen,
1140
- onClose = _ref.onClose,
1141
- template = _ref.template;
1142
- var _useTranslation = reactI18next.useTranslation(),
1143
- t = _useTranslation.t;
1144
- var name = template.name,
1145
- description = template.description,
1146
- message = template.message;
1147
- return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"], {
1148
- isOpen: isOpen,
1149
- onClose: onClose,
1150
- children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Header, {
1151
- className: "space-y-2",
1152
- children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1153
- style: "h2",
1154
- children: t("neetoApprovals.common.templateDetails")
1155
- })
1156
- }), /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Body, {
1157
- className: "space-y-6",
1158
- children: [/*#__PURE__*/jsxRuntime.jsx(Field$1, {
1159
- label: t("neetoApprovals.common.name"),
1160
- value: name
1161
- }), /*#__PURE__*/jsxRuntime.jsx(Field$1, {
1162
- label: t("neetoApprovals.inputs.labels.description"),
1163
- value: description
1164
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
1165
- className: "flex w-full flex-col space-y-4",
1166
- children: [/*#__PURE__*/jsxRuntime.jsx(Label__default["default"], {
1167
- className: "mb-1 font-normal",
1168
- children: t("neetoApprovals.inputs.labels.message")
1169
- }), /*#__PURE__*/jsxRuntime.jsx(MemoizedEditorContent, {
1170
- className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg p-3",
1171
- content: message
1172
- })]
1173
- })]
1174
- })]
1175
- });
1176
- };
1177
-
1178
- var renderNoDataHelpText = function renderNoDataHelpText(_ref) {
1179
- var entity = _ref.entity,
1180
- url = _ref.url;
1181
- return /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
1182
- i18nKey: "neetoApprovals.common.noDataHelpText",
1183
- style: "link",
1184
- values: {
1185
- entity: entity.toLocaleLowerCase()
1186
- },
1187
- components: {
1188
- a: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
1189
- style: "link",
1190
- target: "_blank",
1191
- to: {
1192
- pathname: url
1193
- }
1194
- })
1195
- }
1196
- });
1197
- };
1198
-
1199
- var _excluded$1 = ["entity", "columnData", "rowData", "totalCount", "filters", "setFilters", "setIsPaneOpen", "helpDocUrl", "onEditClick", "onDeleteClick", "pageProperties"];
1200
- 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; }
1201
- 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; }
1202
- var Table = function Table(_ref) {
1203
- var _t;
1204
- var entity = _ref.entity,
1205
- columnData = _ref.columnData,
1206
- rowData = _ref.rowData,
1207
- totalCount = _ref.totalCount,
1208
- filters = _ref.filters,
1209
- setFilters = _ref.setFilters,
1210
- setIsPaneOpen = _ref.setIsPaneOpen,
1211
- helpDocUrl = _ref.helpDocUrl,
1212
- onEditClick = _ref.onEditClick,
1213
- onDeleteClick = _ref.onDeleteClick,
1214
- pageProperties = _ref.pageProperties,
1215
- otherProps = _objectWithoutProperties(_ref, _excluded$1);
1216
- var _useTranslation = reactI18next.useTranslation(),
1217
- t = _useTranslation.t;
1218
- var columns = columnData({
1219
- onEditClick: onEditClick,
1220
- onDeleteClick: onDeleteClick
1221
- });
1222
- var handleTableChange = function handleTableChange(_, __, sorter) {
1223
- setFilters(_objectSpread$6(_objectSpread$6({}, filters), {}, {
1224
- sortBy: sorter.field,
1225
- orderBy: SORT_ORDER[sorter.order]
1226
- }));
1227
- };
1228
- var noDataProps = {
1229
- primaryButtonProps: {
1230
- label: t("neetoApprovals.common.addNew_", {
1231
- what: (_t = t("neetoApprovals.common.template", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1232
- }),
1233
- onClick: function onClick() {
1234
- return setIsPaneOpen(true);
1235
- }
1236
- },
1237
- helpText: renderNoDataHelpText({
1238
- entity: entity,
1239
- url: helpDocUrl
1240
- })
1241
- };
1242
- if (ramda.isEmpty(rowData)) {
1243
- return /*#__PURE__*/jsxRuntime.jsx("div", {
1244
- className: "flex h-full w-full flex-grow items-center justify-center",
1245
- children: /*#__PURE__*/jsxRuntime.jsx(NoData__default["default"], _objectSpread$6({
1246
- title: t("neetoApprovals.common.notFound_", {
1247
- what: entity
1248
- })
1249
- }, !filters.searchTerm && noDataProps))
1250
- });
1251
- }
1252
- return /*#__PURE__*/jsxRuntime.jsx(TableWrapper__default["default"], {
1253
- className: "mt-6",
1254
- hasPagination: totalCount > pageProperties.pageSize,
1255
- children: /*#__PURE__*/jsxRuntime.jsx(Table__default["default"], _objectSpread$6({
1256
- fixedHeight: true,
1257
- columnData: columns,
1258
- currentPageNumber: pageProperties.page,
1259
- defaultPageSize: pageProperties.pageSize,
1260
- scroll: {
1261
- x: 0
1262
- },
1263
- tableLayout: "fixed",
1264
- paginationProps: {
1265
- hideOnSinglePage: (rowData === null || rowData === void 0 ? void 0 : rowData.length) < constants.DEFAULT_PAGE_SIZE + 1
1266
- },
1267
- onChange: handleTableChange
1268
- }, _objectSpread$6({
1269
- rowData: rowData,
1270
- totalCount: totalCount
1271
- }, otherProps)))
1272
- });
1273
- };
1274
-
1275
- var columnData = function columnData(_ref) {
1276
- var onEditClick = _ref.onEditClick,
1277
- onDeleteClick = _ref.onDeleteClick;
1278
- return [{
1279
- dataIndex: "name",
1280
- key: "name",
1281
- sorter: true,
1282
- title: i18next__default["default"].t("neetoApprovals.common.name"),
1283
- ellipsis: true,
1284
- render: function render(_, template) {
1285
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1286
- className: "flex items-center justify-between gap-x-3",
1287
- children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1288
- className: "truncate",
1289
- style: "body2",
1290
- children: template.name
1291
- }), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown__default["default"], {
1292
- dropdownProps: {
1293
- strategy: "fixed",
1294
- onClick: function onClick(e) {
1295
- return e.stopPropagation();
1296
- }
1297
- },
1298
- menuItems: [_defineProperty({
1299
- key: "edit",
1300
- label: i18next__default["default"].t("neetoApprovals.common.edit"),
1301
- onClick: function onClick(event) {
1302
- return onEditClick(event, template);
1303
- }
1304
- }, DATA_CY_KEY, "neeto-approvals-templates-edit-template-btn"), _defineProperty({
1305
- key: "delete",
1306
- label: i18next__default["default"].t("neetoApprovals.common.delete"),
1307
- onClick: function onClick(event) {
1308
- return onDeleteClick(event, template);
1309
- }
1310
- }, DATA_CY_KEY, "neeto-approvals-templates-delete-template-btn")]
1311
- })]
1312
- });
1313
- }
1314
- }, {
1315
- dataIndex: "description",
1316
- key: "description",
1317
- title: i18next__default["default"].t("neetoApprovals.inputs.labels.description")
1318
- }];
1319
- };
1320
-
1321
- var _excluded = ["searchTerm", "isNewTemplatePaneOpen", "setIsNewTemplatePaneOpen", "helpDocUrl"];
1322
- 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; }
1323
- 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; }
1324
- var Templates = function Templates(_ref) {
1325
- var searchTerm = _ref.searchTerm,
1326
- isNewTemplatePaneOpen = _ref.isNewTemplatePaneOpen,
1327
- setIsNewTemplatePaneOpen = _ref.setIsNewTemplatePaneOpen,
1328
- helpDocUrl = _ref.helpDocUrl,
1329
- otherProps = _objectWithoutProperties(_ref, _excluded);
1330
- var _useState = React.useState(DEFAULT_FILTER_VALUES),
1331
- _useState2 = _slicedToArray(_useState, 2),
1332
- filters = _useState2[0],
1333
- setFilters = _useState2[1];
1334
- var _useState3 = React.useState({}),
1335
- _useState4 = _slicedToArray(_useState3, 2),
1336
- selectedTemplate = _useState4[0],
1337
- setSelectedTemplate = _useState4[1];
1338
- var _useState5 = React.useState(false),
1339
- _useState6 = _slicedToArray(_useState5, 2),
1340
- isDeleteAlertOpen = _useState6[0],
1341
- setIsDeleteAlertOpen = _useState6[1];
1342
- var _useState7 = React.useState(false),
1343
- _useState8 = _slicedToArray(_useState7, 2),
1344
- isEditPaneOpen = _useState8[0],
1345
- setIsEditPaneOpen = _useState8[1];
1346
- var _useState9 = React.useState(false),
1347
- _useState10 = _slicedToArray(_useState9, 2),
1348
- isShowPaneOpen = _useState10[0],
1349
- setIsShowPaneOpen = _useState10[1];
1350
- var _usePaginate = usePaginate(),
1351
- pageProperties = _usePaginate.pageProperties,
1352
- handlePageChange = _usePaginate.handlePageChange,
1353
- resetPageProperties = _usePaginate.resetPageProperties;
1354
- var _useTranslation = reactI18next.useTranslation(),
1355
- t = _useTranslation.t;
1356
- var debouncedSearchTerm = reactUtils.useDebounce(searchTerm, SEARCH_DELAY);
1357
- React.useEffect(function () {
1358
- resetPageProperties();
1359
- }, [searchTerm]);
1360
- var _useFetchTemplates = useFetchTemplates(_objectSpread$5(_objectSpread$5(_objectSpread$5({}, pageProperties), filters), {}, {
1361
- searchTerm: debouncedSearchTerm.trim()
1362
- })),
1363
- data = _useFetchTemplates.data,
1364
- isTemplateLoading = _useFetchTemplates.isLoading;
1365
- var _ref2 = data || {},
1366
- _ref2$templates = _ref2.templates,
1367
- templates = _ref2$templates === void 0 ? [] : _ref2$templates,
1368
- _ref2$totalCount = _ref2.totalCount,
1369
- totalCount = _ref2$totalCount === void 0 ? 0 : _ref2$totalCount;
1370
- React.useEffect(function () {
1371
- if (data) {
1372
- handleEmptyPage(data === null || data === void 0 ? void 0 : data.templates, pageProperties, handlePageChange);
1373
- }
1374
- }, [data]);
1375
- var _useDeleteTemplate = useDeleteTemplate(),
1376
- deleteTemplate = _useDeleteTemplate.mutate,
1377
- isDeleting = _useDeleteTemplate.isPending;
1378
- React.useEffect(function () {
1379
- if (!ramda.isEmpty(selectedTemplate)) return;
1380
- setIsDeleteAlertOpen(false);
1381
- setIsEditPaneOpen(false);
1382
- setIsShowPaneOpen(false);
1383
- }, [selectedTemplate]);
1384
- var onEditClick = function onEditClick(event, template) {
1385
- event.stopPropagation();
1386
- setSelectedTemplate(template);
1387
- setIsEditPaneOpen(true);
1388
- };
1389
- var onRowClick = function onRowClick(_, templateDetails) {
1390
- setSelectedTemplate(templateDetails);
1391
- setIsShowPaneOpen(true);
1392
- };
1393
- var onDeleteClick = function onDeleteClick(event, template) {
1394
- event.stopPropagation();
1395
- setSelectedTemplate(template);
1396
- setIsDeleteAlertOpen(true);
1397
- };
1398
- var handleDelete = function handleDelete(templateId) {
1399
- deleteTemplate({
1400
- templateId: templateId
1401
- });
1402
- setSelectedTemplate({});
1403
- };
1404
- var entity = t("neetoApprovals.common.template", constants.PLURAL);
1405
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1406
- children: [isTemplateLoading ? /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {}) : /*#__PURE__*/jsxRuntime.jsx(Table, {
1407
- columnData: columnData,
1408
- entity: entity,
1409
- filters: filters,
1410
- handlePageChange: handlePageChange,
1411
- helpDocUrl: helpDocUrl,
1412
- onDeleteClick: onDeleteClick,
1413
- onEditClick: onEditClick,
1414
- onRowClick: onRowClick,
1415
- pageProperties: pageProperties,
1416
- searchTerm: searchTerm,
1417
- setFilters: setFilters,
1418
- totalCount: totalCount,
1419
- rowData: templates,
1420
- setIsPaneOpen: setIsNewTemplatePaneOpen
1421
- }), /*#__PURE__*/jsxRuntime.jsx(Create, _objectSpread$5({
1422
- isOpen: isNewTemplatePaneOpen,
1423
- onClose: function onClose() {
1424
- return setIsNewTemplatePaneOpen(false);
1425
- }
1426
- }, otherProps)), /*#__PURE__*/jsxRuntime.jsx(Edit, _objectSpread$5(_objectSpread$5({
1427
- isOpen: isEditPaneOpen,
1428
- setTemplate: setSelectedTemplate,
1429
- template: selectedTemplate
1430
- }, otherProps), {}, {
1431
- onClose: function onClose() {
1432
- return setIsEditPaneOpen(false);
1433
- }
1434
- })), /*#__PURE__*/jsxRuntime.jsx(Alert__default["default"], {
1435
- isOpen: isDeleteAlertOpen,
1436
- isSubmitting: isDeleting,
1437
- submitButtonLabel: t("neetoApprovals.buttons.delete"),
1438
- message: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
1439
- i18nKey: "neetoApprovals.alerts.deleting_",
1440
- values: {
1441
- what: t("neetoApprovals.common.template", constants.SINGULAR),
1442
- name: selectedTemplate === null || selectedTemplate === void 0 ? void 0 : selectedTemplate.name
1443
- }
1444
- }),
1445
- title: t("neetoApprovals.common.delete_", {
1446
- what: t("neetoApprovals.common.template", constants.SINGULAR)
1447
- }),
1448
- onClose: function onClose() {
1449
- return setSelectedTemplate({});
1450
- },
1451
- onSubmit: function onSubmit() {
1452
- return handleDelete(selectedTemplate === null || selectedTemplate === void 0 ? void 0 : selectedTemplate.id);
1453
- }
1454
- }), /*#__PURE__*/jsxRuntime.jsx(TemplateDetails, {
1455
- isOpen: isShowPaneOpen,
1456
- template: selectedTemplate,
1457
- onClose: function onClose() {
1458
- return setSelectedTemplate({});
1459
- }
1460
- })]
1461
- });
1462
- };
1463
-
1464
- 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; }
1465
- 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; }
1466
- var createRoutes = function createRoutes(_ref) {
1467
- var config = _ref.config,
1468
- isNewTemplatePaneOpen = _ref.isNewTemplatePaneOpen,
1469
- searchTerm = _ref.searchTerm,
1470
- setIsNewTemplatePaneOpen = _ref.setIsNewTemplatePaneOpen;
1471
- return [{
1472
- component: function component() {
1473
- return /*#__PURE__*/jsxRuntime.jsx(Templates, _objectSpread$4({}, _objectSpread$4({
1474
- isNewTemplatePaneOpen: isNewTemplatePaneOpen,
1475
- searchTerm: searchTerm,
1476
- setIsNewTemplatePaneOpen: setIsNewTemplatePaneOpen
1477
- }, config)));
1478
- },
1479
- path: "".concat(config.approvalsPath).concat(routes.templates.index),
1480
- actionBlock: function actionBlock() {
1481
- var _t;
1482
- return /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
1483
- "data-cy": "neeto-approvals-templates-add-new-button",
1484
- label: i18next.t("neetoApprovals.common.addNew_", {
1485
- what: (_t = i18next.t("neetoApprovals.common.template", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1486
- }),
1487
- onClick: function onClick() {
1488
- return setIsNewTemplatePaneOpen(true);
1489
- }
1490
- });
1491
- },
1492
- searchPlaceholder: i18next.t("neetoApprovals.inputs.placeholders.search_", {
1493
- what: i18next.t("neetoApprovals.common.template", constants.PLURAL).toLocaleLowerCase()
1494
- })
1495
- }, {
1496
- component: function component() {
1497
- return /*#__PURE__*/jsxRuntime.jsx(PendingRequests, _objectSpread$4({}, config));
1498
- },
1499
- path: "".concat(config.approvalsPath).concat(routes.pending)
1500
- }, {
1501
- component: function component() {
1502
- return /*#__PURE__*/jsxRuntime.jsx(History, _objectSpread$4({}, config));
1503
- },
1504
- path: "".concat(config.approvalsPath).concat(routes.history)
1505
- }];
1506
- };
1507
-
1508
- var Header = function Header(_ref) {
1509
- var _currentTab$actionBlo;
1510
- var appRoutes = _ref.appRoutes,
1511
- breadcrumbs = _ref.breadcrumbs;
1512
- var _useTranslation = reactI18next.useTranslation(),
1513
- t = _useTranslation.t;
1514
- var _useLocation = reactRouterDom.useLocation(),
1515
- pathname = _useLocation.pathname;
1516
- var currentTab = neetoCist.findBy({
1517
- path: pathname
1518
- }, appRoutes);
1519
- return /*#__PURE__*/jsxRuntime.jsx(NeetoHeader__default["default"], {
1520
- actionBlock: currentTab === null || currentTab === void 0 || (_currentTab$actionBlo = currentTab.actionBlock) === null || _currentTab$actionBlo === void 0 ? void 0 : _currentTab$actionBlo.call(currentTab),
1521
- title: t("neetoApprovals.common.approval", constants.PLURAL),
1522
- searchProps: (currentTab === null || currentTab === void 0 ? void 0 : currentTab.searchPlaceholder) && {
1523
- placeholder: currentTab === null || currentTab === void 0 ? void 0 : currentTab.searchPlaceholder
1524
- },
1525
- breadcrumbs: breadcrumbs
1526
- });
1527
- };
1528
-
1529
- var fetch$1 = function fetch() {
1530
- return axios__default["default"].get("".concat(BASE_URL, "/views"));
1531
- };
1532
- var viewsApi = {
1533
- fetch: fetch$1
1534
- };
1535
-
1536
- 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; }
1537
- 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; }
1538
- var useFetchViews = function useFetchViews() {
1539
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1540
- return reactQuery.useQuery(_objectSpread$3({
1541
- queryKey: [QUERY_KEYS.VIEWS],
1542
- queryFn: viewsApi.fetch,
1543
- select: function select(response) {
1544
- return response.data || response;
1545
- }
1546
- }, options));
1547
- };
1548
-
1549
- var Tab = function Tab(_ref) {
1550
- var _pathname$split$;
1551
- var approvalsPath = _ref.approvalsPath;
1552
- var _useLocation = reactRouterDom.useLocation(),
1553
- pathname = _useLocation.pathname;
1554
- var history = reactRouterDom.useHistory();
1555
- var approvalFilter = getApprovalFilter();
1556
- var approvalFilterKeys = ramda.keys(approvalFilter);
1557
- var category = (_pathname$split$ = pathname.split(routes.approvals)[1]) === null || _pathname$split$ === void 0 ? void 0 : _pathname$split$.toLocaleUpperCase();
1558
- var isActive = function isActive(filter) {
1559
- return category.includes(filter);
1560
- };
1561
- var getRoute = function getRoute(filter) {
1562
- return "".concat(approvalsPath).concat(filter.toLowerCase());
1563
- };
1564
- var _useFetchViews = useFetchViews(),
1565
- _useFetchViews$data = _useFetchViews.data,
1566
- _useFetchViews$data2 = _useFetchViews$data === void 0 ? {} : _useFetchViews$data,
1567
- _useFetchViews$data2$ = _useFetchViews$data2.views,
1568
- views = _useFetchViews$data2$ === void 0 ? {} : _useFetchViews$data2$;
1569
- return /*#__PURE__*/jsxRuntime.jsx(NeetoUITab__default["default"], {
1570
- children: approvalFilterKeys.map(function (filter) {
1571
- return /*#__PURE__*/jsxRuntime.jsxs(NeetoUITab__default["default"].Item, {
1572
- active: isActive(filter),
1573
- count: views[filter === null || filter === void 0 ? void 0 : filter.toLocaleLowerCase()],
1574
- label: approvalFilter[filter].label,
1575
- onClick: function onClick() {
1576
- return history.push(getRoute(filter));
1577
- },
1578
- children: [approvalFilter[filter].label, " (", views[filter === null || filter === void 0 ? void 0 : filter.toLocaleLowerCase()] || 0, ")"]
1579
- }, filter);
1580
- })
1581
- });
1582
- };
1583
-
1584
- 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; }
1585
- 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; }
1586
- var Approvals = function Approvals(_ref) {
1587
- var config = _ref.config;
1588
- var _useQueryParams = reactUtils.useQueryParams(),
1589
- _useQueryParams$searc = _useQueryParams.searchTerm,
1590
- searchTerm = _useQueryParams$searc === void 0 ? "" : _useQueryParams$searc;
1591
- var _useState = React.useState(false),
1592
- _useState2 = _slicedToArray(_useState, 2),
1593
- isNewTemplatePaneOpen = _useState2[0],
1594
- setIsNewTemplatePaneOpen = _useState2[1];
1595
- var appRoutes = createRoutes({
1596
- config: config,
1597
- searchTerm: searchTerm,
1598
- isNewTemplatePaneOpen: isNewTemplatePaneOpen,
1599
- setIsNewTemplatePaneOpen: setIsNewTemplatePaneOpen
1600
- });
1601
- return /*#__PURE__*/jsxRuntime.jsx("div", {
1602
- className: "w-full overflow-y-auto",
1603
- children: /*#__PURE__*/jsxRuntime.jsxs(Container__default["default"], {
1604
- children: [/*#__PURE__*/jsxRuntime.jsx(Header, _objectSpread$2({}, _objectSpread$2({
1605
- appRoutes: appRoutes
1606
- }, config))), /*#__PURE__*/jsxRuntime.jsx(Tab, {
1607
- approvalsPath: config.approvalsPath
1608
- }), /*#__PURE__*/jsxRuntime.jsxs(reactRouterDom.Switch, {
1609
- children: [appRoutes.map(function (_ref2) {
1610
- var path = _ref2.path,
1611
- component = _ref2.component;
1612
- return /*#__PURE__*/React.createElement(reactRouterDom.Route, {
1613
- exact: true,
1614
- component: component,
1615
- path: path,
1616
- key: path
1617
- });
1618
- }), /*#__PURE__*/jsxRuntime.jsx(reactRouterDom.Redirect, {
1619
- exact: true,
1620
- from: config.approvalsPath
1621
- // eslint-disable-next-line @bigbinary/neeto/use-common-routes
1622
- ,
1623
- to: "".concat(config.approvalsPath).concat(routes.pending)
1624
- })]
1625
- })]
1626
- })
1627
- });
1628
- };
1629
-
1630
- var fetch = function fetch(params) {
1631
- return axios__default["default"].get("".concat(BASE_URL, "/approvers"), {
1632
- params: params
1633
- });
1634
- };
1635
- var approversApi = {
1636
- fetch: fetch
1637
- };
1638
-
1639
- 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; }
1640
- 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; }
1641
- var useFetchApprovers = function useFetchApprovers() {
1642
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1643
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1644
- return reactQuery.useQuery(_objectSpread$1({
1645
- queryKey: [QUERY_KEYS.APPROVERS, params],
1646
- queryFn: function queryFn() {
1647
- return approversApi.fetch(params);
1648
- },
1649
- select: function select(response) {
1650
- return response.data || response;
1651
- }
1652
- }, options));
1653
- };
1654
-
1655
- var Form$1 = function Form(_ref) {
1656
- var _globalProps$user;
1657
- var _ref$requestableId = _ref.requestableId,
1658
- requestableId = _ref$requestableId === void 0 ? "" : _ref$requestableId,
1659
- selectedTemplateData = _ref.selectedTemplateData,
1660
- setSelectedTemplateData = _ref.setSelectedTemplateData;
1661
- var _useTranslation = reactI18next.useTranslation(),
1662
- t = _useTranslation.t;
1663
- var _useFormikContext = formik.useFormikContext(),
1664
- setFieldValue = _useFormikContext.setFieldValue;
1665
- var inputRef = React.useRef(null);
1666
- var _useState = React.useState(null),
1667
- _useState2 = _slicedToArray(_useState, 2),
1668
- approverId = _useState2[0],
1669
- setApproverId = _useState2[1];
1670
- var _useState3 = React.useState(null),
1671
- _useState4 = _slicedToArray(_useState3, 2),
1672
- templateId = _useState4[0],
1673
- setTemplateId = _useState4[1];
1674
- var params = {
1675
- requestableId: requestableId,
1676
- approverId: approverId,
1677
- approvalRequestorId: (_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.id
1678
- };
1679
- var _useFetchTemplates = useFetchTemplates(),
1680
- _useFetchTemplates$da = _useFetchTemplates.data,
1681
- _useFetchTemplates$da2 = _useFetchTemplates$da === void 0 ? {} : _useFetchTemplates$da,
1682
- _useFetchTemplates$da3 = _useFetchTemplates$da2.templates,
1683
- templates = _useFetchTemplates$da3 === void 0 ? [] : _useFetchTemplates$da3;
1684
- var _useFetchTemplate = useFetchTemplate({
1685
- id: templateId,
1686
- params: params
1687
- }),
1688
- _useFetchTemplate$dat = _useFetchTemplate.data,
1689
- _useFetchTemplate$dat2 = _useFetchTemplate$dat === void 0 ? {} : _useFetchTemplate$dat,
1690
- _useFetchTemplate$dat3 = _useFetchTemplate$dat2.template,
1691
- template = _useFetchTemplate$dat3 === void 0 ? {} : _useFetchTemplate$dat3;
1692
- var _useFetchApprovers = useFetchApprovers(),
1693
- _useFetchApprovers$da = _useFetchApprovers.data,
1694
- _useFetchApprovers$da2 = _useFetchApprovers$da === void 0 ? {} : _useFetchApprovers$da,
1695
- _useFetchApprovers$da3 = _useFetchApprovers$da2.approvers,
1696
- approvers = _useFetchApprovers$da3 === void 0 ? [] : _useFetchApprovers$da3;
1697
- var approverOptions = React.useMemo(function () {
1698
- return approvers.map(function (approver) {
1699
- return {
1700
- label: approver.name,
1701
- value: approver.id
1702
- };
1703
- });
1704
- }, [approvers]);
1705
- var templateOptions = templates.map(function (template) {
1706
- return {
1707
- label: template.name,
1708
- value: template.id
1709
- };
1710
- });
1711
- var updateMessage = function updateMessage() {
1712
- var _inputRef$current;
1713
- var message = template.parsedMessage || template.message;
1714
- setFieldValue("message", message);
1715
- inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || (_inputRef$current = _inputRef$current.editor) === null || _inputRef$current === void 0 || (_inputRef$current = _inputRef$current.commands) === null || _inputRef$current === void 0 || _inputRef$current.setContent(message);
1716
- };
1717
- var handleTemplateChange = function handleTemplateChange(selectedTemplate) {
1718
- setTemplateId(selectedTemplate.value);
1719
- };
1720
- var handleApproverChange = function handleApproverChange(approver) {
1721
- setApproverId(approver.value);
1722
- setFieldValue("approver", approver);
1723
- };
1724
- React.useEffect(function () {
1725
- if (ramda.isEmpty(template)) return;
1726
- setSelectedTemplateData(template);
1727
- updateMessage();
1728
- }, [template]);
1729
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1730
- className: "w-full space-y-6",
1731
- children: [/*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
1732
- label: t("neetoApprovals.select.approval"),
1733
- options: templateOptions,
1734
- onChange: function onChange(selectedTemplate) {
1735
- return handleTemplateChange(selectedTemplate);
1736
- }
1737
- }), (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message) && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1738
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
1739
- className: "flex space-x-6",
1740
- children: /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
1741
- required: true,
1742
- label: t("neetoApprovals.inputs.labels.approver"),
1743
- name: "approver",
1744
- options: approverOptions,
1745
- placeholder: t("neetoApprovals.inputs.placeholders.select_", {
1746
- what: t("neetoApprovals.common.approver", constants.SINGULAR)
1747
- }),
1748
- onChange: handleApproverChange
1749
- })
1750
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
1751
- className: "space-y-2",
1752
- children: /*#__PURE__*/jsxRuntime.jsx(FormikEditor__default["default"], {
1753
- required: true,
1754
- label: t("neetoApprovals.inputs.labels.message"),
1755
- name: "message",
1756
- ref: inputRef,
1757
- rows: 3,
1758
- placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
1759
- what: t("neetoApprovals.inputs.labels.message")
1760
- })
1761
- })
1762
- })]
1763
- })]
1764
- });
1765
- };
1766
-
1767
- var Form = function Form(_ref) {
1768
- var isOpen = _ref.isOpen,
1769
- setIsPaneOpen = _ref.setIsPaneOpen,
1770
- onSubmit = _ref.onSubmit,
1771
- isLoading = _ref.isLoading,
1772
- _ref$requestableId = _ref.requestableId,
1773
- requestableId = _ref$requestableId === void 0 ? "" : _ref$requestableId;
1774
- var _useState = React.useState({}),
1775
- _useState2 = _slicedToArray(_useState, 2),
1776
- selectedTemplateData = _useState2[0],
1777
- setSelectedTemplateData = _useState2[1];
1778
- var _useTranslation = reactI18next.useTranslation(),
1779
- t = _useTranslation.t;
1780
- var onClose = function onClose() {
1781
- setIsPaneOpen(false);
1782
- setSelectedTemplateData({});
1783
- };
1784
- var handleSubmit = function handleSubmit(values) {
1785
- onSubmit({
1786
- message: values.message,
1787
- approverId: values.approver.value
1788
- }, selectedTemplateData, onClose);
1789
- };
1790
- return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"], {
1791
- isOpen: isOpen,
1792
- onClose: onClose,
1793
- children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Header, {
1794
- children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1795
- style: "h2",
1796
- children: t("neetoApprovals.common.add_", {
1797
- what: t("neetoApprovals.common.approval", constants.SINGULAR)
1798
- })
1799
- })
1800
- }), /*#__PURE__*/jsxRuntime.jsxs(FormikForm__default["default"], {
1801
- formikProps: {
1802
- onSubmit: handleSubmit,
1803
- initialValues: APPROVAL_REQUEST_FORM_INITIAL_VALUES,
1804
- validationSchema: REQUEST_FORM_VALIDATION_SCHEMA
1805
- },
1806
- children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Body, {
1807
- children: /*#__PURE__*/jsxRuntime.jsx(Form$1, {
1808
- requestableId: requestableId,
1809
- selectedTemplateData: selectedTemplateData,
1810
- setSelectedTemplateData: setSelectedTemplateData
1811
- })
1812
- }), /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Footer, {
1813
- children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
1814
- cancelButtonProps: {
1815
- onClick: onClose
1816
- },
1817
- isSubmitting: isLoading
1818
- })
1819
- })]
1820
- })]
1821
- });
1822
- };
1823
-
1824
- var show = function show(id) {
1825
- return axios__default["default"].get("".concat(BASE_URL, "/public/requests/").concat(id));
1826
- };
1827
- var accept = function accept(_ref) {
1828
- var id = _ref.id,
1829
- note = _ref.note;
1830
- return axios__default["default"].patch("".concat(BASE_URL, "/public/requests/").concat(id, "/accept"), {
1831
- note: note
1832
- });
1833
- };
1834
- var decline = function decline(_ref2) {
1835
- var id = _ref2.id,
1836
- note = _ref2.note;
1837
- return axios__default["default"].patch("".concat(BASE_URL, "/public/requests/").concat(id, "/decline"), {
1838
- note: note
1839
- });
1840
- };
1841
- var publicRequestsApi = {
1842
- show: show,
1843
- accept: accept,
1844
- decline: decline
1845
- };
1846
-
1847
- 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; }
1848
- 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; }
1849
- var useFetchPublicRequest = function useFetchPublicRequest(_ref, options) {
1850
- var requestId = _ref.requestId;
1851
- return reactQuery.useQuery(_objectSpread({
1852
- queryKey: [QUERY_KEYS.SHOW_PUBLIC_REQUEST, requestId],
1853
- queryFn: function queryFn() {
1854
- return publicRequestsApi.show(requestId);
1855
- }
1856
- }, options));
1857
- };
1858
- var useAcceptPendingRequest = function useAcceptPendingRequest(options) {
1859
- return reactUtils.useMutationWithInvalidation(publicRequestsApi.accept, _objectSpread({
1860
- keysToInvalidate: [[QUERY_KEYS.SHOW_PUBLIC_REQUEST], [QUERY_KEYS.REQUESTS], [QUERY_KEYS.VIEWS]]
1861
- }, options));
1862
- };
1863
- var useDeclinePendingRequest = function useDeclinePendingRequest(options) {
1864
- return reactUtils.useMutationWithInvalidation(publicRequestsApi.decline, _objectSpread({
1865
- keysToInvalidate: [[QUERY_KEYS.SHOW_PUBLIC_REQUEST], [QUERY_KEYS.REQUESTS], [QUERY_KEYS.VIEWS]]
1866
- }, options));
1867
- };
1868
-
1869
- var Public = function Public() {
1870
- var _t;
1871
- var _useState = React.useState(""),
1872
- _useState2 = _slicedToArray(_useState, 2),
1873
- note = _useState2[0],
1874
- setNote = _useState2[1];
1875
- var _useParams = reactRouterDom.useParams(),
1876
- id = _useParams.id;
1877
- var _useTranslation = reactI18next.useTranslation(),
1878
- t = _useTranslation.t;
1879
- var _useFetchPublicReques = useFetchPublicRequest({
1880
- requestId: id
1881
- }),
1882
- data = _useFetchPublicReques.data,
1883
- isLoading = _useFetchPublicReques.isLoading;
1884
- var _ref = data || {},
1885
- _ref$approvalRequest = _ref.approvalRequest,
1886
- approvalRequest = _ref$approvalRequest === void 0 ? {} : _ref$approvalRequest;
1887
- React.useEffect(function () {
1888
- var _data$approvalRequest;
1889
- if (data !== null && data !== void 0 && (_data$approvalRequest = data.approvalRequest) !== null && _data$approvalRequest !== void 0 && _data$approvalRequest.note) {
1890
- setNote(data.approvalRequest.note);
1891
- }
1892
- }, [data]);
1893
- var _useAcceptPendingRequ = useAcceptPendingRequest(),
1894
- acceptPendingRequest = _useAcceptPendingRequ.mutate,
1895
- isAccepting = _useAcceptPendingRequ.isPending;
1896
- var _useDeclinePendingReq = useDeclinePendingRequest(),
1897
- declinePendingRequest = _useDeclinePendingReq.mutate,
1898
- isDeclining = _useDeclinePendingReq.isPending;
1899
- var calloutStyle = approvalRequest.status === STATUSES.approved ? "success" : "danger";
1900
- var hideTextArea = approvalRequest.status !== STATUSES.pending && ramda.isEmpty(note);
1901
- if (isLoading) {
1902
- return /*#__PURE__*/jsxRuntime.jsx("div", {
1903
- className: "h-screen items-center justify-center",
1904
- children: /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {})
1905
- });
1906
- }
1907
- return /*#__PURE__*/jsxRuntime.jsxs(Container__default["default"], {
1908
- children: [/*#__PURE__*/jsxRuntime.jsx(NeetoHeader__default["default"], {
1909
- title: t("neetoApprovals.common.approval", constants.PLURAL)
1910
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
1911
- className: "flex h-screen w-full flex-col items-center",
1912
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
1913
- className: "neeto-ui-shadow-s w-2/5 rounded border p-6",
1914
- children: approvalRequest ? /*#__PURE__*/jsxRuntime.jsxs("div", {
1915
- className: "flex w-full flex-col space-y-6",
1916
- children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1917
- style: "h2",
1918
- children: approvalRequest.title
1919
- }), /*#__PURE__*/jsxRuntime.jsx(EditorContent__default["default"], {
1920
- content: approvalRequest.message
1921
- }), !hideTextArea && /*#__PURE__*/jsxRuntime.jsx(Textarea__default["default"], {
1922
- label: t("neetoApprovals.common.note"),
1923
- placeholder: t("neetoApprovals.inputs.placeholders.add_", {
1924
- what: (_t = t("neetoApprovals.common.note")) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1925
- }),
1926
- value: note,
1927
- disabled: approvalRequest.status !== STATUSES.pending,
1928
- onChange: utils$1.withEventTargetValue(setNote)
1929
- }), approvalRequest.status === STATUSES.pending ? /*#__PURE__*/jsxRuntime.jsxs("div", {
1930
- className: "mx-auto mt-8 flex space-x-6",
1931
- children: [/*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
1932
- label: t("neetoApprovals.buttons.approve"),
1933
- onClick: function onClick() {
1934
- return acceptPendingRequest({
1935
- id: approvalRequest.id,
1936
- note: note
1937
- });
1938
- },
1939
- loading: isAccepting
1940
- }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
1941
- label: t("neetoApprovals.buttons.decline"),
1942
- onClick: function onClick() {
1943
- return declinePendingRequest({
1944
- id: approvalRequest.id,
1945
- note: note
1946
- });
1947
- },
1948
- style: "secondary",
1949
- loading: isDeclining
1950
- })]
1951
- }) : /*#__PURE__*/jsxRuntime.jsx(Callout__default["default"], {
1952
- style: calloutStyle,
1953
- children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1954
- style: "body1",
1955
- children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
1956
- i18nKey: "neetoApprovals.typography.approvalRequest",
1957
- values: {
1958
- status: approvalRequest.status
1959
- }
1960
- })
1961
- })
1962
- })]
1963
- }) : /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1964
- style: "h4",
1965
- className: "text-center",
1966
- children: t("neetoApprovals.common.notFound")
1967
- })
1968
- })
1969
- })]
1970
- });
1971
- };
1972
-
1973
- var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
1974
-
1975
- var css = ".neeto-approvals-dropdown__button{border-radius:0!important;font-weight:var(--neeto-ui-font-normal);min-height:34px;min-width:150px;text-align:left;width:100%}.neeto-approvals-scrollbar__inner{height:200px;width:100%}.neeto-approvals-scrollbar__outer{height:150px;left:0;overflow:\"hidden\";position:\"absolute\";top:0;visibility:\"hidden\";width:200px}.neeto-ui-subheader .neeto-ui-subheader__left-wrapper .neeto-ui-subheader__left{max-width:none}td.ant-table-column-sort{background:transparent}.neeto-approvals-empty-state{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.neeto-approvals-empty-state__image{align-items:center;display:flex;justify-content:center;margin-bottom:2rem}.neeto-approvals-empty-state__title--with-action-block{margin-bottom:1rem}.neeto-approvals-empty-state__action-block{display:flex;justify-content:center}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9iYXNlL19iYXNlLnNjc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvc3R5bGVzaGVldHMvYXBwbGljYXRpb24uc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9iYXNlL19vdmVycmlkZXMuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19lbXB0eS1zdGF0ZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtDQUNFLHlCQUFBLENBQ0EsdUNBQUEsQ0FDQSxlQUFBLENBQ0EsZUFBQSxDQUNBLGVBQUEsQ0FDQSxVQ0NGLENER0Usa0NBRUUsWUFBQSxDQURBLFVDQ0osQ0RHRSxrQ0FLRSxZQUFBLENBRkEsTUFBQSxDQUdBLGlCQUFBLENBTEEsbUJBQUEsQ0FDQSxLQUFBLENBS0EsbUJBQUEsQ0FIQSxXQ0VKLENDbkJJLGdGQUNFLGNEc0JOLENDaEJBLHlCQUNFLHNCRG1CRixDRTdCQSw2QkFDRSxrQkFBQSxDQUNBLFlBQUEsQ0FDQSxXQUFBLENBQ0Esc0JBQUEsQ0FDQSxVRmdDRixDRTlCRSxvQ0FHRSxrQkFBQSxDQUZBLFlBQUEsQ0FDQSxzQkFBQSxDQUVBLGtCRmdDSixDRTVCSSx1REFDRSxrQkY4Qk4sQ0UxQkUsMkNBQ0UsWUFBQSxDQUNBLHNCRjRCSiIsInNvdXJjZXNDb250ZW50IjpbIi5uZWV0by1hcHByb3ZhbHMtZHJvcGRvd25fX2J1dHRvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLW5lZXRvLXVpLWZvbnQtbm9ybWFsKTtcbiAgbWluLWhlaWdodDogMzRweDtcbiAgbWluLXdpZHRoOiAxNTBweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5uZWV0by1hcHByb3ZhbHMtc2Nyb2xsYmFyIHtcbiAgJl9faW5uZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMjAwcHg7XG4gIH1cblxuICAmX19vdXRlciB7XG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIjtcbiAgICB0b3A6IDBweDtcbiAgICBsZWZ0OiAwcHg7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIGhlaWdodDogMTUwcHg7XG4gICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCI7XG4gICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIjtcbiAgfVxufVxuIiwiLm5lZXRvLWFwcHJvdmFscy1kcm9wZG93bl9fYnV0dG9uIHtcbiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogdmFyKC0tbmVldG8tdWktZm9udC1ub3JtYWwpO1xuICBtaW4taGVpZ2h0OiAzNHB4O1xuICBtaW4td2lkdGg6IDE1MHB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLm5lZXRvLWFwcHJvdmFscy1zY3JvbGxiYXJfX2lubmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMjAwcHg7XG59XG4ubmVldG8tYXBwcm92YWxzLXNjcm9sbGJhcl9fb3V0ZXIge1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiO1xuICB0b3A6IDBweDtcbiAgbGVmdDogMHB4O1xuICB3aWR0aDogMjAwcHg7XG4gIGhlaWdodDogMTUwcHg7XG4gIG92ZXJmbG93OiBcImhpZGRlblwiO1xuICB2aXNpYmlsaXR5OiBcImhpZGRlblwiO1xufVxuXG4ubmVldG8tdWktc3ViaGVhZGVyIC5uZWV0by11aS1zdWJoZWFkZXJfX2xlZnQtd3JhcHBlciAubmVldG8tdWktc3ViaGVhZGVyX19sZWZ0IHtcbiAgbWF4LXdpZHRoOiBub25lO1xufVxuXG50ZC5hbnQtdGFibGUtY29sdW1uLXNvcnQge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLm5lZXRvLWFwcHJvdmFscy1lbXB0eS1zdGF0ZSB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xufVxuLm5lZXRvLWFwcHJvdmFscy1lbXB0eS1zdGF0ZV9faW1hZ2Uge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cbi5uZWV0by1hcHByb3ZhbHMtZW1wdHktc3RhdGVfX3RpdGxlLS13aXRoLWFjdGlvbi1ibG9jayB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4ubmVldG8tYXBwcm92YWxzLWVtcHR5LXN0YXRlX19hY3Rpb24tYmxvY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn0iLCIubmVldG8tdWktc3ViaGVhZGVyIHtcbiAgLm5lZXRvLXVpLXN1YmhlYWRlcl9fbGVmdC13cmFwcGVyIHtcbiAgICAubmVldG8tdWktc3ViaGVhZGVyX19sZWZ0IHtcbiAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQW50IERlc2lnbiBPdmVycmlkZXNcbnRkLmFudC10YWJsZS1jb2x1bW4tc29ydCB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuIiwiLm5lZXRvLWFwcHJvdmFscy1lbXB0eS1zdGF0ZSB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuXG4gICZfX2ltYWdlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgfVxuXG4gICZfX3RpdGxlIHtcbiAgICAmLS13aXRoLWFjdGlvbi1ibG9jayB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIH1cbiAgfVxuXG4gICZfX2FjdGlvbi1ibG9jayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxufVxuIl19 */";
1976
- n(css,{});
1977
-
1978
- exports.Approvals = Approvals;
1979
- exports.Form = Form;
1980
- exports.Public = Public;
1981
- exports.RequestDetailsPane = RequestDetailsPane;
1982
- //# sourceMappingURL=index.cjs.js.map