@mx-cartographer/experiences 9.4.47 → 9.4.48

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,3 +1,7 @@
1
+ ## [9.4.48] - 09-30-2026
2
+
3
+ - **FIXED** - Add Budget drawer category list no longer renders non-list-item elements directly inside the `<ul>` (MEW-4121)
4
+
1
5
  ## [9.4.47] - 09-30-2026
2
6
 
3
7
  - **FIXED** - Confirmation dialogs now return screen reader focus to the row that opened them instead of stranding it (MEW-4016)
@@ -1,45 +1,46 @@
1
1
  import { useGlobalCopyStore as p } from "../../../common/context/hooks.es.js";
2
- import l from "../../../common/components/dialog/Dialog.es.js";
3
- import { formatCurrency as c } from "../../../core/utils/NumberFormatting.es.js";
4
- import { BudgetAmount as f } from "../shared/BudgetAmount.es.js";
5
- import m from "react";
6
- import { observer as A } from "mobx-react-lite";
7
- import { CategoryIcon as b, Icon as I } from "@mxenabled/mxui";
8
- import { jsx as o, jsxs as n } from "react/jsx-runtime";
9
- import h from "@mui/material/ListItem";
10
- import y from "@mui/material/ListItemAvatar";
11
- import C from "@mui/material/ListItemButton";
12
- import g from "@mui/material/ListItemText";
13
- import x from "@mui/material/ListItemSecondaryAction";
14
- var w = A(({ category: t, onAddBudget: a }) => {
15
- const { budgets: e, common: s } = p(), [d, i] = m.useState(!1), [r, u] = m.useState(`${t.totalAmount === 0 ? "" : t.totalAmount}`);
16
- return /* @__PURE__ */ n(m.Fragment, { children: [/* @__PURE__ */ o(h, { children: /* @__PURE__ */ n(C, {
17
- onClick: () => i(!0),
2
+ import c from "../../../common/components/dialog/Dialog.es.js";
3
+ import { formatCurrency as f } from "../../../core/utils/NumberFormatting.es.js";
4
+ import { BudgetAmount as A } from "../shared/BudgetAmount.es.js";
5
+ import n from "react";
6
+ import { observer as b } from "mobx-react-lite";
7
+ import { CategoryIcon as I, Icon as y } from "@mxenabled/mxui";
8
+ import { jsx as o, jsxs as a } from "react/jsx-runtime";
9
+ import C from "@mui/material/ListItem";
10
+ import h from "@mui/material/ListItemAvatar";
11
+ import _ from "@mui/material/ListItemButton";
12
+ import x from "@mui/material/ListItemText";
13
+ import B from "@mui/material/ListItemSecondaryAction";
14
+ var w = b(({ category: t, onAddBudget: s }) => {
15
+ const { budgets: m, common: d } = p(), [u, r] = n.useState(!1), [e, l] = n.useState(`${t.totalAmount === 0 ? "" : t.totalAmount}`), i = f(t.totalAmount, "0,0");
16
+ return /* @__PURE__ */ a(C, { children: [/* @__PURE__ */ a(_, {
17
+ "aria-label": `${m.add_title}: ${t.name}, ${i}`,
18
+ onClick: () => r(!0),
18
19
  children: [
19
- /* @__PURE__ */ o(y, { children: /* @__PURE__ */ o(b, { categoryGuid: t.guid }) }),
20
- /* @__PURE__ */ o(g, {
20
+ /* @__PURE__ */ o(h, { children: /* @__PURE__ */ o(I, { categoryGuid: t.guid }) }),
21
+ /* @__PURE__ */ o(x, {
21
22
  primary: t.name,
22
- secondary: c(t.totalAmount, "0,0")
23
+ secondary: i
23
24
  }),
24
- /* @__PURE__ */ o(x, { children: /* @__PURE__ */ o(I, {
25
+ /* @__PURE__ */ o(B, { children: /* @__PURE__ */ o(y, {
25
26
  name: "add",
26
27
  size: 20
27
28
  }) })
28
29
  ]
29
- }) }, t.guid), /* @__PURE__ */ o(l, {
30
+ }), /* @__PURE__ */ o(c, {
30
31
  copy: {
31
- close_aria: s.close_aria,
32
- title: e.add_title
32
+ close_aria: d.close_aria,
33
+ title: m.add_title
33
34
  },
34
- disablePrimaryButton: Number(r) <= 0,
35
- isOpen: d,
36
- onClose: () => i(!1),
37
- onPrimaryAction: () => a(t, Number(r)),
38
- primaryText: e.add_save_button,
39
- children: /* @__PURE__ */ o(f, {
40
- amount: r,
35
+ disablePrimaryButton: Number(e) <= 0,
36
+ isOpen: u,
37
+ onClose: () => r(!1),
38
+ onPrimaryAction: () => s(t, Number(e)),
39
+ primaryText: m.add_save_button,
40
+ children: /* @__PURE__ */ o(A, {
41
+ amount: e,
41
42
  categoryName: t.name,
42
- onAmountChanged: u
43
+ onAmountChanged: l
43
44
  })
44
45
  })] });
45
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"UnbudgetedRow.es.js","names":[],"sources":["../../../../src/budgets/components/addbudget/UnbudgetedRow.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 ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { CategoryIcon, Icon } from '@mxenabled/mxui'\n\nimport { Dialog, useGlobalCopyStore } from '../../../common'\nimport { type DetailedCategory } from '../../../core'\n\nimport { BudgetAmount } from '../shared/BudgetAmount'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface UnbudgetedRowProps {\n category: DetailedCategory\n onAddBudget: (category: DetailedCategory, amount: number) => void\n}\n\nexport const UnbudgetedRow: React.FC<UnbudgetedRowProps> = observer(({ category, onAddBudget }) => {\n const { budgets: copy, common: commonCopy } = useGlobalCopyStore()\n\n const [isAddBudgetOpen, setIsAddBudgetOpen] = React.useState(false)\n const [amount, setAmount] = React.useState(\n `${category.totalAmount === 0 ? '' : category.totalAmount}`,\n )\n\n return (\n <React.Fragment>\n <ListItem key={category.guid}>\n <ListItemButton onClick={() => setIsAddBudgetOpen(true)}>\n <ListItemAvatar>\n <CategoryIcon categoryGuid={category.guid} />\n </ListItemAvatar>\n <ListItemText\n primary={category.name}\n secondary={formatCurrency(category.totalAmount, '0,0')}\n />\n <ListItemSecondaryAction>\n <Icon name=\"add\" size={20} />\n </ListItemSecondaryAction>\n </ListItemButton>\n </ListItem>\n <Dialog\n copy={{ close_aria: commonCopy.close_aria, title: copy.add_title }}\n disablePrimaryButton={Number(amount) <= 0}\n isOpen={isAddBudgetOpen}\n onClose={() => setIsAddBudgetOpen(false)}\n onPrimaryAction={() => onAddBudget(category, Number(amount))}\n primaryText={copy.add_save_button}\n >\n <BudgetAmount amount={amount} categoryName={category.name} onAmountChanged={setAmount} />\n </Dialog>\n </React.Fragment>\n )\n})\n"],"mappings":";;;;;;;;;;;;;AAsBA,IAAa,IAA8C,EAAA,CAAU,EAAE,UAAA,GAAU,aAAA,EAAA,MAAkB;AACjG,QAAM,EAAE,SAAS,GAAM,QAAQ,EAAA,IAAe,EAAmB,GAE3D,CAAC,GAAiB,CAAA,IAAsB,EAAM,SAAS,EAAK,GAC5D,CAAC,GAAQ,CAAA,IAAa,EAAM,SAChC,GAAG,EAAS,gBAAgB,IAAI,KAAK,EAAS,WAAA,EAChD;AAEA,SACE,gBAAA,EAAC,EAAM,UAAP,EAAA,UAAA,CACE,gBAAA,EAAC,GAAD,EAAA,UACE,gBAAA,EAAC,GAAD;AAAA,IAAgB,SAAA,MAAe,EAAmB,EAAI;AAAA,IAAtD,UAAA;AAAA,MACE,gBAAA,EAAC,GAAD,EAAA,UACE,gBAAA,EAAC,GAAD,EAAc,cAAc,EAAS,KAAO,CAAA,EAC9B,CAAA;AAAA,MAChB,gBAAA,EAAC,GAAD;AAAA,QACE,SAAS,EAAS;AAAA,QAClB,WAAW,EAAe,EAAS,aAAa,KAAK;AAAA,MACtD,CAAA;AAAA,MACD,gBAAA,EAAC,GAAD,EAAA,UACE,gBAAA,EAAC,GAAD;AAAA,QAAM,MAAK;AAAA,QAAM,MAAM;AAAA,MAAK,CAAA,EACL,CAAA;AAAA,IACX;AAAA,EACR,CAAA,EAAA,GAbK,EAAS,IAad,GACV,gBAAA,EAAC,GAAD;AAAA,IACE,MAAM;AAAA,MAAE,YAAY,EAAW;AAAA,MAAY,OAAO,EAAK;AAAA,IAAU;AAAA,IACjE,sBAAsB,OAAO,CAAM,KAAK;AAAA,IACxC,QAAQ;AAAA,IACR,SAAA,MAAe,EAAmB,EAAK;AAAA,IACvC,iBAAA,MAAuB,EAAY,GAAU,OAAO,CAAM,CAAC;AAAA,IAC3D,aAAa,EAAK;AAAA,IAElB,UAAA,gBAAA,EAAC,GAAD;AAAA,MAAsB,QAAA;AAAA,MAAQ,cAAc,EAAS;AAAA,MAAM,iBAAiB;AAAA,IAAY,CAAA;AAAA,EAClF,CAAA,CACM,EAAA,CAAA;AAEpB,CAAC"}
1
+ {"version":3,"file":"UnbudgetedRow.es.js","names":[],"sources":["../../../../src/budgets/components/addbudget/UnbudgetedRow.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 ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction'\nimport ListItemText from '@mui/material/ListItemText'\n\nimport { CategoryIcon, Icon } from '@mxenabled/mxui'\n\nimport { Dialog, useGlobalCopyStore } from '../../../common'\nimport { type DetailedCategory } from '../../../core'\n\nimport { BudgetAmount } from '../shared/BudgetAmount'\nimport { formatCurrency } from '../../../core/utils/NumberFormatting'\n\ninterface UnbudgetedRowProps {\n category: DetailedCategory\n onAddBudget: (category: DetailedCategory, amount: number) => void\n}\n\nexport const UnbudgetedRow: React.FC<UnbudgetedRowProps> = observer(({ category, onAddBudget }) => {\n const { budgets: copy, common: commonCopy } = useGlobalCopyStore()\n\n const [isAddBudgetOpen, setIsAddBudgetOpen] = React.useState(false)\n const [amount, setAmount] = React.useState(\n `${category.totalAmount === 0 ? '' : category.totalAmount}`,\n )\n\n const formattedAmount = formatCurrency(category.totalAmount, '0,0')\n\n return (\n <ListItem>\n <ListItemButton\n aria-label={`${copy.add_title}: ${category.name}, ${formattedAmount}`}\n onClick={() => setIsAddBudgetOpen(true)}\n >\n <ListItemAvatar>\n <CategoryIcon categoryGuid={category.guid} />\n </ListItemAvatar>\n <ListItemText primary={category.name} secondary={formattedAmount} />\n <ListItemSecondaryAction>\n <Icon name=\"add\" size={20} />\n </ListItemSecondaryAction>\n </ListItemButton>\n <Dialog\n copy={{ close_aria: commonCopy.close_aria, title: copy.add_title }}\n disablePrimaryButton={Number(amount) <= 0}\n isOpen={isAddBudgetOpen}\n onClose={() => setIsAddBudgetOpen(false)}\n onPrimaryAction={() => onAddBudget(category, Number(amount))}\n primaryText={copy.add_save_button}\n >\n <BudgetAmount amount={amount} categoryName={category.name} onAmountChanged={setAmount} />\n </Dialog>\n </ListItem>\n )\n})\n"],"mappings":";;;;;;;;;;;;;AAsBA,IAAa,IAA8C,EAAA,CAAU,EAAE,UAAA,GAAU,aAAA,EAAA,MAAkB;AACjG,QAAM,EAAE,SAAS,GAAM,QAAQ,EAAA,IAAe,EAAmB,GAE3D,CAAC,GAAiB,CAAA,IAAsB,EAAM,SAAS,EAAK,GAC5D,CAAC,GAAQ,CAAA,IAAa,EAAM,SAChC,GAAG,EAAS,gBAAgB,IAAI,KAAK,EAAS,WAAA,EAChD,GAEM,IAAkB,EAAe,EAAS,aAAa,KAAK;AAElE,SACE,gBAAA,EAAC,GAAD,EAAA,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,IACE,cAAY,GAAG,EAAK,SAAA,KAAc,EAAS,IAAA,KAAS,CAAA;AAAA,IACpD,SAAA,MAAe,EAAmB,EAAI;AAAA,IAFxC,UAAA;AAAA,MAIE,gBAAA,EAAC,GAAD,EAAA,UACE,gBAAA,EAAC,GAAD,EAAc,cAAc,EAAS,KAAO,CAAA,EAC9B,CAAA;AAAA,MAChB,gBAAA,EAAC,GAAD;AAAA,QAAc,SAAS,EAAS;AAAA,QAAM,WAAW;AAAA,MAAkB,CAAA;AAAA,MACnE,gBAAA,EAAC,GAAD,EAAA,UACE,gBAAA,EAAC,GAAD;AAAA,QAAM,MAAK;AAAA,QAAM,MAAM;AAAA,MAAK,CAAA,EACL,CAAA;AAAA,IACX;AAAA,EAChB,CAAA,GAAA,gBAAA,EAAC,GAAD;AAAA,IACE,MAAM;AAAA,MAAE,YAAY,EAAW;AAAA,MAAY,OAAO,EAAK;AAAA,IAAU;AAAA,IACjE,sBAAsB,OAAO,CAAM,KAAK;AAAA,IACxC,QAAQ;AAAA,IACR,SAAA,MAAe,EAAmB,EAAK;AAAA,IACvC,iBAAA,MAAuB,EAAY,GAAU,OAAO,CAAM,CAAC;AAAA,IAC3D,aAAa,EAAK;AAAA,IAElB,UAAA,gBAAA,EAAC,GAAD;AAAA,MAAsB,QAAA;AAAA,MAAQ,cAAc,EAAS;AAAA,MAAM,iBAAiB;AAAA,IAAY,CAAA;AAAA,EAClF,CAAA,CACA,EAAA,CAAA;AAEd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mx-cartographer/experiences",
3
- "version": "9.4.47",
3
+ "version": "9.4.48",
4
4
  "description": "Library containing experience widgets",
5
5
  "author": "MX",
6
6
  "license": "MIT",