@mx-cartographer/experiences 7.12.5 → 7.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +5 -3
- package/dist/{ManageIncome-DE6JV3Mp.mjs → ManageIncome-YlYP7fi8.mjs} +2 -2
- package/dist/{RecurringSettings-CkVI8rR3.mjs → RecurringSettings-BGN0u9oW.mjs} +1 -1
- package/dist/StatusIndicator-BnYO7yL3.mjs +261 -0
- package/dist/{TransactionDetails-DWZuZgBw.mjs → TransactionDetails-DmDYs0lX.mjs} +335 -335
- package/dist/accounts/index.es.js +2 -2
- package/dist/analytics/index.es.js +7 -7
- package/dist/budgets/index.es.js +3 -3
- package/dist/cashflow/index.es.js +3 -3
- package/dist/finstrong/index.es.js +3 -3
- package/dist/insights/index.es.js +1 -1
- package/dist/recurringtransactions/index.es.js +4 -4
- package/dist/spending/index.es.js +2 -2
- package/dist/transactions/index.es.js +100 -92
- package/dist/trends/index.es.js +345 -335
- package/package.json +1 -1
- package/dist/StatusIndicator-Bo80rdKq.mjs +0 -252
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## [7.12.7] - 03-23-2026
|
|
2
|
+
|
|
3
|
+
- **FIXED** - Cosmetic issues in dark mode (flagged transactions and survey feedback)
|
|
4
|
+
|
|
5
|
+
## [7.12.6] - 03-23-2026
|
|
6
|
+
|
|
7
|
+
- **FIXED** - Trends Category List Icons Fill Color.
|
|
8
|
+
|
|
1
9
|
## [7.12.5] - 03-18-2026
|
|
2
10
|
|
|
3
11
|
- **FIXED** - ADA color contrast in BudgetDetails zero states
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
- [Getting Started](#getting-started)
|
|
2
|
-
- [Merging and Publishing](#merging-and-publishing)
|
|
2
|
+
<!-- - [Merging and Publishing](#merging-and-publishing) -->
|
|
3
3
|
- [React Library Application Template](#react-library-application-template)
|
|
4
4
|
|
|
5
5
|
|
|
@@ -12,7 +12,9 @@ In order to run the project you will need to make sure that you have yarn instal
|
|
|
12
12
|
1. The storybook project should automatically run in your local browser
|
|
13
13
|
1. The QA storybook containing the latest Experience changes is [accessible here](https://experiences.kube.qa.internal.mx/?path=/docs/experiences-introduction--docs)
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
<!-- Commented this out to prevent exposing internal operations in the npm registry -->
|
|
16
|
+
|
|
17
|
+
<!-- ## Publishing alpha versions
|
|
16
18
|
1. Bump the version in package.json using the format `major.minor.patch-alpha.<yourinitials><n>` See [the version history](https://www.npmjs.com/package/@mx-cartographer/experiences?activeTab=versions) for examples.
|
|
17
19
|
1. Run `npm publish --tag alpha`.
|
|
18
20
|
|
|
@@ -21,7 +23,7 @@ In order to run the project you will need to make sure that you have yarn instal
|
|
|
21
23
|
1. Update CHANGELOG.md and include the version to publish using the standard `major.minor.patch`. If there are breaking changes, we bump the major, new feature we bump minor and bug fixes or minor changes, we bump patch.
|
|
22
24
|
1. Request a MR review by commenting `shipit --review`
|
|
23
25
|
1. Once the MR is approved, comment `shipit --publish-version=major|minor|patch`.
|
|
24
|
-
2. Shipit will bump the version in package.json, merge and publish the package to npm.
|
|
26
|
+
2. Shipit will bump the version in package.json, merge and publish the package to npm. -->
|
|
25
27
|
|
|
26
28
|
|
|
27
29
|
## React Library Application Template
|
|
@@ -17,8 +17,8 @@ import { endOfMonth as ue } from "date-fns/endOfMonth";
|
|
|
17
17
|
import { parseISO as me } from "date-fns/parseISO";
|
|
18
18
|
import J from "@mui/material/Button";
|
|
19
19
|
import { Delete as pe, Add as ye, ReceiptLong as he } from "@mxenabled/mx-icons";
|
|
20
|
-
import { T as V, u as fe, S as ge, a as Ce } from "./StatusIndicator-
|
|
21
|
-
import { T as be } from "./TransactionDetails-
|
|
20
|
+
import { T as V, u as fe, S as ge, a as Ce } from "./StatusIndicator-BnYO7yL3.mjs";
|
|
21
|
+
import { T as be } from "./TransactionDetails-DmDYs0lX.mjs";
|
|
22
22
|
import { addYears as j } from "date-fns/addYears";
|
|
23
23
|
import { getDayOfYear as xe } from "date-fns/getDayOfYear";
|
|
24
24
|
import { setDayOfYear as Se } from "date-fns/setDayOfYear";
|
|
@@ -7,7 +7,7 @@ import R from "@mui/material/Tabs";
|
|
|
7
7
|
import d from "@mui/material/Divider";
|
|
8
8
|
import b from "@mui/material/List";
|
|
9
9
|
import T from "@mui/material/Stack";
|
|
10
|
-
import { R as C, A as S, a as E, M as v } from "./ManageIncome-
|
|
10
|
+
import { R as C, A as S, a as E, M as v } from "./ManageIncome-YlYP7fi8.mjs";
|
|
11
11
|
import { u as _, i as A, g as f } from "./hooks-BxkfR-Ff.mjs";
|
|
12
12
|
import { R as y, F as N } from "./RecurringTransactions-CYNpe_RS.mjs";
|
|
13
13
|
import { A as m } from "./Analytics-BYItVAe-.mjs";
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { jsxs as n, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import u from "react";
|
|
3
|
+
import { observer as D } from "mobx-react-lite";
|
|
4
|
+
import { useVirtualizer as B } from "@tanstack/react-virtual";
|
|
5
|
+
import b from "@mui/material/Box";
|
|
6
|
+
import H from "@mui/material/Divider";
|
|
7
|
+
import W from "@mui/material/List";
|
|
8
|
+
import { G as X, h as E, u as R, g as K } from "./hooks-BxkfR-Ff.mjs";
|
|
9
|
+
import { MerchantLogo as P, Icon as v, Text as l, P as Y, H2 as Z } from "@mxenabled/mxui";
|
|
10
|
+
import F from "@mui/material/ListItemAvatar";
|
|
11
|
+
import q from "@mui/material/ListItemText";
|
|
12
|
+
import s from "@mui/material/Stack";
|
|
13
|
+
import { useTheme as J } from "@mui/material/styles";
|
|
14
|
+
import { T as Q, L as ee, O as te } from "./Transaction-B_2AG36b.mjs";
|
|
15
|
+
import { f as re } from "./NumberFormatting-QCaNwbjv.mjs";
|
|
16
|
+
import { Receipt as oe } from "@mxenabled/mx-icons";
|
|
17
|
+
import { fromUnixTime as y } from "date-fns/fromUnixTime";
|
|
18
|
+
import { isSameDay as z } from "date-fns/isSameDay";
|
|
19
|
+
import { h as ne } from "./DateUtil-wcYTmDRD.mjs";
|
|
20
|
+
import { L as ie } from "./Loader-D3rjKx72.mjs";
|
|
21
|
+
import { A as se } from "./Analytics-BYItVAe-.mjs";
|
|
22
|
+
const C = () => {
|
|
23
|
+
if (!u.useContext(X))
|
|
24
|
+
throw new Error("useTransactionsUiStore() must be used within the GlobalDataContext");
|
|
25
|
+
return E().uiStore;
|
|
26
|
+
};
|
|
27
|
+
function ae() {
|
|
28
|
+
return window.opener && window.opener.location ? window.opener.location.toString() : document.referrer;
|
|
29
|
+
}
|
|
30
|
+
function ce(e) {
|
|
31
|
+
const r = ae().replace(/([^:]+:\/\/[^\/]+).*/, "$1"), o = window.parent || window.opener || !1;
|
|
32
|
+
return o && o.postMessage && r ? (o.postMessage(e, r), !0) : !1;
|
|
33
|
+
}
|
|
34
|
+
function le(e) {
|
|
35
|
+
return ce({
|
|
36
|
+
metadata: { beat_guid: e },
|
|
37
|
+
mx: !0,
|
|
38
|
+
type: "mx/moneyDashboard/insightOnTransaction"
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const de = ({ transaction: e, onClick: r }) => {
|
|
42
|
+
const c = J().palette.mode === "dark", { associatedBeats: m } = E(), { expandedSplits: h } = C(), { transactions: d } = R(), { showInsights: f } = C(), g = e.transaction_type === Q.CREDIT, _ = u.useMemo(() => m.find((x) => x.associated_transaction_guid === e.guid), [m, e]);
|
|
43
|
+
return (
|
|
44
|
+
//TODO: implement common/components/ListItemRow.tsx
|
|
45
|
+
/* @__PURE__ */ n(
|
|
46
|
+
ee,
|
|
47
|
+
{
|
|
48
|
+
clickEventName: te.ON_TRANSACTION_LIST_ITEM_CLICK,
|
|
49
|
+
onClick: r ? () => r(e.guid) : void 0,
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ t(F, { children: e.parent_guid && h.includes(e.parent_guid) ? /* @__PURE__ */ t(u.Fragment, {}) : /* @__PURE__ */ t(
|
|
52
|
+
P,
|
|
53
|
+
{
|
|
54
|
+
categoryGuid: e.top_level_category_guid || "",
|
|
55
|
+
merchantGuid: e.merchant_guid || ""
|
|
56
|
+
}
|
|
57
|
+
) }),
|
|
58
|
+
/* @__PURE__ */ t(
|
|
59
|
+
q,
|
|
60
|
+
{
|
|
61
|
+
disableTypography: !0,
|
|
62
|
+
secondary: /* @__PURE__ */ n(s, { direction: "row", justifyContent: "space-between", children: [
|
|
63
|
+
/* @__PURE__ */ n(s, { alignItems: "center", direction: "row", gap: 4, children: [
|
|
64
|
+
e.is_flagged && /* @__PURE__ */ t(
|
|
65
|
+
v,
|
|
66
|
+
{
|
|
67
|
+
fill: !0,
|
|
68
|
+
name: "flag",
|
|
69
|
+
size: 16,
|
|
70
|
+
sx: { color: c ? "primary.main" : "warning.dark" }
|
|
71
|
+
}
|
|
72
|
+
),
|
|
73
|
+
e.is_hidden && /* @__PURE__ */ t(v, { name: "visibility_off", size: 16 }),
|
|
74
|
+
e.has_been_split && /* @__PURE__ */ t(v, { name: "call_split", size: 16 }),
|
|
75
|
+
/* @__PURE__ */ t(l, { variant: "XSmall", children: e.has_been_split ? d.split_transaction_category_label : e.category })
|
|
76
|
+
] }),
|
|
77
|
+
_ && f && /* @__PURE__ */ t(
|
|
78
|
+
l,
|
|
79
|
+
{
|
|
80
|
+
bold: !0,
|
|
81
|
+
color: "action.active",
|
|
82
|
+
onClick: (x) => {
|
|
83
|
+
x.stopPropagation(), x.preventDefault(), le(_.guid);
|
|
84
|
+
},
|
|
85
|
+
variant: "XSmall",
|
|
86
|
+
children: _.short_title
|
|
87
|
+
}
|
|
88
|
+
)
|
|
89
|
+
] }),
|
|
90
|
+
children: /* @__PURE__ */ n(s, { direction: "row", justifyContent: "space-between", sx: { gap: 8 }, children: [
|
|
91
|
+
/* @__PURE__ */ n(l, { bold: !0, variant: "Body", children: [
|
|
92
|
+
e.is_hidden && d.hide_trnx_cancel_hidden_note,
|
|
93
|
+
e.payee || e.description || e.feed_description
|
|
94
|
+
] }),
|
|
95
|
+
/* @__PURE__ */ n(
|
|
96
|
+
l,
|
|
97
|
+
{
|
|
98
|
+
bold: !0,
|
|
99
|
+
color: g ? "success.main" : "text.primary",
|
|
100
|
+
sx: { flexShrink: 0 },
|
|
101
|
+
variant: "Body",
|
|
102
|
+
children: [
|
|
103
|
+
g ? "+" : "",
|
|
104
|
+
re(e.amount, "0,0.00")
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
] })
|
|
109
|
+
}
|
|
110
|
+
)
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
)
|
|
114
|
+
);
|
|
115
|
+
}, ue = D(de), me = ({
|
|
116
|
+
bgcolor: e = "background.default",
|
|
117
|
+
children: r
|
|
118
|
+
}) => /* @__PURE__ */ t(b, { display: "inline-block", sx: { bgcolor: e, py: 6, width: "100%" }, children: /* @__PURE__ */ t(l, { bold: !0, sx: { pl: 24 }, variant: "XSmall", children: r }) }), pe = ({ showIcon: e = !0, showSubtitle: r = !0 }) => {
|
|
119
|
+
const { transactions: o } = R();
|
|
120
|
+
return /* @__PURE__ */ n(s, { alignItems: "center", gap: 12, height: "auto", mb: 24, mt: 24, children: [
|
|
121
|
+
e && /* @__PURE__ */ t(oe, { color: "action", sx: { fontSize: 32 } }),
|
|
122
|
+
/* @__PURE__ */ t(l, { bold: !0, color: "text.secondary", variant: "Small", children: o.zero_state_no_transactions }),
|
|
123
|
+
r && /* @__PURE__ */ t(l, { color: "text.secondary", variant: "XSmall", children: o.zero_state_there_are_no_transactions })
|
|
124
|
+
] });
|
|
125
|
+
}, he = D(pe), k = (e, r) => {
|
|
126
|
+
const o = y(r[e].date), c = y(r[e - 1]?.date);
|
|
127
|
+
return !z(o, c);
|
|
128
|
+
}, fe = (e, r) => {
|
|
129
|
+
const o = y(r[e].date), c = y(r[e + 1]?.date);
|
|
130
|
+
return z(o, c);
|
|
131
|
+
}, A = 65, N = 32, ge = ({
|
|
132
|
+
bgcolor: e,
|
|
133
|
+
filter: r,
|
|
134
|
+
height: o = "calc(100dvh - 36px)",
|
|
135
|
+
loader: c = /* @__PURE__ */ t(ie, { label: "Loading", size: 40 }),
|
|
136
|
+
onClick: m,
|
|
137
|
+
showInsights: h = !1,
|
|
138
|
+
showLoader: d = !1,
|
|
139
|
+
showHiddenTransactions: f = !1,
|
|
140
|
+
transaction: g,
|
|
141
|
+
width: _ = "100%",
|
|
142
|
+
zeroState: x = /* @__PURE__ */ t(he, {})
|
|
143
|
+
}) => {
|
|
144
|
+
const { isLoading: w, sortedTransactions: I } = E(), p = u.useMemo(() => {
|
|
145
|
+
const i = r ? I.filter(r) : I, a = g ?? i;
|
|
146
|
+
return f ? a : a.filter((S) => !S.is_hidden);
|
|
147
|
+
}, [I, f]), { clearExpandedSplits: O, setShowInsights: G, toggleSplit: M } = C(), { onEvent: V } = K(), $ = (i) => {
|
|
148
|
+
const a = p.find((S) => S.guid === i);
|
|
149
|
+
if (a?.has_been_split) {
|
|
150
|
+
M(a.guid);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
V(se.ACCOUNT_DETAILS_CLICK_TRANSACTION, {
|
|
154
|
+
account_guid: a?.account_guid,
|
|
155
|
+
transaction_guid: i
|
|
156
|
+
}), m?.(i);
|
|
157
|
+
}, L = u.useRef(null), T = B({
|
|
158
|
+
count: p.length,
|
|
159
|
+
getScrollElement: () => L.current,
|
|
160
|
+
estimateSize: (i) => A + (k(i, p) ? N : 0),
|
|
161
|
+
overscan: 5
|
|
162
|
+
});
|
|
163
|
+
return u.useEffect(() => T.measure(), [p]), u.useEffect(() => G(h), [h]), u.useEffect(() => () => O(), []), /* @__PURE__ */ t(W, { sx: { width: _ }, children: /* @__PURE__ */ t(b, { height: o, overflow: "auto", ref: L, width: _, children: /* @__PURE__ */ n(
|
|
164
|
+
b,
|
|
165
|
+
{
|
|
166
|
+
height: (
|
|
167
|
+
// set the height to auto when there are no transactions so the zero state isn't set to 0
|
|
168
|
+
T.getVirtualItems().length === 0 ? "auto" : T.getTotalSize()
|
|
169
|
+
),
|
|
170
|
+
position: "relative",
|
|
171
|
+
width: "100%",
|
|
172
|
+
children: [
|
|
173
|
+
(w || d) && c,
|
|
174
|
+
!w && !d && T.getVirtualItems().length === 0 && x,
|
|
175
|
+
!w && !d && T.getVirtualItems().length > 0 && T.getVirtualItems().map((i) => {
|
|
176
|
+
const a = p[i.index], S = k(i.index, p), U = fe(i.index, p), j = A + (S ? N : 0);
|
|
177
|
+
return /* @__PURE__ */ n(
|
|
178
|
+
b,
|
|
179
|
+
{
|
|
180
|
+
sx: {
|
|
181
|
+
height: j,
|
|
182
|
+
position: "absolute",
|
|
183
|
+
transform: `translateY(${i.start}px)`,
|
|
184
|
+
width: "100%",
|
|
185
|
+
bgcolor: "background.paper"
|
|
186
|
+
},
|
|
187
|
+
children: [
|
|
188
|
+
S && /* @__PURE__ */ t(me, { bgcolor: e, children: ne(a.date) }),
|
|
189
|
+
/* @__PURE__ */ t(
|
|
190
|
+
ue,
|
|
191
|
+
{
|
|
192
|
+
...m && { onClick: $ },
|
|
193
|
+
transaction: a
|
|
194
|
+
}
|
|
195
|
+
),
|
|
196
|
+
/* @__PURE__ */ t(H, { sx: { ml: U ? 68 : 0 } })
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
a.guid
|
|
200
|
+
);
|
|
201
|
+
})
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
) }) });
|
|
205
|
+
}, $e = D(ge), _e = ({
|
|
206
|
+
amount: e,
|
|
207
|
+
borderRadius: r = "2px",
|
|
208
|
+
completeColor: o = "success.main",
|
|
209
|
+
icon: c,
|
|
210
|
+
label: m,
|
|
211
|
+
leftLabel: h,
|
|
212
|
+
percentComplete: d = 0,
|
|
213
|
+
rightLabel: f,
|
|
214
|
+
sx: g
|
|
215
|
+
}) => /* @__PURE__ */ t(s, { sx: { p: 24, width: "100%", ...g }, children: /* @__PURE__ */ n(s, { className: "details-container", sx: { gap: 16 }, children: [
|
|
216
|
+
/* @__PURE__ */ n(s, { sx: { alignItems: "center", flexDirection: "row", gap: 12 }, children: [
|
|
217
|
+
/* @__PURE__ */ t(b, { children: c }),
|
|
218
|
+
/* @__PURE__ */ n(s, { children: [
|
|
219
|
+
/* @__PURE__ */ t(Y, { variant: "body2", children: m }),
|
|
220
|
+
typeof e == "string" ? /* @__PURE__ */ t(Z, { children: e }) : e
|
|
221
|
+
] })
|
|
222
|
+
] }),
|
|
223
|
+
/* @__PURE__ */ n(s, { sx: { gap: 4 }, children: [
|
|
224
|
+
/* @__PURE__ */ t(
|
|
225
|
+
s,
|
|
226
|
+
{
|
|
227
|
+
sx: {
|
|
228
|
+
bgcolor: "divider",
|
|
229
|
+
borderRadius: r,
|
|
230
|
+
flexDirection: "row",
|
|
231
|
+
height: 16,
|
|
232
|
+
width: "100%"
|
|
233
|
+
},
|
|
234
|
+
children: /* @__PURE__ */ t(
|
|
235
|
+
b,
|
|
236
|
+
{
|
|
237
|
+
sx: {
|
|
238
|
+
bgcolor: o,
|
|
239
|
+
borderRadius: r,
|
|
240
|
+
height: 16,
|
|
241
|
+
width: `${d}%`
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
)
|
|
245
|
+
}
|
|
246
|
+
),
|
|
247
|
+
/* @__PURE__ */ n(s, { sx: { flexDirection: "row", justifyContent: "space-between" }, children: [
|
|
248
|
+
/* @__PURE__ */ t(l, { variant: "body2", children: h }),
|
|
249
|
+
/* @__PURE__ */ t(l, { variant: "body2", children: f })
|
|
250
|
+
] })
|
|
251
|
+
] })
|
|
252
|
+
] }) }), Ue = _e;
|
|
253
|
+
export {
|
|
254
|
+
me as S,
|
|
255
|
+
$e as T,
|
|
256
|
+
ue as a,
|
|
257
|
+
Ue as b,
|
|
258
|
+
fe as h,
|
|
259
|
+
k as s,
|
|
260
|
+
C as u
|
|
261
|
+
};
|