@mx-cartographer/experiences 9.4.49 → 9.4.50

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 CHANGED
@@ -1,7 +1,11 @@
1
- ## [9.4.49] - 10-01-2026
1
+ ## [9.4.50] - 10-01-2026
2
2
 
3
3
  - **FIXED** - Category rule dialog now receives screen reader focus when it opens from the category drawer (MEW-4017)
4
4
 
5
+ ## [9.4.49] - 10-01-2026
6
+
7
+ - **FIXED** - Manage Income and Manage Expenses rows now announce the account name once to screen readers (MEW-4125)
8
+
5
9
  ## [9.4.48] - 09-30-2026
6
10
 
7
11
  - **FIXED** - Add Budget drawer category list no longer renders non-list-item elements directly inside the `<ul>` (MEW-4121)
@@ -1,10 +1,10 @@
1
1
  import { useGlobalCopyStore as h } from "../../../../common/context/hooks.es.js";
2
2
  import y from "../../../../common/components/drawer/Drawer.es.js";
3
- import { RepeatingType as m } from "../../../../core/types/RepeatingTransaction.es.js";
3
+ import { RepeatingType as l } from "../../../../core/types/RepeatingTransaction.es.js";
4
4
  import { formatCurrency as x } from "../../../../core/utils/NumberFormatting.es.js";
5
5
  import { getFrequencyLabel as b } from "../../../../core/utils/RecurringTransactionsUtil.es.js";
6
6
  import { RecurringTransactionDetails as I } from "../../RecurringTransactionDetails.es.js";
7
- import d from "react";
7
+ import m from "react";
8
8
  import { observer as _ } from "mobx-react-lite";
9
9
  import o from "@mui/material/Stack";
10
10
  import { InstitutionLogo as g, MerchantLogo as w, Text as n } from "@mxenabled/mxui";
@@ -12,21 +12,21 @@ import { jsx as e, jsxs as r } from "react/jsx-runtime";
12
12
  import C from "@mui/material/ListItem";
13
13
  import L from "@mui/material/ListItemAvatar";
14
14
  import v from "@mui/material/ListItemButton";
15
- import R from "@mui/material/ListItemText";
16
- var H = _(({ onClick: u = () => {
15
+ import D from "@mui/material/ListItemText";
16
+ var H = _(({ onClick: d = () => {
17
17
  }, repeatingTransaction: t }) => {
18
- const { recurring: i } = h(), [a, c] = d.useState(!1), p = d.useMemo(() => t.transactions.length === 0 ? "" : t.transactions[0].category_guid || "", [t]), s = t.account?.displayName || "", l = t.repeating_transaction_type === m.Income, f = b(i, t, !0);
18
+ const { recurring: i } = h(), [u, c] = m.useState(!1), a = m.useMemo(() => t.transactions.length === 0 ? "" : t.transactions[0].category_guid || "", [t]), p = t.account?.displayName || "", s = t.repeating_transaction_type === l.Income, f = b(i, t, !0);
19
19
  return /* @__PURE__ */ r(C, {
20
20
  disableGutters: !0,
21
21
  disablePadding: !0,
22
22
  children: [/* @__PURE__ */ r(v, {
23
23
  onClick: () => {
24
- u(t), c(!0);
24
+ d(t), c(!0);
25
25
  },
26
26
  children: [/* @__PURE__ */ e(L, { children: /* @__PURE__ */ e(w, {
27
- categoryGuid: p,
27
+ categoryGuid: a,
28
28
  merchantGuid: t.merchant_guid || ""
29
- }) }), /* @__PURE__ */ e(R, { children: /* @__PURE__ */ r(o, {
29
+ }) }), /* @__PURE__ */ e(D, { children: /* @__PURE__ */ r(o, {
30
30
  direction: "row",
31
31
  gap: 4,
32
32
  sx: { justifyContent: "space-between" },
@@ -42,12 +42,12 @@ var H = _(({ onClick: u = () => {
42
42
  direction: "row",
43
43
  gap: 6,
44
44
  children: [t.account?.institution_guid && /* @__PURE__ */ e(g, {
45
- alt: s,
45
+ alt: "",
46
46
  institutionGuid: t.account?.institution_guid,
47
47
  size: 12
48
48
  }), /* @__PURE__ */ e(n, {
49
49
  variant: "caption",
50
- children: s
50
+ children: p
51
51
  })]
52
52
  })]
53
53
  }), /* @__PURE__ */ r(o, {
@@ -55,9 +55,9 @@ var H = _(({ onClick: u = () => {
55
55
  sx: { width: "50%" },
56
56
  children: [/* @__PURE__ */ r(n, {
57
57
  bold: !0,
58
- color: l ? "success.main" : "text.primary",
58
+ color: s ? "success.main" : "text.primary",
59
59
  variant: "body1",
60
- children: [l ? "+" : "", x(t.amount, "0,0.00")]
60
+ children: [s ? "+" : "", x(t.amount, "0,0.00")]
61
61
  }), /* @__PURE__ */ e(o, {
62
62
  direction: "row",
63
63
  sx: {
@@ -78,9 +78,9 @@ var H = _(({ onClick: u = () => {
78
78
  }) })]
79
79
  }), /* @__PURE__ */ e(y, {
80
80
  ariaLabelClose: i.close_drawer_aria,
81
- isOpen: a,
81
+ isOpen: u,
82
82
  onClose: () => c(!1),
83
- title: t.repeating_transaction_type === m.Income ? i.income_details : i.expense_details,
83
+ title: t.repeating_transaction_type === l.Income ? i.income_details : i.expense_details,
84
84
  children: /* @__PURE__ */ e(I, {
85
85
  onDeleted: () => c(!1),
86
86
  recurringTransaction: t,
@@ -1 +1 @@
1
- {"version":3,"file":"RecurringRow.es.js","names":[],"sources":["../../../../../src/recurringtransactions/components/shared/recurringsettings/RecurringRow.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { InstitutionLogo, MerchantLogo, Text } from '@mxenabled/mxui'\n\nimport { Drawer, useGlobalCopyStore } from '../../../../common'\nimport { type RepeatingTransaction, RepeatingType } from '../../../../core'\n\nimport { getFrequencyLabel } from '../../../../core/utils/RecurringTransactionsUtil'\nimport { RecurringTransactionDetails } from '../../RecurringTransactionDetails'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\ninterface RecurringRowProps {\n onClick?: (repeatingTransaction: RepeatingTransaction) => void\n repeatingTransaction: RepeatingTransaction\n}\n\nexport const RecurringRow = observer(\n ({ onClick = () => {}, repeatingTransaction }: RecurringRowProps) => {\n const { recurring: copy } = useGlobalCopyStore()\n\n const [isDetialsOpen, setIsDetailsOpen] = React.useState(false)\n\n const categoryGuid = React.useMemo(\n () =>\n repeatingTransaction.transactions.length === 0\n ? ''\n : repeatingTransaction.transactions[0].category_guid || '',\n [repeatingTransaction],\n )\n\n const institutionName = repeatingTransaction.account?.displayName || ''\n\n const isCredit = repeatingTransaction.repeating_transaction_type === RepeatingType.Income\n const statusLabel = getFrequencyLabel(copy, repeatingTransaction, true)\n\n const onItemClick = () => {\n onClick(repeatingTransaction)\n setIsDetailsOpen(true)\n }\n\n return (\n <ListItem disableGutters={true} disablePadding={true}>\n <ListItemButton onClick={onItemClick}>\n <ListItemAvatar>\n <MerchantLogo\n categoryGuid={categoryGuid}\n merchantGuid={repeatingTransaction.merchant_guid || ''}\n />\n </ListItemAvatar>\n <ListItemText>\n <Stack direction=\"row\" gap={4} sx={{ justifyContent: 'space-between' }}>\n <Stack direction=\"column\" sx={{ width: '50%' }}>\n <Text bold={true} variant=\"body1\">\n {repeatingTransaction.description}\n </Text>\n <Stack alignItems=\"center\" direction=\"row\" gap={6}>\n {repeatingTransaction.account?.institution_guid && (\n <InstitutionLogo\n alt={institutionName}\n institutionGuid={repeatingTransaction.account?.institution_guid}\n size={12}\n />\n )}\n <Text variant=\"caption\">{institutionName}</Text>\n </Stack>\n </Stack>\n\n <Stack alignItems=\"flex-end\" sx={{ width: '50%' }}>\n <Text\n bold={true}\n color={isCredit ? 'success.main' : 'text.primary'}\n variant=\"body1\"\n >\n {isCredit ? '+' : ''}\n {formatCurrency(repeatingTransaction.amount, '0,0.00')}\n </Text>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: 6,\n justifyContent: 'flex-end',\n textTransform: 'uppercase',\n width: '100%',\n }}\n >\n <Text bold={true} color=\"text.secondary\" variant=\"caption\">\n {statusLabel}\n </Text>\n </Stack>\n </Stack>\n </Stack>\n </ListItemText>\n </ListItemButton>\n\n <Drawer\n ariaLabelClose={copy.close_drawer_aria}\n isOpen={isDetialsOpen}\n onClose={() => setIsDetailsOpen(false)}\n title={\n repeatingTransaction.repeating_transaction_type === RepeatingType.Income\n ? copy.income_details\n : copy.expense_details\n }\n >\n <RecurringTransactionDetails\n onDeleted={() => setIsDetailsOpen(false)}\n recurringTransaction={repeatingTransaction}\n selectedRecurrence={null}\n />\n </Drawer>\n </ListItem>\n )\n },\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"RecurringRow.es.js","names":[],"sources":["../../../../../src/recurringtransactions/components/shared/recurringsettings/RecurringRow.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport ListItem from '@mui/material/ListItem'\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\nimport ListItemButton from '@mui/material/ListItemButton'\nimport ListItemText from '@mui/material/ListItemText'\nimport Stack from '@mui/material/Stack'\n\nimport { InstitutionLogo, MerchantLogo, Text } from '@mxenabled/mxui'\n\nimport { Drawer, useGlobalCopyStore } from '../../../../common'\nimport { type RepeatingTransaction, RepeatingType } from '../../../../core'\n\nimport { getFrequencyLabel } from '../../../../core/utils/RecurringTransactionsUtil'\nimport { RecurringTransactionDetails } from '../../RecurringTransactionDetails'\nimport { formatCurrency } from '../../../../core/utils/NumberFormatting'\n\ninterface RecurringRowProps {\n onClick?: (repeatingTransaction: RepeatingTransaction) => void\n repeatingTransaction: RepeatingTransaction\n}\n\nexport const RecurringRow = observer(\n ({ onClick = () => {}, repeatingTransaction }: RecurringRowProps) => {\n const { recurring: copy } = useGlobalCopyStore()\n\n const [isDetialsOpen, setIsDetailsOpen] = React.useState(false)\n\n const categoryGuid = React.useMemo(\n () =>\n repeatingTransaction.transactions.length === 0\n ? ''\n : repeatingTransaction.transactions[0].category_guid || '',\n [repeatingTransaction],\n )\n\n const accountDisplayName = repeatingTransaction.account?.displayName || ''\n\n const isCredit = repeatingTransaction.repeating_transaction_type === RepeatingType.Income\n const statusLabel = getFrequencyLabel(copy, repeatingTransaction, true)\n\n const onItemClick = () => {\n onClick(repeatingTransaction)\n setIsDetailsOpen(true)\n }\n\n return (\n <ListItem disableGutters={true} disablePadding={true}>\n <ListItemButton onClick={onItemClick}>\n <ListItemAvatar>\n <MerchantLogo\n categoryGuid={categoryGuid}\n merchantGuid={repeatingTransaction.merchant_guid || ''}\n />\n </ListItemAvatar>\n <ListItemText>\n <Stack direction=\"row\" gap={4} sx={{ justifyContent: 'space-between' }}>\n <Stack direction=\"column\" sx={{ width: '50%' }}>\n <Text bold={true} variant=\"body1\">\n {repeatingTransaction.description}\n </Text>\n <Stack alignItems=\"center\" direction=\"row\" gap={6}>\n {repeatingTransaction.account?.institution_guid && (\n <InstitutionLogo\n alt=\"\"\n institutionGuid={repeatingTransaction.account?.institution_guid}\n size={12}\n />\n )}\n <Text variant=\"caption\">{accountDisplayName}</Text>\n </Stack>\n </Stack>\n\n <Stack alignItems=\"flex-end\" sx={{ width: '50%' }}>\n <Text\n bold={true}\n color={isCredit ? 'success.main' : 'text.primary'}\n variant=\"body1\"\n >\n {isCredit ? '+' : ''}\n {formatCurrency(repeatingTransaction.amount, '0,0.00')}\n </Text>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: 6,\n justifyContent: 'flex-end',\n textTransform: 'uppercase',\n width: '100%',\n }}\n >\n <Text bold={true} color=\"text.secondary\" variant=\"caption\">\n {statusLabel}\n </Text>\n </Stack>\n </Stack>\n </Stack>\n </ListItemText>\n </ListItemButton>\n\n <Drawer\n ariaLabelClose={copy.close_drawer_aria}\n isOpen={isDetialsOpen}\n onClose={() => setIsDetailsOpen(false)}\n title={\n repeatingTransaction.repeating_transaction_type === RepeatingType.Income\n ? copy.income_details\n : copy.expense_details\n }\n >\n <RecurringTransactionDetails\n onDeleted={() => setIsDetailsOpen(false)}\n recurringTransaction={repeatingTransaction}\n selectedRecurrence={null}\n />\n </Drawer>\n </ListItem>\n )\n },\n)\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mx-cartographer/experiences",
3
- "version": "9.4.49",
3
+ "version": "9.4.50",
4
4
  "description": "Library containing experience widgets",
5
5
  "author": "MX",
6
6
  "license": "MIT",