@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.
Files changed (104) 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/settings-widget/feature/dist/index5.js +2 -2
  87. package/dist/libs/tesouro-embedded-components-react/settings-widget/team/data-access/dist/index7.js +116 -94
  88. package/dist/libs/tesouro-embedded-components-react/settings-widget/team/feature/dist/index12.js +76 -68
  89. package/dist/libs/tesouro-embedded-components-react/settings-widget/team/feature/dist/index17.js +181 -179
  90. package/dist/libs/tesouro-embedded-components-react/settings-widget/team/feature/dist/index3.js +2 -0
  91. package/dist/libs/tesouro-embedded-components-react/settings-widget/team/feature/dist/index7.js +16 -12
  92. package/dist/libs/tesouro-embedded-components-react/settings-widget/team/ui/dist/index8.js +66 -66
  93. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/index.js +36 -35
  94. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/debit-card/useAllDebitCardsQuery.js +54 -0
  95. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/@tanstack/react-query.gen.js +268 -206
  96. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/sdk.gen.js +218 -113
  97. package/dist/libs/tesouro-embedded-components-react/shared/feature/dist/lib/analytics/build-info.js +1 -1
  98. package/dist/libs/tesouro-embedded-components-react/shared/util/dist/lib/formatCalendarDate.js +4 -4
  99. package/dist/libs/tesouro-embedded-components-react/widget-suite/feature/dist/index11.js +16 -14
  100. package/dist/libs/tesouro-embedded-components-react/widget-suite/feature/dist/index4.js +1 -2
  101. package/package.json +1 -1
  102. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/ExpenseManagementWidgetUi.js +0 -71
  103. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/index.js +0 -2
  104. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/labels.js +0 -10
@@ -0,0 +1,297 @@
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 { useMailboxAddress as t } from "../../../shared/data-access/dist/lib/useMailboxAddress.js";
7
+ import { useAllOrganizationUsersQuery as n } from "../../../shared/data-access/dist/lib/user/useAllOrganizationUsersQuery.js";
8
+ import "../../../shared/data-access/dist/index.js";
9
+ import "../../../shared/ui/dist/index.js";
10
+ import { useAnalyticsTrack as r } from "../../../shared/feature/dist/lib/analytics/hooks.js";
11
+ import { WidgetProvider as i } from "../../../shared/feature/dist/lib/WidgetProvider/WidgetProvider.js";
12
+ import { useWidgetConfig as a, useWidgetLoading as o } from "../../../shared/feature/dist/lib/WidgetProvider/hooks.js";
13
+ import "../../../shared/feature/dist/index.js";
14
+ import { ActionItemsList as s } from "../../ui/dist/lib/ActionItemsList/ActionItemsList.js";
15
+ import { ExpensesTransactionsTable as c } from "../../ui/dist/lib/ExpensesTransactionsTable/ExpensesTransactionsTable.js";
16
+ import { ExpensesTransactionsFilterBar as l } from "../../ui/dist/lib/ExpensesTransactionsFilterBar/ExpensesTransactionsFilterBar.js";
17
+ import { ExpensesScreen as u } from "../../ui/dist/lib/ExpensesScreen/ExpensesScreen.js";
18
+ import "../../ui/dist/index.js";
19
+ import { UploadReceiptWidget as d } from "./index2.js";
20
+ import { usePatchReceiptMutation as f } from "../../data-access/dist/index11.js";
21
+ import { useUploadReceiptMutation as p } from "../../data-access/dist/index13.js";
22
+ import { useTrackReceiptMatching as m } from "../../data-access/dist/index14.js";
23
+ import "../../data-access/dist/index.js";
24
+ import { ReceiptMatchWidget as h } from "./index7.js";
25
+ import { TRANSACTION_DETAILS_FEATURE_LABELS_EN as g } from "./index9.js";
26
+ import { canOpenExpenseSettings as _, canViewTeamTransactions as ee, canWriteExpenses as te } from "./index8.js";
27
+ import { TransactionDetailsFeature as ne } from "./index13.js";
28
+ import { ExpenseManagementWidgetAnalyticsEvent as re, WIDGET_NAME as v } from "./index3.js";
29
+ import { useExpensesTransactions as y } from "./index17.js";
30
+ import { useExpenseActionItems as b } from "./index19.js";
31
+ import { useExpenseTabBadgeCounts as ie } from "./index20.js";
32
+ import { useEffect as ae, useMemo as x, useRef as S, useState as C } from "react";
33
+ import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
34
+ //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index21.js
35
+ var oe = ".pdf,.png,.jpg,.jpeg,.gif,.svg";
36
+ function D({ screenLabels: i, headerLabels: v, transactionsTableLabels: D, filterBarLabels: O, actionItemsLabels: k, statusBadgeLabels: A, transactionDetailsLabels: se, transactionDetailsCardLabels: ce, transactionDetailsActionsLabels: le, fileViewerLabels: ue, receiptUpload: de, bankDisplayName: fe, bankLogoSrc: pe, bankLogoAlt: me, isBankingTaglineVisible: he, onSettingsClick: ge }) {
37
+ let j = r();
38
+ ae(() => {
39
+ j(re.Mounted);
40
+ }, [j]);
41
+ let { initResponse: _e } = a(), M = o(), N = _e?.scopes, P = ee(N), [ve, F] = C("my-transactions"), I = S(!1), L = S(!1), ye = (e) => {
42
+ I.current = !0, F(e);
43
+ };
44
+ ae(() => {
45
+ M || I.current || L.current || (L.current = !0, P && F("team-transactions"));
46
+ }, [M, P]);
47
+ let { data: R } = n({ enabled: P }), be = x(() => (R?.data ?? []).map((e) => ({
48
+ value: e.id,
49
+ label: e.name || e.email || e.id
50
+ })), [R]), z = x(() => {
51
+ let e = /* @__PURE__ */ new Map();
52
+ for (let t of R?.data ?? []) e.set(t.id, t.name || t.email || t.id);
53
+ return e;
54
+ }, [R]), B = y({ scope: "mine" }), V = y({
55
+ scope: "team",
56
+ cardholderByUserId: z
57
+ }), [H, U] = C(null), [xe, W] = C(!1), G = (e) => {
58
+ e.length !== 0 && U({ transactionIds: e });
59
+ }, K = {
60
+ onReviewNewTransactions: G,
61
+ onReviewRejectedTransactions: G,
62
+ onReviewPendingApproval: G,
63
+ onReviewUnmatchedReceipts: () => {
64
+ W(!0);
65
+ }
66
+ }, Se = b({
67
+ scope: "mine",
68
+ ...K
69
+ }), Ce = b({
70
+ scope: "team",
71
+ ...K
72
+ }), { mailboxAddress: we } = t({ relatedObjectType: "receipt" }), q = p(), Te = f(), J = S(null), Y = S(null), [X, Z] = C(null), Q = te(N), { trackBatch: Ee } = m(), $ = S([]), { myTransactionsCount: De, teamTransactionsCount: Oe } = ie(), { onFileUpload: ke, onAwaitMatching: Ae, ...je } = de ?? {}, Me = async (e) => {
73
+ let t = await q.mutateAsync({ body: { file: e } });
74
+ return t.id && $.current.push(t.id), t;
75
+ }, Ne = () => {
76
+ let e = $.current.splice(0);
77
+ return Ee(e);
78
+ }, Pe = (e) => {
79
+ Y.current = e, J.current?.click();
80
+ }, Fe = async (t) => {
81
+ let n = Y.current;
82
+ if (Y.current = null, n) {
83
+ Z(n);
84
+ try {
85
+ let e = await q.mutateAsync({ body: { file: t } });
86
+ if (!e.id) throw Error("Receipt upload returned no id");
87
+ await Te.mutateAsync({
88
+ path: { receipt_id: e.id },
89
+ body: { transaction_id: n }
90
+ });
91
+ } catch {
92
+ e.error(g.receiptUploadFailed);
93
+ } finally {
94
+ Z(null);
95
+ }
96
+ }
97
+ }, Ie = /* @__PURE__ */ T(d, {
98
+ emailAddress: we,
99
+ isUploading: q.isPending,
100
+ ...je,
101
+ onFileUpload: ke ?? Me,
102
+ onAwaitMatching: Ae ?? (ke ? void 0 : Ne)
103
+ }), Le = /* @__PURE__ */ T(ne, {
104
+ open: H !== null,
105
+ onClose: () => U(null),
106
+ selectedTransactionId: H?.transactionId,
107
+ actionItemIds: H?.transactionIds,
108
+ cardholderByUserId: z,
109
+ detailsLabels: se,
110
+ cardLabels: ce,
111
+ actionsLabels: le,
112
+ statusBadgeLabels: A,
113
+ fileViewerLabels: ue
114
+ });
115
+ return /* @__PURE__ */ E(w, { children: [
116
+ Le,
117
+ /* @__PURE__ */ T(h, {
118
+ isOpen: xe,
119
+ onClose: () => W(!1)
120
+ }),
121
+ Q && /* @__PURE__ */ T("input", {
122
+ ref: J,
123
+ type: "file",
124
+ accept: oe,
125
+ className: "ttw:hidden",
126
+ "aria-hidden": !0,
127
+ tabIndex: -1,
128
+ onChange: (e) => {
129
+ let t = e.target.files?.[0];
130
+ e.target.value = "", t && Fe(t);
131
+ }
132
+ }),
133
+ /* @__PURE__ */ T(u, {
134
+ labels: i,
135
+ headerLabels: v,
136
+ header: {
137
+ bankDisplayName: fe,
138
+ bankLogoSrc: pe,
139
+ bankLogoAlt: me,
140
+ isBankingTaglineVisible: he,
141
+ onSettingsClick: _(N) ? ge : void 0,
142
+ actions: Ie
143
+ },
144
+ activeTab: ve,
145
+ onActiveTabChange: ye,
146
+ myTransactionsCount: De,
147
+ teamTransactionsCount: P ? Oe : void 0,
148
+ myTransactionsContent: /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(s, {
149
+ labels: k,
150
+ items: Se
151
+ }), /* @__PURE__ */ T(c, {
152
+ onRowClick: (e) => U({ transactionId: e }),
153
+ onAddReceiptClick: Q ? Pe : void 0,
154
+ uploadingReceiptId: X ?? void 0,
155
+ labels: D,
156
+ statusBadgeLabels: A,
157
+ rows: B.rows,
158
+ isLoading: B.isLoading,
159
+ sorting: B.sorting,
160
+ onSortingChange: B.onSortingChange,
161
+ pageSize: B.pageSize,
162
+ onPageSizeChange: B.onPageSizeChange,
163
+ pageSizeOptions: B.pageSizeOptions,
164
+ hasNextPage: B.hasNextPage,
165
+ hasPrevPage: B.hasPrevPage,
166
+ onNextPage: B.onNextPage,
167
+ onPrevPage: B.onPrevPage,
168
+ showCardholderColumn: B.showCardholderColumn,
169
+ showDepartmentColumn: B.showDepartmentColumn,
170
+ filterComponent: /* @__PURE__ */ T(l, {
171
+ labels: O,
172
+ searchValue: B.searchValue,
173
+ onSearchChange: B.onSearchChange,
174
+ activeFilterCount: B.activeFilterCount,
175
+ activeChips: B.activeChips,
176
+ onDismissChip: B.onDismissChip,
177
+ onClearAll: B.onClearAll,
178
+ allPresets: B.allPresets,
179
+ selectedDatePreset: B.selectedDatePreset,
180
+ dateFrom: B.dateFrom,
181
+ dateTo: B.dateTo,
182
+ onDateRangeChange: B.onDateRangeChange,
183
+ onDatePresetChange: B.onDatePresetChange,
184
+ paymentStatusOptions: B.paymentStatusOptions,
185
+ selectedPaymentStatus: B.selectedPaymentStatus,
186
+ onPaymentStatusChange: B.onPaymentStatusChange,
187
+ approvalStatusOptions: B.approvalStatusOptions,
188
+ selectedApprovalStatus: B.selectedApprovalStatus,
189
+ onApprovalStatusChange: B.onApprovalStatusChange,
190
+ typeOptions: B.typeOptions,
191
+ selectedTypes: B.selectedTypes,
192
+ onTypeChange: B.onTypeChange,
193
+ amountMode: B.amountMode,
194
+ onAmountModeChange: B.onAmountModeChange,
195
+ amountMin: B.amountMin,
196
+ amountMax: B.amountMax,
197
+ onAmountMinChange: B.onAmountMinChange,
198
+ onAmountMaxChange: B.onAmountMaxChange,
199
+ amountFlowDirection: B.amountFlowDirection,
200
+ onAmountFlowDirectionChange: B.onAmountFlowDirectionChange,
201
+ teamMemberOptions: [],
202
+ selectedTeamMembers: B.selectedTeamMembers,
203
+ onTeamMembersChange: B.onTeamMembersChange,
204
+ cardOnly: B.cardOnly,
205
+ onCardToggle: B.onCardToggle,
206
+ showTeamMemberFilter: !1
207
+ })
208
+ })] }),
209
+ teamTransactionsContent: P ? /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(s, {
210
+ labels: k,
211
+ items: Ce
212
+ }), /* @__PURE__ */ T(c, {
213
+ onRowClick: (e) => U({ transactionId: e }),
214
+ onAddReceiptClick: Q ? Pe : void 0,
215
+ uploadingReceiptId: X ?? void 0,
216
+ labels: D,
217
+ statusBadgeLabels: A,
218
+ rows: V.rows,
219
+ isLoading: V.isLoading,
220
+ sorting: V.sorting,
221
+ onSortingChange: V.onSortingChange,
222
+ pageSize: V.pageSize,
223
+ onPageSizeChange: V.onPageSizeChange,
224
+ pageSizeOptions: V.pageSizeOptions,
225
+ hasNextPage: V.hasNextPage,
226
+ hasPrevPage: V.hasPrevPage,
227
+ onNextPage: V.onNextPage,
228
+ onPrevPage: V.onPrevPage,
229
+ showCardholderColumn: V.showCardholderColumn,
230
+ showDepartmentColumn: V.showDepartmentColumn,
231
+ filterComponent: /* @__PURE__ */ T(l, {
232
+ labels: O,
233
+ searchValue: V.searchValue,
234
+ onSearchChange: V.onSearchChange,
235
+ activeFilterCount: V.activeFilterCount,
236
+ activeChips: V.activeChips,
237
+ onDismissChip: V.onDismissChip,
238
+ onClearAll: V.onClearAll,
239
+ allPresets: V.allPresets,
240
+ selectedDatePreset: V.selectedDatePreset,
241
+ dateFrom: V.dateFrom,
242
+ dateTo: V.dateTo,
243
+ onDateRangeChange: V.onDateRangeChange,
244
+ onDatePresetChange: V.onDatePresetChange,
245
+ paymentStatusOptions: V.paymentStatusOptions,
246
+ selectedPaymentStatus: V.selectedPaymentStatus,
247
+ onPaymentStatusChange: V.onPaymentStatusChange,
248
+ approvalStatusOptions: V.approvalStatusOptions,
249
+ selectedApprovalStatus: V.selectedApprovalStatus,
250
+ onApprovalStatusChange: V.onApprovalStatusChange,
251
+ typeOptions: V.typeOptions,
252
+ selectedTypes: V.selectedTypes,
253
+ onTypeChange: V.onTypeChange,
254
+ amountMode: V.amountMode,
255
+ onAmountModeChange: V.onAmountModeChange,
256
+ amountMin: V.amountMin,
257
+ amountMax: V.amountMax,
258
+ onAmountMinChange: V.onAmountMinChange,
259
+ onAmountMaxChange: V.onAmountMaxChange,
260
+ amountFlowDirection: V.amountFlowDirection,
261
+ onAmountFlowDirectionChange: V.onAmountFlowDirectionChange,
262
+ teamMemberOptions: be,
263
+ selectedTeamMembers: V.selectedTeamMembers,
264
+ onTeamMembersChange: V.onTeamMembersChange,
265
+ cardOnly: V.cardOnly,
266
+ onCardToggle: V.onCardToggle
267
+ })
268
+ })] }) : void 0
269
+ })
270
+ ] });
271
+ }
272
+ function O({ screenLabels: e, headerLabels: t, transactionsTableLabels: n, filterBarLabels: r, actionItemsLabels: a, statusBadgeLabels: o, transactionDetailsLabels: s, transactionDetailsCardLabels: c, transactionDetailsActionsLabels: l, fileViewerLabels: u, receiptUpload: d, bankDisplayName: f, bankLogoSrc: p, bankLogoAlt: m, isBankingTaglineVisible: h, onSettingsClick: g, ..._ }) {
273
+ return /* @__PURE__ */ T(i, {
274
+ ..._,
275
+ widgetName: v,
276
+ children: /* @__PURE__ */ T(D, {
277
+ screenLabels: e,
278
+ headerLabels: t,
279
+ transactionsTableLabels: n,
280
+ filterBarLabels: r,
281
+ actionItemsLabels: a,
282
+ statusBadgeLabels: o,
283
+ transactionDetailsLabels: s,
284
+ transactionDetailsCardLabels: c,
285
+ transactionDetailsActionsLabels: l,
286
+ fileViewerLabels: u,
287
+ receiptUpload: d,
288
+ bankDisplayName: f,
289
+ bankLogoSrc: p,
290
+ bankLogoAlt: m,
291
+ isBankingTaglineVisible: h,
292
+ onSettingsClick: g
293
+ })
294
+ });
295
+ }
296
+ //#endregion
297
+ export { O as ExpenseManagementWidget, O as default };
@@ -0,0 +1,4 @@
1
+ //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index23.js
2
+ var e = { Mounted: "expense_approval_policies.mounted" }, t = "expense_approval_policies";
3
+ //#endregion
4
+ export { e as ExpenseApprovalPoliciesAnalyticsEvent, t as WIDGET_NAME };
@@ -0,0 +1,256 @@
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
+ //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index24.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
+ }
255
+ //#endregion
256
+ export { h as buildScript, m as buildTrigger, y as parsePolicy, b as useApprovalPolicies };
@@ -0,0 +1,22 @@
1
+ //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index25.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
+ };
21
+ //#endregion
22
+ export { e as ApproverOptionLabels, n as PermissionErrorLabels, t as ValidationErrorLabels };
@@ -0,0 +1,10 @@
1
+ //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index26.js
2
+ var e = {
3
+ ruleCard: "expense-approval-rule-card",
4
+ ruleForm: "expense-approval-rule-form",
5
+ ruleFormSaveButton: "expense-approval-rule-save-button",
6
+ ruleFormMinAmountInput: "expense-approval-rule-min-amount-input",
7
+ ruleFormMaxAmountInput: "expense-approval-rule-max-amount-input"
8
+ };
9
+ //#endregion
10
+ export { e as expenseApprovalPoliciesTestIds };