@tesouro/embedded-components-react 0.5.186 → 0.5.188
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/README.md +19 -9
- package/dist/index.css +110 -0
- package/dist/index.d.ts +233 -60
- package/dist/index.js +6 -6
- package/dist/lib/ExpenseManagementWidget.d.ts +189 -11
- package/dist/lib/ExpenseManagementWidget.js +1 -1
- package/dist/lib/UploadReceiptWidget.js +1 -1
- package/dist/lib/WidgetSuite.d.ts +213 -16
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index.js +17 -3
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index10.js +36 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index11.js +71 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index12.js +39 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index13.js +32 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index14.js +110 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index15.js +33 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index16.js +19 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index17.js +33 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index18.js +28 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index19.js +35 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index20.js +28 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index21.js +164 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index4.js +25 -18
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index5.js +20 -34
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index6.js +16 -20
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index7.js +16 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index8.js +32 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index9.js +26 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index.js +10 -7
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index10.js +162 -59
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index11.js +64 -16
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index12.js +73 -2
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index13.js +348 -42
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index14.js +42 -1
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index15.js +143 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index16.js +229 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index17.js +196 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index18.js +13 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index19.js +91 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index2.js +89 -2
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index20.js +39 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index21.js +297 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index22.js +1 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index23.js +4 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index24.js +256 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index25.js +22 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index26.js +10 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index27.js +223 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index3.js +2 -254
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index4.js +4 -20
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index5.js +262 -8
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index6.js +2 -221
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index7.js +54 -80
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index8.js +24 -254
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index9.js +18 -2
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/index.js +34 -13
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/AccordionItemCard/AccordionItemCard.js +549 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/AccordionItemCard/labels.js +38 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ActionItemsList/ActionItemsList.js +64 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ActionItemsList/labels.js +7 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseStatusBadge/ExpenseStatusBadge.js +18 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseStatusBadge/badgeTones.js +16 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseStatusBadge/labels.js +13 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesHeader/ExpensesHeader.js +37 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesHeader/labels.js +7 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesScreen/ExpensesScreen.js +112 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesScreen/labels.js +11 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesTransactionsFilterBar/ExpensesTransactionsFilterBar.js +158 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesTransactionsFilterBar/labels.js +18 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesTransactionsTable/ExpensesTransactionsTable.js +148 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesTransactionsTable/labels.js +18 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/FileViewer/FileViewer.js +107 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/FileViewer/PdfFileViewer.js +37 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/FileViewer/labels.js +11 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ReceiptMatchWidget/lib/ReceiptMatchLauncher.js +2 -24
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ReceiptMatchWidget/lib/ReceiptMatchSidebar.js +1 -1
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ReceiptMatchWidget/lib/TransactionsMatchStep.js +62 -65
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ReceiptMatchWidget/lib/labels.js +1 -4
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetails/DeleteReceiptDialog/DeleteReceiptDialog.js +31 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetails/DeleteReceiptDialog/labels.js +9 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetails/TransactionDetails.js +268 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetails/labels.js +21 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetailsActions/BulkProgress.js +26 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetailsActions/TransactionDetailsActions.js +142 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetailsActions/labels.js +20 -0
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/isPdf.js +7 -0
- package/dist/libs/tesouro-embedded-components-react/settings-widget/feature/dist/index5.js +2 -2
- package/dist/libs/tesouro-embedded-components-react/settings-widget/team/data-access/dist/index7.js +116 -94
- package/dist/libs/tesouro-embedded-components-react/settings-widget/team/feature/dist/index12.js +76 -68
- package/dist/libs/tesouro-embedded-components-react/settings-widget/team/feature/dist/index17.js +181 -179
- package/dist/libs/tesouro-embedded-components-react/settings-widget/team/feature/dist/index3.js +2 -0
- package/dist/libs/tesouro-embedded-components-react/settings-widget/team/feature/dist/index7.js +16 -12
- package/dist/libs/tesouro-embedded-components-react/settings-widget/team/ui/dist/index8.js +66 -66
- package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/index.js +36 -35
- package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/debit-card/useAllDebitCardsQuery.js +54 -0
- package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/@tanstack/react-query.gen.js +268 -206
- package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/sdk.gen.js +218 -113
- package/dist/libs/tesouro-embedded-components-react/shared/feature/dist/lib/analytics/build-info.js +1 -1
- package/dist/libs/tesouro-embedded-components-react/shared/util/dist/lib/formatCalendarDate.js +4 -4
- package/dist/libs/tesouro-embedded-components-react/widget-suite/feature/dist/index11.js +16 -14
- package/dist/libs/tesouro-embedded-components-react/widget-suite/feature/dist/index4.js +1 -2
- package/package.json +1 -1
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/ExpenseManagementWidgetUi.js +0 -71
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/index.js +0 -2
- package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/labels.js +0 -10
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
"use client";
|
|
4
|
+
"use client";
|
|
5
|
+
import { toast as e } from "../../../../../packages/shared-ui-shadcn/dist/index.js";
|
|
6
|
+
import { Scope as t } from "../../../shared/data-access/dist/lib/scopes.js";
|
|
7
|
+
import { useAllOrganizationRolesQuery as n } from "../../../shared/data-access/dist/lib/role/useAllOrganizationRolesQuery.js";
|
|
8
|
+
import "../../../shared/data-access/dist/index.js";
|
|
9
|
+
import { EmbeddedToaster as r } from "../../../shared/ui/dist/lib/EmbeddedToaster.js";
|
|
10
|
+
import { ErrorState as i } from "../../../shared/ui/dist/lib/ErrorState/ErrorState.js";
|
|
11
|
+
import "../../../shared/ui/dist/index.js";
|
|
12
|
+
import { useAnalyticsTrack as a } from "../../../shared/feature/dist/lib/analytics/hooks.js";
|
|
13
|
+
import { WidgetProvider as o } from "../../../shared/feature/dist/lib/WidgetProvider/WidgetProvider.js";
|
|
14
|
+
import { useWidgetConfig as s, useWidgetLoading as c } from "../../../shared/feature/dist/lib/WidgetProvider/hooks.js";
|
|
15
|
+
import "../../../shared/feature/dist/index.js";
|
|
16
|
+
import { AmountConditionType as l, ApprovalOutcomeType as u } from "../../ui/dist/lib/ExpenseApprovalPoliciesWidget/lib/types.js";
|
|
17
|
+
import { ApprovalRuleToastLabels as d } from "../../ui/dist/lib/ExpenseApprovalPoliciesWidget/lib/labels.js";
|
|
18
|
+
import { ExpenseApprovalsPage as f } from "../../ui/dist/lib/ExpenseApprovalPoliciesWidget/lib/ExpenseApprovalsPage.js";
|
|
19
|
+
import "../../ui/dist/index.js";
|
|
20
|
+
import { ApproverOptionLabels as p, PermissionErrorLabels as m, ValidationErrorLabels as h } from "./index25.js";
|
|
21
|
+
import { ExpenseApprovalPoliciesAnalyticsEvent as g, WIDGET_NAME as _ } from "./index23.js";
|
|
22
|
+
import { useApprovalPolicies as v } from "./index24.js";
|
|
23
|
+
import { expenseApprovalPoliciesTestIds as y } from "./index26.js";
|
|
24
|
+
import { useEffect as b, useMemo as x, useState as S } from "react";
|
|
25
|
+
import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
26
|
+
//#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index27.js
|
|
27
|
+
var E = {
|
|
28
|
+
minAmount: "",
|
|
29
|
+
maxAmount: "",
|
|
30
|
+
outcome: u.AutoApprove,
|
|
31
|
+
approvers: []
|
|
32
|
+
};
|
|
33
|
+
function D(e, t) {
|
|
34
|
+
let n = (e ?? "").trim().toLowerCase();
|
|
35
|
+
return n === t || n === `embedded:${t}`;
|
|
36
|
+
}
|
|
37
|
+
function O(e, t) {
|
|
38
|
+
return (e ?? "").toLowerCase().split(":").map((e) => e.trim()).filter(Boolean).some((e) => e === t);
|
|
39
|
+
}
|
|
40
|
+
function k(e) {
|
|
41
|
+
return D(e, "cfo") || D(e, "finance_admin") || D(e, "finance-admin");
|
|
42
|
+
}
|
|
43
|
+
function A(e) {
|
|
44
|
+
let t = e.find((e) => e.isSystemRole === !0 && D(e.key, "admin")), n = e.find((e) => e.isSystemRole === !0 && k(e.key)), r = e.filter((e) => e.isSystemRole === !0 && e !== t && e !== n && !O(e.key, "employee") && !O(e.key, "bookkeeper")).map((e) => ({
|
|
45
|
+
id: e.id,
|
|
46
|
+
label: e.name
|
|
47
|
+
})), i = e.filter((e) => !e.isSystemRole && e.status?.toLowerCase() === "active").map((e) => ({
|
|
48
|
+
id: e.id,
|
|
49
|
+
label: e.name
|
|
50
|
+
}));
|
|
51
|
+
return [
|
|
52
|
+
...t ? [{
|
|
53
|
+
id: t.id,
|
|
54
|
+
label: p.AdminLabel,
|
|
55
|
+
sublabel: p.AdminSublabel
|
|
56
|
+
}] : [],
|
|
57
|
+
{
|
|
58
|
+
id: "reporting_manager",
|
|
59
|
+
label: p.ReportingManagerLabel,
|
|
60
|
+
sublabel: p.ReportingManagerSublabel
|
|
61
|
+
},
|
|
62
|
+
...n ? [{
|
|
63
|
+
id: n.id,
|
|
64
|
+
label: p.CfoLabel,
|
|
65
|
+
sublabel: p.CfoSublabel
|
|
66
|
+
}] : [],
|
|
67
|
+
...r,
|
|
68
|
+
...i
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
function j(e) {
|
|
72
|
+
let t = e.minAmount.trim() !== "", n = e.maxAmount.trim() !== "";
|
|
73
|
+
return t && n ? l.InRange : t ? l.GreaterThanOrEqual : n ? l.LessThan : l.All;
|
|
74
|
+
}
|
|
75
|
+
function M(e) {
|
|
76
|
+
return [e.conditionType === l.LessThan || e.conditionType === l.All ? 0 : e.minAmount ?? 0, e.conditionType === l.GreaterThanOrEqual || e.conditionType === l.All ? Infinity : e.maxAmount ?? 0];
|
|
77
|
+
}
|
|
78
|
+
function N(e) {
|
|
79
|
+
if (e.length === 0) return !1;
|
|
80
|
+
let t = e.map(M).sort((e, t) => e[0] - t[0]);
|
|
81
|
+
if (t[0][0] > 0) return !1;
|
|
82
|
+
let n = 0;
|
|
83
|
+
for (let [e, r] of t) {
|
|
84
|
+
if (e > n) return !1;
|
|
85
|
+
n = Math.max(n, r);
|
|
86
|
+
}
|
|
87
|
+
return n === Infinity;
|
|
88
|
+
}
|
|
89
|
+
function P(e) {
|
|
90
|
+
if (e.length === 0) return [];
|
|
91
|
+
let t = e.map(M).sort((e, t) => e[0] - t[0]), n = [], r = 0;
|
|
92
|
+
for (let [e, i] of t) e > r && n.push({
|
|
93
|
+
from: r,
|
|
94
|
+
to: e
|
|
95
|
+
}), r = Math.max(r, i);
|
|
96
|
+
return r !== Infinity && n.push({
|
|
97
|
+
from: r,
|
|
98
|
+
to: null
|
|
99
|
+
}), n;
|
|
100
|
+
}
|
|
101
|
+
function F(e) {
|
|
102
|
+
let t = Number(e.minAmount) || 0, n = Number(e.maxAmount) || 0, r = j(e);
|
|
103
|
+
return [r === l.LessThan || r === l.All ? 0 : t, r === l.GreaterThanOrEqual || r === l.All ? Infinity : n];
|
|
104
|
+
}
|
|
105
|
+
function I(e, t, n) {
|
|
106
|
+
let [r, i] = F(e);
|
|
107
|
+
return t.filter((e) => e.id !== n).some((e) => {
|
|
108
|
+
let [t, n] = M(e);
|
|
109
|
+
return r < n && t < i;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function L(e, t, n) {
|
|
113
|
+
let r = {}, i = e.minAmount.trim() !== "", a = e.maxAmount.trim() !== "", o = Number(e.minAmount.trim()), s = Number(e.maxAmount.trim());
|
|
114
|
+
return i && (!Number.isFinite(o) || o < 0) && (r.minAmount = h.InvalidMinAmount), a && (!Number.isFinite(s) || s <= 0) && (r.maxAmount = h.InvalidMaxAmount), i && a && !r.minAmount && !r.maxAmount && o >= s && (r.maxAmount = h.MaxLessThanOrEqualToMin), e.outcome === u.RequireApproval && e.approvers.length === 0 && (r.approvers = h.ApproversRequired), !r.minAmount && !r.maxAmount && I(e, t, n) && (a ? r.maxAmount = h.ConflictsWithAnotherRule : r.minAmount = h.ConflictsWithAnotherRule), r;
|
|
115
|
+
}
|
|
116
|
+
function R(e, t) {
|
|
117
|
+
let n = j(t);
|
|
118
|
+
return {
|
|
119
|
+
id: e,
|
|
120
|
+
conditionType: n,
|
|
121
|
+
minAmount: n === l.InRange || n === l.GreaterThanOrEqual ? Number(t.minAmount) : void 0,
|
|
122
|
+
maxAmount: n === l.LessThan || n === l.InRange ? Number(t.maxAmount) : void 0,
|
|
123
|
+
outcome: t.outcome,
|
|
124
|
+
approvers: t.outcome === u.RequireApproval ? t.approvers : []
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function z(e) {
|
|
128
|
+
return {
|
|
129
|
+
minAmount: e.minAmount == null ? "" : String(e.minAmount),
|
|
130
|
+
maxAmount: e.maxAmount == null ? "" : String(e.maxAmount),
|
|
131
|
+
outcome: e.outcome,
|
|
132
|
+
approvers: e.approvers
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function B() {
|
|
136
|
+
let o = a();
|
|
137
|
+
b(() => {
|
|
138
|
+
o(g.Mounted);
|
|
139
|
+
}, [o]);
|
|
140
|
+
let { initResponse: l } = s(), u = c(), h = l?.scopes?.includes(t.RoleReadOrg) ?? !1, { data: _, isResolving: O, isError: j } = n({ enabled: h }), M = x(() => A(_?.data ?? []), [_]), F = x(() => {
|
|
141
|
+
let e = _?.data ?? [], t = e.find((e) => e.isSystemRole === !0 && D(e.key, "admin")), n = e.find((e) => e.isSystemRole === !0 && k(e.key)), r = { reporting_manager: p.ReportingManagerLabel };
|
|
142
|
+
t && (r[t.id] = p.AdminLabel), n && (r[n.id] = p.CfoLabel);
|
|
143
|
+
for (let t of e) r[t.id] || (r[t.id] = t.name);
|
|
144
|
+
return r;
|
|
145
|
+
}, [_]), { rules: I, isLoading: B, saveStatus: V, createRule: ee, updateRule: te, deleteRule: H } = v(F), [U, W] = S(!1), [G, K] = S(E), [q, J] = S(null), [Y, X] = S(null);
|
|
146
|
+
b(() => {
|
|
147
|
+
V === "success" && e.success(d.Saved), V === "error" && e.error(d.FailedToSave);
|
|
148
|
+
}, [V]);
|
|
149
|
+
let Z = B || u && !l, ne = N(I), re = P(I), Q = Z || O || V === "saving", ie = U ? L(G, I) : {}, ae = Y && q ? L(Y, I, q) : {}, oe = () => {
|
|
150
|
+
W(!0), K(E);
|
|
151
|
+
}, se = () => {
|
|
152
|
+
W(!1);
|
|
153
|
+
}, $ = async () => {
|
|
154
|
+
let e = L(G, I);
|
|
155
|
+
if (Object.keys(e).length > 0) return;
|
|
156
|
+
let t = crypto.randomUUID();
|
|
157
|
+
await ee(R(t, G)) && (W(!1), K(E));
|
|
158
|
+
}, ce = (e) => {
|
|
159
|
+
K(e);
|
|
160
|
+
}, le = (e) => {
|
|
161
|
+
let t = I.find((t) => t.id === e);
|
|
162
|
+
t && (W(!1), K(E), J(e), X(z(t)));
|
|
163
|
+
}, ue = () => {
|
|
164
|
+
J(null), X(null);
|
|
165
|
+
}, de = async () => {
|
|
166
|
+
if (!q || !Y) return;
|
|
167
|
+
let e = L(Y, I, q);
|
|
168
|
+
Object.keys(e).length > 0 || await te(q, R(q, Y)) && (J(null), X(null));
|
|
169
|
+
}, fe = (e) => {
|
|
170
|
+
X(e);
|
|
171
|
+
}, pe = async (e) => {
|
|
172
|
+
await H(e), q === e && (J(null), X(null));
|
|
173
|
+
};
|
|
174
|
+
return l !== void 0 && !h ? /* @__PURE__ */ w(i, {
|
|
175
|
+
title: m.MissingRolePermissionTitle,
|
|
176
|
+
description: m.MissingRolePermissionDescription
|
|
177
|
+
}) : j ? /* @__PURE__ */ w(i, {
|
|
178
|
+
title: m.RolesUnavailableTitle,
|
|
179
|
+
description: m.RolesUnavailableDescription
|
|
180
|
+
}) : /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w(r, {}), /* @__PURE__ */ w(f, {
|
|
181
|
+
rules: I,
|
|
182
|
+
isBusy: Q,
|
|
183
|
+
isLoading: Z,
|
|
184
|
+
isAddingRule: U,
|
|
185
|
+
newRuleFormValues: G,
|
|
186
|
+
newRuleValidationErrors: ie,
|
|
187
|
+
editingRuleId: q,
|
|
188
|
+
editingRuleFormValues: Y,
|
|
189
|
+
editingRuleValidationErrors: ae,
|
|
190
|
+
approverOptions: Q ? [] : M,
|
|
191
|
+
allExpensesAreCovered: ne,
|
|
192
|
+
gapIntervals: re,
|
|
193
|
+
onAddRuleClick: oe,
|
|
194
|
+
onCancelAddRule: se,
|
|
195
|
+
onSaveNewRule: () => void $(),
|
|
196
|
+
onNewRuleFormChange: ce,
|
|
197
|
+
onEditRule: le,
|
|
198
|
+
onCancelEditRule: ue,
|
|
199
|
+
onSaveEditRule: () => void de(),
|
|
200
|
+
onEditRuleFormChange: fe,
|
|
201
|
+
onDeleteRule: (e) => void pe(e),
|
|
202
|
+
testIds: {
|
|
203
|
+
ruleCard: { root: y.ruleCard },
|
|
204
|
+
ruleForm: {
|
|
205
|
+
root: y.ruleForm,
|
|
206
|
+
saveButton: y.ruleFormSaveButton,
|
|
207
|
+
minAmountInput: y.ruleFormMinAmountInput,
|
|
208
|
+
maxAmountInput: y.ruleFormMaxAmountInput
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
})] });
|
|
212
|
+
}
|
|
213
|
+
function V({ token: e, orgId: t, widgetToken: n, organizationId: r, ...i } = {}) {
|
|
214
|
+
return /* @__PURE__ */ w(o, {
|
|
215
|
+
...i,
|
|
216
|
+
widgetName: _,
|
|
217
|
+
widgetToken: n === void 0 ? e : n,
|
|
218
|
+
organizationId: r === void 0 ? t : r,
|
|
219
|
+
children: /* @__PURE__ */ w(B, {})
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//#endregion
|
|
223
|
+
export { V as ExpenseApprovalPoliciesWidget, V as default, A as buildApproverOptions, D as isEmbeddedSystemRoleKey, O as roleKeyHasSegment };
|
package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index3.js
CHANGED
|
@@ -1,256 +1,4 @@
|
|
|
1
|
-
import { useEmbedApi as e } from "../../../shared/data-access/dist/lib/EmbedApiContext.js";
|
|
2
|
-
import "../../../shared/data-access/dist/index.js";
|
|
3
|
-
import { ApprovalPolicyObjectType as t } from "../../../shared/approval-policy/data-access/dist/lib/queryKeys.js";
|
|
4
|
-
import { useDeleteApprovalPoliciesIdMutation as n, useGetApprovalPoliciesQuery as r, usePatchApprovalPoliciesIdMutation as i, usePostApprovalPoliciesMutation as a } from "../../../shared/approval-policy/data-access/dist/lib/approvalPoliciesApi.js";
|
|
5
|
-
import "../../../shared/approval-policy/data-access/dist/index.js";
|
|
6
|
-
import { AmountConditionType as o, ApprovalOutcomeType as s } from "../../ui/dist/lib/ExpenseApprovalPoliciesWidget/lib/types.js";
|
|
7
|
-
import "../../ui/dist/index.js";
|
|
8
|
-
import { useCallback as c, useEffect as l, useRef as u, useState as d } from "react";
|
|
9
1
|
//#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index3.js
|
|
10
|
-
var
|
|
11
|
-
function m(e, t, n) {
|
|
12
|
-
switch (e) {
|
|
13
|
-
case o.All: return { all: [p] };
|
|
14
|
-
case o.LessThan: return { all: [p, {
|
|
15
|
-
operator: "<",
|
|
16
|
-
left_operand: { name: "transaction.amount" },
|
|
17
|
-
right_operand: (n ?? 0) * 100
|
|
18
|
-
}] };
|
|
19
|
-
case o.GreaterThanOrEqual: return { all: [p, {
|
|
20
|
-
operator: ">=",
|
|
21
|
-
left_operand: { name: "transaction.amount" },
|
|
22
|
-
right_operand: (t ?? 0) * 100
|
|
23
|
-
}] };
|
|
24
|
-
case o.InRange: return { all: [
|
|
25
|
-
p,
|
|
26
|
-
{
|
|
27
|
-
operator: ">=",
|
|
28
|
-
left_operand: { name: "transaction.amount" },
|
|
29
|
-
right_operand: (t ?? 0) * 100
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
operator: "<",
|
|
33
|
-
left_operand: { name: "transaction.amount" },
|
|
34
|
-
right_operand: (n ?? 0) * 100
|
|
35
|
-
}
|
|
36
|
-
] };
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function h(e, t) {
|
|
40
|
-
let n = ["{Transactions.approve(transaction.id)}"], r = ["{Transactions.reject(transaction.id)}"];
|
|
41
|
-
if (e === s.AutoApprove) return ["{Transactions.approve(transaction.id)}"];
|
|
42
|
-
let i = t.map((e) => e.id), a = i.includes("reporting_manager"), o = i.filter((e) => e !== "reporting_manager");
|
|
43
|
-
if (a) {
|
|
44
|
-
let e = [{
|
|
45
|
-
call: "ApprovalRequests.request_approval_from_reporting_manager",
|
|
46
|
-
params: { required_approval_count: 1 }
|
|
47
|
-
}];
|
|
48
|
-
return o.length > 0 && e.push({
|
|
49
|
-
call: "ApprovalRequests.request_approval_by_role",
|
|
50
|
-
params: {
|
|
51
|
-
role_ids: o,
|
|
52
|
-
required_approval_count: 1
|
|
53
|
-
}
|
|
54
|
-
}), [{
|
|
55
|
-
if: { any: e },
|
|
56
|
-
then: n,
|
|
57
|
-
else: r
|
|
58
|
-
}];
|
|
59
|
-
}
|
|
60
|
-
return [{
|
|
61
|
-
if: { all: [{
|
|
62
|
-
call: "ApprovalRequests.request_approval_by_role",
|
|
63
|
-
params: {
|
|
64
|
-
role_ids: o,
|
|
65
|
-
required_approval_count: 1
|
|
66
|
-
}
|
|
67
|
-
}] },
|
|
68
|
-
then: n,
|
|
69
|
-
else: r
|
|
70
|
-
}];
|
|
71
|
-
}
|
|
72
|
-
function g(e) {
|
|
73
|
-
switch (e.conditionType) {
|
|
74
|
-
case o.All: return "All expenses";
|
|
75
|
-
case o.LessThan: return `Less than $${e.maxAmount ?? 0}`;
|
|
76
|
-
case o.GreaterThanOrEqual: return `$${e.minAmount ?? 0} or more`;
|
|
77
|
-
case o.InRange: return `$${e.minAmount ?? 0}–$${e.maxAmount ?? 0}`;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
function _(e) {
|
|
81
|
-
if (e === !0 || e == null) return { conditionType: o.All };
|
|
82
|
-
if (typeof e == "object" && !Array.isArray(e) && "all" in e) {
|
|
83
|
-
let t = e.all, n, r;
|
|
84
|
-
for (let e of t) {
|
|
85
|
-
if (typeof e != "object" || !e || !("operator" in e)) continue;
|
|
86
|
-
let t = e;
|
|
87
|
-
if (t.left_operand?.name !== "transaction.amount") continue;
|
|
88
|
-
let i = Number(t.right_operand) / 100;
|
|
89
|
-
t.operator === ">=" && (n = i), t.operator === "<" && (r = i), t.operator === "<=" && (r = i);
|
|
90
|
-
}
|
|
91
|
-
return n !== void 0 && r !== void 0 ? {
|
|
92
|
-
conditionType: o.InRange,
|
|
93
|
-
minAmount: n,
|
|
94
|
-
maxAmount: r
|
|
95
|
-
} : n === void 0 ? r === void 0 ? { conditionType: o.All } : {
|
|
96
|
-
conditionType: o.LessThan,
|
|
97
|
-
maxAmount: r
|
|
98
|
-
} : {
|
|
99
|
-
conditionType: o.GreaterThanOrEqual,
|
|
100
|
-
minAmount: n
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
if (typeof e != "string") return { conditionType: o.All };
|
|
104
|
-
let t = e.replace(/^\{(.*)\}$/, "$1").trim().replace(/^event_name\s*==\s*["'][^'"]*["']\s*&&\s*/, "").trim(), n = t.match(/(?:transaction\.)?amount\s*>=\s*([\d.]+)\s*&&\s*(?:transaction\.)?amount\s*<\s*([\d.]+)/);
|
|
105
|
-
if (n) return {
|
|
106
|
-
conditionType: o.InRange,
|
|
107
|
-
minAmount: Number(n[1]),
|
|
108
|
-
maxAmount: Number(n[2])
|
|
109
|
-
};
|
|
110
|
-
let r = t.match(/^(?:transaction\.)?amount\s*<\s*([\d.]+)$/);
|
|
111
|
-
if (r) return {
|
|
112
|
-
conditionType: o.LessThan,
|
|
113
|
-
maxAmount: Number(r[1])
|
|
114
|
-
};
|
|
115
|
-
let i = t.match(/^(?:transaction\.)?amount\s*>=\s*([\d.]+)$/);
|
|
116
|
-
return i ? {
|
|
117
|
-
conditionType: o.GreaterThanOrEqual,
|
|
118
|
-
minAmount: Number(i[1])
|
|
119
|
-
} : { conditionType: o.All };
|
|
120
|
-
}
|
|
121
|
-
function v(e, t = {}) {
|
|
122
|
-
let n = (e) => e.filter((e) => e === "reporting_manager" || e in t).map((e) => ({
|
|
123
|
-
id: e,
|
|
124
|
-
label: t[e] ?? e
|
|
125
|
-
})), r = e[0];
|
|
126
|
-
if (typeof r == "object" && r && !Array.isArray(r) && "if" in r) {
|
|
127
|
-
let e = r.if, t = Array.isArray(e?.all) ? e.all : [], i = Array.isArray(e?.any) ? e.any : [];
|
|
128
|
-
if (t.length === 0 && i.length === 0) return {
|
|
129
|
-
outcome: s.AutoApprove,
|
|
130
|
-
approvers: []
|
|
131
|
-
};
|
|
132
|
-
let a = /* @__PURE__ */ new Set();
|
|
133
|
-
for (let e of i) if (typeof e == "object" && e && "call" in e) {
|
|
134
|
-
let t = String(e.call ?? "");
|
|
135
|
-
if (t.includes("request_approval_from_reporting_manager") && a.add("reporting_manager"), t.includes("request_approval_by_role")) {
|
|
136
|
-
let t = e.params?.role_ids;
|
|
137
|
-
Array.isArray(t) && t.forEach((e) => a.add(String(e)));
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
if (a.size > 0) return {
|
|
141
|
-
outcome: s.RequireApproval,
|
|
142
|
-
approvers: n([...a])
|
|
143
|
-
};
|
|
144
|
-
for (let e of t) if (typeof e == "object" && e && "call" in e) {
|
|
145
|
-
let t = e, r = String(t.call ?? "");
|
|
146
|
-
if (r.includes("request_approval_from_reporting_manager")) return {
|
|
147
|
-
outcome: s.RequireApproval,
|
|
148
|
-
approvers: n(["reporting_manager"])
|
|
149
|
-
};
|
|
150
|
-
if (r.includes("request_approval_by_role")) {
|
|
151
|
-
let e = t.params?.role_ids;
|
|
152
|
-
return {
|
|
153
|
-
outcome: s.RequireApproval,
|
|
154
|
-
approvers: n(Array.isArray(e) ? e.map((e) => String(e)) : [])
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
outcome: s.RequireApproval,
|
|
160
|
-
approvers: []
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
let i = null, a = [];
|
|
164
|
-
if (typeof r == "string") i = r;
|
|
165
|
-
else if (typeof r == "object" && r && !Array.isArray(r)) {
|
|
166
|
-
let e = r;
|
|
167
|
-
i = String(e.call ?? e.event_name ?? "");
|
|
168
|
-
let t = e.params;
|
|
169
|
-
if (typeof t == "object" && t) {
|
|
170
|
-
let e = t;
|
|
171
|
-
"role_ids" in e && Array.isArray(e.role_ids) && (a = e.role_ids.map((e) => String(e)));
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return !i || i.includes("Transactions.approve") ? {
|
|
175
|
-
outcome: s.AutoApprove,
|
|
176
|
-
approvers: []
|
|
177
|
-
} : i.includes("request_approval_from_reporting_manager") ? {
|
|
178
|
-
outcome: s.RequireApproval,
|
|
179
|
-
approvers: n(["reporting_manager"])
|
|
180
|
-
} : i.includes("request_approval_by_role") ? {
|
|
181
|
-
outcome: s.RequireApproval,
|
|
182
|
-
approvers: n(a)
|
|
183
|
-
} : {
|
|
184
|
-
outcome: s.RequireApproval,
|
|
185
|
-
approvers: []
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
function y(e, t = {}) {
|
|
189
|
-
return {
|
|
190
|
-
id: e.id,
|
|
191
|
-
..._(e.trigger),
|
|
192
|
-
...v(e.script, t)
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
function b(t = {}) {
|
|
196
|
-
let { widgetToken: o, organizationId: s } = e(), p = !!(o && s), [_, v] = d("idle"), b = u(null), x = r({ objectType: f }), S = a({ objectType: f }), C = i({ objectType: f }), w = n({ objectType: f }), T = (x.data?.data.map((e) => y(e, t)) ?? []).sort((e, t) => (e.minAmount ?? 0) - (t.minAmount ?? 0));
|
|
197
|
-
l(() => () => {
|
|
198
|
-
b.current && clearTimeout(b.current);
|
|
199
|
-
}, []);
|
|
200
|
-
let E = () => {
|
|
201
|
-
b.current = setTimeout(() => v("idle"), 3e3);
|
|
202
|
-
}, D = c(async (e) => {
|
|
203
|
-
if (!p) return !1;
|
|
204
|
-
b.current && clearTimeout(b.current), v("saving");
|
|
205
|
-
let t = x.data?.data.map((e) => e.priority ?? 0) ?? [], n = Math.max(0, ...t) + 1;
|
|
206
|
-
try {
|
|
207
|
-
return await S.mutateAsync({ body: {
|
|
208
|
-
object_type: "transaction",
|
|
209
|
-
name: g(e),
|
|
210
|
-
trigger: m(e.conditionType, e.minAmount, e.maxAmount),
|
|
211
|
-
script: h(e.outcome, e.approvers),
|
|
212
|
-
priority: n
|
|
213
|
-
} }), v("success"), E(), !0;
|
|
214
|
-
} catch {
|
|
215
|
-
return v("error"), !1;
|
|
216
|
-
}
|
|
217
|
-
}, [
|
|
218
|
-
p,
|
|
219
|
-
S.mutateAsync,
|
|
220
|
-
x.data
|
|
221
|
-
]), O = c(async (e, t) => {
|
|
222
|
-
if (!p) return !1;
|
|
223
|
-
b.current && clearTimeout(b.current), v("saving");
|
|
224
|
-
try {
|
|
225
|
-
return await C.mutateAsync({
|
|
226
|
-
path: { approval_policy_id: e },
|
|
227
|
-
body: {
|
|
228
|
-
name: g(t),
|
|
229
|
-
trigger: m(t.conditionType, t.minAmount, t.maxAmount),
|
|
230
|
-
script: h(t.outcome, t.approvers)
|
|
231
|
-
}
|
|
232
|
-
}), v("success"), E(), !0;
|
|
233
|
-
} catch {
|
|
234
|
-
return v("error"), !1;
|
|
235
|
-
}
|
|
236
|
-
}, [p, C.mutateAsync]), k = c(async (e) => {
|
|
237
|
-
if (p) {
|
|
238
|
-
b.current && clearTimeout(b.current), v("saving");
|
|
239
|
-
try {
|
|
240
|
-
await w.mutateAsync({ path: { approval_policy_id: e } }), v("success"), E();
|
|
241
|
-
} catch {
|
|
242
|
-
v("error");
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}, [p, w.mutateAsync]);
|
|
246
|
-
return {
|
|
247
|
-
rules: T,
|
|
248
|
-
isLoading: x.isFetching,
|
|
249
|
-
saveStatus: _,
|
|
250
|
-
createRule: D,
|
|
251
|
-
updateRule: O,
|
|
252
|
-
deleteRule: k
|
|
253
|
-
};
|
|
254
|
-
}
|
|
2
|
+
var e = { Mounted: "expense_management_widget.mounted" }, t = "expense_management_widget";
|
|
255
3
|
//#endregion
|
|
256
|
-
export {
|
|
4
|
+
export { e as ExpenseManagementWidgetAnalyticsEvent, t as WIDGET_NAME };
|
package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index4.js
CHANGED
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
//#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index4.js
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
ReportingManagerLabel: "Reporting Managers",
|
|
6
|
-
ReportingManagerSublabel: "Assigned reporting managers can approve",
|
|
7
|
-
CfoLabel: "Finance admin",
|
|
8
|
-
CfoSublabel: "Any finance admin can approve"
|
|
9
|
-
}, t = {
|
|
10
|
-
InvalidMinAmount: "Enter a valid minimum amount",
|
|
11
|
-
InvalidMaxAmount: "Enter a valid maximum amount",
|
|
12
|
-
MaxLessThanOrEqualToMin: "Maximum amount can not be less than or equal to the minimum amount",
|
|
13
|
-
ApproversRequired: "At least one approver is required",
|
|
14
|
-
ConflictsWithAnotherRule: "This conflicts with another rule"
|
|
15
|
-
}, n = {
|
|
16
|
-
MissingRolePermissionTitle: "Approval policies unavailable",
|
|
17
|
-
MissingRolePermissionDescription: "Your access token is missing the permissions required to manage approval policies. Contact your administrator to update your access.",
|
|
18
|
-
RolesUnavailableTitle: "Roles unavailable",
|
|
19
|
-
RolesUnavailableDescription: "Approver roles could not be loaded. Refresh the page to try again."
|
|
20
|
-
};
|
|
2
|
+
function e(e) {
|
|
3
|
+
return [e.first_name, e.last_name].filter(Boolean).join(" ") || e.email || e.login || e.id;
|
|
4
|
+
}
|
|
21
5
|
//#endregion
|
|
22
|
-
export { e as
|
|
6
|
+
export { e as entityUserLabel };
|