@bigbinary/neeto-approvals-frontend 0.2.7 → 0.2.8

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.js CHANGED
@@ -2,26 +2,25 @@ import React, { useMemo, useState, useCallback, useEffect, useRef } from 'react'
2
2
  import Container from '@bigbinary/neeto-molecules/Container';
3
3
  import { useLocation, useHistory, Link, Switch, Route, Redirect, useParams } from 'react-router-dom';
4
4
  import i18next, { t as t$1 } from 'i18next';
5
- import * as yup from 'yup';
6
- import { DEFAULT_PAGE_INDEX, SINGULAR, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
7
- import { Pane, Typography, Button, Dropdown, NoData, Table as Table$1, Alert, Tag, Label, Textarea, Tab as Tab$1, Select as Select$1, Callout } from '@bigbinary/neetoui';
8
- import { useMutationWithInvalidation, useDebounce } from '@bigbinary/neeto-commons-frontend/react-utils';
9
- import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
5
+ import { DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE, PLURAL, SINGULAR } from '@bigbinary/neeto-commons-frontend/constants';
6
+ import { Button, Tag, Pane, Typography, Label, Textarea, Table as Table$1, NoData, Dropdown, Alert, Tab as Tab$1, Select as Select$1, Callout } from '@bigbinary/neetoui';
7
+ import { curryN, isNil, curry, complement, either, isEmpty, assoc, keys } from 'ramda';
8
+ import { useMutationWithInvalidation, useDebounce, withT } from '@bigbinary/neeto-commons-frontend/react-utils';
10
9
  import { useTranslation, Trans } from 'react-i18next';
11
- import { isEmpty, curryN, isNil, complement, either, curry, fromPairs, assoc, keys, modify } from 'ramda';
12
10
  import { useQuery, useQueryClient } from 'react-query';
13
11
  import axios from 'axios';
14
- import { Form as Form$3, Input, Textarea as Textarea$1, Select } from '@bigbinary/neetoui/formik';
15
- import { MenuHorizontal, Delete } from '@bigbinary/neeto-icons';
16
- import TableWrapper from '@bigbinary/neeto-molecules/TableWrapper';
17
12
  import { dateFormat, withEventTargetValue } from '@bigbinary/neeto-commons-frontend/utils';
18
13
  import dayjs from 'dayjs';
19
14
  import timezone from 'dayjs/plugin/timezone';
20
15
  import utc from 'dayjs/plugin/utc';
21
16
  import { globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
22
- import { EditorContent, isEditorEmpty, FormikEditor, substituteVariables } from '@bigbinary/neeto-editor';
23
- import { removeBy } from '@bigbinary/neeto-commons-frontend/pure';
24
- import { useFormikContext, FieldArray } from 'formik';
17
+ import { EditorContent, isEditorEmpty, FormikEditor } from '@bigbinary/neeto-editor';
18
+ import { removeBy, findById } from '@bigbinary/neeto-commons-frontend/pure';
19
+ import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
20
+ import { Form as Form$2, Input, Textarea as Textarea$1, Select } from '@bigbinary/neetoui/formik';
21
+ import * as yup from 'yup';
22
+ import { MenuHorizontal } from '@bigbinary/neeto-icons';
23
+ import TableWrapper from '@bigbinary/neeto-molecules/TableWrapper';
25
24
  import NeetoHeader from '@bigbinary/neeto-molecules/Header';
26
25
 
27
26
  function _typeof$1(obj) {
@@ -120,12 +119,9 @@ function _slicedToArray$1(arr, i) {
120
119
  return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest$1();
121
120
  }
122
121
 
123
- var BASE_URL = "neeto_approvals";
124
- var TEMPLATE_URL = "".concat(BASE_URL, "/templates");
125
122
  var routes = {
126
123
  home: "/",
127
124
  approvals: "/approvals/",
128
- approvers: "approvers",
129
125
  pending: "pending",
130
126
  history: "history",
131
127
  templates: {
@@ -137,7 +133,6 @@ var routes = {
137
133
  };
138
134
 
139
135
  new URLSearchParams(window.location.search);
140
- var DEFAULT_PAGE_SIZE = 8;
141
136
  var DEFAULT_FILTER_VALUES = {
142
137
  searchTerm: "",
143
138
  sortBy: "",
@@ -158,575 +153,14 @@ var STATUS_TAG_STYLE = {
158
153
  };
159
154
  var APPROVAL_REQUEST_FORM_INITIAL_VALUES = {
160
155
  message: "",
161
- variables: []
162
- };
163
- var APPROVAL_REQUEST_FORM_VALIDATION_SCHEMA = yup.object().shape({
164
- variables: yup.array().of(yup.object().shape({
165
- variable: yup.string().trim().required(t$1("neetoApprovals.validations.required", {
166
- what: t$1("neetoApprovals.common.field")
167
- }))
168
- }))
169
- });
156
+ additionalInfo: ""
157
+ };
170
158
  var STATUS_UPDATED_BY = {
171
159
  rejected: t$1("neetoApprovals.common.rejectedBy"),
172
160
  approved: t$1("neetoApprovals.common.approvedBy"),
173
161
  cancelled: t$1("neetoApprovals.common.cancelledBy")
174
162
  };
175
163
 
176
- var handleEmptyPage = function handleEmptyPage(data, pageProperties, handleTablePagination) {
177
- if (isEmpty(data) && pageProperties.page !== 1) {
178
- handleTablePagination(pageProperties.page - 1, pageProperties.pageSize);
179
- }
180
- };
181
-
182
- var fetch$3 = function fetch(params) {
183
- return axios.get("".concat(BASE_URL, "/approvers"), {
184
- params: params
185
- });
186
- };
187
- var create$1 = function create(payload) {
188
- return axios.post("".concat(BASE_URL, "/approvers"), payload);
189
- };
190
- var update$2 = function update(_ref) {
191
- var id = _ref.id,
192
- payload = _ref.payload;
193
- return axios.put("".concat(BASE_URL, "/approvers/").concat(id), {
194
- approver: payload
195
- });
196
- };
197
- var destroy$1 = function destroy(_ref2) {
198
- var approverId = _ref2.approverId;
199
- return axios["delete"]("".concat(BASE_URL, "/approvers/").concat(approverId));
200
- };
201
- var approversApi = {
202
- create: create$1,
203
- fetch: fetch$3,
204
- update: update$2,
205
- destroy: destroy$1
206
- };
207
-
208
- var QUERY_KEYS = {
209
- APPROVERS: "neeto-approvals-approvers",
210
- TEMPLATES: "neeto-approvals-templates",
211
- REQUESTS: "neeto-approvals-requests",
212
- SHOW_TEMPLATE: "neeto-approvals-show-template",
213
- SHOW_PUBLIC_REQUEST: "neeto-approvals-show-public-request",
214
- VIEWS: "neeto-approvals-views"
215
- };
216
-
217
- function ownKeys$c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
218
- function _objectSpread$c(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$c(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
219
- var useFetchApprovers = function useFetchApprovers() {
220
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
221
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
222
- return useQuery([QUERY_KEYS.APPROVERS, params], function () {
223
- return approversApi.fetch(params);
224
- }, _objectSpread$c({
225
- select: function select(response) {
226
- return response.data || response;
227
- },
228
- keepPreviousData: true,
229
- onSuccess: function onSuccess(_ref) {
230
- var _params$onSuccess;
231
- var approvers = _ref.approvers;
232
- return params === null || params === void 0 ? void 0 : (_params$onSuccess = params.onSuccess) === null || _params$onSuccess === void 0 ? void 0 : _params$onSuccess.call(params, approvers);
233
- }
234
- }, options));
235
- };
236
- var useCreateApprover = function useCreateApprover(options) {
237
- return useMutationWithInvalidation(approversApi.create, _objectSpread$c({
238
- keysToInvalidate: [QUERY_KEYS.APPROVERS, QUERY_KEYS.VIEWS]
239
- }, options));
240
- };
241
- var useUpdateApprover = function useUpdateApprover(options) {
242
- return useMutationWithInvalidation(approversApi.update, _objectSpread$c({
243
- keysToInvalidate: [QUERY_KEYS.APPROVERS]
244
- }, options));
245
- };
246
- var useDeleteApprover = function useDeleteApprover(options) {
247
- return useMutationWithInvalidation(approversApi.destroy, _objectSpread$c({
248
- keysToInvalidate: [QUERY_KEYS.APPROVERS, QUERY_KEYS.VIEWS]
249
- }, options));
250
- };
251
-
252
- var useUrlSearchParams = function useUrlSearchParams() {
253
- var _useLocation = useLocation(),
254
- search = _useLocation.search;
255
- return useMemo(function () {
256
- return new URLSearchParams(search);
257
- }, [search]);
258
- };
259
-
260
- var usePaginate = function usePaginate() {
261
- var urlParams = useUrlSearchParams();
262
- var _useState = useState({
263
- page: Number(urlParams.get("page")) || DEFAULT_PAGE_INDEX,
264
- pageSize: Number(urlParams.get("size")) || DEFAULT_PAGE_SIZE
265
- }),
266
- _useState2 = _slicedToArray$1(_useState, 2),
267
- pageProperties = _useState2[0],
268
- setPageProperties = _useState2[1];
269
- var history = useHistory();
270
- var handleTablePagination = useCallback(function (page, pageSize) {
271
- urlParams.set("page", page);
272
- urlParams.set("size", pageSize);
273
- history.push({
274
- search: urlParams.toString()
275
- });
276
- setPageProperties({
277
- page: page,
278
- pageSize: pageSize
279
- });
280
- }, [urlParams, history]);
281
- useEffect(function () {
282
- var page = urlParams.get("page") || DEFAULT_PAGE_INDEX;
283
- var pageSize = urlParams.get("size") || DEFAULT_PAGE_SIZE;
284
- setPageProperties({
285
- page: Number(page),
286
- pageSize: Number(pageSize)
287
- });
288
- }, [urlParams]);
289
- return {
290
- pageProperties: pageProperties,
291
- handleTablePagination: handleTablePagination
292
- };
293
- };
294
-
295
- var _t$1, _t2;
296
- var MAX_NAME_LENGTH = 40;
297
- var APPROVER_FORM_INITIAL_VALUES = {
298
- firstName: "",
299
- lastName: "",
300
- email: ""
301
- };
302
- var APPROVER_FORM_VALIDATION_SCHEMA = yup.object().shape({
303
- firstName: yup.string().trim().max(MAX_NAME_LENGTH, t$1("neetoApprovals.validations.limitExceeded", {
304
- what: (_t$1 = t$1("neetoApprovals.inputs.labels.firstName")) === null || _t$1 === void 0 ? void 0 : _t$1.toLocaleLowerCase(),
305
- limit: MAX_NAME_LENGTH
306
- })).required(t$1("neetoApprovals.validations.required", {
307
- what: t$1("neetoApprovals.inputs.labels.firstName")
308
- })),
309
- lastName: yup.string().trim().max(MAX_NAME_LENGTH, t$1("neetoApprovals.validations.limitExceeded", {
310
- what: (_t2 = t$1("neetoApprovals.inputs.labels.lastName")) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase(),
311
- limit: MAX_NAME_LENGTH
312
- })).required(t$1("neetoApprovals.validations.required", {
313
- what: t$1("neetoApprovals.inputs.labels.lastName")
314
- })),
315
- email: yup.string().email().required(t$1("neetoApprovals.validations.required", {
316
- what: t$1("neetoApprovals.common.email")
317
- }))
318
- });
319
-
320
- var Form$2 = function Form(_ref) {
321
- var isOpen = _ref.isOpen,
322
- onClose = _ref.onClose,
323
- onSubmit = _ref.onSubmit,
324
- _ref$initialData = _ref.initialData,
325
- initialData = _ref$initialData === void 0 ? {} : _ref$initialData,
326
- isLoading = _ref.isLoading;
327
- var inputReference = useRef(null);
328
- var _useTranslation = useTranslation(),
329
- t = _useTranslation.t;
330
- return /*#__PURE__*/React.createElement(Pane, {
331
- initialFocusRef: inputReference,
332
- isOpen: isOpen,
333
- onClose: onClose
334
- }, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(Typography, {
335
- style: "h2"
336
- }, isEmpty(initialData) ? t("neetoApprovals.typography.newApprover") : t("neetoApprovals.typography.editApprover"))), /*#__PURE__*/React.createElement(Form$3, {
337
- formikProps: {
338
- initialValues: initialData || APPROVER_FORM_INITIAL_VALUES,
339
- validationSchema: APPROVER_FORM_VALIDATION_SCHEMA,
340
- onSubmit: onSubmit
341
- }
342
- }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Body, null, /*#__PURE__*/React.createElement("div", {
343
- className: "w-full space-y-6"
344
- }, /*#__PURE__*/React.createElement(Input, {
345
- required: true,
346
- className: "w-full",
347
- label: t("neetoApprovals.inputs.labels.firstName"),
348
- name: "firstName",
349
- placeholder: t("neetoApprovals.inputs.placeholders.firstName"),
350
- ref: inputReference
351
- }), /*#__PURE__*/React.createElement(Input, {
352
- required: true,
353
- className: "w-full",
354
- label: t("neetoApprovals.inputs.labels.lastName"),
355
- name: "lastName",
356
- placeholder: t("neetoApprovals.inputs.placeholders.lastName")
357
- }), /*#__PURE__*/React.createElement(Input, {
358
- required: true,
359
- className: "w-full",
360
- label: t("neetoApprovals.common.email"),
361
- name: "email",
362
- placeholder: t("neetoApprovals.inputs.placeholders.email")
363
- }))), /*#__PURE__*/React.createElement(Pane.Footer, {
364
- className: "flex gap-x-2"
365
- }, /*#__PURE__*/React.createElement(Button, {
366
- label: t("neetoApprovals.buttons.saveChanges"),
367
- loading: isLoading,
368
- type: "submit"
369
- }), /*#__PURE__*/React.createElement(Button, {
370
- label: t("neetoApprovals.buttons.cancel"),
371
- style: "text",
372
- onClick: onClose
373
- })))));
374
- };
375
-
376
- var Create$1 = function Create(_ref) {
377
- var isNewApproverPaneOpen = _ref.isNewApproverPaneOpen,
378
- setIsNewApproverPaneOpen = _ref.setIsNewApproverPaneOpen,
379
- pageProperties = _ref.pageProperties,
380
- handleTablePagination = _ref.handleTablePagination,
381
- totalCount = _ref.totalCount;
382
- var _useCreateApprover = useCreateApprover(),
383
- createApprover = _useCreateApprover.mutate,
384
- isLoading = _useCreateApprover.isLoading;
385
- var getLastPageNumber = function getLastPageNumber() {
386
- return Math.ceil((totalCount + 1) / pageProperties.pageSize);
387
- };
388
- var onSubmit = function onSubmit(approver) {
389
- return createApprover({
390
- approver: approver
391
- }, {
392
- onSuccess: function onSuccess() {
393
- var lastPageNumber = getLastPageNumber();
394
- lastPageNumber !== pageProperties.page && handleTablePagination(lastPageNumber, pageProperties.pageSize);
395
- setIsNewApproverPaneOpen(false);
396
- }
397
- });
398
- };
399
- return /*#__PURE__*/React.createElement(Form$2, {
400
- isLoading: isLoading,
401
- onSubmit: onSubmit,
402
- isOpen: isNewApproverPaneOpen,
403
- onClose: function onClose() {
404
- return setIsNewApproverPaneOpen(false);
405
- }
406
- });
407
- };
408
- var Create$2 = /*#__PURE__*/React.memo(Create$1);
409
-
410
- var Edit$1 = function Edit(_ref) {
411
- var approver = _ref.approver,
412
- setApproverToEdit = _ref.setApproverToEdit;
413
- var _useUpdateApprover = useUpdateApprover(),
414
- updateApprover = _useUpdateApprover.mutate,
415
- isLoading = _useUpdateApprover.isLoading;
416
- var onSubmit = function onSubmit(_ref2) {
417
- var firstName = _ref2.firstName,
418
- lastName = _ref2.lastName,
419
- email = _ref2.email;
420
- return updateApprover({
421
- id: approver.id,
422
- payload: {
423
- firstName: firstName,
424
- lastName: lastName,
425
- email: email
426
- }
427
- }, {
428
- onSuccess: function onSuccess() {
429
- return setApproverToEdit("");
430
- }
431
- });
432
- };
433
- return /*#__PURE__*/React.createElement(Form$2, {
434
- initialData: approver,
435
- isLoading: isLoading,
436
- isOpen: !!approver,
437
- onClose: function onClose() {
438
- return setApproverToEdit("");
439
- },
440
- onSubmit: onSubmit
441
- });
442
- };
443
- var Edit$2 = /*#__PURE__*/React.memo(Edit$1);
444
-
445
- var Menu$1 = Dropdown.Menu,
446
- MenuItem$1 = Dropdown.MenuItem;
447
- var columnData$1 = function columnData(_ref) {
448
- var onEditClick = _ref.onEditClick,
449
- onDeleteClick = _ref.onDeleteClick;
450
- return [{
451
- dataIndex: "name",
452
- key: "name",
453
- sorter: true,
454
- title: i18next.t("neetoApprovals.common.name")
455
- }, {
456
- dataIndex: "email",
457
- key: "email",
458
- sorter: true,
459
- title: i18next.t("neetoApprovals.common.email")
460
- }, {
461
- key: "actions",
462
- ellipsis: true,
463
- render: function render(_, approver) {
464
- return /*#__PURE__*/React.createElement("div", {
465
- className: "flex flex-row items-center justify-end space-x-3",
466
- onClick: function onClick(event) {
467
- return event.stopPropagation();
468
- }
469
- }, /*#__PURE__*/React.createElement(Dropdown, {
470
- autoWidth: true,
471
- buttonProps: {
472
- style: "text"
473
- },
474
- className: "flex-shrink-0",
475
- icon: MenuHorizontal,
476
- position: "bottom-end",
477
- strategy: "fixed"
478
- }, /*#__PURE__*/React.createElement(Menu$1, null, /*#__PURE__*/React.createElement(MenuItem$1.Button, {
479
- "data-cy": "approvers-edit-button",
480
- onClick: function onClick() {
481
- return onEditClick(approver);
482
- }
483
- }, i18next.t("neetoApprovals.common.edit")), /*#__PURE__*/React.createElement(MenuItem$1.Button, {
484
- "data-cy": "approvers-delete-button",
485
- onClick: function onClick() {
486
- return onDeleteClick(approver);
487
- }
488
- }, i18next.t("neetoApprovals.common.delete")))));
489
- }
490
- }];
491
- };
492
-
493
- function _extends() {
494
- _extends = Object.assign ? Object.assign.bind() : function (target) {
495
- for (var i = 1; i < arguments.length; i++) {
496
- var source = arguments[i];
497
- for (var key in source) {
498
- if (Object.prototype.hasOwnProperty.call(source, key)) {
499
- target[key] = source[key];
500
- }
501
- }
502
- }
503
- return target;
504
- };
505
- return _extends.apply(this, arguments);
506
- }
507
-
508
- function _objectWithoutPropertiesLoose(source, excluded) {
509
- if (source == null) return {};
510
- var target = {};
511
- var sourceKeys = Object.keys(source);
512
- var key, i;
513
- for (i = 0; i < sourceKeys.length; i++) {
514
- key = sourceKeys[i];
515
- if (excluded.indexOf(key) >= 0) continue;
516
- target[key] = source[key];
517
- }
518
- return target;
519
- }
520
-
521
- function _objectWithoutProperties(source, excluded) {
522
- if (source == null) return {};
523
- var target = _objectWithoutPropertiesLoose(source, excluded);
524
- var key, i;
525
- if (Object.getOwnPropertySymbols) {
526
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
527
- for (i = 0; i < sourceSymbolKeys.length; i++) {
528
- key = sourceSymbolKeys[i];
529
- if (excluded.indexOf(key) >= 0) continue;
530
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
531
- target[key] = source[key];
532
- }
533
- }
534
- return target;
535
- }
536
-
537
- var renderNoDataHelpText = function renderNoDataHelpText(_ref) {
538
- var entity = _ref.entity,
539
- url = _ref.url;
540
- return /*#__PURE__*/React.createElement(Trans, {
541
- i18nKey: "neetoApprovals.common.noDataHelpText",
542
- values: {
543
- entity: entity
544
- },
545
- components: {
546
- a: /*#__PURE__*/React.createElement(Link, {
547
- className: "neeto-ui-text-primary-600 underline",
548
- target: "_blank",
549
- to: {
550
- pathname: url
551
- }
552
- })
553
- }
554
- });
555
- };
556
-
557
- var _excluded$1 = ["entity", "columnData", "items", "totalCount", "filters", "setFilters", "setIsPaneOpen", "helpDocUrl", "onEditClick", "onDeleteClick"];
558
- function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
559
- function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
560
- var Table = function Table(_ref) {
561
- var _t;
562
- var entity = _ref.entity,
563
- columnData = _ref.columnData,
564
- items = _ref.items,
565
- totalCount = _ref.totalCount,
566
- filters = _ref.filters,
567
- setFilters = _ref.setFilters,
568
- setIsPaneOpen = _ref.setIsPaneOpen,
569
- helpDocUrl = _ref.helpDocUrl,
570
- onEditClick = _ref.onEditClick,
571
- onDeleteClick = _ref.onDeleteClick,
572
- otherProps = _objectWithoutProperties(_ref, _excluded$1);
573
- var _usePaginate = usePaginate(),
574
- pageProperties = _usePaginate.pageProperties,
575
- handleTablePagination = _usePaginate.handleTablePagination;
576
- var _useTranslation = useTranslation(),
577
- t = _useTranslation.t;
578
- var columns = columnData({
579
- onEditClick: onEditClick,
580
- onDeleteClick: onDeleteClick
581
- });
582
- var handleTableChange = function handleTableChange(_, __, sorter) {
583
- setFilters(_objectSpread$b(_objectSpread$b({}, filters), {}, {
584
- sortBy: sorter.field,
585
- orderBy: sorter.order
586
- }));
587
- };
588
- var noDataProps = {
589
- primaryButtonProps: {
590
- label: t("neetoApprovals.common.add_", {
591
- what: (_t = t("neetoApprovals.common.template", SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
592
- }),
593
- onClick: function onClick() {
594
- return setIsPaneOpen(true);
595
- }
596
- },
597
- helpText: renderNoDataHelpText({
598
- entity: entity,
599
- url: helpDocUrl
600
- })
601
- };
602
- if (isEmpty(items)) {
603
- return /*#__PURE__*/React.createElement("div", {
604
- className: "flex h-full w-full flex-grow items-center justify-center"
605
- }, /*#__PURE__*/React.createElement(NoData, _extends({
606
- title: t("neetoApprovals.common.notFound_", {
607
- what: entity
608
- })
609
- }, !filters.searchTerm && noDataProps)));
610
- }
611
- return /*#__PURE__*/React.createElement(TableWrapper, {
612
- className: "mt-12",
613
- hasPagination: totalCount > pageProperties.pageSize
614
- }, /*#__PURE__*/React.createElement(Table$1, _extends({
615
- fixedHeight: true,
616
- columnData: columns,
617
- currentPageNumber: pageProperties.page,
618
- defaultPageSize: pageProperties.pageSize,
619
- handlePageChange: handleTablePagination,
620
- rowData: items,
621
- paginationProps: {
622
- hideOnSinglePage: (items === null || items === void 0 ? void 0 : items.length) < DEFAULT_PAGE_SIZE + 1
623
- },
624
- onChange: handleTableChange
625
- }, _objectSpread$b({
626
- totalCount: totalCount
627
- }, otherProps))));
628
- };
629
-
630
- function ownKeys$a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
631
- function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$a(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
632
- var Approvers = function Approvers(_ref) {
633
- var _t, _t2, _t3;
634
- var filters = _ref.filters,
635
- isNewApproverPaneOpen = _ref.isNewApproverPaneOpen,
636
- setIsNewApproverPaneOpen = _ref.setIsNewApproverPaneOpen,
637
- helpDocUrl = _ref.helpDocUrl,
638
- setFilters = _ref.setFilters;
639
- var _useState = useState(""),
640
- _useState2 = _slicedToArray$1(_useState, 2),
641
- approverToEdit = _useState2[0],
642
- setApproverToEdit = _useState2[1];
643
- var _useState3 = useState(""),
644
- _useState4 = _slicedToArray$1(_useState3, 2),
645
- approverToDelete = _useState4[0],
646
- setApproverToDelete = _useState4[1];
647
- var debouncedSearchTerm = useDebounce(filters.searchTerm, SEARCH_DELAY);
648
- var _usePaginate = usePaginate(),
649
- pageProperties = _usePaginate.pageProperties,
650
- handleTablePagination = _usePaginate.handleTablePagination;
651
- var _useTranslation = useTranslation(),
652
- t = _useTranslation.t;
653
- var _useFetchApprovers = useFetchApprovers(_objectSpread$a(_objectSpread$a(_objectSpread$a({}, pageProperties), filters), {}, {
654
- searchTerm: debouncedSearchTerm.trim()
655
- }), {
656
- onSuccess: function onSuccess(approvers) {
657
- handleEmptyPage(approvers, pageProperties, handleTablePagination);
658
- }
659
- }),
660
- _useFetchApprovers$da = _useFetchApprovers.data,
661
- _useFetchApprovers$da2 = _useFetchApprovers$da === void 0 ? {} : _useFetchApprovers$da,
662
- _useFetchApprovers$da3 = _useFetchApprovers$da2.approvers,
663
- approvers = _useFetchApprovers$da3 === void 0 ? [] : _useFetchApprovers$da3,
664
- _useFetchApprovers$da4 = _useFetchApprovers$da2.totalCount,
665
- totalCount = _useFetchApprovers$da4 === void 0 ? 0 : _useFetchApprovers$da4,
666
- isApproverLoading = _useFetchApprovers.isLoading;
667
- var _useDeleteApprover = useDeleteApprover(),
668
- deleteApprover = _useDeleteApprover.mutate,
669
- isDeleting = _useDeleteApprover.isLoading;
670
- var onEditClick = function onEditClick(approver) {
671
- var name = approver.name.split(" ");
672
- setApproverToEdit(_objectSpread$a(_objectSpread$a({}, approver), {}, {
673
- firstName: name[0],
674
- lastName: name[1]
675
- }));
676
- };
677
- var onDeleteClick = function onDeleteClick(approver) {
678
- setApproverToDelete(approver);
679
- };
680
- var entity = (_t = t("neetoApprovals.common.approver", PLURAL)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase();
681
- var handleDelete = function handleDelete(approverId) {
682
- deleteApprover({
683
- approverId: approverId
684
- });
685
- setApproverToDelete("");
686
- };
687
- return /*#__PURE__*/React.createElement(React.Fragment, null, isApproverLoading ? /*#__PURE__*/React.createElement(PageLoader, null) : /*#__PURE__*/React.createElement(Table, {
688
- items: approvers,
689
- setIsPaneOpen: setIsNewApproverPaneOpen,
690
- columnData: columnData$1,
691
- entity: entity,
692
- filters: filters,
693
- helpDocUrl: helpDocUrl,
694
- onDeleteClick: onDeleteClick,
695
- onEditClick: onEditClick,
696
- setFilters: setFilters,
697
- totalCount: totalCount
698
- }), /*#__PURE__*/React.createElement(Create$2, {
699
- handleTablePagination: handleTablePagination,
700
- isNewApproverPaneOpen: isNewApproverPaneOpen,
701
- pageProperties: pageProperties,
702
- setIsNewApproverPaneOpen: setIsNewApproverPaneOpen,
703
- totalCount: totalCount
704
- }), /*#__PURE__*/React.createElement(Edit$2, {
705
- approver: approverToEdit,
706
- setApproverToEdit: setApproverToEdit
707
- }), /*#__PURE__*/React.createElement(Alert, {
708
- isOpen: !!approverToDelete,
709
- isSubmitting: isDeleting,
710
- submitButtonLabel: t("neetoApprovals.buttons.delete"),
711
- message: /*#__PURE__*/React.createElement(Trans, {
712
- i18nKey: "neetoApprovals.alerts.deleting_",
713
- values: {
714
- what: (_t2 = t("neetoApprovals.common.approver", SINGULAR)) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase(),
715
- name: approverToDelete === null || approverToDelete === void 0 ? void 0 : approverToDelete.name
716
- }
717
- }),
718
- title: t("neetoApprovals.common.delete_", {
719
- what: (_t3 = t("neetoApprovals.common.approver", SINGULAR)) === null || _t3 === void 0 ? void 0 : _t3.toLocaleLowerCase()
720
- }),
721
- onClose: function onClose() {
722
- return setApproverToDelete("");
723
- },
724
- onSubmit: function onSubmit() {
725
- return handleDelete(approverToDelete === null || approverToDelete === void 0 ? void 0 : approverToDelete.id);
726
- }
727
- }));
728
- };
729
-
730
164
  function _arrayWithHoles(arr) {
731
165
  if (Array.isArray(arr)) return arr;
732
166
  }
@@ -848,16 +282,20 @@ var filterNonNull = function filterNonNull(object) {
848
282
  }));
849
283
  };
850
284
  nullSafe(filterNonNull);
851
- var findById = /*#__PURE__*/curry(function (id, array) {
852
- return array.find(function (item) {
853
- return item.id === id;
854
- });
855
- });
856
285
  var findBy = /*#__PURE__*/curry(function (pattern, array) {
857
286
  return array.find(matches(pattern));
858
287
  });
859
288
 
860
- var fetch$2 = function fetch(params, url) {
289
+ var handleEmptyPage = function handleEmptyPage(data, pageProperties, handleTablePagination) {
290
+ if (isEmpty(data) && pageProperties.page !== 1) {
291
+ handleTablePagination(pageProperties.page - 1, pageProperties.pageSize);
292
+ }
293
+ };
294
+
295
+ var BASE_URL = "neeto_approvals";
296
+ var TEMPLATE_URL = "".concat(BASE_URL, "/templates");
297
+
298
+ var fetch$3 = function fetch(params, url) {
861
299
  return axios.get(url, {
862
300
  params: params
863
301
  });
@@ -870,12 +308,21 @@ var update$1 = function update(_ref) {
870
308
  });
871
309
  };
872
310
  var requestsApi = {
873
- fetch: fetch$2,
311
+ fetch: fetch$3,
874
312
  update: update$1
875
313
  };
876
314
 
877
- function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
878
- function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$9(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
315
+ var QUERY_KEYS = {
316
+ APPROVERS: "neeto-approvals-approvers",
317
+ TEMPLATES: "neeto-approvals-templates",
318
+ REQUESTS: "neeto-approvals-requests",
319
+ SHOW_TEMPLATE: "neeto-approvals-show-template",
320
+ SHOW_PUBLIC_REQUEST: "neeto-approvals-show-public-request",
321
+ VIEWS: "neeto-approvals-views"
322
+ };
323
+
324
+ function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
325
+ function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
879
326
  var useFetchRequests = function useFetchRequests(_ref) {
880
327
  var requestUrl = _ref.requestUrl,
881
328
  _ref$params = _ref.params,
@@ -884,7 +331,7 @@ var useFetchRequests = function useFetchRequests(_ref) {
884
331
  options = _ref$options === void 0 ? {} : _ref$options;
885
332
  return useQuery([QUERY_KEYS.REQUESTS, params], function () {
886
333
  return requestsApi.fetch(params, requestUrl);
887
- }, _objectSpread$9({
334
+ }, _objectSpread$b({
888
335
  select: function select(response) {
889
336
  return response.data || response;
890
337
  },
@@ -897,11 +344,54 @@ var useFetchRequests = function useFetchRequests(_ref) {
897
344
  }, options));
898
345
  };
899
346
  var useUpdateRequest = function useUpdateRequest(options) {
900
- return useMutationWithInvalidation(requestsApi.update, _objectSpread$9({
347
+ return useMutationWithInvalidation(requestsApi.update, _objectSpread$b({
901
348
  keysToInvalidate: [QUERY_KEYS.REQUESTS, QUERY_KEYS.VIEWS]
902
349
  }, options));
903
350
  };
904
351
 
352
+ var useUrlSearchParams = function useUrlSearchParams() {
353
+ var _useLocation = useLocation(),
354
+ search = _useLocation.search;
355
+ return useMemo(function () {
356
+ return new URLSearchParams(search);
357
+ }, [search]);
358
+ };
359
+
360
+ var usePaginate = function usePaginate() {
361
+ var urlParams = useUrlSearchParams();
362
+ var _useState = useState({
363
+ page: Number(urlParams.get("page")) || DEFAULT_PAGE_INDEX,
364
+ pageSize: Number(urlParams.get("size")) || DEFAULT_PAGE_SIZE
365
+ }),
366
+ _useState2 = _slicedToArray$1(_useState, 2),
367
+ pageProperties = _useState2[0],
368
+ setPageProperties = _useState2[1];
369
+ var history = useHistory();
370
+ var handleTablePagination = useCallback(function (page, pageSize) {
371
+ urlParams.set("page", page);
372
+ urlParams.set("size", pageSize);
373
+ history.push({
374
+ search: urlParams.toString()
375
+ });
376
+ setPageProperties({
377
+ page: page,
378
+ pageSize: pageSize
379
+ });
380
+ }, [urlParams, history]);
381
+ useEffect(function () {
382
+ var page = urlParams.get("page") || DEFAULT_PAGE_INDEX;
383
+ var pageSize = urlParams.get("size") || DEFAULT_PAGE_SIZE;
384
+ setPageProperties({
385
+ page: Number(page),
386
+ pageSize: Number(pageSize)
387
+ });
388
+ }, [urlParams]);
389
+ return {
390
+ pageProperties: pageProperties,
391
+ handleTablePagination: handleTablePagination
392
+ };
393
+ };
394
+
905
395
  dayjs.extend(utc);
906
396
  dayjs.extend(timezone);
907
397
  var updateApprovalDetails = function updateApprovalDetails(_ref) {
@@ -933,10 +423,6 @@ var getApprovalFilter = function getApprovalFilter() {
933
423
  HISTORY: {
934
424
  label: t$1("neetoApprovals.common.history"),
935
425
  value: "HISTORY"
936
- },
937
- APPROVERS: {
938
- label: t$1("neetoApprovals.common.approver", PLURAL),
939
- value: "APPROVERS"
940
426
  }
941
427
  };
942
428
  };
@@ -1003,6 +489,7 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1003
489
  _approvalDetails$stat = approvalDetails.status,
1004
490
  status = _approvalDetails$stat === void 0 ? "" : _approvalDetails$stat,
1005
491
  message = approvalDetails.message,
492
+ additionalInfo = approvalDetails.additionalInfo,
1006
493
  createdAt = approvalDetails.createdAt,
1007
494
  approverName = approvalDetails.approverName,
1008
495
  approverEmail = approvalDetails.approverEmail,
@@ -1062,6 +549,11 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1062
549
  }, /*#__PURE__*/React.createElement(Label, null, t("neetoApprovals.inputs.labels.message")), /*#__PURE__*/React.createElement(MemoizedEditorContent$1, {
1063
550
  className: "neeto-ui-bg-gray-100 p-4",
1064
551
  content: message
552
+ })), additionalInfo && /*#__PURE__*/React.createElement("div", {
553
+ className: "w-full space-y-2"
554
+ }, /*#__PURE__*/React.createElement(Label, null, t("neetoApprovals.inputs.labels.additionalInfo")), /*#__PURE__*/React.createElement(MemoizedEditorContent$1, {
555
+ className: "neeto-ui-bg-gray-100 p-4",
556
+ content: additionalInfo
1065
557
  })), isPending && isCurrentUserApprover && /*#__PURE__*/React.createElement(Textarea, {
1066
558
  className: "w-full",
1067
559
  disabled: !isPending,
@@ -1094,8 +586,8 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1094
586
  })));
1095
587
  };
1096
588
 
1097
- function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1098
- function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$8(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
589
+ function ownKeys$a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
590
+ function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$a(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1099
591
  var History = function History(_ref) {
1100
592
  var _t;
1101
593
  var requestUrl = _ref.requestUrl;
@@ -1114,7 +606,7 @@ var History = function History(_ref) {
1114
606
  var _useTranslation = useTranslation(),
1115
607
  t = _useTranslation.t;
1116
608
  var _useFetchRequests = useFetchRequests({
1117
- params: _objectSpread$8(_objectSpread$8(_objectSpread$8({}, pageProperties), filters), {}, {
609
+ params: _objectSpread$a(_objectSpread$a(_objectSpread$a({}, pageProperties), filters), {}, {
1118
610
  searchTerm: debouncedSearchTerm.trim(),
1119
611
  status: [STATUSES.approved, STATUSES.rejected, STATUSES.cancelled]
1120
612
  }),
@@ -1138,7 +630,7 @@ var History = function History(_ref) {
1138
630
  _useFetchRequests$dat4 = _useFetchRequests$dat2.totalCount,
1139
631
  totalCount = _useFetchRequests$dat4 === void 0 ? 0 : _useFetchRequests$dat4;
1140
632
  var handleTableChange = function handleTableChange(_, __, sorter) {
1141
- setFilters(_objectSpread$8(_objectSpread$8({}, filters), {}, {
633
+ setFilters(_objectSpread$a(_objectSpread$a({}, filters), {}, {
1142
634
  sortBy: camelToSnakeCase(sorter.field),
1143
635
  orderBy: sorter.order
1144
636
  }));
@@ -1180,8 +672,8 @@ var PENDING_TABLE_COLUMNS = removeBy({
1180
672
  key: "status"
1181
673
  }, HISTORY_TABLE_COLUMNS);
1182
674
 
1183
- function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1184
- function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$7(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
675
+ function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
676
+ function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$9(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1185
677
  var PendingRequests = function PendingRequests(_ref) {
1186
678
  var _t;
1187
679
  var requestUrl = _ref.requestUrl;
@@ -1200,7 +692,7 @@ var PendingRequests = function PendingRequests(_ref) {
1200
692
  var _useTranslation = useTranslation(),
1201
693
  t = _useTranslation.t;
1202
694
  var _useFetchRequests = useFetchRequests({
1203
- params: _objectSpread$7(_objectSpread$7(_objectSpread$7({}, pageProperties), filters), {}, {
695
+ params: _objectSpread$9(_objectSpread$9(_objectSpread$9({}, pageProperties), filters), {}, {
1204
696
  searchTerm: debouncedSearchTerm.trim(),
1205
697
  status: [STATUSES.pending]
1206
698
  }),
@@ -1221,7 +713,7 @@ var PendingRequests = function PendingRequests(_ref) {
1221
713
  updatePendingRequest = _useUpdateRequest.mutate,
1222
714
  isLoading = _useUpdateRequest.isLoading;
1223
715
  var handleTableChange = function handleTableChange(_, __, sorter) {
1224
- setFilters(_objectSpread$7(_objectSpread$7({}, filters), {}, {
716
+ setFilters(_objectSpread$9(_objectSpread$9({}, filters), {}, {
1225
717
  sortBy: camelToSnakeCase(sorter.field),
1226
718
  orderBy: sorter.order
1227
719
  }));
@@ -1272,7 +764,51 @@ var PendingRequests = function PendingRequests(_ref) {
1272
764
  }));
1273
765
  };
1274
766
 
1275
- var fetch$1 = function fetch(params) {
767
+ function _extends() {
768
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
769
+ for (var i = 1; i < arguments.length; i++) {
770
+ var source = arguments[i];
771
+ for (var key in source) {
772
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
773
+ target[key] = source[key];
774
+ }
775
+ }
776
+ }
777
+ return target;
778
+ };
779
+ return _extends.apply(this, arguments);
780
+ }
781
+
782
+ function _objectWithoutPropertiesLoose(source, excluded) {
783
+ if (source == null) return {};
784
+ var target = {};
785
+ var sourceKeys = Object.keys(source);
786
+ var key, i;
787
+ for (i = 0; i < sourceKeys.length; i++) {
788
+ key = sourceKeys[i];
789
+ if (excluded.indexOf(key) >= 0) continue;
790
+ target[key] = source[key];
791
+ }
792
+ return target;
793
+ }
794
+
795
+ function _objectWithoutProperties(source, excluded) {
796
+ if (source == null) return {};
797
+ var target = _objectWithoutPropertiesLoose(source, excluded);
798
+ var key, i;
799
+ if (Object.getOwnPropertySymbols) {
800
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
801
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
802
+ key = sourceSymbolKeys[i];
803
+ if (excluded.indexOf(key) >= 0) continue;
804
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
805
+ target[key] = source[key];
806
+ }
807
+ }
808
+ return target;
809
+ }
810
+
811
+ var fetch$2 = function fetch(params) {
1276
812
  return axios.get(TEMPLATE_URL, {
1277
813
  params: params
1278
814
  });
@@ -1299,20 +835,20 @@ var destroy = function destroy(_ref3) {
1299
835
  };
1300
836
  var templatesApi = {
1301
837
  create: create,
1302
- fetch: fetch$1,
838
+ fetch: fetch$2,
1303
839
  update: update,
1304
840
  destroy: destroy,
1305
841
  show: show$1
1306
842
  };
1307
843
 
1308
- function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1309
- function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
844
+ function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
845
+ function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$8(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1310
846
  var useFetchTemplates = function useFetchTemplates() {
1311
847
  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1312
848
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1313
849
  return useQuery([QUERY_KEYS.TEMPLATES, params], function () {
1314
850
  return templatesApi.fetch(params);
1315
- }, _objectSpread$6({
851
+ }, _objectSpread$8({
1316
852
  select: function select(response) {
1317
853
  return response.data || response;
1318
854
  },
@@ -1325,12 +861,12 @@ var useFetchTemplates = function useFetchTemplates() {
1325
861
  }, options));
1326
862
  };
1327
863
  var useCreateTemplate = function useCreateTemplate(options) {
1328
- return useMutationWithInvalidation(templatesApi.create, _objectSpread$6({
864
+ return useMutationWithInvalidation(templatesApi.create, _objectSpread$8({
1329
865
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, QUERY_KEYS.VIEWS]
1330
866
  }, options));
1331
867
  };
1332
868
  var useUpdateTemplate = function useUpdateTemplate(options) {
1333
- return useMutationWithInvalidation(templatesApi.update, _objectSpread$6({
869
+ return useMutationWithInvalidation(templatesApi.update, _objectSpread$8({
1334
870
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, function (_, _ref3) {
1335
871
  var id = _ref3.id;
1336
872
  return [QUERY_KEYS.SHOW_TEMPLATE, id];
@@ -1338,39 +874,44 @@ var useUpdateTemplate = function useUpdateTemplate(options) {
1338
874
  }, options));
1339
875
  };
1340
876
  var useDeleteTemplate = function useDeleteTemplate(options) {
1341
- return useMutationWithInvalidation(templatesApi.destroy, _objectSpread$6({
877
+ return useMutationWithInvalidation(templatesApi.destroy, _objectSpread$8({
1342
878
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, QUERY_KEYS.VIEWS]
1343
879
  }, options));
1344
880
  };
1345
881
 
1346
- function _arrayWithoutHoles(arr) {
1347
- if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
1348
- }
1349
-
1350
- function _iterableToArray(iter) {
1351
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
1352
- }
1353
-
1354
- function _nonIterableSpread() {
1355
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1356
- }
1357
-
1358
- function _toConsumableArray(arr) {
1359
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
1360
- }
882
+ var fetch$1 = function fetch(params) {
883
+ return axios.get("".concat(BASE_URL, "/approvers"), {
884
+ params: params
885
+ });
886
+ };
887
+ var approversApi = {
888
+ fetch: fetch$1
889
+ };
1361
890
 
1362
- var _t;
1363
- var VALID_VARIABLE_NAME_REGEX = /^[a-z](?:\w*[a-z0-9])*$/i;
1364
- var EVERYONE_VISIBILITY = {
1365
- label: t$1("neetoApprovals.select.visibility.everyone"),
1366
- value: "everyone"
891
+ function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
892
+ function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$7(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
893
+ var useFetchApprovers = function useFetchApprovers() {
894
+ var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
895
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
896
+ return useQuery([QUERY_KEYS.APPROVERS, params], function () {
897
+ return approversApi.fetch(params);
898
+ }, _objectSpread$7({
899
+ select: function select(response) {
900
+ return response.data || response;
901
+ },
902
+ keepPreviousData: true,
903
+ onSuccess: function onSuccess(_ref) {
904
+ var _params$onSuccess;
905
+ var approvers = _ref.approvers;
906
+ return params === null || params === void 0 ? void 0 : (_params$onSuccess = params.onSuccess) === null || _params$onSuccess === void 0 ? void 0 : _params$onSuccess.call(params, approvers);
907
+ }
908
+ }, options));
1367
909
  };
910
+
1368
911
  var TEMPLATE_FORM_INITIAL_VALUES = {
1369
912
  name: "",
1370
913
  description: "",
1371
- visibility: EVERYONE_VISIBILITY,
1372
914
  approver: "",
1373
- variables: [],
1374
915
  message: ""
1375
916
  };
1376
917
  var TEMPLATE_FORM_VALIDATION_SCHEMA = yup.object().shape({
@@ -1382,87 +923,27 @@ var TEMPLATE_FORM_VALIDATION_SCHEMA = yup.object().shape({
1382
923
  what: t$1("neetoApprovals.inputs.labels.message")
1383
924
  }), function (content) {
1384
925
  return !isEditorEmpty(content);
1385
- }),
1386
- variables: yup.array().of(yup.object().shape({
1387
- variable: yup.string().trim().required(t$1("neetoApprovals.validations.pleaseEnter_", {
1388
- what: (_t = t$1("neetoApprovals.common.variable")) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1389
- })).matches(VALID_VARIABLE_NAME_REGEX, t$1("neetoApprovals.validations.variableName"))
1390
- }))
926
+ })
1391
927
  });
1392
928
 
1393
- var DynamicBlock = function DynamicBlock() {
1394
- var _useTranslation = useTranslation(),
1395
- t = _useTranslation.t;
1396
- var _useFormikContext = useFormikContext(),
1397
- _useFormikContext$val = _useFormikContext.values.variables,
1398
- variables = _useFormikContext$val === void 0 ? [] : _useFormikContext$val;
1399
- var editorVariables = variables.map(function (_ref, index) {
1400
- var variable = _ref.variable;
1401
- var variableValue = variable || "variable_".concat(index + 1);
1402
- return {
1403
- key: variableValue,
1404
- label: variableValue
1405
- };
1406
- });
1407
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1408
- className: "space-y-2 "
1409
- }, /*#__PURE__*/React.createElement(Label, null, t("neetoApprovals.inputs.labels.variableMapping")), /*#__PURE__*/React.createElement(FieldArray, {
1410
- name: "variables"
1411
- }, function (_ref2) {
1412
- var remove = _ref2.remove,
1413
- push = _ref2.push;
1414
- return /*#__PURE__*/React.createElement("div", {
1415
- className: "neeto-ui-bg-gray-100 w-full p-3"
1416
- }, /*#__PURE__*/React.createElement("div", {
1417
- className: "grid grid-cols-2 gap-4"
1418
- }, variables === null || variables === void 0 ? void 0 : variables.map(function (_, index) {
1419
- return /*#__PURE__*/React.createElement("div", {
1420
- className: "mb-2 flex space-x-2",
1421
- key: index
1422
- }, /*#__PURE__*/React.createElement(Input, {
1423
- autoFocus: true,
1424
- required: true,
1425
- name: "variables[".concat(index, "][variable]"),
1426
- label: t("neetoApprovals.common.variable_", {
1427
- number: index + 1
1428
- })
1429
- }), /*#__PURE__*/React.createElement(Button, {
1430
- className: "my-5",
1431
- icon: Delete,
1432
- style: "text",
1433
- onClick: function onClick() {
1434
- return remove(index);
1435
- }
1436
- }));
1437
- })), /*#__PURE__*/React.createElement(Button, {
1438
- style: "link",
1439
- label: t("neetoApprovals.common.add_", {
1440
- what: t("neetoApprovals.common.variable")
1441
- }),
1442
- onClick: function onClick() {
1443
- return push({
1444
- variable: ""
1445
- });
1446
- }
1447
- }));
1448
- })), /*#__PURE__*/React.createElement(FormikEditor, {
929
+ var MessageEditor = withT(function (_ref) {
930
+ var t = _ref.t,
931
+ _ref$placeholders = _ref.placeholders,
932
+ placeholders = _ref$placeholders === void 0 ? [] : _ref$placeholders;
933
+ return /*#__PURE__*/React.createElement(FormikEditor, {
1449
934
  required: true,
1450
- key: variables,
1451
935
  label: t("neetoApprovals.inputs.labels.message"),
1452
936
  name: "message",
1453
937
  rows: 3,
1454
- variables: editorVariables,
938
+ variables: placeholders,
1455
939
  placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
1456
940
  what: t("neetoApprovals.inputs.labels.message")
1457
- }),
1458
- shouldUpdate: function shouldUpdate(nextProps, prevProps) {
1459
- return nextProps.variables !== prevProps.variables;
1460
- }
1461
- }));
1462
- };
941
+ })
942
+ });
943
+ });
1463
944
 
1464
945
  var Form$1 = function Form(_ref) {
1465
- var _t, _t2;
946
+ var _t;
1466
947
  var isOpen = _ref.isOpen,
1467
948
  onClose = _ref.onClose,
1468
949
  _ref$initialData = _ref.initialData,
@@ -1471,7 +952,7 @@ var Form$1 = function Form(_ref) {
1471
952
  onSubmit = _ref$onSubmit === void 0 ? noop : _ref$onSubmit,
1472
953
  _ref$isLoading = _ref.isLoading,
1473
954
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
1474
- visibilityOptions = _ref.visibilityOptions;
955
+ placeholders = _ref.placeholders;
1475
956
  var inputReference = useRef(null);
1476
957
  var _useTranslation = useTranslation(),
1477
958
  t = _useTranslation.t;
@@ -1480,10 +961,10 @@ var Form$1 = function Form(_ref) {
1480
961
  _useFetchApprovers$da2 = _useFetchApprovers$da === void 0 ? {} : _useFetchApprovers$da,
1481
962
  _useFetchApprovers$da3 = _useFetchApprovers$da2.approvers,
1482
963
  approvers = _useFetchApprovers$da3 === void 0 ? [] : _useFetchApprovers$da3;
1483
- var header = isEmpty(initialData) ? t("neetoApprovals.common.add_", {
1484
- what: t("neetoApprovals.common.approvalTemplate", SINGULAR).toLocaleLowerCase()
964
+ var header = isEmpty(initialData) ? t("neetoApprovals.common.addNew_", {
965
+ what: t("neetoApprovals.common.template", SINGULAR).toLocaleLowerCase()
1485
966
  }) : t("neetoApprovals.common.edit_", {
1486
- what: t("neetoApprovals.common.approvalTemplate", SINGULAR).toLocaleLowerCase()
967
+ what: t("neetoApprovals.common.template", SINGULAR).toLocaleLowerCase()
1487
968
  });
1488
969
  return /*#__PURE__*/React.createElement(Pane, {
1489
970
  initialFocusRef: inputReference,
@@ -1492,7 +973,7 @@ var Form$1 = function Form(_ref) {
1492
973
  onClose: onClose
1493
974
  }, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(Typography, {
1494
975
  style: "h2"
1495
- }, header)), /*#__PURE__*/React.createElement(Form$3, {
976
+ }, header)), /*#__PURE__*/React.createElement(Form$2, {
1496
977
  formikProps: {
1497
978
  enableReinitialize: true,
1498
979
  initialValues: isPresent(initialData) ? initialData : TEMPLATE_FORM_INITIAL_VALUES,
@@ -1504,7 +985,6 @@ var Form$1 = function Form(_ref) {
1504
985
  }, /*#__PURE__*/React.createElement(Input, {
1505
986
  autoFocus: true,
1506
987
  required: true,
1507
- className: "w-1/2",
1508
988
  label: t("neetoApprovals.common.name"),
1509
989
  name: "name",
1510
990
  placeholder: t("neetoApprovals.inputs.placeholders.name")
@@ -1528,14 +1008,9 @@ var Form$1 = function Form(_ref) {
1528
1008
  placeholder: t("neetoApprovals.inputs.placeholders.select_", {
1529
1009
  what: (_t = t("neetoApprovals.common.approver", SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1530
1010
  })
1531
- }), /*#__PURE__*/React.createElement(Select, {
1532
- label: t("neetoApprovals.common.visibility"),
1533
- name: "visibility",
1534
- options: [].concat(_toConsumableArray(visibilityOptions), [EVERYONE_VISIBILITY]),
1535
- placeholder: t("neetoApprovals.inputs.placeholders.select_", {
1536
- what: (_t2 = t("neetoApprovals.common.visibility")) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase()
1537
- })
1538
- })), /*#__PURE__*/React.createElement(DynamicBlock, null))), /*#__PURE__*/React.createElement(Pane.Footer, {
1011
+ })), /*#__PURE__*/React.createElement(MessageEditor, {
1012
+ placeholders: placeholders
1013
+ }))), /*#__PURE__*/React.createElement(Pane.Footer, {
1539
1014
  className: "flex gap-x-2"
1540
1015
  }, /*#__PURE__*/React.createElement(Button, {
1541
1016
  label: t("neetoApprovals.buttons.saveChanges"),
@@ -1548,45 +1023,31 @@ var Form$1 = function Form(_ref) {
1548
1023
  })))));
1549
1024
  };
1550
1025
 
1551
- function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1552
- function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1026
+ function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1027
+ function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1553
1028
  var buildTemplatePayload = function buildTemplatePayload(template) {
1554
- var variables = template.variables,
1555
- visibility = template.visibility,
1556
- approver = template.approver;
1557
- var indexedVariables = variables.map(function (_ref, index) {
1558
- var variable = _ref.variable;
1559
- return ["variable".concat(index + 1), variable];
1560
- });
1029
+ var approver = template.approver;
1561
1030
  var payload = {
1562
- template: _objectSpread$5(_objectSpread$5({}, template), {}, {
1563
- accessibleId: visibility.value || visibility,
1564
- approverId: approver.value,
1565
- variables: fromPairs(indexedVariables)
1031
+ template: _objectSpread$6(_objectSpread$6({}, template), {}, {
1032
+ approverId: approver.value
1566
1033
  })
1567
1034
  };
1568
1035
  return payload;
1569
1036
  };
1570
1037
  var generateInitialData = function generateInitialData(template) {
1571
- return _objectSpread$5(_objectSpread$5({}, template), {}, {
1572
- visibility: template.accessibleId || EVERYONE_VISIBILITY.value,
1038
+ return _objectSpread$6(_objectSpread$6({}, template), {}, {
1573
1039
  approver: {
1574
1040
  label: template.approverName,
1575
1041
  value: template.approverId
1576
- },
1577
- variables: template.variables && Object.values(template.variables).map(function (variable) {
1578
- return {
1579
- variable: variable
1580
- };
1581
- })
1042
+ }
1582
1043
  });
1583
1044
  };
1584
1045
 
1585
1046
  var Create = function Create(_ref) {
1586
- var visibilityOptions = _ref.visibilityOptions,
1587
- templateUrl = _ref.templateUrl,
1047
+ var templateUrl = _ref.templateUrl,
1588
1048
  isOpen = _ref.isOpen,
1589
- onClose = _ref.onClose;
1049
+ onClose = _ref.onClose,
1050
+ templatePlaceholders = _ref.templatePlaceholders;
1590
1051
  var _useCreateTemplate = useCreateTemplate(),
1591
1052
  createTemplate = _useCreateTemplate.mutate,
1592
1053
  isLoading = _useCreateTemplate.isLoading;
@@ -1600,21 +1061,21 @@ var Create = function Create(_ref) {
1600
1061
  });
1601
1062
  };
1602
1063
  return /*#__PURE__*/React.createElement(Form$1, {
1064
+ placeholders: templatePlaceholders,
1603
1065
  isLoading: isLoading,
1604
1066
  isOpen: isOpen,
1605
1067
  onClose: onClose,
1606
- onSubmit: onSubmit,
1607
- visibilityOptions: visibilityOptions
1068
+ onSubmit: onSubmit
1608
1069
  });
1609
1070
  };
1610
1071
 
1611
1072
  var Edit = function Edit(_ref) {
1612
- var visibilityOptions = _ref.visibilityOptions,
1613
- templateUrl = _ref.templateUrl,
1073
+ var templateUrl = _ref.templateUrl,
1614
1074
  template = _ref.template,
1615
1075
  setTemplate = _ref.setTemplate,
1616
1076
  isOpen = _ref.isOpen,
1617
- onClose = _ref.onClose;
1077
+ onClose = _ref.onClose,
1078
+ templatePlaceholders = _ref.templatePlaceholders;
1618
1079
  var _useUpdateTemplate = useUpdateTemplate({
1619
1080
  onSuccess: function onSuccess() {
1620
1081
  return setTemplate({});
@@ -1633,10 +1094,10 @@ var Edit = function Edit(_ref) {
1633
1094
  return /*#__PURE__*/React.createElement(Form$1, {
1634
1095
  initialData: generateInitialData(template),
1635
1096
  isLoading: isUpdating,
1097
+ placeholders: templatePlaceholders,
1636
1098
  isOpen: isOpen,
1637
1099
  onClose: onClose,
1638
- onSubmit: onSubmit,
1639
- visibilityOptions: visibilityOptions
1100
+ onSubmit: onSubmit
1640
1101
  });
1641
1102
  };
1642
1103
 
@@ -1655,7 +1116,6 @@ var Field$1 = /*#__PURE__*/React.memo(Field);
1655
1116
 
1656
1117
  var MemoizedEditorContent = /*#__PURE__*/React.memo(EditorContent);
1657
1118
  var TemplateDetails = function TemplateDetails(_ref) {
1658
- var _Object$entries;
1659
1119
  var isOpen = _ref.isOpen,
1660
1120
  onClose = _ref.onClose,
1661
1121
  template = _ref.template;
@@ -1664,8 +1124,6 @@ var TemplateDetails = function TemplateDetails(_ref) {
1664
1124
  var name = template.name,
1665
1125
  description = template.description,
1666
1126
  approverName = template.approverName,
1667
- accessible = template.accessible,
1668
- variables = template.variables,
1669
1127
  message = template.message;
1670
1128
  return /*#__PURE__*/React.createElement(Pane, {
1671
1129
  isOpen: isOpen,
@@ -1685,18 +1143,6 @@ var TemplateDetails = function TemplateDetails(_ref) {
1685
1143
  }), /*#__PURE__*/React.createElement(Field$1, {
1686
1144
  label: t("neetoApprovals.common.approver", SINGULAR),
1687
1145
  value: approverName
1688
- }), /*#__PURE__*/React.createElement(Field$1, {
1689
- label: t("neetoApprovals.common.visibility"),
1690
- value: (accessible === null || accessible === void 0 ? void 0 : accessible.label) || EVERYONE_VISIBILITY.label
1691
- }), (_Object$entries = Object.entries(variables || {})) === null || _Object$entries === void 0 ? void 0 : _Object$entries.map(function (_ref2) {
1692
- var _ref3 = _slicedToArray$1(_ref2, 2),
1693
- variable = _ref3[0],
1694
- value = _ref3[1];
1695
- return /*#__PURE__*/React.createElement(Field$1, {
1696
- key: value,
1697
- label: capitalize(variable),
1698
- value: value
1699
- });
1700
1146
  }), /*#__PURE__*/React.createElement("div", {
1701
1147
  className: "flex w-full flex-col space-y-4"
1702
1148
  }, /*#__PURE__*/React.createElement(Label, {
@@ -1718,13 +1164,9 @@ var columnData = function columnData(_ref) {
1718
1164
  sorter: true,
1719
1165
  title: i18next.t("neetoApprovals.common.name")
1720
1166
  }, {
1721
- dataIndex: "visibility",
1722
- key: "visibility",
1723
- title: i18next.t("neetoApprovals.common.visibility"),
1724
- render: function render(_, _ref2) {
1725
- var accessible = _ref2.accessible;
1726
- return (accessible === null || accessible === void 0 ? void 0 : accessible.label) || EVERYONE_VISIBILITY.label;
1727
- }
1167
+ dataIndex: "approverName",
1168
+ key: "approverName",
1169
+ title: i18next.t("neetoApprovals.common.approver", SINGULAR)
1728
1170
  }, {
1729
1171
  key: "actions",
1730
1172
  ellipsis: true,
@@ -1758,6 +1200,99 @@ var columnData = function columnData(_ref) {
1758
1200
  }];
1759
1201
  };
1760
1202
 
1203
+ var renderNoDataHelpText = function renderNoDataHelpText(_ref) {
1204
+ var entity = _ref.entity,
1205
+ url = _ref.url;
1206
+ return /*#__PURE__*/React.createElement(Trans, {
1207
+ i18nKey: "neetoApprovals.common.noDataHelpText",
1208
+ values: {
1209
+ entity: entity
1210
+ },
1211
+ components: {
1212
+ a: /*#__PURE__*/React.createElement(Link, {
1213
+ className: "neeto-ui-text-primary-600 underline",
1214
+ target: "_blank",
1215
+ to: {
1216
+ pathname: url
1217
+ }
1218
+ })
1219
+ }
1220
+ });
1221
+ };
1222
+
1223
+ var _excluded$1 = ["entity", "columnData", "items", "totalCount", "filters", "setFilters", "setIsPaneOpen", "helpDocUrl", "onEditClick", "onDeleteClick"];
1224
+ function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1225
+ function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1226
+ var Table = function Table(_ref) {
1227
+ var _t;
1228
+ var entity = _ref.entity,
1229
+ columnData = _ref.columnData,
1230
+ items = _ref.items,
1231
+ totalCount = _ref.totalCount,
1232
+ filters = _ref.filters,
1233
+ setFilters = _ref.setFilters,
1234
+ setIsPaneOpen = _ref.setIsPaneOpen,
1235
+ helpDocUrl = _ref.helpDocUrl,
1236
+ onEditClick = _ref.onEditClick,
1237
+ onDeleteClick = _ref.onDeleteClick,
1238
+ otherProps = _objectWithoutProperties(_ref, _excluded$1);
1239
+ var _usePaginate = usePaginate(),
1240
+ pageProperties = _usePaginate.pageProperties,
1241
+ handleTablePagination = _usePaginate.handleTablePagination;
1242
+ var _useTranslation = useTranslation(),
1243
+ t = _useTranslation.t;
1244
+ var columns = columnData({
1245
+ onEditClick: onEditClick,
1246
+ onDeleteClick: onDeleteClick
1247
+ });
1248
+ var handleTableChange = function handleTableChange(_, __, sorter) {
1249
+ setFilters(_objectSpread$5(_objectSpread$5({}, filters), {}, {
1250
+ sortBy: sorter.field,
1251
+ orderBy: sorter.order
1252
+ }));
1253
+ };
1254
+ var noDataProps = {
1255
+ primaryButtonProps: {
1256
+ label: t("neetoApprovals.common.addNew_", {
1257
+ what: (_t = t("neetoApprovals.common.template", SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1258
+ }),
1259
+ onClick: function onClick() {
1260
+ return setIsPaneOpen(true);
1261
+ }
1262
+ },
1263
+ helpText: renderNoDataHelpText({
1264
+ entity: entity,
1265
+ url: helpDocUrl
1266
+ })
1267
+ };
1268
+ if (isEmpty(items)) {
1269
+ return /*#__PURE__*/React.createElement("div", {
1270
+ className: "flex h-full w-full flex-grow items-center justify-center"
1271
+ }, /*#__PURE__*/React.createElement(NoData, _extends({
1272
+ title: t("neetoApprovals.common.notFound_", {
1273
+ what: entity
1274
+ })
1275
+ }, !filters.searchTerm && noDataProps)));
1276
+ }
1277
+ return /*#__PURE__*/React.createElement(TableWrapper, {
1278
+ className: "mt-12",
1279
+ hasPagination: totalCount > pageProperties.pageSize
1280
+ }, /*#__PURE__*/React.createElement(Table$1, _extends({
1281
+ fixedHeight: true,
1282
+ columnData: columns,
1283
+ currentPageNumber: pageProperties.page,
1284
+ defaultPageSize: pageProperties.pageSize,
1285
+ handlePageChange: handleTablePagination,
1286
+ rowData: items,
1287
+ paginationProps: {
1288
+ hideOnSinglePage: (items === null || items === void 0 ? void 0 : items.length) < DEFAULT_PAGE_SIZE + 1
1289
+ },
1290
+ onChange: handleTableChange
1291
+ }, _objectSpread$5({
1292
+ totalCount: totalCount
1293
+ }, otherProps))));
1294
+ };
1295
+
1761
1296
  var _excluded = ["filters", "isNewTemplatePaneOpen", "setFilters", "setIsNewTemplatePaneOpen", "helpDocUrl"];
1762
1297
  function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1763
1298
  function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -1893,35 +1428,10 @@ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) {
1893
1428
  var createRoutes = function createRoutes(_ref) {
1894
1429
  var config = _ref.config,
1895
1430
  filters = _ref.filters,
1896
- isNewApproverPaneOpen = _ref.isNewApproverPaneOpen,
1897
1431
  isNewTemplatePaneOpen = _ref.isNewTemplatePaneOpen,
1898
1432
  setFilters = _ref.setFilters,
1899
- setIsNewApproverPaneOpen = _ref.setIsNewApproverPaneOpen,
1900
1433
  setIsNewTemplatePaneOpen = _ref.setIsNewTemplatePaneOpen;
1901
1434
  return [{
1902
- component: function component() {
1903
- return /*#__PURE__*/React.createElement(Approvers, _objectSpread$3({
1904
- filters: filters,
1905
- isNewApproverPaneOpen: isNewApproverPaneOpen,
1906
- setFilters: setFilters,
1907
- setIsNewApproverPaneOpen: setIsNewApproverPaneOpen
1908
- }, config));
1909
- },
1910
- path: "".concat(config.approvalsPath).concat(routes.approvers),
1911
- actionBlock: function actionBlock() {
1912
- return /*#__PURE__*/React.createElement(Button, {
1913
- label: t$1("neetoApprovals.common.add_", {
1914
- what: t$1("neetoApprovals.common.approver", SINGULAR).toLocaleLowerCase()
1915
- }),
1916
- onClick: function onClick() {
1917
- return setIsNewApproverPaneOpen(true);
1918
- }
1919
- });
1920
- },
1921
- searchPlaceholder: t$1("neetoApprovals.inputs.placeholders.search_", {
1922
- what: t$1("neetoApprovals.common.approver", PLURAL).toLocaleLowerCase()
1923
- })
1924
- }, {
1925
1435
  component: function component() {
1926
1436
  return /*#__PURE__*/React.createElement(Templates, _objectSpread$3({
1927
1437
  filters: filters,
@@ -1932,9 +1442,10 @@ var createRoutes = function createRoutes(_ref) {
1932
1442
  },
1933
1443
  path: "".concat(config.approvalsPath).concat(routes.templates.index),
1934
1444
  actionBlock: function actionBlock() {
1445
+ var _t;
1935
1446
  return /*#__PURE__*/React.createElement(Button, {
1936
- label: t$1("neetoApprovals.common.add_", {
1937
- what: t$1("neetoApprovals.common.approvalTemplate", SINGULAR).toLocaleLowerCase()
1447
+ label: t$1("neetoApprovals.common.addNew_", {
1448
+ what: (_t = t$1("neetoApprovals.common.template", SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1938
1449
  }),
1939
1450
  onClick: function onClick() {
1940
1451
  return setIsNewTemplatePaneOpen(true);
@@ -2049,17 +1560,11 @@ var Approvals = function Approvals(_ref) {
2049
1560
  _useState4 = _slicedToArray$1(_useState3, 2),
2050
1561
  isNewTemplatePaneOpen = _useState4[0],
2051
1562
  setIsNewTemplatePaneOpen = _useState4[1];
2052
- var _useState5 = useState(false),
2053
- _useState6 = _slicedToArray$1(_useState5, 2),
2054
- isNewApproverPaneOpen = _useState6[0],
2055
- setIsNewApproverPaneOpen = _useState6[1];
2056
1563
  var appRoutes = createRoutes({
2057
1564
  config: config,
2058
1565
  filters: filters,
2059
- isNewApproverPaneOpen: isNewApproverPaneOpen,
2060
1566
  isNewTemplatePaneOpen: isNewTemplatePaneOpen,
2061
1567
  setFilters: setFilters,
2062
- setIsNewApproverPaneOpen: setIsNewApproverPaneOpen,
2063
1568
  setIsNewTemplatePaneOpen: setIsNewTemplatePaneOpen
2064
1569
  });
2065
1570
  return /*#__PURE__*/React.createElement("div", {
@@ -2093,15 +1598,18 @@ var Form = function Form(_ref) {
2093
1598
  var isOpen = _ref.isOpen,
2094
1599
  setIsPaneOpen = _ref.setIsPaneOpen,
2095
1600
  onSubmit = _ref.onSubmit,
2096
- isLoading = _ref.isLoading;
1601
+ isLoading = _ref.isLoading,
1602
+ _ref$requestableId = _ref.requestableId,
1603
+ requestableId = _ref$requestableId === void 0 ? "" : _ref$requestableId;
2097
1604
  var _useState = useState({}),
2098
1605
  _useState2 = _slicedToArray$1(_useState, 2),
2099
1606
  selectedTemplateData = _useState2[0],
2100
1607
  setSelectedTemplateData = _useState2[1];
2101
1608
  var _useTranslation = useTranslation(),
2102
1609
  t = _useTranslation.t;
2103
- var variables = Object.values((selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.variables) || {});
2104
- var _useFetchTemplates = useFetchTemplates(),
1610
+ var _useFetchTemplates = useFetchTemplates({
1611
+ requestableId: requestableId
1612
+ }),
2105
1613
  _useFetchTemplates$da = _useFetchTemplates.data,
2106
1614
  _useFetchTemplates$da2 = _useFetchTemplates$da === void 0 ? {} : _useFetchTemplates$da,
2107
1615
  _useFetchTemplates$da3 = _useFetchTemplates$da2.templates,
@@ -2116,37 +1624,14 @@ var Form = function Form(_ref) {
2116
1624
  resetForm();
2117
1625
  var template = findById(selectedTemplate.value, templates);
2118
1626
  setSelectedTemplateData(template);
2119
- setFieldValue("message", template.message);
2120
- var variables = Object.values(template.variables);
2121
- if (isPresent(variables)) {
2122
- variables.forEach(function (_, index) {
2123
- return setFieldValue("variables[".concat(index, "].variable"), "");
2124
- });
2125
- } else {
2126
- setFieldValue("variables", []);
2127
- }
1627
+ setFieldValue("message", template.parsedMessage || template.message);
2128
1628
  };
2129
1629
  var onClose = function onClose() {
2130
1630
  setIsPaneOpen(false);
2131
1631
  setSelectedTemplateData({});
2132
1632
  };
2133
- var parseVariables = function parseVariables(variableValues) {
2134
- return variables.map(function (variable, index) {
2135
- var _variableValues$index;
2136
- return {
2137
- key: variable,
2138
- value: (_variableValues$index = variableValues[index]) === null || _variableValues$index === void 0 ? void 0 : _variableValues$index["variable"]
2139
- };
2140
- });
2141
- };
2142
1633
  var handleSubmit = function handleSubmit(values) {
2143
- var parsedVariables = parseVariables(values.variables);
2144
- var parsedMessage = {
2145
- message: modify("message", function (message) {
2146
- return substituteVariables(message, parsedVariables);
2147
- }, values).message
2148
- };
2149
- onSubmit(parsedMessage, selectedTemplateData, onClose);
1634
+ return onSubmit(values, selectedTemplateData, onClose);
2150
1635
  };
2151
1636
  return /*#__PURE__*/React.createElement(Pane, {
2152
1637
  isOpen: isOpen,
@@ -2155,15 +1640,14 @@ var Form = function Form(_ref) {
2155
1640
  style: "h2"
2156
1641
  }, t("neetoApprovals.common.add_", {
2157
1642
  what: (_t = t("neetoApprovals.common.approval", SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
2158
- }))), /*#__PURE__*/React.createElement(Form$3, {
1643
+ }))), /*#__PURE__*/React.createElement(Form$2, {
2159
1644
  formikProps: {
2160
1645
  onSubmit: handleSubmit,
2161
- initialValues: APPROVAL_REQUEST_FORM_INITIAL_VALUES,
2162
- validationSchema: APPROVAL_REQUEST_FORM_VALIDATION_SCHEMA
1646
+ initialValues: APPROVAL_REQUEST_FORM_INITIAL_VALUES
2163
1647
  }
2164
1648
  }, function (_ref2) {
1649
+ var _t2;
2165
1650
  var setFieldValue = _ref2.setFieldValue,
2166
- values = _ref2.values,
2167
1651
  resetForm = _ref2.resetForm,
2168
1652
  dirty = _ref2.dirty;
2169
1653
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Body, null, /*#__PURE__*/React.createElement("div", {
@@ -2174,30 +1658,20 @@ var Form = function Form(_ref) {
2174
1658
  onChange: function onChange(selectedTemplate) {
2175
1659
  return handleTemplateChange(selectedTemplate, setFieldValue, resetForm);
2176
1660
  }
2177
- }), isPresent(variables) && /*#__PURE__*/React.createElement("div", {
2178
- className: "space-y-2"
2179
- }, /*#__PURE__*/React.createElement(Label, null, t("neetoApprovals.inputs.labels.variableMapping")), /*#__PURE__*/React.createElement("div", {
2180
- className: "neeto-ui-bg-gray-100 neeto-ui-border-gray-300 neeto-ui-rounded-lg space-y-4 border p-3"
2181
- }, /*#__PURE__*/React.createElement(FieldArray, {
2182
- name: "variables"
2183
- }, function () {
2184
- return variables.map(function (variable, index) {
2185
- return /*#__PURE__*/React.createElement(Input, {
2186
- required: true,
2187
- className: "w-full",
2188
- key: variable,
2189
- label: variable,
2190
- name: "variables[".concat(index, "][variable]")
2191
- });
2192
- });
2193
- }))), (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message) && /*#__PURE__*/React.createElement("div", {
1661
+ }), (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message) && /*#__PURE__*/React.createElement("div", {
2194
1662
  className: "space-y-2"
2195
1663
  }, /*#__PURE__*/React.createElement(Label, null, t("neetoApprovals.inputs.labels.message")), /*#__PURE__*/React.createElement(EditorContent, {
2196
1664
  className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg p-3",
2197
- content: selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message,
2198
1665
  name: "message",
2199
- variables: parseVariables(values === null || values === void 0 ? void 0 : values.variables)
2200
- })))), /*#__PURE__*/React.createElement(Pane.Footer, {
1666
+ content: (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.parsedMessage) || (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message)
1667
+ })), /*#__PURE__*/React.createElement(FormikEditor, {
1668
+ label: t("neetoApprovals.inputs.labels.additionalInfo"),
1669
+ name: "additionalInfo",
1670
+ rows: 3,
1671
+ placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
1672
+ what: (_t2 = t("neetoApprovals.inputs.labels.additionalInfo")) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase()
1673
+ })
1674
+ }))), /*#__PURE__*/React.createElement(Pane.Footer, {
2201
1675
  className: "flex gap-x-2"
2202
1676
  }, /*#__PURE__*/React.createElement(Button, {
2203
1677
  disabled: !dirty,