@tesouro/embedded-components-react 0.5.187 → 0.5.189

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.
Files changed (99) hide show
  1. package/README.md +19 -9
  2. package/dist/index.css +110 -0
  3. package/dist/index.d.ts +233 -60
  4. package/dist/index.js +6 -6
  5. package/dist/lib/ExpenseManagementWidget.d.ts +189 -11
  6. package/dist/lib/ExpenseManagementWidget.js +1 -1
  7. package/dist/lib/UploadReceiptWidget.js +1 -1
  8. package/dist/lib/WidgetSuite.d.ts +213 -16
  9. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index.js +17 -3
  10. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index10.js +36 -0
  11. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index11.js +71 -0
  12. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index12.js +39 -0
  13. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index13.js +32 -0
  14. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index14.js +110 -0
  15. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index15.js +33 -0
  16. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index16.js +19 -0
  17. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index17.js +33 -0
  18. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index18.js +28 -0
  19. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index19.js +35 -0
  20. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index20.js +28 -0
  21. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index21.js +164 -0
  22. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index4.js +25 -18
  23. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index5.js +20 -34
  24. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index6.js +16 -20
  25. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index7.js +16 -0
  26. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index8.js +32 -0
  27. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/data-access/dist/index9.js +26 -0
  28. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index.js +10 -7
  29. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index10.js +162 -59
  30. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index11.js +64 -16
  31. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index12.js +73 -2
  32. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index13.js +348 -42
  33. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index14.js +42 -1
  34. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index15.js +143 -0
  35. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index16.js +229 -0
  36. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index17.js +196 -0
  37. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index18.js +13 -0
  38. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index19.js +91 -0
  39. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index2.js +89 -2
  40. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index20.js +39 -0
  41. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index21.js +297 -0
  42. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index22.js +1 -0
  43. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index23.js +4 -0
  44. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index24.js +256 -0
  45. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index25.js +22 -0
  46. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index26.js +10 -0
  47. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index27.js +223 -0
  48. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index3.js +2 -254
  49. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index4.js +4 -20
  50. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index5.js +262 -8
  51. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index6.js +2 -221
  52. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index7.js +54 -80
  53. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index8.js +24 -254
  54. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index9.js +18 -2
  55. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/index.js +34 -13
  56. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/AccordionItemCard/AccordionItemCard.js +549 -0
  57. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/AccordionItemCard/labels.js +38 -0
  58. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ActionItemsList/ActionItemsList.js +64 -0
  59. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ActionItemsList/labels.js +7 -0
  60. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseStatusBadge/ExpenseStatusBadge.js +18 -0
  61. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseStatusBadge/badgeTones.js +16 -0
  62. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseStatusBadge/labels.js +13 -0
  63. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesHeader/ExpensesHeader.js +37 -0
  64. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesHeader/labels.js +7 -0
  65. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesScreen/ExpensesScreen.js +112 -0
  66. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesScreen/labels.js +11 -0
  67. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesTransactionsFilterBar/ExpensesTransactionsFilterBar.js +158 -0
  68. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesTransactionsFilterBar/labels.js +18 -0
  69. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesTransactionsTable/ExpensesTransactionsTable.js +148 -0
  70. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpensesTransactionsTable/labels.js +18 -0
  71. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/FileViewer/FileViewer.js +107 -0
  72. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/FileViewer/PdfFileViewer.js +37 -0
  73. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/FileViewer/labels.js +11 -0
  74. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ReceiptMatchWidget/lib/ReceiptMatchLauncher.js +2 -24
  75. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ReceiptMatchWidget/lib/ReceiptMatchSidebar.js +1 -1
  76. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ReceiptMatchWidget/lib/TransactionsMatchStep.js +62 -65
  77. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ReceiptMatchWidget/lib/labels.js +1 -4
  78. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetails/DeleteReceiptDialog/DeleteReceiptDialog.js +31 -0
  79. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetails/DeleteReceiptDialog/labels.js +9 -0
  80. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetails/TransactionDetails.js +268 -0
  81. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetails/labels.js +21 -0
  82. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetailsActions/BulkProgress.js +26 -0
  83. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetailsActions/TransactionDetailsActions.js +142 -0
  84. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/TransactionDetailsActions/labels.js +20 -0
  85. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/isPdf.js +7 -0
  86. package/dist/libs/tesouro-embedded-components-react/monite-sdk/dist/index109.js +55 -49
  87. package/dist/libs/tesouro-embedded-components-react/monite-sdk/dist/index56.js +24 -18
  88. package/dist/libs/tesouro-embedded-components-react/settings-widget/feature/dist/index5.js +2 -2
  89. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/index.js +36 -36
  90. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/@tanstack/react-query.gen.js +268 -206
  91. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/sdk.gen.js +218 -113
  92. package/dist/libs/tesouro-embedded-components-react/shared/feature/dist/lib/analytics/build-info.js +1 -1
  93. package/dist/libs/tesouro-embedded-components-react/shared/util/dist/lib/formatCalendarDate.js +4 -4
  94. package/dist/libs/tesouro-embedded-components-react/widget-suite/feature/dist/index11.js +16 -14
  95. package/dist/libs/tesouro-embedded-components-react/widget-suite/feature/dist/index4.js +1 -2
  96. package/package.json +3 -3
  97. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/ExpenseManagementWidgetUi.js +0 -71
  98. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/index.js +0 -2
  99. 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 };
@@ -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 f = t.Transaction, p = "{event_name == 'submitted_for_approval'}";
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 { h as buildScript, m as buildTrigger, y as parsePolicy, b as useApprovalPolicies };
4
+ export { e as ExpenseManagementWidgetAnalyticsEvent, t as WIDGET_NAME };
@@ -1,22 +1,6 @@
1
1
  //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index4.js
2
- var e = {
3
- AdminLabel: "Company admin",
4
- AdminSublabel: "Any company admin can approve",
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 ApproverOptionLabels, n as PermissionErrorLabels, t as ValidationErrorLabels };
6
+ export { e as entityUserLabel };