@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.cjs.js CHANGED
@@ -6,18 +6,13 @@ var React = require('react');
6
6
  var Container = require('@bigbinary/neeto-molecules/Container');
7
7
  var reactRouterDom = require('react-router-dom');
8
8
  var i18next = require('i18next');
9
- var yup = require('yup');
10
9
  var constants = require('@bigbinary/neeto-commons-frontend/constants');
11
10
  var neetoui = require('@bigbinary/neetoui');
11
+ var ramda = require('ramda');
12
12
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
13
- var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
14
13
  var reactI18next = require('react-i18next');
15
- var ramda = require('ramda');
16
14
  var reactQuery = require('react-query');
17
15
  var axios = require('axios');
18
- var formik = require('@bigbinary/neetoui/formik');
19
- var neetoIcons = require('@bigbinary/neeto-icons');
20
- var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
21
16
  var utils = require('@bigbinary/neeto-commons-frontend/utils');
22
17
  var dayjs = require('dayjs');
23
18
  var timezone = require('dayjs/plugin/timezone');
@@ -25,7 +20,11 @@ var utc = require('dayjs/plugin/utc');
25
20
  var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
26
21
  var neetoEditor = require('@bigbinary/neeto-editor');
27
22
  var pure = require('@bigbinary/neeto-commons-frontend/pure');
28
- var formik$1 = require('formik');
23
+ var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
24
+ var formik = require('@bigbinary/neetoui/formik');
25
+ var yup = require('yup');
26
+ var neetoIcons = require('@bigbinary/neeto-icons');
27
+ var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
29
28
  var NeetoHeader = require('@bigbinary/neeto-molecules/Header');
30
29
 
31
30
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -51,13 +50,13 @@ function _interopNamespace(e) {
51
50
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
52
51
  var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container);
53
52
  var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
54
- var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
55
- var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
56
53
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
57
- var TableWrapper__default = /*#__PURE__*/_interopDefaultLegacy(TableWrapper);
58
54
  var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
59
55
  var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
60
56
  var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
57
+ var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
58
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
59
+ var TableWrapper__default = /*#__PURE__*/_interopDefaultLegacy(TableWrapper);
61
60
  var NeetoHeader__default = /*#__PURE__*/_interopDefaultLegacy(NeetoHeader);
62
61
 
63
62
  function _typeof$1(obj) {
@@ -156,12 +155,9 @@ function _slicedToArray$1(arr, i) {
156
155
  return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest$1();
157
156
  }
158
157
 
159
- var BASE_URL = "neeto_approvals";
160
- var TEMPLATE_URL = "".concat(BASE_URL, "/templates");
161
158
  var routes = {
162
159
  home: "/",
163
160
  approvals: "/approvals/",
164
- approvers: "approvers",
165
161
  pending: "pending",
166
162
  history: "history",
167
163
  templates: {
@@ -173,7 +169,6 @@ var routes = {
173
169
  };
174
170
 
175
171
  new URLSearchParams(window.location.search);
176
- var DEFAULT_PAGE_SIZE = 8;
177
172
  var DEFAULT_FILTER_VALUES = {
178
173
  searchTerm: "",
179
174
  sortBy: "",
@@ -194,575 +189,14 @@ var STATUS_TAG_STYLE = {
194
189
  };
195
190
  var APPROVAL_REQUEST_FORM_INITIAL_VALUES = {
196
191
  message: "",
197
- variables: []
198
- };
199
- var APPROVAL_REQUEST_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
200
- variables: yup__namespace.array().of(yup__namespace.object().shape({
201
- variable: yup__namespace.string().trim().required(i18next.t("neetoApprovals.validations.required", {
202
- what: i18next.t("neetoApprovals.common.field")
203
- }))
204
- }))
205
- });
192
+ additionalInfo: ""
193
+ };
206
194
  var STATUS_UPDATED_BY = {
207
195
  rejected: i18next.t("neetoApprovals.common.rejectedBy"),
208
196
  approved: i18next.t("neetoApprovals.common.approvedBy"),
209
197
  cancelled: i18next.t("neetoApprovals.common.cancelledBy")
210
198
  };
211
199
 
212
- var handleEmptyPage = function handleEmptyPage(data, pageProperties, handleTablePagination) {
213
- if (ramda.isEmpty(data) && pageProperties.page !== 1) {
214
- handleTablePagination(pageProperties.page - 1, pageProperties.pageSize);
215
- }
216
- };
217
-
218
- var fetch$3 = function fetch(params) {
219
- return axios__default["default"].get("".concat(BASE_URL, "/approvers"), {
220
- params: params
221
- });
222
- };
223
- var create$1 = function create(payload) {
224
- return axios__default["default"].post("".concat(BASE_URL, "/approvers"), payload);
225
- };
226
- var update$2 = function update(_ref) {
227
- var id = _ref.id,
228
- payload = _ref.payload;
229
- return axios__default["default"].put("".concat(BASE_URL, "/approvers/").concat(id), {
230
- approver: payload
231
- });
232
- };
233
- var destroy$1 = function destroy(_ref2) {
234
- var approverId = _ref2.approverId;
235
- return axios__default["default"]["delete"]("".concat(BASE_URL, "/approvers/").concat(approverId));
236
- };
237
- var approversApi = {
238
- create: create$1,
239
- fetch: fetch$3,
240
- update: update$2,
241
- destroy: destroy$1
242
- };
243
-
244
- var QUERY_KEYS = {
245
- APPROVERS: "neeto-approvals-approvers",
246
- TEMPLATES: "neeto-approvals-templates",
247
- REQUESTS: "neeto-approvals-requests",
248
- SHOW_TEMPLATE: "neeto-approvals-show-template",
249
- SHOW_PUBLIC_REQUEST: "neeto-approvals-show-public-request",
250
- VIEWS: "neeto-approvals-views"
251
- };
252
-
253
- 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; }
254
- 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; }
255
- var useFetchApprovers = function useFetchApprovers() {
256
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
257
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
258
- return reactQuery.useQuery([QUERY_KEYS.APPROVERS, params], function () {
259
- return approversApi.fetch(params);
260
- }, _objectSpread$c({
261
- select: function select(response) {
262
- return response.data || response;
263
- },
264
- keepPreviousData: true,
265
- onSuccess: function onSuccess(_ref) {
266
- var _params$onSuccess;
267
- var approvers = _ref.approvers;
268
- return params === null || params === void 0 ? void 0 : (_params$onSuccess = params.onSuccess) === null || _params$onSuccess === void 0 ? void 0 : _params$onSuccess.call(params, approvers);
269
- }
270
- }, options));
271
- };
272
- var useCreateApprover = function useCreateApprover(options) {
273
- return reactUtils.useMutationWithInvalidation(approversApi.create, _objectSpread$c({
274
- keysToInvalidate: [QUERY_KEYS.APPROVERS, QUERY_KEYS.VIEWS]
275
- }, options));
276
- };
277
- var useUpdateApprover = function useUpdateApprover(options) {
278
- return reactUtils.useMutationWithInvalidation(approversApi.update, _objectSpread$c({
279
- keysToInvalidate: [QUERY_KEYS.APPROVERS]
280
- }, options));
281
- };
282
- var useDeleteApprover = function useDeleteApprover(options) {
283
- return reactUtils.useMutationWithInvalidation(approversApi.destroy, _objectSpread$c({
284
- keysToInvalidate: [QUERY_KEYS.APPROVERS, QUERY_KEYS.VIEWS]
285
- }, options));
286
- };
287
-
288
- var useUrlSearchParams = function useUrlSearchParams() {
289
- var _useLocation = reactRouterDom.useLocation(),
290
- search = _useLocation.search;
291
- return React.useMemo(function () {
292
- return new URLSearchParams(search);
293
- }, [search]);
294
- };
295
-
296
- var usePaginate = function usePaginate() {
297
- var urlParams = useUrlSearchParams();
298
- var _useState = React.useState({
299
- page: Number(urlParams.get("page")) || constants.DEFAULT_PAGE_INDEX,
300
- pageSize: Number(urlParams.get("size")) || DEFAULT_PAGE_SIZE
301
- }),
302
- _useState2 = _slicedToArray$1(_useState, 2),
303
- pageProperties = _useState2[0],
304
- setPageProperties = _useState2[1];
305
- var history = reactRouterDom.useHistory();
306
- var handleTablePagination = React.useCallback(function (page, pageSize) {
307
- urlParams.set("page", page);
308
- urlParams.set("size", pageSize);
309
- history.push({
310
- search: urlParams.toString()
311
- });
312
- setPageProperties({
313
- page: page,
314
- pageSize: pageSize
315
- });
316
- }, [urlParams, history]);
317
- React.useEffect(function () {
318
- var page = urlParams.get("page") || constants.DEFAULT_PAGE_INDEX;
319
- var pageSize = urlParams.get("size") || DEFAULT_PAGE_SIZE;
320
- setPageProperties({
321
- page: Number(page),
322
- pageSize: Number(pageSize)
323
- });
324
- }, [urlParams]);
325
- return {
326
- pageProperties: pageProperties,
327
- handleTablePagination: handleTablePagination
328
- };
329
- };
330
-
331
- var _t$1, _t2;
332
- var MAX_NAME_LENGTH = 40;
333
- var APPROVER_FORM_INITIAL_VALUES = {
334
- firstName: "",
335
- lastName: "",
336
- email: ""
337
- };
338
- var APPROVER_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
339
- firstName: yup__namespace.string().trim().max(MAX_NAME_LENGTH, i18next.t("neetoApprovals.validations.limitExceeded", {
340
- what: (_t$1 = i18next.t("neetoApprovals.inputs.labels.firstName")) === null || _t$1 === void 0 ? void 0 : _t$1.toLocaleLowerCase(),
341
- limit: MAX_NAME_LENGTH
342
- })).required(i18next.t("neetoApprovals.validations.required", {
343
- what: i18next.t("neetoApprovals.inputs.labels.firstName")
344
- })),
345
- lastName: yup__namespace.string().trim().max(MAX_NAME_LENGTH, i18next.t("neetoApprovals.validations.limitExceeded", {
346
- what: (_t2 = i18next.t("neetoApprovals.inputs.labels.lastName")) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase(),
347
- limit: MAX_NAME_LENGTH
348
- })).required(i18next.t("neetoApprovals.validations.required", {
349
- what: i18next.t("neetoApprovals.inputs.labels.lastName")
350
- })),
351
- email: yup__namespace.string().email().required(i18next.t("neetoApprovals.validations.required", {
352
- what: i18next.t("neetoApprovals.common.email")
353
- }))
354
- });
355
-
356
- var Form$2 = function Form(_ref) {
357
- var isOpen = _ref.isOpen,
358
- onClose = _ref.onClose,
359
- onSubmit = _ref.onSubmit,
360
- _ref$initialData = _ref.initialData,
361
- initialData = _ref$initialData === void 0 ? {} : _ref$initialData,
362
- isLoading = _ref.isLoading;
363
- var inputReference = React.useRef(null);
364
- var _useTranslation = reactI18next.useTranslation(),
365
- t = _useTranslation.t;
366
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
367
- initialFocusRef: inputReference,
368
- isOpen: isOpen,
369
- onClose: onClose
370
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
371
- style: "h2"
372
- }, ramda.isEmpty(initialData) ? t("neetoApprovals.typography.newApprover") : t("neetoApprovals.typography.editApprover"))), /*#__PURE__*/React__default["default"].createElement(formik.Form, {
373
- formikProps: {
374
- initialValues: initialData || APPROVER_FORM_INITIAL_VALUES,
375
- validationSchema: APPROVER_FORM_VALIDATION_SCHEMA,
376
- onSubmit: onSubmit
377
- }
378
- }, /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
379
- className: "w-full space-y-6"
380
- }, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
381
- required: true,
382
- className: "w-full",
383
- label: t("neetoApprovals.inputs.labels.firstName"),
384
- name: "firstName",
385
- placeholder: t("neetoApprovals.inputs.placeholders.firstName"),
386
- ref: inputReference
387
- }), /*#__PURE__*/React__default["default"].createElement(formik.Input, {
388
- required: true,
389
- className: "w-full",
390
- label: t("neetoApprovals.inputs.labels.lastName"),
391
- name: "lastName",
392
- placeholder: t("neetoApprovals.inputs.placeholders.lastName")
393
- }), /*#__PURE__*/React__default["default"].createElement(formik.Input, {
394
- required: true,
395
- className: "w-full",
396
- label: t("neetoApprovals.common.email"),
397
- name: "email",
398
- placeholder: t("neetoApprovals.inputs.placeholders.email")
399
- }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
400
- className: "flex gap-x-2"
401
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
402
- label: t("neetoApprovals.buttons.saveChanges"),
403
- loading: isLoading,
404
- type: "submit"
405
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
406
- label: t("neetoApprovals.buttons.cancel"),
407
- style: "text",
408
- onClick: onClose
409
- })))));
410
- };
411
-
412
- var Create$1 = function Create(_ref) {
413
- var isNewApproverPaneOpen = _ref.isNewApproverPaneOpen,
414
- setIsNewApproverPaneOpen = _ref.setIsNewApproverPaneOpen,
415
- pageProperties = _ref.pageProperties,
416
- handleTablePagination = _ref.handleTablePagination,
417
- totalCount = _ref.totalCount;
418
- var _useCreateApprover = useCreateApprover(),
419
- createApprover = _useCreateApprover.mutate,
420
- isLoading = _useCreateApprover.isLoading;
421
- var getLastPageNumber = function getLastPageNumber() {
422
- return Math.ceil((totalCount + 1) / pageProperties.pageSize);
423
- };
424
- var onSubmit = function onSubmit(approver) {
425
- return createApprover({
426
- approver: approver
427
- }, {
428
- onSuccess: function onSuccess() {
429
- var lastPageNumber = getLastPageNumber();
430
- lastPageNumber !== pageProperties.page && handleTablePagination(lastPageNumber, pageProperties.pageSize);
431
- setIsNewApproverPaneOpen(false);
432
- }
433
- });
434
- };
435
- return /*#__PURE__*/React__default["default"].createElement(Form$2, {
436
- isLoading: isLoading,
437
- onSubmit: onSubmit,
438
- isOpen: isNewApproverPaneOpen,
439
- onClose: function onClose() {
440
- return setIsNewApproverPaneOpen(false);
441
- }
442
- });
443
- };
444
- var Create$2 = /*#__PURE__*/React__default["default"].memo(Create$1);
445
-
446
- var Edit$1 = function Edit(_ref) {
447
- var approver = _ref.approver,
448
- setApproverToEdit = _ref.setApproverToEdit;
449
- var _useUpdateApprover = useUpdateApprover(),
450
- updateApprover = _useUpdateApprover.mutate,
451
- isLoading = _useUpdateApprover.isLoading;
452
- var onSubmit = function onSubmit(_ref2) {
453
- var firstName = _ref2.firstName,
454
- lastName = _ref2.lastName,
455
- email = _ref2.email;
456
- return updateApprover({
457
- id: approver.id,
458
- payload: {
459
- firstName: firstName,
460
- lastName: lastName,
461
- email: email
462
- }
463
- }, {
464
- onSuccess: function onSuccess() {
465
- return setApproverToEdit("");
466
- }
467
- });
468
- };
469
- return /*#__PURE__*/React__default["default"].createElement(Form$2, {
470
- initialData: approver,
471
- isLoading: isLoading,
472
- isOpen: !!approver,
473
- onClose: function onClose() {
474
- return setApproverToEdit("");
475
- },
476
- onSubmit: onSubmit
477
- });
478
- };
479
- var Edit$2 = /*#__PURE__*/React__default["default"].memo(Edit$1);
480
-
481
- var Menu$1 = neetoui.Dropdown.Menu,
482
- MenuItem$1 = neetoui.Dropdown.MenuItem;
483
- var columnData$1 = function columnData(_ref) {
484
- var onEditClick = _ref.onEditClick,
485
- onDeleteClick = _ref.onDeleteClick;
486
- return [{
487
- dataIndex: "name",
488
- key: "name",
489
- sorter: true,
490
- title: i18next__default["default"].t("neetoApprovals.common.name")
491
- }, {
492
- dataIndex: "email",
493
- key: "email",
494
- sorter: true,
495
- title: i18next__default["default"].t("neetoApprovals.common.email")
496
- }, {
497
- key: "actions",
498
- ellipsis: true,
499
- render: function render(_, approver) {
500
- return /*#__PURE__*/React__default["default"].createElement("div", {
501
- className: "flex flex-row items-center justify-end space-x-3",
502
- onClick: function onClick(event) {
503
- return event.stopPropagation();
504
- }
505
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
506
- autoWidth: true,
507
- buttonProps: {
508
- style: "text"
509
- },
510
- className: "flex-shrink-0",
511
- icon: neetoIcons.MenuHorizontal,
512
- position: "bottom-end",
513
- strategy: "fixed"
514
- }, /*#__PURE__*/React__default["default"].createElement(Menu$1, null, /*#__PURE__*/React__default["default"].createElement(MenuItem$1.Button, {
515
- "data-cy": "approvers-edit-button",
516
- onClick: function onClick() {
517
- return onEditClick(approver);
518
- }
519
- }, i18next__default["default"].t("neetoApprovals.common.edit")), /*#__PURE__*/React__default["default"].createElement(MenuItem$1.Button, {
520
- "data-cy": "approvers-delete-button",
521
- onClick: function onClick() {
522
- return onDeleteClick(approver);
523
- }
524
- }, i18next__default["default"].t("neetoApprovals.common.delete")))));
525
- }
526
- }];
527
- };
528
-
529
- function _extends() {
530
- _extends = Object.assign ? Object.assign.bind() : function (target) {
531
- for (var i = 1; i < arguments.length; i++) {
532
- var source = arguments[i];
533
- for (var key in source) {
534
- if (Object.prototype.hasOwnProperty.call(source, key)) {
535
- target[key] = source[key];
536
- }
537
- }
538
- }
539
- return target;
540
- };
541
- return _extends.apply(this, arguments);
542
- }
543
-
544
- function _objectWithoutPropertiesLoose(source, excluded) {
545
- if (source == null) return {};
546
- var target = {};
547
- var sourceKeys = Object.keys(source);
548
- var key, i;
549
- for (i = 0; i < sourceKeys.length; i++) {
550
- key = sourceKeys[i];
551
- if (excluded.indexOf(key) >= 0) continue;
552
- target[key] = source[key];
553
- }
554
- return target;
555
- }
556
-
557
- function _objectWithoutProperties(source, excluded) {
558
- if (source == null) return {};
559
- var target = _objectWithoutPropertiesLoose(source, excluded);
560
- var key, i;
561
- if (Object.getOwnPropertySymbols) {
562
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
563
- for (i = 0; i < sourceSymbolKeys.length; i++) {
564
- key = sourceSymbolKeys[i];
565
- if (excluded.indexOf(key) >= 0) continue;
566
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
567
- target[key] = source[key];
568
- }
569
- }
570
- return target;
571
- }
572
-
573
- var renderNoDataHelpText = function renderNoDataHelpText(_ref) {
574
- var entity = _ref.entity,
575
- url = _ref.url;
576
- return /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
577
- i18nKey: "neetoApprovals.common.noDataHelpText",
578
- values: {
579
- entity: entity
580
- },
581
- components: {
582
- a: /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
583
- className: "neeto-ui-text-primary-600 underline",
584
- target: "_blank",
585
- to: {
586
- pathname: url
587
- }
588
- })
589
- }
590
- });
591
- };
592
-
593
- var _excluded$1 = ["entity", "columnData", "items", "totalCount", "filters", "setFilters", "setIsPaneOpen", "helpDocUrl", "onEditClick", "onDeleteClick"];
594
- 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; }
595
- 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; }
596
- var Table = function Table(_ref) {
597
- var _t;
598
- var entity = _ref.entity,
599
- columnData = _ref.columnData,
600
- items = _ref.items,
601
- totalCount = _ref.totalCount,
602
- filters = _ref.filters,
603
- setFilters = _ref.setFilters,
604
- setIsPaneOpen = _ref.setIsPaneOpen,
605
- helpDocUrl = _ref.helpDocUrl,
606
- onEditClick = _ref.onEditClick,
607
- onDeleteClick = _ref.onDeleteClick,
608
- otherProps = _objectWithoutProperties(_ref, _excluded$1);
609
- var _usePaginate = usePaginate(),
610
- pageProperties = _usePaginate.pageProperties,
611
- handleTablePagination = _usePaginate.handleTablePagination;
612
- var _useTranslation = reactI18next.useTranslation(),
613
- t = _useTranslation.t;
614
- var columns = columnData({
615
- onEditClick: onEditClick,
616
- onDeleteClick: onDeleteClick
617
- });
618
- var handleTableChange = function handleTableChange(_, __, sorter) {
619
- setFilters(_objectSpread$b(_objectSpread$b({}, filters), {}, {
620
- sortBy: sorter.field,
621
- orderBy: sorter.order
622
- }));
623
- };
624
- var noDataProps = {
625
- primaryButtonProps: {
626
- label: t("neetoApprovals.common.add_", {
627
- what: (_t = t("neetoApprovals.common.template", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
628
- }),
629
- onClick: function onClick() {
630
- return setIsPaneOpen(true);
631
- }
632
- },
633
- helpText: renderNoDataHelpText({
634
- entity: entity,
635
- url: helpDocUrl
636
- })
637
- };
638
- if (ramda.isEmpty(items)) {
639
- return /*#__PURE__*/React__default["default"].createElement("div", {
640
- className: "flex h-full w-full flex-grow items-center justify-center"
641
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, _extends({
642
- title: t("neetoApprovals.common.notFound_", {
643
- what: entity
644
- })
645
- }, !filters.searchTerm && noDataProps)));
646
- }
647
- return /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
648
- className: "mt-12",
649
- hasPagination: totalCount > pageProperties.pageSize
650
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Table, _extends({
651
- fixedHeight: true,
652
- columnData: columns,
653
- currentPageNumber: pageProperties.page,
654
- defaultPageSize: pageProperties.pageSize,
655
- handlePageChange: handleTablePagination,
656
- rowData: items,
657
- paginationProps: {
658
- hideOnSinglePage: (items === null || items === void 0 ? void 0 : items.length) < DEFAULT_PAGE_SIZE + 1
659
- },
660
- onChange: handleTableChange
661
- }, _objectSpread$b({
662
- totalCount: totalCount
663
- }, otherProps))));
664
- };
665
-
666
- 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; }
667
- 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; }
668
- var Approvers = function Approvers(_ref) {
669
- var _t, _t2, _t3;
670
- var filters = _ref.filters,
671
- isNewApproverPaneOpen = _ref.isNewApproverPaneOpen,
672
- setIsNewApproverPaneOpen = _ref.setIsNewApproverPaneOpen,
673
- helpDocUrl = _ref.helpDocUrl,
674
- setFilters = _ref.setFilters;
675
- var _useState = React.useState(""),
676
- _useState2 = _slicedToArray$1(_useState, 2),
677
- approverToEdit = _useState2[0],
678
- setApproverToEdit = _useState2[1];
679
- var _useState3 = React.useState(""),
680
- _useState4 = _slicedToArray$1(_useState3, 2),
681
- approverToDelete = _useState4[0],
682
- setApproverToDelete = _useState4[1];
683
- var debouncedSearchTerm = reactUtils.useDebounce(filters.searchTerm, SEARCH_DELAY);
684
- var _usePaginate = usePaginate(),
685
- pageProperties = _usePaginate.pageProperties,
686
- handleTablePagination = _usePaginate.handleTablePagination;
687
- var _useTranslation = reactI18next.useTranslation(),
688
- t = _useTranslation.t;
689
- var _useFetchApprovers = useFetchApprovers(_objectSpread$a(_objectSpread$a(_objectSpread$a({}, pageProperties), filters), {}, {
690
- searchTerm: debouncedSearchTerm.trim()
691
- }), {
692
- onSuccess: function onSuccess(approvers) {
693
- handleEmptyPage(approvers, pageProperties, handleTablePagination);
694
- }
695
- }),
696
- _useFetchApprovers$da = _useFetchApprovers.data,
697
- _useFetchApprovers$da2 = _useFetchApprovers$da === void 0 ? {} : _useFetchApprovers$da,
698
- _useFetchApprovers$da3 = _useFetchApprovers$da2.approvers,
699
- approvers = _useFetchApprovers$da3 === void 0 ? [] : _useFetchApprovers$da3,
700
- _useFetchApprovers$da4 = _useFetchApprovers$da2.totalCount,
701
- totalCount = _useFetchApprovers$da4 === void 0 ? 0 : _useFetchApprovers$da4,
702
- isApproverLoading = _useFetchApprovers.isLoading;
703
- var _useDeleteApprover = useDeleteApprover(),
704
- deleteApprover = _useDeleteApprover.mutate,
705
- isDeleting = _useDeleteApprover.isLoading;
706
- var onEditClick = function onEditClick(approver) {
707
- var name = approver.name.split(" ");
708
- setApproverToEdit(_objectSpread$a(_objectSpread$a({}, approver), {}, {
709
- firstName: name[0],
710
- lastName: name[1]
711
- }));
712
- };
713
- var onDeleteClick = function onDeleteClick(approver) {
714
- setApproverToDelete(approver);
715
- };
716
- var entity = (_t = t("neetoApprovals.common.approver", constants.PLURAL)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase();
717
- var handleDelete = function handleDelete(approverId) {
718
- deleteApprover({
719
- approverId: approverId
720
- });
721
- setApproverToDelete("");
722
- };
723
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isApproverLoading ? /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null) : /*#__PURE__*/React__default["default"].createElement(Table, {
724
- items: approvers,
725
- setIsPaneOpen: setIsNewApproverPaneOpen,
726
- columnData: columnData$1,
727
- entity: entity,
728
- filters: filters,
729
- helpDocUrl: helpDocUrl,
730
- onDeleteClick: onDeleteClick,
731
- onEditClick: onEditClick,
732
- setFilters: setFilters,
733
- totalCount: totalCount
734
- }), /*#__PURE__*/React__default["default"].createElement(Create$2, {
735
- handleTablePagination: handleTablePagination,
736
- isNewApproverPaneOpen: isNewApproverPaneOpen,
737
- pageProperties: pageProperties,
738
- setIsNewApproverPaneOpen: setIsNewApproverPaneOpen,
739
- totalCount: totalCount
740
- }), /*#__PURE__*/React__default["default"].createElement(Edit$2, {
741
- approver: approverToEdit,
742
- setApproverToEdit: setApproverToEdit
743
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Alert, {
744
- isOpen: !!approverToDelete,
745
- isSubmitting: isDeleting,
746
- submitButtonLabel: t("neetoApprovals.buttons.delete"),
747
- message: /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
748
- i18nKey: "neetoApprovals.alerts.deleting_",
749
- values: {
750
- what: (_t2 = t("neetoApprovals.common.approver", constants.SINGULAR)) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase(),
751
- name: approverToDelete === null || approverToDelete === void 0 ? void 0 : approverToDelete.name
752
- }
753
- }),
754
- title: t("neetoApprovals.common.delete_", {
755
- what: (_t3 = t("neetoApprovals.common.approver", constants.SINGULAR)) === null || _t3 === void 0 ? void 0 : _t3.toLocaleLowerCase()
756
- }),
757
- onClose: function onClose() {
758
- return setApproverToDelete("");
759
- },
760
- onSubmit: function onSubmit() {
761
- return handleDelete(approverToDelete === null || approverToDelete === void 0 ? void 0 : approverToDelete.id);
762
- }
763
- }));
764
- };
765
-
766
200
  function _arrayWithHoles(arr) {
767
201
  if (Array.isArray(arr)) return arr;
768
202
  }
@@ -884,16 +318,20 @@ var filterNonNull = function filterNonNull(object) {
884
318
  }));
885
319
  };
886
320
  nullSafe(filterNonNull);
887
- var findById = /*#__PURE__*/ramda.curry(function (id, array) {
888
- return array.find(function (item) {
889
- return item.id === id;
890
- });
891
- });
892
321
  var findBy = /*#__PURE__*/ramda.curry(function (pattern, array) {
893
322
  return array.find(matches(pattern));
894
323
  });
895
324
 
896
- var fetch$2 = function fetch(params, url) {
325
+ var handleEmptyPage = function handleEmptyPage(data, pageProperties, handleTablePagination) {
326
+ if (ramda.isEmpty(data) && pageProperties.page !== 1) {
327
+ handleTablePagination(pageProperties.page - 1, pageProperties.pageSize);
328
+ }
329
+ };
330
+
331
+ var BASE_URL = "neeto_approvals";
332
+ var TEMPLATE_URL = "".concat(BASE_URL, "/templates");
333
+
334
+ var fetch$3 = function fetch(params, url) {
897
335
  return axios__default["default"].get(url, {
898
336
  params: params
899
337
  });
@@ -906,12 +344,21 @@ var update$1 = function update(_ref) {
906
344
  });
907
345
  };
908
346
  var requestsApi = {
909
- fetch: fetch$2,
347
+ fetch: fetch$3,
910
348
  update: update$1
911
349
  };
912
350
 
913
- 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; }
914
- 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; }
351
+ var QUERY_KEYS = {
352
+ APPROVERS: "neeto-approvals-approvers",
353
+ TEMPLATES: "neeto-approvals-templates",
354
+ REQUESTS: "neeto-approvals-requests",
355
+ SHOW_TEMPLATE: "neeto-approvals-show-template",
356
+ SHOW_PUBLIC_REQUEST: "neeto-approvals-show-public-request",
357
+ VIEWS: "neeto-approvals-views"
358
+ };
359
+
360
+ 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; }
361
+ 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; }
915
362
  var useFetchRequests = function useFetchRequests(_ref) {
916
363
  var requestUrl = _ref.requestUrl,
917
364
  _ref$params = _ref.params,
@@ -920,7 +367,7 @@ var useFetchRequests = function useFetchRequests(_ref) {
920
367
  options = _ref$options === void 0 ? {} : _ref$options;
921
368
  return reactQuery.useQuery([QUERY_KEYS.REQUESTS, params], function () {
922
369
  return requestsApi.fetch(params, requestUrl);
923
- }, _objectSpread$9({
370
+ }, _objectSpread$b({
924
371
  select: function select(response) {
925
372
  return response.data || response;
926
373
  },
@@ -933,11 +380,54 @@ var useFetchRequests = function useFetchRequests(_ref) {
933
380
  }, options));
934
381
  };
935
382
  var useUpdateRequest = function useUpdateRequest(options) {
936
- return reactUtils.useMutationWithInvalidation(requestsApi.update, _objectSpread$9({
383
+ return reactUtils.useMutationWithInvalidation(requestsApi.update, _objectSpread$b({
937
384
  keysToInvalidate: [QUERY_KEYS.REQUESTS, QUERY_KEYS.VIEWS]
938
385
  }, options));
939
386
  };
940
387
 
388
+ var useUrlSearchParams = function useUrlSearchParams() {
389
+ var _useLocation = reactRouterDom.useLocation(),
390
+ search = _useLocation.search;
391
+ return React.useMemo(function () {
392
+ return new URLSearchParams(search);
393
+ }, [search]);
394
+ };
395
+
396
+ var usePaginate = function usePaginate() {
397
+ var urlParams = useUrlSearchParams();
398
+ var _useState = React.useState({
399
+ page: Number(urlParams.get("page")) || constants.DEFAULT_PAGE_INDEX,
400
+ pageSize: Number(urlParams.get("size")) || constants.DEFAULT_PAGE_SIZE
401
+ }),
402
+ _useState2 = _slicedToArray$1(_useState, 2),
403
+ pageProperties = _useState2[0],
404
+ setPageProperties = _useState2[1];
405
+ var history = reactRouterDom.useHistory();
406
+ var handleTablePagination = React.useCallback(function (page, pageSize) {
407
+ urlParams.set("page", page);
408
+ urlParams.set("size", pageSize);
409
+ history.push({
410
+ search: urlParams.toString()
411
+ });
412
+ setPageProperties({
413
+ page: page,
414
+ pageSize: pageSize
415
+ });
416
+ }, [urlParams, history]);
417
+ React.useEffect(function () {
418
+ var page = urlParams.get("page") || constants.DEFAULT_PAGE_INDEX;
419
+ var pageSize = urlParams.get("size") || constants.DEFAULT_PAGE_SIZE;
420
+ setPageProperties({
421
+ page: Number(page),
422
+ pageSize: Number(pageSize)
423
+ });
424
+ }, [urlParams]);
425
+ return {
426
+ pageProperties: pageProperties,
427
+ handleTablePagination: handleTablePagination
428
+ };
429
+ };
430
+
941
431
  dayjs__default["default"].extend(utc__default["default"]);
942
432
  dayjs__default["default"].extend(timezone__default["default"]);
943
433
  var updateApprovalDetails = function updateApprovalDetails(_ref) {
@@ -969,10 +459,6 @@ var getApprovalFilter = function getApprovalFilter() {
969
459
  HISTORY: {
970
460
  label: i18next.t("neetoApprovals.common.history"),
971
461
  value: "HISTORY"
972
- },
973
- APPROVERS: {
974
- label: i18next.t("neetoApprovals.common.approver", constants.PLURAL),
975
- value: "APPROVERS"
976
462
  }
977
463
  };
978
464
  };
@@ -1039,6 +525,7 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1039
525
  _approvalDetails$stat = approvalDetails.status,
1040
526
  status = _approvalDetails$stat === void 0 ? "" : _approvalDetails$stat,
1041
527
  message = approvalDetails.message,
528
+ additionalInfo = approvalDetails.additionalInfo,
1042
529
  createdAt = approvalDetails.createdAt,
1043
530
  approverName = approvalDetails.approverName,
1044
531
  approverEmail = approvalDetails.approverEmail,
@@ -1098,6 +585,11 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1098
585
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoApprovals.inputs.labels.message")), /*#__PURE__*/React__default["default"].createElement(MemoizedEditorContent$1, {
1099
586
  className: "neeto-ui-bg-gray-100 p-4",
1100
587
  content: message
588
+ })), additionalInfo && /*#__PURE__*/React__default["default"].createElement("div", {
589
+ className: "w-full space-y-2"
590
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoApprovals.inputs.labels.additionalInfo")), /*#__PURE__*/React__default["default"].createElement(MemoizedEditorContent$1, {
591
+ className: "neeto-ui-bg-gray-100 p-4",
592
+ content: additionalInfo
1101
593
  })), isPending && isCurrentUserApprover && /*#__PURE__*/React__default["default"].createElement(neetoui.Textarea, {
1102
594
  className: "w-full",
1103
595
  disabled: !isPending,
@@ -1130,8 +622,8 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1130
622
  })));
1131
623
  };
1132
624
 
1133
- 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; }
1134
- 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; }
625
+ 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; }
626
+ 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; }
1135
627
  var History = function History(_ref) {
1136
628
  var _t;
1137
629
  var requestUrl = _ref.requestUrl;
@@ -1150,7 +642,7 @@ var History = function History(_ref) {
1150
642
  var _useTranslation = reactI18next.useTranslation(),
1151
643
  t = _useTranslation.t;
1152
644
  var _useFetchRequests = useFetchRequests({
1153
- params: _objectSpread$8(_objectSpread$8(_objectSpread$8({}, pageProperties), filters), {}, {
645
+ params: _objectSpread$a(_objectSpread$a(_objectSpread$a({}, pageProperties), filters), {}, {
1154
646
  searchTerm: debouncedSearchTerm.trim(),
1155
647
  status: [STATUSES.approved, STATUSES.rejected, STATUSES.cancelled]
1156
648
  }),
@@ -1174,7 +666,7 @@ var History = function History(_ref) {
1174
666
  _useFetchRequests$dat4 = _useFetchRequests$dat2.totalCount,
1175
667
  totalCount = _useFetchRequests$dat4 === void 0 ? 0 : _useFetchRequests$dat4;
1176
668
  var handleTableChange = function handleTableChange(_, __, sorter) {
1177
- setFilters(_objectSpread$8(_objectSpread$8({}, filters), {}, {
669
+ setFilters(_objectSpread$a(_objectSpread$a({}, filters), {}, {
1178
670
  sortBy: camelToSnakeCase(sorter.field),
1179
671
  orderBy: sorter.order
1180
672
  }));
@@ -1191,7 +683,7 @@ var History = function History(_ref) {
1191
683
  totalCount: totalCount,
1192
684
  handlePageChange: handleTablePagination,
1193
685
  paginationProps: {
1194
- hideOnSinglePage: (approvalHistories === null || approvalHistories === void 0 ? void 0 : approvalHistories.length) < DEFAULT_PAGE_SIZE + 1
686
+ hideOnSinglePage: (approvalHistories === null || approvalHistories === void 0 ? void 0 : approvalHistories.length) < constants.DEFAULT_PAGE_SIZE + 1
1195
687
  },
1196
688
  onChange: handleTableChange,
1197
689
  onRowClick: function onRowClick(_, approvalDetails) {
@@ -1216,8 +708,8 @@ var PENDING_TABLE_COLUMNS = pure.removeBy({
1216
708
  key: "status"
1217
709
  }, HISTORY_TABLE_COLUMNS);
1218
710
 
1219
- 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; }
1220
- 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; }
711
+ 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; }
712
+ 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; }
1221
713
  var PendingRequests = function PendingRequests(_ref) {
1222
714
  var _t;
1223
715
  var requestUrl = _ref.requestUrl;
@@ -1236,7 +728,7 @@ var PendingRequests = function PendingRequests(_ref) {
1236
728
  var _useTranslation = reactI18next.useTranslation(),
1237
729
  t = _useTranslation.t;
1238
730
  var _useFetchRequests = useFetchRequests({
1239
- params: _objectSpread$7(_objectSpread$7(_objectSpread$7({}, pageProperties), filters), {}, {
731
+ params: _objectSpread$9(_objectSpread$9(_objectSpread$9({}, pageProperties), filters), {}, {
1240
732
  searchTerm: debouncedSearchTerm.trim(),
1241
733
  status: [STATUSES.pending]
1242
734
  }),
@@ -1257,7 +749,7 @@ var PendingRequests = function PendingRequests(_ref) {
1257
749
  updatePendingRequest = _useUpdateRequest.mutate,
1258
750
  isLoading = _useUpdateRequest.isLoading;
1259
751
  var handleTableChange = function handleTableChange(_, __, sorter) {
1260
- setFilters(_objectSpread$7(_objectSpread$7({}, filters), {}, {
752
+ setFilters(_objectSpread$9(_objectSpread$9({}, filters), {}, {
1261
753
  sortBy: camelToSnakeCase(sorter.field),
1262
754
  orderBy: sorter.order
1263
755
  }));
@@ -1284,7 +776,7 @@ var PendingRequests = function PendingRequests(_ref) {
1284
776
  totalCount: totalCount,
1285
777
  handlePageChange: handleTablePagination,
1286
778
  paginationProps: {
1287
- hideOnSinglePage: (pendingRequests === null || pendingRequests === void 0 ? void 0 : pendingRequests.length) < DEFAULT_PAGE_SIZE + 1
779
+ hideOnSinglePage: (pendingRequests === null || pendingRequests === void 0 ? void 0 : pendingRequests.length) < constants.DEFAULT_PAGE_SIZE + 1
1288
780
  },
1289
781
  onChange: handleTableChange,
1290
782
  onRowClick: function onRowClick(_, approvalDetails) {
@@ -1308,7 +800,51 @@ var PendingRequests = function PendingRequests(_ref) {
1308
800
  }));
1309
801
  };
1310
802
 
1311
- var fetch$1 = function fetch(params) {
803
+ function _extends() {
804
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
805
+ for (var i = 1; i < arguments.length; i++) {
806
+ var source = arguments[i];
807
+ for (var key in source) {
808
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
809
+ target[key] = source[key];
810
+ }
811
+ }
812
+ }
813
+ return target;
814
+ };
815
+ return _extends.apply(this, arguments);
816
+ }
817
+
818
+ function _objectWithoutPropertiesLoose(source, excluded) {
819
+ if (source == null) return {};
820
+ var target = {};
821
+ var sourceKeys = Object.keys(source);
822
+ var key, i;
823
+ for (i = 0; i < sourceKeys.length; i++) {
824
+ key = sourceKeys[i];
825
+ if (excluded.indexOf(key) >= 0) continue;
826
+ target[key] = source[key];
827
+ }
828
+ return target;
829
+ }
830
+
831
+ function _objectWithoutProperties(source, excluded) {
832
+ if (source == null) return {};
833
+ var target = _objectWithoutPropertiesLoose(source, excluded);
834
+ var key, i;
835
+ if (Object.getOwnPropertySymbols) {
836
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
837
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
838
+ key = sourceSymbolKeys[i];
839
+ if (excluded.indexOf(key) >= 0) continue;
840
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
841
+ target[key] = source[key];
842
+ }
843
+ }
844
+ return target;
845
+ }
846
+
847
+ var fetch$2 = function fetch(params) {
1312
848
  return axios__default["default"].get(TEMPLATE_URL, {
1313
849
  params: params
1314
850
  });
@@ -1335,20 +871,20 @@ var destroy = function destroy(_ref3) {
1335
871
  };
1336
872
  var templatesApi = {
1337
873
  create: create,
1338
- fetch: fetch$1,
874
+ fetch: fetch$2,
1339
875
  update: update,
1340
876
  destroy: destroy,
1341
877
  show: show$1
1342
878
  };
1343
879
 
1344
- 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; }
1345
- 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; }
880
+ 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; }
881
+ 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; }
1346
882
  var useFetchTemplates = function useFetchTemplates() {
1347
883
  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1348
884
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1349
885
  return reactQuery.useQuery([QUERY_KEYS.TEMPLATES, params], function () {
1350
886
  return templatesApi.fetch(params);
1351
- }, _objectSpread$6({
887
+ }, _objectSpread$8({
1352
888
  select: function select(response) {
1353
889
  return response.data || response;
1354
890
  },
@@ -1361,12 +897,12 @@ var useFetchTemplates = function useFetchTemplates() {
1361
897
  }, options));
1362
898
  };
1363
899
  var useCreateTemplate = function useCreateTemplate(options) {
1364
- return reactUtils.useMutationWithInvalidation(templatesApi.create, _objectSpread$6({
900
+ return reactUtils.useMutationWithInvalidation(templatesApi.create, _objectSpread$8({
1365
901
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, QUERY_KEYS.VIEWS]
1366
902
  }, options));
1367
903
  };
1368
904
  var useUpdateTemplate = function useUpdateTemplate(options) {
1369
- return reactUtils.useMutationWithInvalidation(templatesApi.update, _objectSpread$6({
905
+ return reactUtils.useMutationWithInvalidation(templatesApi.update, _objectSpread$8({
1370
906
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, function (_, _ref3) {
1371
907
  var id = _ref3.id;
1372
908
  return [QUERY_KEYS.SHOW_TEMPLATE, id];
@@ -1374,39 +910,44 @@ var useUpdateTemplate = function useUpdateTemplate(options) {
1374
910
  }, options));
1375
911
  };
1376
912
  var useDeleteTemplate = function useDeleteTemplate(options) {
1377
- return reactUtils.useMutationWithInvalidation(templatesApi.destroy, _objectSpread$6({
913
+ return reactUtils.useMutationWithInvalidation(templatesApi.destroy, _objectSpread$8({
1378
914
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, QUERY_KEYS.VIEWS]
1379
915
  }, options));
1380
916
  };
1381
917
 
1382
- function _arrayWithoutHoles(arr) {
1383
- if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
1384
- }
1385
-
1386
- function _iterableToArray(iter) {
1387
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
1388
- }
1389
-
1390
- function _nonIterableSpread() {
1391
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1392
- }
1393
-
1394
- function _toConsumableArray(arr) {
1395
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
1396
- }
918
+ var fetch$1 = function fetch(params) {
919
+ return axios__default["default"].get("".concat(BASE_URL, "/approvers"), {
920
+ params: params
921
+ });
922
+ };
923
+ var approversApi = {
924
+ fetch: fetch$1
925
+ };
1397
926
 
1398
- var _t;
1399
- var VALID_VARIABLE_NAME_REGEX = /^[a-z](?:\w*[a-z0-9])*$/i;
1400
- var EVERYONE_VISIBILITY = {
1401
- label: i18next.t("neetoApprovals.select.visibility.everyone"),
1402
- value: "everyone"
927
+ 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; }
928
+ 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; }
929
+ var useFetchApprovers = function useFetchApprovers() {
930
+ var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
931
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
932
+ return reactQuery.useQuery([QUERY_KEYS.APPROVERS, params], function () {
933
+ return approversApi.fetch(params);
934
+ }, _objectSpread$7({
935
+ select: function select(response) {
936
+ return response.data || response;
937
+ },
938
+ keepPreviousData: true,
939
+ onSuccess: function onSuccess(_ref) {
940
+ var _params$onSuccess;
941
+ var approvers = _ref.approvers;
942
+ return params === null || params === void 0 ? void 0 : (_params$onSuccess = params.onSuccess) === null || _params$onSuccess === void 0 ? void 0 : _params$onSuccess.call(params, approvers);
943
+ }
944
+ }, options));
1403
945
  };
946
+
1404
947
  var TEMPLATE_FORM_INITIAL_VALUES = {
1405
948
  name: "",
1406
949
  description: "",
1407
- visibility: EVERYONE_VISIBILITY,
1408
950
  approver: "",
1409
- variables: [],
1410
951
  message: ""
1411
952
  };
1412
953
  var TEMPLATE_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
@@ -1418,87 +959,27 @@ var TEMPLATE_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
1418
959
  what: i18next.t("neetoApprovals.inputs.labels.message")
1419
960
  }), function (content) {
1420
961
  return !neetoEditor.isEditorEmpty(content);
1421
- }),
1422
- variables: yup__namespace.array().of(yup__namespace.object().shape({
1423
- variable: yup__namespace.string().trim().required(i18next.t("neetoApprovals.validations.pleaseEnter_", {
1424
- what: (_t = i18next.t("neetoApprovals.common.variable")) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1425
- })).matches(VALID_VARIABLE_NAME_REGEX, i18next.t("neetoApprovals.validations.variableName"))
1426
- }))
962
+ })
1427
963
  });
1428
964
 
1429
- var DynamicBlock = function DynamicBlock() {
1430
- var _useTranslation = reactI18next.useTranslation(),
1431
- t = _useTranslation.t;
1432
- var _useFormikContext = formik$1.useFormikContext(),
1433
- _useFormikContext$val = _useFormikContext.values.variables,
1434
- variables = _useFormikContext$val === void 0 ? [] : _useFormikContext$val;
1435
- var editorVariables = variables.map(function (_ref, index) {
1436
- var variable = _ref.variable;
1437
- var variableValue = variable || "variable_".concat(index + 1);
1438
- return {
1439
- key: variableValue,
1440
- label: variableValue
1441
- };
1442
- });
1443
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
1444
- className: "space-y-2 "
1445
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoApprovals.inputs.labels.variableMapping")), /*#__PURE__*/React__default["default"].createElement(formik$1.FieldArray, {
1446
- name: "variables"
1447
- }, function (_ref2) {
1448
- var remove = _ref2.remove,
1449
- push = _ref2.push;
1450
- return /*#__PURE__*/React__default["default"].createElement("div", {
1451
- className: "neeto-ui-bg-gray-100 w-full p-3"
1452
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1453
- className: "grid grid-cols-2 gap-4"
1454
- }, variables === null || variables === void 0 ? void 0 : variables.map(function (_, index) {
1455
- return /*#__PURE__*/React__default["default"].createElement("div", {
1456
- className: "mb-2 flex space-x-2",
1457
- key: index
1458
- }, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
1459
- autoFocus: true,
1460
- required: true,
1461
- name: "variables[".concat(index, "][variable]"),
1462
- label: t("neetoApprovals.common.variable_", {
1463
- number: index + 1
1464
- })
1465
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1466
- className: "my-5",
1467
- icon: neetoIcons.Delete,
1468
- style: "text",
1469
- onClick: function onClick() {
1470
- return remove(index);
1471
- }
1472
- }));
1473
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1474
- style: "link",
1475
- label: t("neetoApprovals.common.add_", {
1476
- what: t("neetoApprovals.common.variable")
1477
- }),
1478
- onClick: function onClick() {
1479
- return push({
1480
- variable: ""
1481
- });
1482
- }
1483
- }));
1484
- })), /*#__PURE__*/React__default["default"].createElement(neetoEditor.FormikEditor, {
965
+ var MessageEditor = reactUtils.withT(function (_ref) {
966
+ var t = _ref.t,
967
+ _ref$placeholders = _ref.placeholders,
968
+ placeholders = _ref$placeholders === void 0 ? [] : _ref$placeholders;
969
+ return /*#__PURE__*/React__default["default"].createElement(neetoEditor.FormikEditor, {
1485
970
  required: true,
1486
- key: variables,
1487
971
  label: t("neetoApprovals.inputs.labels.message"),
1488
972
  name: "message",
1489
973
  rows: 3,
1490
- variables: editorVariables,
974
+ variables: placeholders,
1491
975
  placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
1492
976
  what: t("neetoApprovals.inputs.labels.message")
1493
- }),
1494
- shouldUpdate: function shouldUpdate(nextProps, prevProps) {
1495
- return nextProps.variables !== prevProps.variables;
1496
- }
1497
- }));
1498
- };
977
+ })
978
+ });
979
+ });
1499
980
 
1500
981
  var Form$1 = function Form(_ref) {
1501
- var _t, _t2;
982
+ var _t;
1502
983
  var isOpen = _ref.isOpen,
1503
984
  onClose = _ref.onClose,
1504
985
  _ref$initialData = _ref.initialData,
@@ -1507,7 +988,7 @@ var Form$1 = function Form(_ref) {
1507
988
  onSubmit = _ref$onSubmit === void 0 ? noop : _ref$onSubmit,
1508
989
  _ref$isLoading = _ref.isLoading,
1509
990
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
1510
- visibilityOptions = _ref.visibilityOptions;
991
+ placeholders = _ref.placeholders;
1511
992
  var inputReference = React.useRef(null);
1512
993
  var _useTranslation = reactI18next.useTranslation(),
1513
994
  t = _useTranslation.t;
@@ -1516,10 +997,10 @@ var Form$1 = function Form(_ref) {
1516
997
  _useFetchApprovers$da2 = _useFetchApprovers$da === void 0 ? {} : _useFetchApprovers$da,
1517
998
  _useFetchApprovers$da3 = _useFetchApprovers$da2.approvers,
1518
999
  approvers = _useFetchApprovers$da3 === void 0 ? [] : _useFetchApprovers$da3;
1519
- var header = ramda.isEmpty(initialData) ? t("neetoApprovals.common.add_", {
1520
- what: t("neetoApprovals.common.approvalTemplate", constants.SINGULAR).toLocaleLowerCase()
1000
+ var header = ramda.isEmpty(initialData) ? t("neetoApprovals.common.addNew_", {
1001
+ what: t("neetoApprovals.common.template", constants.SINGULAR).toLocaleLowerCase()
1521
1002
  }) : t("neetoApprovals.common.edit_", {
1522
- what: t("neetoApprovals.common.approvalTemplate", constants.SINGULAR).toLocaleLowerCase()
1003
+ what: t("neetoApprovals.common.template", constants.SINGULAR).toLocaleLowerCase()
1523
1004
  });
1524
1005
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
1525
1006
  initialFocusRef: inputReference,
@@ -1540,7 +1021,6 @@ var Form$1 = function Form(_ref) {
1540
1021
  }, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
1541
1022
  autoFocus: true,
1542
1023
  required: true,
1543
- className: "w-1/2",
1544
1024
  label: t("neetoApprovals.common.name"),
1545
1025
  name: "name",
1546
1026
  placeholder: t("neetoApprovals.inputs.placeholders.name")
@@ -1564,14 +1044,9 @@ var Form$1 = function Form(_ref) {
1564
1044
  placeholder: t("neetoApprovals.inputs.placeholders.select_", {
1565
1045
  what: (_t = t("neetoApprovals.common.approver", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1566
1046
  })
1567
- }), /*#__PURE__*/React__default["default"].createElement(formik.Select, {
1568
- label: t("neetoApprovals.common.visibility"),
1569
- name: "visibility",
1570
- options: [].concat(_toConsumableArray(visibilityOptions), [EVERYONE_VISIBILITY]),
1571
- placeholder: t("neetoApprovals.inputs.placeholders.select_", {
1572
- what: (_t2 = t("neetoApprovals.common.visibility")) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase()
1573
- })
1574
- })), /*#__PURE__*/React__default["default"].createElement(DynamicBlock, null))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
1047
+ })), /*#__PURE__*/React__default["default"].createElement(MessageEditor, {
1048
+ placeholders: placeholders
1049
+ }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
1575
1050
  className: "flex gap-x-2"
1576
1051
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1577
1052
  label: t("neetoApprovals.buttons.saveChanges"),
@@ -1584,45 +1059,31 @@ var Form$1 = function Form(_ref) {
1584
1059
  })))));
1585
1060
  };
1586
1061
 
1587
- 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; }
1588
- 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; }
1062
+ 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; }
1063
+ 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; }
1589
1064
  var buildTemplatePayload = function buildTemplatePayload(template) {
1590
- var variables = template.variables,
1591
- visibility = template.visibility,
1592
- approver = template.approver;
1593
- var indexedVariables = variables.map(function (_ref, index) {
1594
- var variable = _ref.variable;
1595
- return ["variable".concat(index + 1), variable];
1596
- });
1065
+ var approver = template.approver;
1597
1066
  var payload = {
1598
- template: _objectSpread$5(_objectSpread$5({}, template), {}, {
1599
- accessibleId: visibility.value || visibility,
1600
- approverId: approver.value,
1601
- variables: ramda.fromPairs(indexedVariables)
1067
+ template: _objectSpread$6(_objectSpread$6({}, template), {}, {
1068
+ approverId: approver.value
1602
1069
  })
1603
1070
  };
1604
1071
  return payload;
1605
1072
  };
1606
1073
  var generateInitialData = function generateInitialData(template) {
1607
- return _objectSpread$5(_objectSpread$5({}, template), {}, {
1608
- visibility: template.accessibleId || EVERYONE_VISIBILITY.value,
1074
+ return _objectSpread$6(_objectSpread$6({}, template), {}, {
1609
1075
  approver: {
1610
1076
  label: template.approverName,
1611
1077
  value: template.approverId
1612
- },
1613
- variables: template.variables && Object.values(template.variables).map(function (variable) {
1614
- return {
1615
- variable: variable
1616
- };
1617
- })
1078
+ }
1618
1079
  });
1619
1080
  };
1620
1081
 
1621
1082
  var Create = function Create(_ref) {
1622
- var visibilityOptions = _ref.visibilityOptions,
1623
- templateUrl = _ref.templateUrl,
1083
+ var templateUrl = _ref.templateUrl,
1624
1084
  isOpen = _ref.isOpen,
1625
- onClose = _ref.onClose;
1085
+ onClose = _ref.onClose,
1086
+ templatePlaceholders = _ref.templatePlaceholders;
1626
1087
  var _useCreateTemplate = useCreateTemplate(),
1627
1088
  createTemplate = _useCreateTemplate.mutate,
1628
1089
  isLoading = _useCreateTemplate.isLoading;
@@ -1636,21 +1097,21 @@ var Create = function Create(_ref) {
1636
1097
  });
1637
1098
  };
1638
1099
  return /*#__PURE__*/React__default["default"].createElement(Form$1, {
1100
+ placeholders: templatePlaceholders,
1639
1101
  isLoading: isLoading,
1640
1102
  isOpen: isOpen,
1641
1103
  onClose: onClose,
1642
- onSubmit: onSubmit,
1643
- visibilityOptions: visibilityOptions
1104
+ onSubmit: onSubmit
1644
1105
  });
1645
1106
  };
1646
1107
 
1647
1108
  var Edit = function Edit(_ref) {
1648
- var visibilityOptions = _ref.visibilityOptions,
1649
- templateUrl = _ref.templateUrl,
1109
+ var templateUrl = _ref.templateUrl,
1650
1110
  template = _ref.template,
1651
1111
  setTemplate = _ref.setTemplate,
1652
1112
  isOpen = _ref.isOpen,
1653
- onClose = _ref.onClose;
1113
+ onClose = _ref.onClose,
1114
+ templatePlaceholders = _ref.templatePlaceholders;
1654
1115
  var _useUpdateTemplate = useUpdateTemplate({
1655
1116
  onSuccess: function onSuccess() {
1656
1117
  return setTemplate({});
@@ -1669,10 +1130,10 @@ var Edit = function Edit(_ref) {
1669
1130
  return /*#__PURE__*/React__default["default"].createElement(Form$1, {
1670
1131
  initialData: generateInitialData(template),
1671
1132
  isLoading: isUpdating,
1133
+ placeholders: templatePlaceholders,
1672
1134
  isOpen: isOpen,
1673
1135
  onClose: onClose,
1674
- onSubmit: onSubmit,
1675
- visibilityOptions: visibilityOptions
1136
+ onSubmit: onSubmit
1676
1137
  });
1677
1138
  };
1678
1139
 
@@ -1691,7 +1152,6 @@ var Field$1 = /*#__PURE__*/React__default["default"].memo(Field);
1691
1152
 
1692
1153
  var MemoizedEditorContent = /*#__PURE__*/React__default["default"].memo(neetoEditor.EditorContent);
1693
1154
  var TemplateDetails = function TemplateDetails(_ref) {
1694
- var _Object$entries;
1695
1155
  var isOpen = _ref.isOpen,
1696
1156
  onClose = _ref.onClose,
1697
1157
  template = _ref.template;
@@ -1700,8 +1160,6 @@ var TemplateDetails = function TemplateDetails(_ref) {
1700
1160
  var name = template.name,
1701
1161
  description = template.description,
1702
1162
  approverName = template.approverName,
1703
- accessible = template.accessible,
1704
- variables = template.variables,
1705
1163
  message = template.message;
1706
1164
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
1707
1165
  isOpen: isOpen,
@@ -1721,18 +1179,6 @@ var TemplateDetails = function TemplateDetails(_ref) {
1721
1179
  }), /*#__PURE__*/React__default["default"].createElement(Field$1, {
1722
1180
  label: t("neetoApprovals.common.approver", constants.SINGULAR),
1723
1181
  value: approverName
1724
- }), /*#__PURE__*/React__default["default"].createElement(Field$1, {
1725
- label: t("neetoApprovals.common.visibility"),
1726
- value: (accessible === null || accessible === void 0 ? void 0 : accessible.label) || EVERYONE_VISIBILITY.label
1727
- }), (_Object$entries = Object.entries(variables || {})) === null || _Object$entries === void 0 ? void 0 : _Object$entries.map(function (_ref2) {
1728
- var _ref3 = _slicedToArray$1(_ref2, 2),
1729
- variable = _ref3[0],
1730
- value = _ref3[1];
1731
- return /*#__PURE__*/React__default["default"].createElement(Field$1, {
1732
- key: value,
1733
- label: capitalize(variable),
1734
- value: value
1735
- });
1736
1182
  }), /*#__PURE__*/React__default["default"].createElement("div", {
1737
1183
  className: "flex w-full flex-col space-y-4"
1738
1184
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, {
@@ -1754,13 +1200,9 @@ var columnData = function columnData(_ref) {
1754
1200
  sorter: true,
1755
1201
  title: i18next__default["default"].t("neetoApprovals.common.name")
1756
1202
  }, {
1757
- dataIndex: "visibility",
1758
- key: "visibility",
1759
- title: i18next__default["default"].t("neetoApprovals.common.visibility"),
1760
- render: function render(_, _ref2) {
1761
- var accessible = _ref2.accessible;
1762
- return (accessible === null || accessible === void 0 ? void 0 : accessible.label) || EVERYONE_VISIBILITY.label;
1763
- }
1203
+ dataIndex: "approverName",
1204
+ key: "approverName",
1205
+ title: i18next__default["default"].t("neetoApprovals.common.approver", constants.SINGULAR)
1764
1206
  }, {
1765
1207
  key: "actions",
1766
1208
  ellipsis: true,
@@ -1794,6 +1236,99 @@ var columnData = function columnData(_ref) {
1794
1236
  }];
1795
1237
  };
1796
1238
 
1239
+ var renderNoDataHelpText = function renderNoDataHelpText(_ref) {
1240
+ var entity = _ref.entity,
1241
+ url = _ref.url;
1242
+ return /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
1243
+ i18nKey: "neetoApprovals.common.noDataHelpText",
1244
+ values: {
1245
+ entity: entity
1246
+ },
1247
+ components: {
1248
+ a: /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
1249
+ className: "neeto-ui-text-primary-600 underline",
1250
+ target: "_blank",
1251
+ to: {
1252
+ pathname: url
1253
+ }
1254
+ })
1255
+ }
1256
+ });
1257
+ };
1258
+
1259
+ var _excluded$1 = ["entity", "columnData", "items", "totalCount", "filters", "setFilters", "setIsPaneOpen", "helpDocUrl", "onEditClick", "onDeleteClick"];
1260
+ 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; }
1261
+ 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; }
1262
+ var Table = function Table(_ref) {
1263
+ var _t;
1264
+ var entity = _ref.entity,
1265
+ columnData = _ref.columnData,
1266
+ items = _ref.items,
1267
+ totalCount = _ref.totalCount,
1268
+ filters = _ref.filters,
1269
+ setFilters = _ref.setFilters,
1270
+ setIsPaneOpen = _ref.setIsPaneOpen,
1271
+ helpDocUrl = _ref.helpDocUrl,
1272
+ onEditClick = _ref.onEditClick,
1273
+ onDeleteClick = _ref.onDeleteClick,
1274
+ otherProps = _objectWithoutProperties(_ref, _excluded$1);
1275
+ var _usePaginate = usePaginate(),
1276
+ pageProperties = _usePaginate.pageProperties,
1277
+ handleTablePagination = _usePaginate.handleTablePagination;
1278
+ var _useTranslation = reactI18next.useTranslation(),
1279
+ t = _useTranslation.t;
1280
+ var columns = columnData({
1281
+ onEditClick: onEditClick,
1282
+ onDeleteClick: onDeleteClick
1283
+ });
1284
+ var handleTableChange = function handleTableChange(_, __, sorter) {
1285
+ setFilters(_objectSpread$5(_objectSpread$5({}, filters), {}, {
1286
+ sortBy: sorter.field,
1287
+ orderBy: sorter.order
1288
+ }));
1289
+ };
1290
+ var noDataProps = {
1291
+ primaryButtonProps: {
1292
+ label: t("neetoApprovals.common.addNew_", {
1293
+ what: (_t = t("neetoApprovals.common.template", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1294
+ }),
1295
+ onClick: function onClick() {
1296
+ return setIsPaneOpen(true);
1297
+ }
1298
+ },
1299
+ helpText: renderNoDataHelpText({
1300
+ entity: entity,
1301
+ url: helpDocUrl
1302
+ })
1303
+ };
1304
+ if (ramda.isEmpty(items)) {
1305
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1306
+ className: "flex h-full w-full flex-grow items-center justify-center"
1307
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, _extends({
1308
+ title: t("neetoApprovals.common.notFound_", {
1309
+ what: entity
1310
+ })
1311
+ }, !filters.searchTerm && noDataProps)));
1312
+ }
1313
+ return /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
1314
+ className: "mt-12",
1315
+ hasPagination: totalCount > pageProperties.pageSize
1316
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Table, _extends({
1317
+ fixedHeight: true,
1318
+ columnData: columns,
1319
+ currentPageNumber: pageProperties.page,
1320
+ defaultPageSize: pageProperties.pageSize,
1321
+ handlePageChange: handleTablePagination,
1322
+ rowData: items,
1323
+ paginationProps: {
1324
+ hideOnSinglePage: (items === null || items === void 0 ? void 0 : items.length) < constants.DEFAULT_PAGE_SIZE + 1
1325
+ },
1326
+ onChange: handleTableChange
1327
+ }, _objectSpread$5({
1328
+ totalCount: totalCount
1329
+ }, otherProps))));
1330
+ };
1331
+
1797
1332
  var _excluded = ["filters", "isNewTemplatePaneOpen", "setFilters", "setIsNewTemplatePaneOpen", "helpDocUrl"];
1798
1333
  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; }
1799
1334
  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; }
@@ -1929,35 +1464,10 @@ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) {
1929
1464
  var createRoutes = function createRoutes(_ref) {
1930
1465
  var config = _ref.config,
1931
1466
  filters = _ref.filters,
1932
- isNewApproverPaneOpen = _ref.isNewApproverPaneOpen,
1933
1467
  isNewTemplatePaneOpen = _ref.isNewTemplatePaneOpen,
1934
1468
  setFilters = _ref.setFilters,
1935
- setIsNewApproverPaneOpen = _ref.setIsNewApproverPaneOpen,
1936
1469
  setIsNewTemplatePaneOpen = _ref.setIsNewTemplatePaneOpen;
1937
1470
  return [{
1938
- component: function component() {
1939
- return /*#__PURE__*/React__default["default"].createElement(Approvers, _objectSpread$3({
1940
- filters: filters,
1941
- isNewApproverPaneOpen: isNewApproverPaneOpen,
1942
- setFilters: setFilters,
1943
- setIsNewApproverPaneOpen: setIsNewApproverPaneOpen
1944
- }, config));
1945
- },
1946
- path: "".concat(config.approvalsPath).concat(routes.approvers),
1947
- actionBlock: function actionBlock() {
1948
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1949
- label: i18next.t("neetoApprovals.common.add_", {
1950
- what: i18next.t("neetoApprovals.common.approver", constants.SINGULAR).toLocaleLowerCase()
1951
- }),
1952
- onClick: function onClick() {
1953
- return setIsNewApproverPaneOpen(true);
1954
- }
1955
- });
1956
- },
1957
- searchPlaceholder: i18next.t("neetoApprovals.inputs.placeholders.search_", {
1958
- what: i18next.t("neetoApprovals.common.approver", constants.PLURAL).toLocaleLowerCase()
1959
- })
1960
- }, {
1961
1471
  component: function component() {
1962
1472
  return /*#__PURE__*/React__default["default"].createElement(Templates, _objectSpread$3({
1963
1473
  filters: filters,
@@ -1968,9 +1478,10 @@ var createRoutes = function createRoutes(_ref) {
1968
1478
  },
1969
1479
  path: "".concat(config.approvalsPath).concat(routes.templates.index),
1970
1480
  actionBlock: function actionBlock() {
1481
+ var _t;
1971
1482
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1972
- label: i18next.t("neetoApprovals.common.add_", {
1973
- what: i18next.t("neetoApprovals.common.approvalTemplate", constants.SINGULAR).toLocaleLowerCase()
1483
+ label: i18next.t("neetoApprovals.common.addNew_", {
1484
+ what: (_t = i18next.t("neetoApprovals.common.template", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1974
1485
  }),
1975
1486
  onClick: function onClick() {
1976
1487
  return setIsNewTemplatePaneOpen(true);
@@ -2085,17 +1596,11 @@ var Approvals = function Approvals(_ref) {
2085
1596
  _useState4 = _slicedToArray$1(_useState3, 2),
2086
1597
  isNewTemplatePaneOpen = _useState4[0],
2087
1598
  setIsNewTemplatePaneOpen = _useState4[1];
2088
- var _useState5 = React.useState(false),
2089
- _useState6 = _slicedToArray$1(_useState5, 2),
2090
- isNewApproverPaneOpen = _useState6[0],
2091
- setIsNewApproverPaneOpen = _useState6[1];
2092
1599
  var appRoutes = createRoutes({
2093
1600
  config: config,
2094
1601
  filters: filters,
2095
- isNewApproverPaneOpen: isNewApproverPaneOpen,
2096
1602
  isNewTemplatePaneOpen: isNewTemplatePaneOpen,
2097
1603
  setFilters: setFilters,
2098
- setIsNewApproverPaneOpen: setIsNewApproverPaneOpen,
2099
1604
  setIsNewTemplatePaneOpen: setIsNewTemplatePaneOpen
2100
1605
  });
2101
1606
  return /*#__PURE__*/React__default["default"].createElement("div", {
@@ -2129,15 +1634,18 @@ var Form = function Form(_ref) {
2129
1634
  var isOpen = _ref.isOpen,
2130
1635
  setIsPaneOpen = _ref.setIsPaneOpen,
2131
1636
  onSubmit = _ref.onSubmit,
2132
- isLoading = _ref.isLoading;
1637
+ isLoading = _ref.isLoading,
1638
+ _ref$requestableId = _ref.requestableId,
1639
+ requestableId = _ref$requestableId === void 0 ? "" : _ref$requestableId;
2133
1640
  var _useState = React.useState({}),
2134
1641
  _useState2 = _slicedToArray$1(_useState, 2),
2135
1642
  selectedTemplateData = _useState2[0],
2136
1643
  setSelectedTemplateData = _useState2[1];
2137
1644
  var _useTranslation = reactI18next.useTranslation(),
2138
1645
  t = _useTranslation.t;
2139
- var variables = Object.values((selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.variables) || {});
2140
- var _useFetchTemplates = useFetchTemplates(),
1646
+ var _useFetchTemplates = useFetchTemplates({
1647
+ requestableId: requestableId
1648
+ }),
2141
1649
  _useFetchTemplates$da = _useFetchTemplates.data,
2142
1650
  _useFetchTemplates$da2 = _useFetchTemplates$da === void 0 ? {} : _useFetchTemplates$da,
2143
1651
  _useFetchTemplates$da3 = _useFetchTemplates$da2.templates,
@@ -2150,39 +1658,16 @@ var Form = function Form(_ref) {
2150
1658
  });
2151
1659
  var handleTemplateChange = function handleTemplateChange(selectedTemplate, setFieldValue, resetForm) {
2152
1660
  resetForm();
2153
- var template = findById(selectedTemplate.value, templates);
1661
+ var template = pure.findById(selectedTemplate.value, templates);
2154
1662
  setSelectedTemplateData(template);
2155
- setFieldValue("message", template.message);
2156
- var variables = Object.values(template.variables);
2157
- if (isPresent(variables)) {
2158
- variables.forEach(function (_, index) {
2159
- return setFieldValue("variables[".concat(index, "].variable"), "");
2160
- });
2161
- } else {
2162
- setFieldValue("variables", []);
2163
- }
1663
+ setFieldValue("message", template.parsedMessage || template.message);
2164
1664
  };
2165
1665
  var onClose = function onClose() {
2166
1666
  setIsPaneOpen(false);
2167
1667
  setSelectedTemplateData({});
2168
1668
  };
2169
- var parseVariables = function parseVariables(variableValues) {
2170
- return variables.map(function (variable, index) {
2171
- var _variableValues$index;
2172
- return {
2173
- key: variable,
2174
- value: (_variableValues$index = variableValues[index]) === null || _variableValues$index === void 0 ? void 0 : _variableValues$index["variable"]
2175
- };
2176
- });
2177
- };
2178
1669
  var handleSubmit = function handleSubmit(values) {
2179
- var parsedVariables = parseVariables(values.variables);
2180
- var parsedMessage = {
2181
- message: ramda.modify("message", function (message) {
2182
- return neetoEditor.substituteVariables(message, parsedVariables);
2183
- }, values).message
2184
- };
2185
- onSubmit(parsedMessage, selectedTemplateData, onClose);
1670
+ return onSubmit(values, selectedTemplateData, onClose);
2186
1671
  };
2187
1672
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
2188
1673
  isOpen: isOpen,
@@ -2194,12 +1679,11 @@ var Form = function Form(_ref) {
2194
1679
  }))), /*#__PURE__*/React__default["default"].createElement(formik.Form, {
2195
1680
  formikProps: {
2196
1681
  onSubmit: handleSubmit,
2197
- initialValues: APPROVAL_REQUEST_FORM_INITIAL_VALUES,
2198
- validationSchema: APPROVAL_REQUEST_FORM_VALIDATION_SCHEMA
1682
+ initialValues: APPROVAL_REQUEST_FORM_INITIAL_VALUES
2199
1683
  }
2200
1684
  }, function (_ref2) {
1685
+ var _t2;
2201
1686
  var setFieldValue = _ref2.setFieldValue,
2202
- values = _ref2.values,
2203
1687
  resetForm = _ref2.resetForm,
2204
1688
  dirty = _ref2.dirty;
2205
1689
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -2210,30 +1694,20 @@ var Form = function Form(_ref) {
2210
1694
  onChange: function onChange(selectedTemplate) {
2211
1695
  return handleTemplateChange(selectedTemplate, setFieldValue, resetForm);
2212
1696
  }
2213
- }), isPresent(variables) && /*#__PURE__*/React__default["default"].createElement("div", {
2214
- className: "space-y-2"
2215
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoApprovals.inputs.labels.variableMapping")), /*#__PURE__*/React__default["default"].createElement("div", {
2216
- className: "neeto-ui-bg-gray-100 neeto-ui-border-gray-300 neeto-ui-rounded-lg space-y-4 border p-3"
2217
- }, /*#__PURE__*/React__default["default"].createElement(formik$1.FieldArray, {
2218
- name: "variables"
2219
- }, function () {
2220
- return variables.map(function (variable, index) {
2221
- return /*#__PURE__*/React__default["default"].createElement(formik.Input, {
2222
- required: true,
2223
- className: "w-full",
2224
- key: variable,
2225
- label: variable,
2226
- name: "variables[".concat(index, "][variable]")
2227
- });
2228
- });
2229
- }))), (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message) && /*#__PURE__*/React__default["default"].createElement("div", {
1697
+ }), (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message) && /*#__PURE__*/React__default["default"].createElement("div", {
2230
1698
  className: "space-y-2"
2231
1699
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoApprovals.inputs.labels.message")), /*#__PURE__*/React__default["default"].createElement(neetoEditor.EditorContent, {
2232
1700
  className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg p-3",
2233
- content: selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message,
2234
1701
  name: "message",
2235
- variables: parseVariables(values === null || values === void 0 ? void 0 : values.variables)
2236
- })))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
1702
+ content: (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.parsedMessage) || (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message)
1703
+ })), /*#__PURE__*/React__default["default"].createElement(neetoEditor.FormikEditor, {
1704
+ label: t("neetoApprovals.inputs.labels.additionalInfo"),
1705
+ name: "additionalInfo",
1706
+ rows: 3,
1707
+ placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
1708
+ what: (_t2 = t("neetoApprovals.inputs.labels.additionalInfo")) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase()
1709
+ })
1710
+ }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
2237
1711
  className: "flex gap-x-2"
2238
1712
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
2239
1713
  disabled: !dirty,