@bigbinary/neeto-approvals-frontend 0.2.7 → 0.2.9

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 TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
27
+ var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
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,14 @@ 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);
60
+ var MoreDropdown__default = /*#__PURE__*/_interopDefaultLegacy(MoreDropdown);
61
61
  var NeetoHeader__default = /*#__PURE__*/_interopDefaultLegacy(NeetoHeader);
62
62
 
63
63
  function _typeof$1(obj) {
@@ -156,12 +156,9 @@ function _slicedToArray$1(arr, i) {
156
156
  return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest$1();
157
157
  }
158
158
 
159
- var BASE_URL = "neeto_approvals";
160
- var TEMPLATE_URL = "".concat(BASE_URL, "/templates");
161
159
  var routes = {
162
160
  home: "/",
163
161
  approvals: "/approvals/",
164
- approvers: "approvers",
165
162
  pending: "pending",
166
163
  history: "history",
167
164
  templates: {
@@ -172,597 +169,6 @@ var routes = {
172
169
  "public": "approvals/public/request/:id"
173
170
  };
174
171
 
175
- new URLSearchParams(window.location.search);
176
- var DEFAULT_PAGE_SIZE = 8;
177
- var DEFAULT_FILTER_VALUES = {
178
- searchTerm: "",
179
- sortBy: "",
180
- orderBy: ""
181
- };
182
- var SEARCH_DELAY = 750;
183
- var STATUSES = {
184
- approved: "approved",
185
- rejected: "rejected",
186
- pending: "pending",
187
- cancelled: "cancelled"
188
- };
189
- var STATUS_TAG_STYLE = {
190
- pending: "primary",
191
- approved: "success",
192
- rejected: "danger",
193
- cancelled: "warning"
194
- };
195
- var APPROVAL_REQUEST_FORM_INITIAL_VALUES = {
196
- 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
- });
206
- var STATUS_UPDATED_BY = {
207
- rejected: i18next.t("neetoApprovals.common.rejectedBy"),
208
- approved: i18next.t("neetoApprovals.common.approvedBy"),
209
- cancelled: i18next.t("neetoApprovals.common.cancelledBy")
210
- };
211
-
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
172
  function _arrayWithHoles(arr) {
767
173
  if (Array.isArray(arr)) return arr;
768
174
  }
@@ -884,16 +290,20 @@ var filterNonNull = function filterNonNull(object) {
884
290
  }));
885
291
  };
886
292
  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
293
  var findBy = /*#__PURE__*/ramda.curry(function (pattern, array) {
893
294
  return array.find(matches(pattern));
894
295
  });
895
296
 
896
- var fetch$2 = function fetch(params, url) {
297
+ var handleEmptyPage = function handleEmptyPage(data, pageProperties, handlePageChange) {
298
+ if (ramda.isEmpty(data) && pageProperties.page !== 1) {
299
+ handlePageChange(pageProperties.page - 1, pageProperties.pageSize);
300
+ }
301
+ };
302
+
303
+ var BASE_URL = "neeto_approvals";
304
+ var TEMPLATE_URL = "".concat(BASE_URL, "/templates");
305
+
306
+ var fetch$3 = function fetch(params, url) {
897
307
  return axios__default["default"].get(url, {
898
308
  params: params
899
309
  });
@@ -906,12 +316,21 @@ var update$1 = function update(_ref) {
906
316
  });
907
317
  };
908
318
  var requestsApi = {
909
- fetch: fetch$2,
319
+ fetch: fetch$3,
910
320
  update: update$1
911
321
  };
912
322
 
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; }
323
+ var QUERY_KEYS = {
324
+ APPROVERS: "neeto-approvals-approvers",
325
+ TEMPLATES: "neeto-approvals-templates",
326
+ REQUESTS: "neeto-approvals-requests",
327
+ SHOW_TEMPLATE: "neeto-approvals-show-template",
328
+ SHOW_PUBLIC_REQUEST: "neeto-approvals-show-public-request",
329
+ VIEWS: "neeto-approvals-views"
330
+ };
331
+
332
+ 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; }
333
+ 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
334
  var useFetchRequests = function useFetchRequests(_ref) {
916
335
  var requestUrl = _ref.requestUrl,
917
336
  _ref$params = _ref.params,
@@ -920,7 +339,7 @@ var useFetchRequests = function useFetchRequests(_ref) {
920
339
  options = _ref$options === void 0 ? {} : _ref$options;
921
340
  return reactQuery.useQuery([QUERY_KEYS.REQUESTS, params], function () {
922
341
  return requestsApi.fetch(params, requestUrl);
923
- }, _objectSpread$9({
342
+ }, _objectSpread$b({
924
343
  select: function select(response) {
925
344
  return response.data || response;
926
345
  },
@@ -933,11 +352,67 @@ var useFetchRequests = function useFetchRequests(_ref) {
933
352
  }, options));
934
353
  };
935
354
  var useUpdateRequest = function useUpdateRequest(options) {
936
- return reactUtils.useMutationWithInvalidation(requestsApi.update, _objectSpread$9({
355
+ return reactUtils.useMutationWithInvalidation(requestsApi.update, _objectSpread$b({
937
356
  keysToInvalidate: [QUERY_KEYS.REQUESTS, QUERY_KEYS.VIEWS]
938
357
  }, options));
939
358
  };
940
359
 
360
+ var usePaginate = function usePaginate() {
361
+ var _useState = React.useState({
362
+ page: constants.DEFAULT_PAGE_INDEX,
363
+ pageSize: constants.DEFAULT_PAGE_SIZE
364
+ }),
365
+ _useState2 = _slicedToArray$1(_useState, 2),
366
+ pageProperties = _useState2[0],
367
+ setPageProperties = _useState2[1];
368
+ var resetPageProperties = function resetPageProperties() {
369
+ return setPageProperties({
370
+ page: constants.DEFAULT_PAGE_INDEX,
371
+ pageSize: constants.DEFAULT_PAGE_SIZE
372
+ });
373
+ };
374
+ var handlePageChange = function handlePageChange(page, pageSize) {
375
+ setPageProperties({
376
+ page: page,
377
+ pageSize: pageSize
378
+ });
379
+ };
380
+ return {
381
+ pageProperties: pageProperties,
382
+ resetPageProperties: resetPageProperties,
383
+ handlePageChange: handlePageChange
384
+ };
385
+ };
386
+
387
+ new URLSearchParams(window.location.search);
388
+ var DEFAULT_FILTER_VALUES = {
389
+ searchTerm: "",
390
+ sortBy: "",
391
+ orderBy: ""
392
+ };
393
+ var SEARCH_DELAY = 750;
394
+ var STATUSES = {
395
+ approved: "approved",
396
+ rejected: "rejected",
397
+ pending: "pending",
398
+ cancelled: "cancelled"
399
+ };
400
+ var STATUS_TAG_STYLE = {
401
+ pending: "primary",
402
+ approved: "success",
403
+ rejected: "danger",
404
+ cancelled: "warning"
405
+ };
406
+ var APPROVAL_REQUEST_FORM_INITIAL_VALUES = {
407
+ message: "",
408
+ additionalInfo: ""
409
+ };
410
+ var STATUS_UPDATED_BY = {
411
+ rejected: i18next.t("neetoApprovals.common.rejectedBy"),
412
+ approved: i18next.t("neetoApprovals.common.approvedBy"),
413
+ cancelled: i18next.t("neetoApprovals.common.cancelledBy")
414
+ };
415
+
941
416
  dayjs__default["default"].extend(utc__default["default"]);
942
417
  dayjs__default["default"].extend(timezone__default["default"]);
943
418
  var updateApprovalDetails = function updateApprovalDetails(_ref) {
@@ -969,10 +444,6 @@ var getApprovalFilter = function getApprovalFilter() {
969
444
  HISTORY: {
970
445
  label: i18next.t("neetoApprovals.common.history"),
971
446
  value: "HISTORY"
972
- },
973
- APPROVERS: {
974
- label: i18next.t("neetoApprovals.common.approver", constants.PLURAL),
975
- value: "APPROVERS"
976
447
  }
977
448
  };
978
449
  };
@@ -1039,6 +510,7 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1039
510
  _approvalDetails$stat = approvalDetails.status,
1040
511
  status = _approvalDetails$stat === void 0 ? "" : _approvalDetails$stat,
1041
512
  message = approvalDetails.message,
513
+ additionalInfo = approvalDetails.additionalInfo,
1042
514
  createdAt = approvalDetails.createdAt,
1043
515
  approverName = approvalDetails.approverName,
1044
516
  approverEmail = approvalDetails.approverEmail,
@@ -1098,6 +570,11 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1098
570
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoApprovals.inputs.labels.message")), /*#__PURE__*/React__default["default"].createElement(MemoizedEditorContent$1, {
1099
571
  className: "neeto-ui-bg-gray-100 p-4",
1100
572
  content: message
573
+ })), additionalInfo && /*#__PURE__*/React__default["default"].createElement("div", {
574
+ className: "w-full space-y-2"
575
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoApprovals.inputs.labels.additionalInfo")), /*#__PURE__*/React__default["default"].createElement(MemoizedEditorContent$1, {
576
+ className: "neeto-ui-bg-gray-100 p-4",
577
+ content: additionalInfo
1101
578
  })), isPending && isCurrentUserApprover && /*#__PURE__*/React__default["default"].createElement(neetoui.Textarea, {
1102
579
  className: "w-full",
1103
580
  disabled: !isPending,
@@ -1130,8 +607,8 @@ var ApprovalsDetails = function ApprovalsDetails(_ref) {
1130
607
  })));
1131
608
  };
1132
609
 
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; }
610
+ 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; }
611
+ 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
612
  var History = function History(_ref) {
1136
613
  var _t;
1137
614
  var requestUrl = _ref.requestUrl;
@@ -1142,7 +619,7 @@ var History = function History(_ref) {
1142
619
  var debouncedSearchTerm = reactUtils.useDebounce(filters.searchTerm, SEARCH_DELAY);
1143
620
  var _usePaginate = usePaginate(),
1144
621
  pageProperties = _usePaginate.pageProperties,
1145
- handleTablePagination = _usePaginate.handleTablePagination;
622
+ handlePageChange = _usePaginate.handlePageChange;
1146
623
  var _useState3 = React.useState({}),
1147
624
  _useState4 = _slicedToArray$1(_useState3, 2),
1148
625
  approvalDetails = _useState4[0],
@@ -1150,13 +627,14 @@ var History = function History(_ref) {
1150
627
  var _useTranslation = reactI18next.useTranslation(),
1151
628
  t = _useTranslation.t;
1152
629
  var _useFetchRequests = useFetchRequests({
1153
- params: _objectSpread$8(_objectSpread$8(_objectSpread$8({}, pageProperties), filters), {}, {
630
+ params: _objectSpread$a(_objectSpread$a(_objectSpread$a({}, pageProperties), filters), {}, {
1154
631
  searchTerm: debouncedSearchTerm.trim(),
1155
632
  status: [STATUSES.approved, STATUSES.rejected, STATUSES.cancelled]
1156
633
  }),
1157
634
  options: {
1158
- onSuccess: function onSuccess(requests) {
1159
- handleEmptyPage(requests, pageProperties, handleTablePagination);
635
+ onSuccess: function onSuccess(_ref2) {
636
+ var requests = _ref2.requests;
637
+ handleEmptyPage(requests, pageProperties, handlePageChange);
1160
638
  setApprovalDetails(function (approvalDetails) {
1161
639
  return updateApprovalDetails({
1162
640
  requestsData: requests,
@@ -1174,8 +652,8 @@ var History = function History(_ref) {
1174
652
  _useFetchRequests$dat4 = _useFetchRequests$dat2.totalCount,
1175
653
  totalCount = _useFetchRequests$dat4 === void 0 ? 0 : _useFetchRequests$dat4;
1176
654
  var handleTableChange = function handleTableChange(_, __, sorter) {
1177
- setFilters(_objectSpread$8(_objectSpread$8({}, filters), {}, {
1178
- sortBy: camelToSnakeCase(sorter.field),
655
+ setFilters(_objectSpread$a(_objectSpread$a({}, filters), {}, {
656
+ sortBy: camelToSnakeCase(sorter.field || ""),
1179
657
  orderBy: sorter.order
1180
658
  }));
1181
659
  };
@@ -1188,10 +666,10 @@ var History = function History(_ref) {
1188
666
  currentPageNumber: pageProperties.page,
1189
667
  defaultPageSize: pageProperties.pageSize,
1190
668
  rowData: approvalHistories,
669
+ handlePageChange: handlePageChange,
1191
670
  totalCount: totalCount,
1192
- handlePageChange: handleTablePagination,
1193
671
  paginationProps: {
1194
- hideOnSinglePage: (approvalHistories === null || approvalHistories === void 0 ? void 0 : approvalHistories.length) < DEFAULT_PAGE_SIZE + 1
672
+ hideOnSinglePage: (approvalHistories === null || approvalHistories === void 0 ? void 0 : approvalHistories.length) < constants.DEFAULT_PAGE_SIZE + 1
1195
673
  },
1196
674
  onChange: handleTableChange,
1197
675
  onRowClick: function onRowClick(_, approvalDetails) {
@@ -1216,8 +694,8 @@ var PENDING_TABLE_COLUMNS = pure.removeBy({
1216
694
  key: "status"
1217
695
  }, HISTORY_TABLE_COLUMNS);
1218
696
 
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; }
697
+ 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; }
698
+ 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
699
  var PendingRequests = function PendingRequests(_ref) {
1222
700
  var _t;
1223
701
  var requestUrl = _ref.requestUrl;
@@ -1232,17 +710,18 @@ var PendingRequests = function PendingRequests(_ref) {
1232
710
  var debouncedSearchTerm = reactUtils.useDebounce(filters.searchTerm, SEARCH_DELAY);
1233
711
  var _usePaginate = usePaginate(),
1234
712
  pageProperties = _usePaginate.pageProperties,
1235
- handleTablePagination = _usePaginate.handleTablePagination;
713
+ handlePageChange = _usePaginate.handlePageChange;
1236
714
  var _useTranslation = reactI18next.useTranslation(),
1237
715
  t = _useTranslation.t;
1238
716
  var _useFetchRequests = useFetchRequests({
1239
- params: _objectSpread$7(_objectSpread$7(_objectSpread$7({}, pageProperties), filters), {}, {
717
+ params: _objectSpread$9(_objectSpread$9(_objectSpread$9({}, pageProperties), filters), {}, {
1240
718
  searchTerm: debouncedSearchTerm.trim(),
1241
719
  status: [STATUSES.pending]
1242
720
  }),
1243
721
  options: {
1244
- onSuccess: function onSuccess(requests) {
1245
- handleEmptyPage(requests, pageProperties, handleTablePagination);
722
+ onSuccess: function onSuccess(_ref2) {
723
+ var requests = _ref2.requests;
724
+ handleEmptyPage(requests, pageProperties, handlePageChange);
1246
725
  }
1247
726
  },
1248
727
  requestUrl: requestUrl
@@ -1257,8 +736,8 @@ var PendingRequests = function PendingRequests(_ref) {
1257
736
  updatePendingRequest = _useUpdateRequest.mutate,
1258
737
  isLoading = _useUpdateRequest.isLoading;
1259
738
  var handleTableChange = function handleTableChange(_, __, sorter) {
1260
- setFilters(_objectSpread$7(_objectSpread$7({}, filters), {}, {
1261
- sortBy: camelToSnakeCase(sorter.field),
739
+ setFilters(_objectSpread$9(_objectSpread$9({}, filters), {}, {
740
+ sortBy: camelToSnakeCase(sorter.field || ""),
1262
741
  orderBy: sorter.order
1263
742
  }));
1264
743
  };
@@ -1281,10 +760,10 @@ var PendingRequests = function PendingRequests(_ref) {
1281
760
  currentPageNumber: pageProperties.page,
1282
761
  defaultPageSize: pageProperties.pageSize,
1283
762
  rowData: pendingRequests,
763
+ handlePageChange: handlePageChange,
1284
764
  totalCount: totalCount,
1285
- handlePageChange: handleTablePagination,
1286
765
  paginationProps: {
1287
- hideOnSinglePage: (pendingRequests === null || pendingRequests === void 0 ? void 0 : pendingRequests.length) < DEFAULT_PAGE_SIZE + 1
766
+ hideOnSinglePage: (pendingRequests === null || pendingRequests === void 0 ? void 0 : pendingRequests.length) < constants.DEFAULT_PAGE_SIZE + 1
1288
767
  },
1289
768
  onChange: handleTableChange,
1290
769
  onRowClick: function onRowClick(_, approvalDetails) {
@@ -1305,10 +784,54 @@ var PendingRequests = function PendingRequests(_ref) {
1305
784
  onClose: function onClose() {
1306
785
  return setApprovalDetails({});
1307
786
  }
1308
- }));
1309
- };
787
+ }));
788
+ };
789
+
790
+ function _extends() {
791
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
792
+ for (var i = 1; i < arguments.length; i++) {
793
+ var source = arguments[i];
794
+ for (var key in source) {
795
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
796
+ target[key] = source[key];
797
+ }
798
+ }
799
+ }
800
+ return target;
801
+ };
802
+ return _extends.apply(this, arguments);
803
+ }
804
+
805
+ function _objectWithoutPropertiesLoose(source, excluded) {
806
+ if (source == null) return {};
807
+ var target = {};
808
+ var sourceKeys = Object.keys(source);
809
+ var key, i;
810
+ for (i = 0; i < sourceKeys.length; i++) {
811
+ key = sourceKeys[i];
812
+ if (excluded.indexOf(key) >= 0) continue;
813
+ target[key] = source[key];
814
+ }
815
+ return target;
816
+ }
817
+
818
+ function _objectWithoutProperties(source, excluded) {
819
+ if (source == null) return {};
820
+ var target = _objectWithoutPropertiesLoose(source, excluded);
821
+ var key, i;
822
+ if (Object.getOwnPropertySymbols) {
823
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
824
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
825
+ key = sourceSymbolKeys[i];
826
+ if (excluded.indexOf(key) >= 0) continue;
827
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
828
+ target[key] = source[key];
829
+ }
830
+ }
831
+ return target;
832
+ }
1310
833
 
1311
- var fetch$1 = function fetch(params) {
834
+ var fetch$2 = function fetch(params) {
1312
835
  return axios__default["default"].get(TEMPLATE_URL, {
1313
836
  params: params
1314
837
  });
@@ -1335,20 +858,20 @@ var destroy = function destroy(_ref3) {
1335
858
  };
1336
859
  var templatesApi = {
1337
860
  create: create,
1338
- fetch: fetch$1,
861
+ fetch: fetch$2,
1339
862
  update: update,
1340
863
  destroy: destroy,
1341
864
  show: show$1
1342
865
  };
1343
866
 
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; }
867
+ 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; }
868
+ 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
869
  var useFetchTemplates = function useFetchTemplates() {
1347
870
  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1348
871
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1349
872
  return reactQuery.useQuery([QUERY_KEYS.TEMPLATES, params], function () {
1350
873
  return templatesApi.fetch(params);
1351
- }, _objectSpread$6({
874
+ }, _objectSpread$8({
1352
875
  select: function select(response) {
1353
876
  return response.data || response;
1354
877
  },
@@ -1361,12 +884,12 @@ var useFetchTemplates = function useFetchTemplates() {
1361
884
  }, options));
1362
885
  };
1363
886
  var useCreateTemplate = function useCreateTemplate(options) {
1364
- return reactUtils.useMutationWithInvalidation(templatesApi.create, _objectSpread$6({
887
+ return reactUtils.useMutationWithInvalidation(templatesApi.create, _objectSpread$8({
1365
888
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, QUERY_KEYS.VIEWS]
1366
889
  }, options));
1367
890
  };
1368
891
  var useUpdateTemplate = function useUpdateTemplate(options) {
1369
- return reactUtils.useMutationWithInvalidation(templatesApi.update, _objectSpread$6({
892
+ return reactUtils.useMutationWithInvalidation(templatesApi.update, _objectSpread$8({
1370
893
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, function (_, _ref3) {
1371
894
  var id = _ref3.id;
1372
895
  return [QUERY_KEYS.SHOW_TEMPLATE, id];
@@ -1374,39 +897,44 @@ var useUpdateTemplate = function useUpdateTemplate(options) {
1374
897
  }, options));
1375
898
  };
1376
899
  var useDeleteTemplate = function useDeleteTemplate(options) {
1377
- return reactUtils.useMutationWithInvalidation(templatesApi.destroy, _objectSpread$6({
900
+ return reactUtils.useMutationWithInvalidation(templatesApi.destroy, _objectSpread$8({
1378
901
  keysToInvalidate: [QUERY_KEYS.TEMPLATES, QUERY_KEYS.VIEWS]
1379
902
  }, options));
1380
903
  };
1381
904
 
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
- }
905
+ var fetch$1 = function fetch(params) {
906
+ return axios__default["default"].get("".concat(BASE_URL, "/approvers"), {
907
+ params: params
908
+ });
909
+ };
910
+ var approversApi = {
911
+ fetch: fetch$1
912
+ };
1397
913
 
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"
914
+ 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; }
915
+ 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; }
916
+ var useFetchApprovers = function useFetchApprovers() {
917
+ var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
918
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
919
+ return reactQuery.useQuery([QUERY_KEYS.APPROVERS, params], function () {
920
+ return approversApi.fetch(params);
921
+ }, _objectSpread$7({
922
+ select: function select(response) {
923
+ return response.data || response;
924
+ },
925
+ keepPreviousData: true,
926
+ onSuccess: function onSuccess(_ref) {
927
+ var _params$onSuccess;
928
+ var approvers = _ref.approvers;
929
+ return params === null || params === void 0 ? void 0 : (_params$onSuccess = params.onSuccess) === null || _params$onSuccess === void 0 ? void 0 : _params$onSuccess.call(params, approvers);
930
+ }
931
+ }, options));
1403
932
  };
933
+
1404
934
  var TEMPLATE_FORM_INITIAL_VALUES = {
1405
935
  name: "",
1406
936
  description: "",
1407
- visibility: EVERYONE_VISIBILITY,
1408
937
  approver: "",
1409
- variables: [],
1410
938
  message: ""
1411
939
  };
1412
940
  var TEMPLATE_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
@@ -1418,87 +946,27 @@ var TEMPLATE_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
1418
946
  what: i18next.t("neetoApprovals.inputs.labels.message")
1419
947
  }), function (content) {
1420
948
  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
- }))
949
+ })
1427
950
  });
1428
951
 
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, {
952
+ var MessageEditor = reactUtils.withT(function (_ref) {
953
+ var t = _ref.t,
954
+ _ref$placeholders = _ref.placeholders,
955
+ placeholders = _ref$placeholders === void 0 ? [] : _ref$placeholders;
956
+ return /*#__PURE__*/React__default["default"].createElement(neetoEditor.FormikEditor, {
1485
957
  required: true,
1486
- key: variables,
1487
958
  label: t("neetoApprovals.inputs.labels.message"),
1488
959
  name: "message",
1489
960
  rows: 3,
1490
- variables: editorVariables,
961
+ variables: placeholders,
1491
962
  placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
1492
963
  what: t("neetoApprovals.inputs.labels.message")
1493
- }),
1494
- shouldUpdate: function shouldUpdate(nextProps, prevProps) {
1495
- return nextProps.variables !== prevProps.variables;
1496
- }
1497
- }));
1498
- };
964
+ })
965
+ });
966
+ });
1499
967
 
1500
968
  var Form$1 = function Form(_ref) {
1501
- var _t, _t2;
969
+ var _t;
1502
970
  var isOpen = _ref.isOpen,
1503
971
  onClose = _ref.onClose,
1504
972
  _ref$initialData = _ref.initialData,
@@ -1507,7 +975,7 @@ var Form$1 = function Form(_ref) {
1507
975
  onSubmit = _ref$onSubmit === void 0 ? noop : _ref$onSubmit,
1508
976
  _ref$isLoading = _ref.isLoading,
1509
977
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
1510
- visibilityOptions = _ref.visibilityOptions;
978
+ placeholders = _ref.placeholders;
1511
979
  var inputReference = React.useRef(null);
1512
980
  var _useTranslation = reactI18next.useTranslation(),
1513
981
  t = _useTranslation.t;
@@ -1516,10 +984,10 @@ var Form$1 = function Form(_ref) {
1516
984
  _useFetchApprovers$da2 = _useFetchApprovers$da === void 0 ? {} : _useFetchApprovers$da,
1517
985
  _useFetchApprovers$da3 = _useFetchApprovers$da2.approvers,
1518
986
  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()
987
+ var header = ramda.isEmpty(initialData) ? t("neetoApprovals.common.addNew_", {
988
+ what: t("neetoApprovals.common.template", constants.SINGULAR).toLocaleLowerCase()
1521
989
  }) : t("neetoApprovals.common.edit_", {
1522
- what: t("neetoApprovals.common.approvalTemplate", constants.SINGULAR).toLocaleLowerCase()
990
+ what: t("neetoApprovals.common.template", constants.SINGULAR).toLocaleLowerCase()
1523
991
  });
1524
992
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
1525
993
  initialFocusRef: inputReference,
@@ -1540,7 +1008,6 @@ var Form$1 = function Form(_ref) {
1540
1008
  }, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
1541
1009
  autoFocus: true,
1542
1010
  required: true,
1543
- className: "w-1/2",
1544
1011
  label: t("neetoApprovals.common.name"),
1545
1012
  name: "name",
1546
1013
  placeholder: t("neetoApprovals.inputs.placeholders.name")
@@ -1564,14 +1031,9 @@ var Form$1 = function Form(_ref) {
1564
1031
  placeholder: t("neetoApprovals.inputs.placeholders.select_", {
1565
1032
  what: (_t = t("neetoApprovals.common.approver", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1566
1033
  })
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, {
1034
+ })), /*#__PURE__*/React__default["default"].createElement(MessageEditor, {
1035
+ placeholders: placeholders
1036
+ }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
1575
1037
  className: "flex gap-x-2"
1576
1038
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1577
1039
  label: t("neetoApprovals.buttons.saveChanges"),
@@ -1584,45 +1046,31 @@ var Form$1 = function Form(_ref) {
1584
1046
  })))));
1585
1047
  };
1586
1048
 
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; }
1049
+ 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; }
1050
+ 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
1051
  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
- });
1052
+ var approver = template.approver;
1597
1053
  var payload = {
1598
- template: _objectSpread$5(_objectSpread$5({}, template), {}, {
1599
- accessibleId: visibility.value || visibility,
1600
- approverId: approver.value,
1601
- variables: ramda.fromPairs(indexedVariables)
1054
+ template: _objectSpread$6(_objectSpread$6({}, template), {}, {
1055
+ approverId: approver.value
1602
1056
  })
1603
1057
  };
1604
1058
  return payload;
1605
1059
  };
1606
1060
  var generateInitialData = function generateInitialData(template) {
1607
- return _objectSpread$5(_objectSpread$5({}, template), {}, {
1608
- visibility: template.accessibleId || EVERYONE_VISIBILITY.value,
1061
+ return _objectSpread$6(_objectSpread$6({}, template), {}, {
1609
1062
  approver: {
1610
1063
  label: template.approverName,
1611
1064
  value: template.approverId
1612
- },
1613
- variables: template.variables && Object.values(template.variables).map(function (variable) {
1614
- return {
1615
- variable: variable
1616
- };
1617
- })
1065
+ }
1618
1066
  });
1619
1067
  };
1620
1068
 
1621
1069
  var Create = function Create(_ref) {
1622
- var visibilityOptions = _ref.visibilityOptions,
1623
- templateUrl = _ref.templateUrl,
1070
+ var templateUrl = _ref.templateUrl,
1624
1071
  isOpen = _ref.isOpen,
1625
- onClose = _ref.onClose;
1072
+ onClose = _ref.onClose,
1073
+ templatePlaceholders = _ref.templatePlaceholders;
1626
1074
  var _useCreateTemplate = useCreateTemplate(),
1627
1075
  createTemplate = _useCreateTemplate.mutate,
1628
1076
  isLoading = _useCreateTemplate.isLoading;
@@ -1636,21 +1084,21 @@ var Create = function Create(_ref) {
1636
1084
  });
1637
1085
  };
1638
1086
  return /*#__PURE__*/React__default["default"].createElement(Form$1, {
1087
+ placeholders: templatePlaceholders,
1639
1088
  isLoading: isLoading,
1640
1089
  isOpen: isOpen,
1641
1090
  onClose: onClose,
1642
- onSubmit: onSubmit,
1643
- visibilityOptions: visibilityOptions
1091
+ onSubmit: onSubmit
1644
1092
  });
1645
1093
  };
1646
1094
 
1647
1095
  var Edit = function Edit(_ref) {
1648
- var visibilityOptions = _ref.visibilityOptions,
1649
- templateUrl = _ref.templateUrl,
1096
+ var templateUrl = _ref.templateUrl,
1650
1097
  template = _ref.template,
1651
1098
  setTemplate = _ref.setTemplate,
1652
1099
  isOpen = _ref.isOpen,
1653
- onClose = _ref.onClose;
1100
+ onClose = _ref.onClose,
1101
+ templatePlaceholders = _ref.templatePlaceholders;
1654
1102
  var _useUpdateTemplate = useUpdateTemplate({
1655
1103
  onSuccess: function onSuccess() {
1656
1104
  return setTemplate({});
@@ -1669,10 +1117,10 @@ var Edit = function Edit(_ref) {
1669
1117
  return /*#__PURE__*/React__default["default"].createElement(Form$1, {
1670
1118
  initialData: generateInitialData(template),
1671
1119
  isLoading: isUpdating,
1120
+ placeholders: templatePlaceholders,
1672
1121
  isOpen: isOpen,
1673
1122
  onClose: onClose,
1674
- onSubmit: onSubmit,
1675
- visibilityOptions: visibilityOptions
1123
+ onSubmit: onSubmit
1676
1124
  });
1677
1125
  };
1678
1126
 
@@ -1691,7 +1139,6 @@ var Field$1 = /*#__PURE__*/React__default["default"].memo(Field);
1691
1139
 
1692
1140
  var MemoizedEditorContent = /*#__PURE__*/React__default["default"].memo(neetoEditor.EditorContent);
1693
1141
  var TemplateDetails = function TemplateDetails(_ref) {
1694
- var _Object$entries;
1695
1142
  var isOpen = _ref.isOpen,
1696
1143
  onClose = _ref.onClose,
1697
1144
  template = _ref.template;
@@ -1700,8 +1147,6 @@ var TemplateDetails = function TemplateDetails(_ref) {
1700
1147
  var name = template.name,
1701
1148
  description = template.description,
1702
1149
  approverName = template.approverName,
1703
- accessible = template.accessible,
1704
- variables = template.variables,
1705
1150
  message = template.message;
1706
1151
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
1707
1152
  isOpen: isOpen,
@@ -1721,18 +1166,6 @@ var TemplateDetails = function TemplateDetails(_ref) {
1721
1166
  }), /*#__PURE__*/React__default["default"].createElement(Field$1, {
1722
1167
  label: t("neetoApprovals.common.approver", constants.SINGULAR),
1723
1168
  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
1169
  }), /*#__PURE__*/React__default["default"].createElement("div", {
1737
1170
  className: "flex w-full flex-col space-y-4"
1738
1171
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, {
@@ -1743,8 +1176,100 @@ var TemplateDetails = function TemplateDetails(_ref) {
1743
1176
  }))));
1744
1177
  };
1745
1178
 
1746
- var Menu = neetoui.Dropdown.Menu,
1747
- MenuItem = neetoui.Dropdown.MenuItem;
1179
+ var renderNoDataHelpText = function renderNoDataHelpText(_ref) {
1180
+ var entity = _ref.entity,
1181
+ url = _ref.url;
1182
+ return /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
1183
+ i18nKey: "neetoApprovals.common.noDataHelpText",
1184
+ values: {
1185
+ entity: entity
1186
+ },
1187
+ components: {
1188
+ a: /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
1189
+ className: "neeto-ui-text-primary-600 underline",
1190
+ target: "_blank",
1191
+ to: {
1192
+ pathname: url
1193
+ }
1194
+ })
1195
+ }
1196
+ });
1197
+ };
1198
+
1199
+ var _excluded$1 = ["entity", "columnData", "rowData", "totalCount", "filters", "setFilters", "setIsPaneOpen", "helpDocUrl", "onEditClick", "onDeleteClick", "pageProperties"];
1200
+ function ownKeys$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; }
1201
+ 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; }
1202
+ var Table = function Table(_ref) {
1203
+ var _t;
1204
+ var entity = _ref.entity,
1205
+ columnData = _ref.columnData,
1206
+ rowData = _ref.rowData,
1207
+ totalCount = _ref.totalCount,
1208
+ filters = _ref.filters,
1209
+ setFilters = _ref.setFilters,
1210
+ setIsPaneOpen = _ref.setIsPaneOpen,
1211
+ helpDocUrl = _ref.helpDocUrl,
1212
+ onEditClick = _ref.onEditClick,
1213
+ onDeleteClick = _ref.onDeleteClick,
1214
+ pageProperties = _ref.pageProperties,
1215
+ otherProps = _objectWithoutProperties(_ref, _excluded$1);
1216
+ var _useTranslation = reactI18next.useTranslation(),
1217
+ t = _useTranslation.t;
1218
+ var columns = columnData({
1219
+ onEditClick: onEditClick,
1220
+ onDeleteClick: onDeleteClick
1221
+ });
1222
+ var handleTableChange = function handleTableChange(_, __, sorter) {
1223
+ setFilters(_objectSpread$5(_objectSpread$5({}, filters), {}, {
1224
+ sortBy: sorter.field,
1225
+ orderBy: sorter.order
1226
+ }));
1227
+ };
1228
+ var noDataProps = {
1229
+ primaryButtonProps: {
1230
+ label: t("neetoApprovals.common.addNew_", {
1231
+ what: (_t = t("neetoApprovals.common.template", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1232
+ }),
1233
+ onClick: function onClick() {
1234
+ return setIsPaneOpen(true);
1235
+ }
1236
+ },
1237
+ helpText: renderNoDataHelpText({
1238
+ entity: entity,
1239
+ url: helpDocUrl
1240
+ })
1241
+ };
1242
+ if (ramda.isEmpty(rowData)) {
1243
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1244
+ className: "flex h-full w-full flex-grow items-center justify-center"
1245
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, _extends({
1246
+ title: t("neetoApprovals.common.notFound_", {
1247
+ what: entity
1248
+ })
1249
+ }, !filters.searchTerm && noDataProps)));
1250
+ }
1251
+ return /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
1252
+ className: "mt-12",
1253
+ hasPagination: totalCount > pageProperties.pageSize
1254
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Table, _extends({
1255
+ fixedHeight: true,
1256
+ columnData: columns,
1257
+ currentPageNumber: pageProperties.page,
1258
+ defaultPageSize: pageProperties.pageSize,
1259
+ scroll: {
1260
+ x: 0
1261
+ },
1262
+ tableLayout: "fixed",
1263
+ paginationProps: {
1264
+ hideOnSinglePage: (rowData === null || rowData === void 0 ? void 0 : rowData.length) < constants.DEFAULT_PAGE_SIZE + 1
1265
+ },
1266
+ onChange: handleTableChange
1267
+ }, _objectSpread$5({
1268
+ rowData: rowData,
1269
+ totalCount: totalCount
1270
+ }, otherProps))));
1271
+ };
1272
+
1748
1273
  var columnData = function columnData(_ref) {
1749
1274
  var onEditClick = _ref.onEditClick,
1750
1275
  onDeleteClick = _ref.onDeleteClick;
@@ -1752,86 +1277,90 @@ var columnData = function columnData(_ref) {
1752
1277
  dataIndex: "name",
1753
1278
  key: "name",
1754
1279
  sorter: true,
1755
- title: i18next__default["default"].t("neetoApprovals.common.name")
1756
- }, {
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
- }
1764
- }, {
1765
- key: "actions",
1280
+ title: i18next__default["default"].t("neetoApprovals.common.name"),
1766
1281
  ellipsis: true,
1767
1282
  render: function render(_, template) {
1768
1283
  return /*#__PURE__*/React__default["default"].createElement("div", {
1769
- className: "flex flex-row items-center justify-end space-x-3",
1770
- onClick: function onClick(event) {
1771
- return event.stopPropagation();
1772
- }
1773
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
1774
- autoWidth: true,
1775
- buttonProps: {
1776
- style: "text"
1284
+ className: "flex items-center justify-between gap-x-3"
1285
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1286
+ className: "truncate",
1287
+ style: "body2"
1288
+ }, template.name), /*#__PURE__*/React__default["default"].createElement(MoreDropdown__default["default"], {
1289
+ dropdownProps: {
1290
+ strategy: "fixed",
1291
+ onClick: function onClick(e) {
1292
+ return e.stopPropagation();
1293
+ }
1777
1294
  },
1778
- className: "flex-shrink-0",
1779
- icon: neetoIcons.MenuHorizontal,
1780
- position: "bottom-end",
1781
- strategy: "fixed"
1782
- }, /*#__PURE__*/React__default["default"].createElement(Menu, null, /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
1783
- "data-cy": "approvers-edit-button",
1784
- onClick: function onClick() {
1785
- return onEditClick(template);
1786
- }
1787
- }, i18next__default["default"].t("neetoApprovals.common.edit")), /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
1788
- "data-cy": "approvers-delete-button",
1789
- onClick: function onClick() {
1790
- return onDeleteClick(template);
1791
- }
1792
- }, i18next__default["default"].t("neetoApprovals.common.delete")))));
1295
+ menuItems: [{
1296
+ key: "edit",
1297
+ label: i18next__default["default"].t("neetoApprovals.common.edit"),
1298
+ onClick: function onClick(event) {
1299
+ return onEditClick(event, template);
1300
+ }
1301
+ }, {
1302
+ key: "delete",
1303
+ label: i18next__default["default"].t("neetoApprovals.common.delete"),
1304
+ onClick: function onClick(event) {
1305
+ return onDeleteClick(event, template);
1306
+ }
1307
+ }]
1308
+ }));
1793
1309
  }
1310
+ }, {
1311
+ dataIndex: "approverName",
1312
+ key: "approverName",
1313
+ sorter: true,
1314
+ title: i18next__default["default"].t("neetoApprovals.common.approver", constants.SINGULAR)
1794
1315
  }];
1795
1316
  };
1796
1317
 
1797
- var _excluded = ["filters", "isNewTemplatePaneOpen", "setFilters", "setIsNewTemplatePaneOpen", "helpDocUrl"];
1318
+ var _excluded = ["searchTerm", "isNewTemplatePaneOpen", "setIsNewTemplatePaneOpen", "helpDocUrl"];
1798
1319
  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
1320
  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; }
1800
1321
  var Templates = function Templates(_ref) {
1801
1322
  var _t, _t2, _t3;
1802
- var filters = _ref.filters,
1323
+ var searchTerm = _ref.searchTerm,
1803
1324
  isNewTemplatePaneOpen = _ref.isNewTemplatePaneOpen,
1804
- setFilters = _ref.setFilters,
1805
1325
  setIsNewTemplatePaneOpen = _ref.setIsNewTemplatePaneOpen,
1806
1326
  helpDocUrl = _ref.helpDocUrl,
1807
1327
  otherProps = _objectWithoutProperties(_ref, _excluded);
1808
- var _useState = React.useState({}),
1328
+ var _useState = React.useState(DEFAULT_FILTER_VALUES),
1809
1329
  _useState2 = _slicedToArray$1(_useState, 2),
1810
- selectedTemplate = _useState2[0],
1811
- setSelectedTemplate = _useState2[1];
1812
- var _useState3 = React.useState(false),
1330
+ filters = _useState2[0],
1331
+ setFilters = _useState2[1];
1332
+ var _useState3 = React.useState({}),
1813
1333
  _useState4 = _slicedToArray$1(_useState3, 2),
1814
- isDeleteAlertOpen = _useState4[0],
1815
- setIsDeleteAlertOpen = _useState4[1];
1334
+ selectedTemplate = _useState4[0],
1335
+ setSelectedTemplate = _useState4[1];
1816
1336
  var _useState5 = React.useState(false),
1817
1337
  _useState6 = _slicedToArray$1(_useState5, 2),
1818
- isEditPaneOpen = _useState6[0],
1819
- setIsEditPaneOpen = _useState6[1];
1338
+ isDeleteAlertOpen = _useState6[0],
1339
+ setIsDeleteAlertOpen = _useState6[1];
1820
1340
  var _useState7 = React.useState(false),
1821
1341
  _useState8 = _slicedToArray$1(_useState7, 2),
1822
- isShowPaneOpen = _useState8[0],
1823
- setIsShowPaneOpen = _useState8[1];
1824
- var debouncedSearchTerm = reactUtils.useDebounce(filters.searchTerm, SEARCH_DELAY);
1342
+ isEditPaneOpen = _useState8[0],
1343
+ setIsEditPaneOpen = _useState8[1];
1344
+ var _useState9 = React.useState(false),
1345
+ _useState10 = _slicedToArray$1(_useState9, 2),
1346
+ isShowPaneOpen = _useState10[0],
1347
+ setIsShowPaneOpen = _useState10[1];
1825
1348
  var _usePaginate = usePaginate(),
1826
1349
  pageProperties = _usePaginate.pageProperties,
1827
- handleTablePagination = _usePaginate.handleTablePagination;
1350
+ handlePageChange = _usePaginate.handlePageChange,
1351
+ resetPageProperties = _usePaginate.resetPageProperties;
1828
1352
  var _useTranslation = reactI18next.useTranslation(),
1829
1353
  t = _useTranslation.t;
1354
+ var debouncedSearchTerm = reactUtils.useDebounce(searchTerm, SEARCH_DELAY);
1355
+ React.useEffect(function () {
1356
+ resetPageProperties();
1357
+ }, [searchTerm]);
1830
1358
  var _useFetchTemplates = useFetchTemplates(_objectSpread$4(_objectSpread$4(_objectSpread$4({}, pageProperties), filters), {}, {
1831
1359
  searchTerm: debouncedSearchTerm.trim()
1832
1360
  }), {
1833
- onSuccess: function onSuccess(templates) {
1834
- handleEmptyPage(templates, pageProperties, handleTablePagination);
1361
+ onSuccess: function onSuccess(_ref2) {
1362
+ var templates = _ref2.templates;
1363
+ handleEmptyPage(templates, pageProperties, handlePageChange);
1835
1364
  }
1836
1365
  }),
1837
1366
  _useFetchTemplates$da = _useFetchTemplates.data,
@@ -1851,7 +1380,8 @@ var Templates = function Templates(_ref) {
1851
1380
  setIsShowPaneOpen(false);
1852
1381
  }
1853
1382
  }, [selectedTemplate]);
1854
- var onEditClick = function onEditClick(template) {
1383
+ var onEditClick = function onEditClick(event, template) {
1384
+ event.stopPropagation();
1855
1385
  setSelectedTemplate(template);
1856
1386
  setIsEditPaneOpen(true);
1857
1387
  };
@@ -1859,7 +1389,8 @@ var Templates = function Templates(_ref) {
1859
1389
  setSelectedTemplate(templateDetails);
1860
1390
  setIsShowPaneOpen(true);
1861
1391
  };
1862
- var onDeleteClick = function onDeleteClick(template) {
1392
+ var onDeleteClick = function onDeleteClick(event, template) {
1393
+ event.stopPropagation();
1863
1394
  setSelectedTemplate(template);
1864
1395
  setIsDeleteAlertOpen(true);
1865
1396
  };
@@ -1871,15 +1402,18 @@ var Templates = function Templates(_ref) {
1871
1402
  };
1872
1403
  var entity = (_t = t("neetoApprovals.common.template", constants.PLURAL)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase();
1873
1404
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isTemplateLoading ? /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null) : /*#__PURE__*/React__default["default"].createElement(Table, {
1874
- items: templates,
1405
+ rowData: templates,
1875
1406
  setIsPaneOpen: setIsNewTemplatePaneOpen,
1876
1407
  columnData: columnData,
1877
1408
  entity: entity,
1878
1409
  filters: filters,
1410
+ handlePageChange: handlePageChange,
1879
1411
  helpDocUrl: helpDocUrl,
1880
1412
  onDeleteClick: onDeleteClick,
1881
1413
  onEditClick: onEditClick,
1882
1414
  onRowClick: onRowClick,
1415
+ pageProperties: pageProperties,
1416
+ searchTerm: searchTerm,
1883
1417
  setFilters: setFilters,
1884
1418
  totalCount: totalCount
1885
1419
  }), /*#__PURE__*/React__default["default"].createElement(Create, _extends({
@@ -1928,49 +1462,23 @@ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if
1928
1462
  function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1929
1463
  var createRoutes = function createRoutes(_ref) {
1930
1464
  var config = _ref.config,
1931
- filters = _ref.filters,
1932
- isNewApproverPaneOpen = _ref.isNewApproverPaneOpen,
1933
1465
  isNewTemplatePaneOpen = _ref.isNewTemplatePaneOpen,
1934
- setFilters = _ref.setFilters,
1935
- setIsNewApproverPaneOpen = _ref.setIsNewApproverPaneOpen,
1466
+ searchTerm = _ref.searchTerm,
1936
1467
  setIsNewTemplatePaneOpen = _ref.setIsNewTemplatePaneOpen;
1937
1468
  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
1469
  component: function component() {
1962
1470
  return /*#__PURE__*/React__default["default"].createElement(Templates, _objectSpread$3({
1963
- filters: filters,
1964
1471
  isNewTemplatePaneOpen: isNewTemplatePaneOpen,
1965
- setFilters: setFilters,
1472
+ searchTerm: searchTerm,
1966
1473
  setIsNewTemplatePaneOpen: setIsNewTemplatePaneOpen
1967
1474
  }, config));
1968
1475
  },
1969
1476
  path: "".concat(config.approvalsPath).concat(routes.templates.index),
1970
1477
  actionBlock: function actionBlock() {
1478
+ var _t;
1971
1479
  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()
1480
+ label: i18next.t("neetoApprovals.common.addNew_", {
1481
+ what: (_t = i18next.t("neetoApprovals.common.template", constants.SINGULAR)) === null || _t === void 0 ? void 0 : _t.toLocaleLowerCase()
1974
1482
  }),
1975
1483
  onClick: function onClick() {
1976
1484
  return setIsNewTemplatePaneOpen(true);
@@ -1997,8 +1505,8 @@ var Header = function Header(_ref) {
1997
1505
  var _currentTab$actionBlo;
1998
1506
  var appRoutes = _ref.appRoutes,
1999
1507
  breadcrumbs = _ref.breadcrumbs,
2000
- filters = _ref.filters,
2001
- setFilters = _ref.setFilters;
1508
+ setSearchTerm = _ref.setSearchTerm,
1509
+ searchTerm = _ref.searchTerm;
2002
1510
  var _useTranslation = reactI18next.useTranslation(),
2003
1511
  t = _useTranslation.t;
2004
1512
  var _useLocation = reactRouterDom.useLocation(),
@@ -2011,9 +1519,9 @@ var Header = function Header(_ref) {
2011
1519
  title: t("neetoApprovals.common.approval", constants.PLURAL),
2012
1520
  searchProps: (currentTab === null || currentTab === void 0 ? void 0 : currentTab.searchPlaceholder) && {
2013
1521
  onChange: function onChange(event) {
2014
- return setFilters(ramda.assoc("searchTerm", event.target.value));
1522
+ return setSearchTerm(event.target.value);
2015
1523
  },
2016
- value: filters.searchTerm,
1524
+ value: searchTerm,
2017
1525
  placeholder: currentTab === null || currentTab === void 0 ? void 0 : currentTab.searchPlaceholder
2018
1526
  },
2019
1527
  breadcrumbs: breadcrumbs
@@ -2077,33 +1585,26 @@ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if
2077
1585
  function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2078
1586
  var Approvals = function Approvals(_ref) {
2079
1587
  var config = _ref.config;
2080
- var _useState = React.useState(DEFAULT_FILTER_VALUES),
1588
+ var _useState = React.useState(""),
2081
1589
  _useState2 = _slicedToArray$1(_useState, 2),
2082
- filters = _useState2[0],
2083
- setFilters = _useState2[1];
1590
+ searchTerm = _useState2[0],
1591
+ setSearchTerm = _useState2[1];
2084
1592
  var _useState3 = React.useState(false),
2085
1593
  _useState4 = _slicedToArray$1(_useState3, 2),
2086
1594
  isNewTemplatePaneOpen = _useState4[0],
2087
1595
  setIsNewTemplatePaneOpen = _useState4[1];
2088
- var _useState5 = React.useState(false),
2089
- _useState6 = _slicedToArray$1(_useState5, 2),
2090
- isNewApproverPaneOpen = _useState6[0],
2091
- setIsNewApproverPaneOpen = _useState6[1];
2092
1596
  var appRoutes = createRoutes({
2093
1597
  config: config,
2094
- filters: filters,
2095
- isNewApproverPaneOpen: isNewApproverPaneOpen,
1598
+ searchTerm: searchTerm,
2096
1599
  isNewTemplatePaneOpen: isNewTemplatePaneOpen,
2097
- setFilters: setFilters,
2098
- setIsNewApproverPaneOpen: setIsNewApproverPaneOpen,
2099
1600
  setIsNewTemplatePaneOpen: setIsNewTemplatePaneOpen
2100
1601
  });
2101
1602
  return /*#__PURE__*/React__default["default"].createElement("div", {
2102
1603
  className: "neeto-approvals"
2103
1604
  }, /*#__PURE__*/React__default["default"].createElement(Container__default["default"], null, /*#__PURE__*/React__default["default"].createElement(Header, _objectSpread$1({
2104
1605
  appRoutes: appRoutes,
2105
- filters: filters,
2106
- setFilters: setFilters
1606
+ searchTerm: searchTerm,
1607
+ setSearchTerm: setSearchTerm
2107
1608
  }, config)), /*#__PURE__*/React__default["default"].createElement(Tab, {
2108
1609
  approvalsPath: config.approvalsPath
2109
1610
  }), /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Switch, null, appRoutes.map(function (_ref2) {
@@ -2129,15 +1630,18 @@ var Form = function Form(_ref) {
2129
1630
  var isOpen = _ref.isOpen,
2130
1631
  setIsPaneOpen = _ref.setIsPaneOpen,
2131
1632
  onSubmit = _ref.onSubmit,
2132
- isLoading = _ref.isLoading;
1633
+ isLoading = _ref.isLoading,
1634
+ _ref$requestableId = _ref.requestableId,
1635
+ requestableId = _ref$requestableId === void 0 ? "" : _ref$requestableId;
2133
1636
  var _useState = React.useState({}),
2134
1637
  _useState2 = _slicedToArray$1(_useState, 2),
2135
1638
  selectedTemplateData = _useState2[0],
2136
1639
  setSelectedTemplateData = _useState2[1];
2137
1640
  var _useTranslation = reactI18next.useTranslation(),
2138
1641
  t = _useTranslation.t;
2139
- var variables = Object.values((selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.variables) || {});
2140
- var _useFetchTemplates = useFetchTemplates(),
1642
+ var _useFetchTemplates = useFetchTemplates({
1643
+ requestableId: requestableId
1644
+ }),
2141
1645
  _useFetchTemplates$da = _useFetchTemplates.data,
2142
1646
  _useFetchTemplates$da2 = _useFetchTemplates$da === void 0 ? {} : _useFetchTemplates$da,
2143
1647
  _useFetchTemplates$da3 = _useFetchTemplates$da2.templates,
@@ -2150,39 +1654,16 @@ var Form = function Form(_ref) {
2150
1654
  });
2151
1655
  var handleTemplateChange = function handleTemplateChange(selectedTemplate, setFieldValue, resetForm) {
2152
1656
  resetForm();
2153
- var template = findById(selectedTemplate.value, templates);
1657
+ var template = pure.findById(selectedTemplate.value, templates);
2154
1658
  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
- }
1659
+ setFieldValue("message", template.parsedMessage || template.message);
2164
1660
  };
2165
1661
  var onClose = function onClose() {
2166
1662
  setIsPaneOpen(false);
2167
1663
  setSelectedTemplateData({});
2168
1664
  };
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
1665
  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);
1666
+ return onSubmit(values, selectedTemplateData, onClose);
2186
1667
  };
2187
1668
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
2188
1669
  isOpen: isOpen,
@@ -2194,12 +1675,11 @@ var Form = function Form(_ref) {
2194
1675
  }))), /*#__PURE__*/React__default["default"].createElement(formik.Form, {
2195
1676
  formikProps: {
2196
1677
  onSubmit: handleSubmit,
2197
- initialValues: APPROVAL_REQUEST_FORM_INITIAL_VALUES,
2198
- validationSchema: APPROVAL_REQUEST_FORM_VALIDATION_SCHEMA
1678
+ initialValues: APPROVAL_REQUEST_FORM_INITIAL_VALUES
2199
1679
  }
2200
1680
  }, function (_ref2) {
1681
+ var _t2;
2201
1682
  var setFieldValue = _ref2.setFieldValue,
2202
- values = _ref2.values,
2203
1683
  resetForm = _ref2.resetForm,
2204
1684
  dirty = _ref2.dirty;
2205
1685
  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 +1690,20 @@ var Form = function Form(_ref) {
2210
1690
  onChange: function onChange(selectedTemplate) {
2211
1691
  return handleTemplateChange(selectedTemplate, setFieldValue, resetForm);
2212
1692
  }
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", {
1693
+ }), (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message) && /*#__PURE__*/React__default["default"].createElement("div", {
2230
1694
  className: "space-y-2"
2231
1695
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoApprovals.inputs.labels.message")), /*#__PURE__*/React__default["default"].createElement(neetoEditor.EditorContent, {
2232
1696
  className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg p-3",
2233
- content: selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message,
2234
1697
  name: "message",
2235
- variables: parseVariables(values === null || values === void 0 ? void 0 : values.variables)
2236
- })))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
1698
+ content: (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.parsedMessage) || (selectedTemplateData === null || selectedTemplateData === void 0 ? void 0 : selectedTemplateData.message)
1699
+ })), /*#__PURE__*/React__default["default"].createElement(neetoEditor.FormikEditor, {
1700
+ label: t("neetoApprovals.inputs.labels.additionalInfo"),
1701
+ name: "additionalInfo",
1702
+ rows: 3,
1703
+ placeholder: t("neetoApprovals.inputs.placeholders.enter_", {
1704
+ what: (_t2 = t("neetoApprovals.inputs.labels.additionalInfo")) === null || _t2 === void 0 ? void 0 : _t2.toLocaleLowerCase()
1705
+ })
1706
+ }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
2237
1707
  className: "flex gap-x-2"
2238
1708
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
2239
1709
  disabled: !dirty,