@bigbinary/neeto-approvals-frontend 1.1.0 → 1.2.1

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