@tesouro/embedded-components-react 0.5.187 → 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 (97) 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/shared/data-access/dist/index.js +36 -36
  88. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/@tanstack/react-query.gen.js +268 -206
  89. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/sdk.gen.js +218 -113
  90. package/dist/libs/tesouro-embedded-components-react/shared/feature/dist/lib/analytics/build-info.js +1 -1
  91. package/dist/libs/tesouro-embedded-components-react/shared/util/dist/lib/formatCalendarDate.js +4 -4
  92. package/dist/libs/tesouro-embedded-components-react/widget-suite/feature/dist/index11.js +16 -14
  93. package/dist/libs/tesouro-embedded-components-react/widget-suite/feature/dist/index4.js +1 -2
  94. package/package.json +1 -1
  95. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/ExpenseManagementWidgetUi.js +0 -71
  96. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/index.js +0 -2
  97. package/dist/libs/tesouro-embedded-components-react/expense-management-widget/ui/dist/lib/ExpenseManagementWidgetUi/labels.js +0 -10
@@ -2,50 +2,356 @@
2
2
  "use client";
3
3
  "use client";
4
4
  "use client";
5
- import { useAnalyticsTrack as e } from "../../../shared/feature/dist/lib/analytics/hooks.js";
6
- import { WidgetProvider as t } from "../../../shared/feature/dist/lib/WidgetProvider/WidgetProvider.js";
5
+ import { toast as e } from "../../../../../packages/shared-ui-shadcn/dist/index.js";
6
+ import { hasAnyScope as t } from "../../../shared/data-access/dist/lib/hasAnyScope.js";
7
+ import { Scope as n } from "../../../shared/data-access/dist/lib/scopes.js";
8
+ import "../../../shared/data-access/dist/index.js";
9
+ import "../../../shared/ui/dist/index.js";
10
+ import { formatCalendarDate as r } from "../../../shared/util/dist/lib/formatCalendarDate.js";
11
+ import { formatMoneyExact as i } from "../../../shared/util/dist/lib/formatMoneyExact.js";
12
+ import { useWidgetConfig as ee } from "../../../shared/feature/dist/lib/WidgetProvider/hooks.js";
7
13
  import "../../../shared/feature/dist/index.js";
8
- import { ExpenseManagementWidgetUi as n } from "../../ui/dist/lib/ExpenseManagementWidgetUi/ExpenseManagementWidgetUi.js";
14
+ import { ApprovalPolicyObjectType as te } from "../../../shared/approval-policy/data-access/dist/lib/queryKeys.js";
15
+ import { useGetApprovalPoliciesQuery as ne } from "../../../shared/approval-policy/data-access/dist/lib/approvalPoliciesApi.js";
16
+ import "../../../shared/approval-policy/data-access/dist/index.js";
17
+ import { TransactionDetails as re } from "../../ui/dist/lib/TransactionDetails/TransactionDetails.js";
18
+ import { DeleteReceiptDialog as ie } from "../../ui/dist/lib/TransactionDetails/DeleteReceiptDialog/DeleteReceiptDialog.js";
9
19
  import "../../ui/dist/index.js";
10
- import { ExpenseApprovalPoliciesWidget as r } from "./index6.js";
11
- import { UploadReceiptWidget as i } from "./index7.js";
12
- import { ReceiptMatchPane as a } from "./index11.js";
13
- import { ExpenseManagementWidgetAnalyticsEvent as o, WIDGET_NAME as s } from "./index12.js";
14
- import { ExpenseRequirementsWidget as c } from "../../../shared/expense-requirements/feature/dist/lib/ExpenseRequirementsWidget.js";
15
- import "../../../shared/expense-requirements/feature/dist/index.js";
16
- import { useEffect as l } from "react";
17
- import { jsx as u } from "react/jsx-runtime";
20
+ import { useOrganizationDepartmentsQuery as ae } from "../../data-access/dist/index4.js";
21
+ import { useEntityUsersByIdsQuery as oe } from "../../data-access/dist/index5.js";
22
+ import { useOrganizationLocationsQuery as se } from "../../data-access/dist/index6.js";
23
+ import { useExpenseLedgerAccountsQuery as ce } from "../../data-access/dist/index7.js";
24
+ import { useExpenseHistoryQuery as le } from "../../data-access/dist/index8.js";
25
+ import { useGetTransactionQuery as ue } from "../../data-access/dist/index9.js";
26
+ import { usePatchReceiptMutation as de } from "../../data-access/dist/index11.js";
27
+ import { useUploadReceiptMutation as fe } from "../../data-access/dist/index13.js";
28
+ import { useTransactionValidationsQuery as pe } from "../../data-access/dist/index18.js";
29
+ import { useGetApprovalRequestsQuery as me } from "../../data-access/dist/index19.js";
30
+ import { useUpdateTransactionMutation as he } from "../../data-access/dist/index21.js";
31
+ import "../../data-access/dist/index.js";
32
+ import { ReceiptMatchWidget as ge } from "./index7.js";
33
+ import { TRANSACTION_DETAILS_FEATURE_LABELS_EN as _e } from "./index9.js";
34
+ import { TransactionDetailsActionsFeature as ve } from "./index12.js";
35
+ import { entityUserLabel as ye } from "./index4.js";
36
+ import { canApproveExpenses as be, canWriteExpenses as xe, isExpenseAdmin as Se } from "./index8.js";
37
+ import { buildExpenseAuditHistory as Ce } from "./index10.js";
38
+ import { EXPENSE_AUDIT_HISTORY_LABELS_EN as we } from "./index11.js";
39
+ import { useMemo as Te, useRef as Ee, useState as a } from "react";
40
+ import { Fragment as De, jsx as o, jsxs as Oe } from "react/jsx-runtime";
18
41
  //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index13.js
19
- function d({ labels: t, receiptUpload: s, receiptsContent: d, matchingContent: f, policiesContent: p, requirementsContent: m }) {
20
- let h = e();
21
- return l(() => {
22
- h(o.Mounted);
23
- }, [h]), /* @__PURE__ */ u(n, {
24
- labels: t,
25
- receiptsContent: d ?? (s ? /* @__PURE__ */ u(i, { ...s }) : null),
26
- matchingContent: f ?? /* @__PURE__ */ u(a, {}),
27
- policiesContent: p ?? /* @__PURE__ */ u(r, {}),
28
- requirementsContent: m ?? /* @__PURE__ */ u(c, {})
29
- });
30
- }
31
- function f({ baseUrl: e, widgetToken: n, organizationId: r, configClient: i, gatewayRouting: a, linkComponent: o, implementation: c, uiFramework: l, errorFallback: f, onError: p, analytics: m, disclosuresAcceptance: h, providerLabels: g, ..._ }) {
32
- return /* @__PURE__ */ u(t, {
33
- widgetName: s,
34
- baseUrl: e,
35
- widgetToken: n,
36
- organizationId: r,
37
- configClient: i,
38
- gatewayRouting: a,
39
- linkComponent: o,
40
- implementation: c,
41
- uiFramework: l,
42
- errorFallback: f,
43
- onError: p,
44
- analytics: m,
45
- disclosuresAcceptance: h,
46
- providerLabels: g,
47
- children: /* @__PURE__ */ u(d, { ..._ })
48
- });
42
+ var ke = "—", Ae = /* @__PURE__ */ new Map(), s = "__none__";
43
+ function c(e) {
44
+ return e === s ? null : e;
45
+ }
46
+ function l(e) {
47
+ return !!(e && e !== "user");
48
+ }
49
+ function je(e) {
50
+ if (!e || typeof e != "object" || !("all" in e)) return {};
51
+ let t = e.all, n, r;
52
+ for (let e of t ?? []) {
53
+ if (!e || typeof e != "object" || !("operator" in e)) continue;
54
+ let t = e;
55
+ if (t.left_operand?.name !== "transaction.amount") continue;
56
+ let i = Number(t.right_operand);
57
+ Number.isFinite(i) && (t.operator === ">=" && (n = i), (t.operator === "<" || t.operator === "<=") && (r = i));
58
+ }
59
+ return {
60
+ greaterThanCents: n,
61
+ lessThanCents: r
62
+ };
63
+ }
64
+ function Me(e) {
65
+ for (let t of e ?? []) {
66
+ let e = t.event_data;
67
+ if (!e || typeof e != "object") continue;
68
+ let n = e, r = [t.entity_user_first_name, t.entity_user_last_name].filter((e) => !!e?.trim()).join(" ") || void 0;
69
+ if (t.event_type === "approval_action") {
70
+ let e = n.approval_source === "policy" && !n.approval_request_id, t = n.approval_source;
71
+ return {
72
+ source: e ? "auto" : typeof t == "string" ? t : void 0,
73
+ approverName: r
74
+ };
75
+ }
76
+ if (t.event_type === "status_changed" && n.approval_source != null) {
77
+ let e = n.approval_source;
78
+ return {
79
+ source: typeof e == "string" ? e : void 0,
80
+ approverName: r
81
+ };
82
+ }
83
+ }
84
+ return {};
85
+ }
86
+ function Ne(e) {
87
+ return e && "required_approval_count" in e && typeof e.required_approval_count == "number" ? e.required_approval_count : 0;
88
+ }
89
+ function Pe(e) {
90
+ for (let t of e ?? []) {
91
+ if (t.event_type !== "approval_action") continue;
92
+ let e = t.event_data;
93
+ if (!e || typeof e != "object" || !("approval_policy_name" in e)) continue;
94
+ let n = e.approval_policy_name;
95
+ if (typeof n == "string" && n) return n;
96
+ }
97
+ }
98
+ var Fe = ".pdf,.png,.jpg,.jpeg,.gif,.svg";
99
+ function Ie(e) {
100
+ return e ? e === "deleted" ? "canceled" : e : "new";
101
+ }
102
+ function Le(e, t, n) {
103
+ let r = e.find((e) => e.field === t);
104
+ return r != null && (r.amount_threshold == null || n >= r.amount_threshold);
105
+ }
106
+ function u({ open: u, onClose: Re, selectedTransactionId: ze, actionItemIds: Be, cardholderByUserId: d, labels: Ve, detailsLabels: He, cardLabels: Ue, actionsLabels: We, statusBadgeLabels: Ge, fileViewerLabels: Ke }) {
107
+ let f = {
108
+ ..._e,
109
+ ...Ve
110
+ }, [p, m] = a(0), [qe, Je] = a(!1), [h, g] = a(null), [_, v] = a(null), [y, b] = a(null), [Ye, x] = a(!1), [S, C] = a(null), w = Ee(null), T = Be ?? [], Xe = T.length > 1, E = T.length > 0 ? T[p] ?? "" : ze ?? "", { initResponse: Ze } = ee(), Qe = Ze?.userId ?? "", D = Ze?.scopes, O = Se(D), k = xe(D), $e = be(D), et = t(D, [n.ApprovalRequestUpdateOrg]), tt = !k && !et && !$e, A = ue({ transactionId: u ? E : void 0 }), j = A.data, M = j?.applied_policy_id || void 0, nt = ne({
111
+ objectType: te.Transaction,
112
+ enabled: u && !!M
113
+ }).data?.data?.find((e) => e.id === M), rt = me({ transactionId: u ? E : void 0 }), N = rt.latestRequest, P = pe({ enabled: u }), F = he(), it = fe(), I = de(), at = ae({ enabled: u && O }), ot = se({ enabled: u && O }), st = ce({ enabled: u && O }), L = le({
114
+ transactionId: u ? E : void 0,
115
+ enabled: u
116
+ }), R = Ie(j?.expense_status), z = j?.merchant_amount ?? 0, B = j?.description ?? "", ct = h?.transactionId === E ? h.value : B, lt = Le(P.requiredFields, "description", z), V = Le(P.requiredFields, "receipt_id", z), H = j?.receipt_file_url ?? "", ut = N?.caller_is_policy_approver ?? !1, dt = !!(Qe && N?.approved_by?.includes(Qe)), ft = ut && !dt, pt = $e && !ut, mt = O || R === "new" || R === "rejected", ht = j?.payment_method, U = ht?.type === "card" ? ht.details : null, gt = U ? f.cardLabel(U.card_type === "debit" ? f.debitCard : f.creditCard, U.last4 ?? "") : ke, W = j?.entity_user_id ?? "", _t = Te(() => W ? [W] : [], [W]), vt = oe({
117
+ ids: _t,
118
+ enabled: u && _t.length > 0
119
+ }).data?.data?.find((e) => e.id === W), yt = vt ? ye(vt) : d?.get(W) ?? ke, bt = !!E && (A.isPending || rt.isPending || P.isPending), xt = () => {
120
+ if (Xe && p < T.length - 1) {
121
+ m((e) => e + 1);
122
+ return;
123
+ }
124
+ G();
125
+ }, G = () => {
126
+ m(0), g(null), v(null), b(null), C(null), Re();
127
+ }, K = k && mt, q = _?.transactionId === E && _.value, J = j?.receipt_id, St = j?.ledger_account_id || s, Y = j?.department_id || s, Ct = j?.location_id || s, X = S?.transactionId === E ? S : {
128
+ transactionId: E,
129
+ glCategory: St,
130
+ department: Y,
131
+ location: Ct
132
+ }, wt = [{
133
+ value: s,
134
+ label: f.glCategoryUncategorized
135
+ }, ...(st.data?.data ?? []).map((e) => ({
136
+ value: e.id,
137
+ label: e.name ?? ""
138
+ }))], Tt = [{
139
+ value: s,
140
+ label: f.accountingNone
141
+ }, ...(at.data?.data ?? []).map((e) => ({
142
+ value: e.id,
143
+ label: e.name
144
+ }))], Et = [{
145
+ value: s,
146
+ label: f.accountingNone
147
+ }, ...(ot.data?.data ?? []).map((e) => ({
148
+ value: e.id,
149
+ label: e.name
150
+ }))], Dt = Te(() => {
151
+ let e = (L.data?.data ?? []).map((e) => ({
152
+ id: e.id,
153
+ event_type: e.event_type,
154
+ event_data: e.event_data,
155
+ timestamp: e.timestamp,
156
+ entity_user_id: e.entity_user_id,
157
+ entity_user_first_name: e.entity_user_first_name,
158
+ entity_user_last_name: e.entity_user_last_name,
159
+ recorded_by: e.recorded_by
160
+ }));
161
+ return Ce(e, d ?? Ae, we);
162
+ }, [L.data, d]), Ot = async (t) => {
163
+ try {
164
+ let e = await it.mutateAsync({ body: { file: t } });
165
+ if (!e.id) throw Error("Receipt upload returned no id");
166
+ await I.mutateAsync({
167
+ path: { receipt_id: e.id },
168
+ body: { transaction_id: E }
169
+ }), v({
170
+ transactionId: E,
171
+ value: !1
172
+ });
173
+ } catch {
174
+ e.error(f.receiptUploadFailed);
175
+ }
176
+ }, kt = async () => {
177
+ if (J) try {
178
+ await I.mutateAsync({
179
+ path: { receipt_id: J },
180
+ body: { transaction_id: null },
181
+ previousTransactionId: E
182
+ });
183
+ } catch {
184
+ e.error(f.receiptDeleteFailed);
185
+ } finally {
186
+ x(!1);
187
+ }
188
+ }, Z = je(nt?.trigger), At = Z.greaterThanCents == null ? void 0 : i(Z.greaterThanCents / 100, {
189
+ currencyCode: j?.merchant_currency,
190
+ includeSpaceAfterCurrencySymbol: !1
191
+ }), jt = Z.lessThanCents == null ? void 0 : i(Z.lessThanCents / 100, {
192
+ currencyCode: j?.merchant_currency,
193
+ includeSpaceAfterCurrencySymbol: !1
194
+ }), Mt = R === "approved" || R === "rejected" ? L.data?.data : void 0, Nt = Pe(Mt), Q = Me(Mt), $ = Ne(N), Pt = R === "approved" && (Q.source ? Q.source === "auto" : $ === 0), Ft = R === "approved" && (Q.source ? Q.source !== "auto" : $ > 0), It = Nt ?? (At || jt ? void 0 : nt?.name);
195
+ return /* @__PURE__ */ Oe(De, { children: [
196
+ /* @__PURE__ */ o("input", {
197
+ ref: w,
198
+ type: "file",
199
+ accept: Fe,
200
+ className: "ttw:hidden",
201
+ "aria-hidden": !0,
202
+ tabIndex: -1,
203
+ onChange: (e) => {
204
+ let t = e.target.files?.[0];
205
+ e.target.value = "", t && Ot(t);
206
+ }
207
+ }),
208
+ /* @__PURE__ */ o(re, {
209
+ open: u,
210
+ onClose: G,
211
+ transactionId: E,
212
+ transactionDate: r(j?.started_at?.slice(0, 10), { month: "long" }),
213
+ status: R,
214
+ hasValidationError: !!j?.has_validation_errors,
215
+ amount: i(Math.abs(z) / 100, {
216
+ currencyCode: j?.merchant_currency,
217
+ includeSpaceAfterCurrencySymbol: !1
218
+ }),
219
+ merchant: j?.merchant_name ?? "",
220
+ receiptUrl: H,
221
+ isLoading: bt,
222
+ isError: A.isError,
223
+ isClosingDisabled: qe,
224
+ cardLabel: gt,
225
+ cardName: U ? f.travelCard : void 0,
226
+ cardholder: yt,
227
+ showCardholder: !!W,
228
+ showPhysicalPill: !!U,
229
+ isDescriptionRequired: lt,
230
+ isReceiptRequired: V,
231
+ isReceiptAutoMatched: j?.source_of_data?.receipt_id === "automatched",
232
+ isReceiptActionDisabled: !K && !H,
233
+ receiptButtonLabel: H ? f.receiptAttached : q ? f.receiptSubmitWithout : K ? f.receiptAttach : f.receiptMissing,
234
+ receiptButtonIcon: H ? "receipt" : q ? "send" : "paperclip",
235
+ receiptButtonVariant: H ? "ghost" : "outline",
236
+ showNoReceiptWarning: V && !H && q,
237
+ onUploadClick: K && !H ? () => w.current?.click() : void 0,
238
+ onFileDrop: K && !H ? (e) => void Ot(e) : void 0,
239
+ onOpenReceiptInbox: K && !H ? () => b(E) : void 0,
240
+ onSubmitWithoutReceipt: K && !H ? () => v({
241
+ transactionId: E,
242
+ value: !0
243
+ }) : void 0,
244
+ onDeleteReceiptClick: K && J ? () => x(!0) : void 0,
245
+ isUploading: it.isPending || I.isPending,
246
+ descriptionValue: ct,
247
+ initialDescriptionValue: B,
248
+ onDescriptionChange: (e) => g({
249
+ transactionId: E,
250
+ value: e.target.value
251
+ }),
252
+ onSaveDescription: () => {
253
+ F.mutateAsync({
254
+ transactionId: E,
255
+ body: { description: ct || null }
256
+ }).then(() => g(null)).catch(() => {
257
+ e.error(f.memoSaveFailed);
258
+ });
259
+ },
260
+ onCancelDescription: () => g(null),
261
+ isSavingDescription: F.isPending,
262
+ isMemoEditable: k && mt,
263
+ memoBadgeLabel: j?.source_of_data?.description === "generated" ? f.memoAiAssigned : void 0,
264
+ showApprovalCard: R !== "new",
265
+ isAutoApproved: Pt,
266
+ isManuallyApproved: Ft,
267
+ approverName: Q.approverName,
268
+ rejectionReason: j?.reject_reason ?? void 0,
269
+ hasAppliedPolicy: !!M,
270
+ greaterThanValue: At,
271
+ lessThanValue: jt,
272
+ ruleLabel: It,
273
+ showAccountingCard: O,
274
+ glCategory: X.glCategory,
275
+ initialGlCategory: St,
276
+ glCategoryOptions: wt,
277
+ onGlCategoryChange: (e) => C({
278
+ ...X,
279
+ glCategory: e
280
+ }),
281
+ department: X.department,
282
+ initialDepartment: Y,
283
+ departmentOptions: Tt,
284
+ onDepartmentChange: (e) => C({
285
+ ...X,
286
+ department: e
287
+ }),
288
+ location: X.location,
289
+ initialLocation: Ct,
290
+ locationOptions: Et,
291
+ onLocationChange: (e) => C({
292
+ ...X,
293
+ location: e
294
+ }),
295
+ onSaveAccounting: () => {
296
+ F.mutateAsync({
297
+ transactionId: E,
298
+ body: {
299
+ ledger_account_id: c(X.glCategory),
300
+ department_id: c(X.department),
301
+ location_id: c(X.location)
302
+ }
303
+ }).then(() => C(null)).catch(() => {
304
+ e.error(f.accountingSaveFailed);
305
+ });
306
+ },
307
+ onCancelAccounting: () => C(null),
308
+ isSavingAccounting: F.isPending,
309
+ glCategoryHighlight: l(j?.source_of_data?.ledger_account_id),
310
+ departmentHighlight: l(j?.source_of_data?.department_id),
311
+ locationHighlight: l(j?.source_of_data?.location_id),
312
+ showAuditHistoryCard: !0,
313
+ auditHistoryRows: Dt,
314
+ isLoadingAuditHistory: L.isPending,
315
+ isAuditHistoryError: L.isError,
316
+ labels: He,
317
+ cardLabels: Ue,
318
+ statusLabels: Ge,
319
+ fileViewerLabels: Ke,
320
+ children: j && !A.isError ? /* @__PURE__ */ o(ve, {
321
+ transactionId: E,
322
+ status: R,
323
+ approvalRequestId: N?.id,
324
+ canUseApprovalRequestActions: ft,
325
+ canUseForceActions: pt,
326
+ canWrite: k,
327
+ hasOnlyViewPermission: tt,
328
+ isDisabled: lt && !B,
329
+ showNoReceiptField: V && !H && R !== "approved",
330
+ isBulkMode: Xe,
331
+ currentItem: p + 1,
332
+ totalItems: T.length,
333
+ onCompleted: xt,
334
+ onClose: G,
335
+ onPendingChange: Je,
336
+ labels: We
337
+ }, E) : null
338
+ }),
339
+ y && /* @__PURE__ */ o(ge, {
340
+ isOpen: !0,
341
+ targetTransactionId: y,
342
+ onClose: () => b(null),
343
+ onSingleTransactionUpdate: () => {
344
+ A.refetch();
345
+ }
346
+ }),
347
+ /* @__PURE__ */ o(ie, {
348
+ open: Ye,
349
+ onOpenChange: x,
350
+ isRemoving: I.isPending,
351
+ onConfirm: () => void kt(),
352
+ onCancel: () => x(!1)
353
+ })
354
+ ] });
49
355
  }
50
356
  //#endregion
51
- export { f as ExpenseManagementWidget, f as default };
357
+ export { u as TransactionDetailsFeature, u as default };
@@ -1 +1,42 @@
1
- import "./index13.js";
1
+ import { formatCalendarDate as e } from "../../../shared/util/dist/lib/formatCalendarDate.js";
2
+ import { formatMoneyExact as t } from "../../../shared/util/dist/lib/formatMoneyExact.js";
3
+ //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index14.js
4
+ var n = "—", r = "Physical";
5
+ function i(e) {
6
+ return e === "deleted" ? "canceled" : e;
7
+ }
8
+ function a(e) {
9
+ return e.type === "refund" ? `Refund from ${e.merchant_name}` : e.type === "fee" ? `Fee from ${e.merchant_name}` : e.type === "cash_withdrawal" ? `Cash withdrawal from ${e.merchant_name}` : e.merchant_name;
10
+ }
11
+ function o(e) {
12
+ let n = t(Math.abs((e.merchant_amount ?? 0) / 100), {
13
+ currencyCode: e.merchant_currency,
14
+ includeSpaceAfterCurrencySymbol: !1
15
+ });
16
+ return e.type === "refund" ? `+ ${n}` : n;
17
+ }
18
+ function s(e) {
19
+ return e ? e.type === "card" ? {
20
+ cardLabel: `••••${e.details.last4 ?? "••••"}`,
21
+ cardFormatLabel: r
22
+ } : e.type === "bank_account" ? { cardLabel: `••••${e.details.account_number?.slice(-4) ?? "••••"}` } : { cardLabel: n } : { cardLabel: n };
23
+ }
24
+ function c(t, r = {}) {
25
+ let { cardLabel: c, cardFormatLabel: l } = s(t.payment_method), u = !!t.receipt_id, d = u && t.source_of_data?.receipt_id === "automatched";
26
+ return {
27
+ id: t.id,
28
+ dateLabel: e(t.started_at?.slice(0, 10)),
29
+ status: i(t.expense_status),
30
+ hasValidationErrors: !!t.has_validation_errors,
31
+ merchantLabel: a(t),
32
+ cardholderLabel: r.cardholderLabel ?? n,
33
+ cardLabel: c,
34
+ cardFormatLabel: l,
35
+ departmentLabel: r.departmentLabel ?? n,
36
+ amountLabel: o(t),
37
+ hasReceipt: u,
38
+ isReceiptHighlighted: d
39
+ };
40
+ }
41
+ //#endregion
42
+ export { c as mapTransactionRow };
@@ -0,0 +1,143 @@
1
+ import { endOfDay as e, endOfMonth as t, endOfQuarter as n, endOfWeek as r, endOfYear as i, startOfDay as a, startOfMonth as o, startOfQuarter as s, startOfWeek as c, startOfYear as l, subDays as u, subMonths as d, subQuarters as f, subWeeks as p, subYears as m } from "date-fns";
2
+ //#region ../../libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index15.js
3
+ var h = [
4
+ {
5
+ value: "today",
6
+ label: "Today",
7
+ group: "Current"
8
+ },
9
+ {
10
+ value: "this_week",
11
+ label: "This week",
12
+ group: "Current"
13
+ },
14
+ {
15
+ value: "this_month",
16
+ label: "This month",
17
+ group: "Current"
18
+ },
19
+ {
20
+ value: "this_quarter",
21
+ label: "This quarter",
22
+ group: "Current"
23
+ },
24
+ {
25
+ value: "this_year",
26
+ label: "This year",
27
+ group: "Current"
28
+ },
29
+ {
30
+ value: "this_statement_period",
31
+ label: "This statement period",
32
+ group: "Current"
33
+ },
34
+ {
35
+ value: "yesterday",
36
+ label: "Yesterday",
37
+ group: "Past"
38
+ },
39
+ {
40
+ value: "last_week",
41
+ label: "Last week",
42
+ group: "Past"
43
+ },
44
+ {
45
+ value: "last_month",
46
+ label: "Last month",
47
+ group: "Past"
48
+ },
49
+ {
50
+ value: "last_30_days",
51
+ label: "Last 30 days",
52
+ group: "Past"
53
+ },
54
+ {
55
+ value: "last_90_days",
56
+ label: "Last 90 days",
57
+ group: "Past"
58
+ },
59
+ {
60
+ value: "last_quarter",
61
+ label: "Last quarter",
62
+ group: "Past"
63
+ },
64
+ {
65
+ value: "last_year",
66
+ label: "Last year",
67
+ group: "Past"
68
+ }
69
+ ];
70
+ function g(h) {
71
+ let g = a(/* @__PURE__ */ new Date());
72
+ switch (h) {
73
+ case "today": return {
74
+ from: g,
75
+ to: e(g)
76
+ };
77
+ case "this_week": return {
78
+ from: c(g),
79
+ to: r(g)
80
+ };
81
+ case "this_month": return {
82
+ from: o(g),
83
+ to: t(g)
84
+ };
85
+ case "this_quarter": return {
86
+ from: s(g),
87
+ to: n(g)
88
+ };
89
+ case "this_year": return {
90
+ from: l(g),
91
+ to: i(g)
92
+ };
93
+ case "this_statement_period": return {
94
+ from: o(g),
95
+ to: t(g)
96
+ };
97
+ case "yesterday": {
98
+ let t = u(g, 1);
99
+ return {
100
+ from: t,
101
+ to: e(t)
102
+ };
103
+ }
104
+ case "last_week": {
105
+ let e = c(p(g, 1));
106
+ return {
107
+ from: e,
108
+ to: r(e)
109
+ };
110
+ }
111
+ case "last_month": {
112
+ let e = o(d(g, 1));
113
+ return {
114
+ from: e,
115
+ to: t(e)
116
+ };
117
+ }
118
+ case "last_30_days": return {
119
+ from: u(g, 30),
120
+ to: g
121
+ };
122
+ case "last_90_days": return {
123
+ from: u(g, 90),
124
+ to: g
125
+ };
126
+ case "last_quarter": {
127
+ let e = s(f(g, 1));
128
+ return {
129
+ from: e,
130
+ to: n(e)
131
+ };
132
+ }
133
+ case "last_year": {
134
+ let e = l(m(g, 1));
135
+ return {
136
+ from: e,
137
+ to: i(e)
138
+ };
139
+ }
140
+ }
141
+ }
142
+ //#endregion
143
+ export { h as DATE_PRESETS, g as resolveDatePreset };