@mx-cartographer/experiences 9.4.55 → 9.4.56
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 +4 -0
- package/dist/budgets/components/budgetdetails/BudgetDetails.es.js +14 -11
- package/dist/budgets/components/budgetdetails/BudgetDetails.es.js.map +1 -1
- package/dist/budgets/components/budgetdetails/SubBudgetList.d.ts +4 -2
- package/dist/budgets/components/budgetdetails/SubBudgetList.es.js +37 -34
- package/dist/budgets/components/budgetdetails/SubBudgetList.es.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## [9.4.56] - 10-06-2026
|
|
2
|
+
|
|
3
|
+
- **FIXED** - Transactions in the Sub Budget drawer now open the Transaction Details drawer when clicked MEW-4015
|
|
4
|
+
|
|
1
5
|
## [9.4.55] - 10-05-2026
|
|
2
6
|
|
|
3
7
|
- **FIXED** - Color contrast in the Transaction Details calendar and Cancel buttons MEW-4123
|
|
@@ -6,7 +6,7 @@ import A from "../../../transactions/components/shared/TransactionList.es.js";
|
|
|
6
6
|
import E from "../../../transactions/components/shared/TransactionDetails.es.js";
|
|
7
7
|
import { Header as W } from "./Header.es.js";
|
|
8
8
|
import { SubBudgetList as H } from "./SubBudgetList.es.js";
|
|
9
|
-
import
|
|
9
|
+
import c from "react";
|
|
10
10
|
import { observer as M } from "mobx-react-lite";
|
|
11
11
|
import e from "@mui/material/Stack";
|
|
12
12
|
import { Icon as O } from "@mxenabled/mxui";
|
|
@@ -14,18 +14,18 @@ import R from "@mui/material/Button";
|
|
|
14
14
|
import { jsx as t, jsxs as r } from "react/jsx-runtime";
|
|
15
15
|
import p from "@mui/material/Tab";
|
|
16
16
|
import V from "@mui/material/Tabs";
|
|
17
|
-
var st = M(({ budget:
|
|
18
|
-
const { is_mobile_webview: u } = k(), { setAlert: f } = D(), { budgets: o, common: b, transactions: h } = j(), { isDesktop:
|
|
17
|
+
var st = M(({ budget: l }) => {
|
|
18
|
+
const { is_mobile_webview: u } = k(), { setAlert: f } = D(), { budgets: o, common: b, transactions: h } = j(), { isDesktop: T, isSmallTablet: _, isTablet: C } = I(), { sortedTransactions: s, sortedTransactionsWithSplits: g, tags: S } = G(), [a, v] = c.useState(0), [m, n] = c.useState(""), i = c.useMemo(() => s.find((d) => d.guid === m), [m, s]), x = (d, B) => {
|
|
19
19
|
v(B);
|
|
20
20
|
}, w = () => {
|
|
21
|
-
z(
|
|
21
|
+
z(g, S), f({
|
|
22
22
|
msg: o.alert_csv_downloaded,
|
|
23
23
|
severity: "success"
|
|
24
24
|
});
|
|
25
|
-
}, y = s.length > 0 && !u && (
|
|
25
|
+
}, y = s.length > 0 && !u && (T || C && !_);
|
|
26
26
|
return /* @__PURE__ */ r(e, {
|
|
27
27
|
gap: 24,
|
|
28
|
-
children: [/* @__PURE__ */ t(W, { budget:
|
|
28
|
+
children: [/* @__PURE__ */ t(W, { budget: l }), /* @__PURE__ */ r(e, { children: [
|
|
29
29
|
/* @__PURE__ */ r(V, {
|
|
30
30
|
onChange: x,
|
|
31
31
|
sx: { width: "100%" },
|
|
@@ -49,15 +49,18 @@ var st = M(({ budget: c }) => {
|
|
|
49
49
|
})
|
|
50
50
|
}), /* @__PURE__ */ t(A, {
|
|
51
51
|
height: "100%",
|
|
52
|
-
onClick:
|
|
52
|
+
onClick: n
|
|
53
53
|
})] }),
|
|
54
|
-
a === 1 && /* @__PURE__ */ t(H, {
|
|
54
|
+
a === 1 && /* @__PURE__ */ t(H, {
|
|
55
|
+
budget: l,
|
|
56
|
+
onTransactionClick: n
|
|
57
|
+
}),
|
|
55
58
|
/* @__PURE__ */ t(L, {
|
|
56
59
|
ariaLabelClose: b.close_aria,
|
|
57
|
-
isOpen: !!
|
|
58
|
-
onClose: () =>
|
|
60
|
+
isOpen: !!i,
|
|
61
|
+
onClose: () => n(""),
|
|
59
62
|
title: o.details_transaction_drawer,
|
|
60
|
-
children:
|
|
63
|
+
children: i && /* @__PURE__ */ t(E, { transaction: i })
|
|
61
64
|
})
|
|
62
65
|
] })]
|
|
63
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BudgetDetails.es.js","names":[],"sources":["../../../../src/budgets/components/budgetdetails/BudgetDetails.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { Icon } from '@mxenabled/mxui'\n\nimport {\n Drawer,\n useAppConfig,\n useBudgetsStore,\n useGlobalCopyStore,\n useScreenSize,\n useTransactionStore,\n} from '../../../common'\nimport { type DetailedBudget } from '../../../core'\nimport { exportTransactionsToCSV } from '../../../core/utils/TransactionUtils'\n\nimport { TransactionDetails, TransactionList } from '../../../transactions'\n\nimport { Header } from './Header'\nimport { SubBudgetList } from './SubBudgetList'\n\ninterface BudgetDetailsProps {\n budget: DetailedBudget\n}\n\nexport const BudgetDetails: React.FC<BudgetDetailsProps> = observer(({ budget }) => {\n const { is_mobile_webview } = useAppConfig()\n const { setAlert } = useBudgetsStore()\n const { budgets: copy, common: commonCopy, transactions: transactionCopy } = useGlobalCopyStore()\n const { isDesktop, isSmallTablet, isTablet } = useScreenSize()\n const {\n sortedTransactions: transactions,\n sortedTransactionsWithSplits,\n tags,\n } = useTransactionStore()\n\n const [selectedTab, setSelectedTab] = React.useState(0)\n const [transactionGuid, setTransactionGuid] = React.useState('')\n\n const transaction = React.useMemo(\n () => transactions.find((t) => t.guid === transactionGuid),\n [transactionGuid, transactions],\n )\n\n const handleTabChange = (_event: React.SyntheticEvent, newValue: number) => {\n setSelectedTab(newValue)\n }\n\n const handleExportToCsv = () => {\n exportTransactionsToCSV(sortedTransactionsWithSplits, tags)\n setAlert({ msg: copy.alert_csv_downloaded, severity: 'success' })\n }\n\n const shouldShowExportButton =\n transactions.length > 0 && !is_mobile_webview && (isDesktop || (isTablet && !isSmallTablet))\n\n return (\n <Stack gap={24}>\n <Header budget={budget} />\n\n <Stack>\n <Tabs\n onChange={handleTabChange}\n sx={{ width: '100%' }}\n textColor=\"primary\"\n value={selectedTab}\n variant=\"fullWidth\"\n >\n <Tab label={copy.details_transactions_tab} />\n <Tab label={copy.details_subbudgets_tab} />\n </Tabs>\n {selectedTab === 0 && (\n <Stack>\n {shouldShowExportButton && (\n <Stack direction=\"row\" justifyContent=\"right\" mb={-24} mr={8} mt={8} zIndex={1}>\n <Button\n onClick={handleExportToCsv}\n startIcon={<Icon name=\"ios_share\" />}\n variant=\"text\"\n >\n {transactionCopy.export_csv_btn}\n </Button>\n </Stack>\n )}\n <TransactionList height=\"100%\" onClick={setTransactionGuid} />\n </Stack>\n )}\n {selectedTab === 1 && <SubBudgetList budget={budget}
|
|
1
|
+
{"version":3,"file":"BudgetDetails.es.js","names":[],"sources":["../../../../src/budgets/components/budgetdetails/BudgetDetails.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Button from '@mui/material/Button'\nimport Stack from '@mui/material/Stack'\nimport Tab from '@mui/material/Tab'\nimport Tabs from '@mui/material/Tabs'\n\nimport { Icon } from '@mxenabled/mxui'\n\nimport {\n Drawer,\n useAppConfig,\n useBudgetsStore,\n useGlobalCopyStore,\n useScreenSize,\n useTransactionStore,\n} from '../../../common'\nimport { type DetailedBudget } from '../../../core'\nimport { exportTransactionsToCSV } from '../../../core/utils/TransactionUtils'\n\nimport { TransactionDetails, TransactionList } from '../../../transactions'\n\nimport { Header } from './Header'\nimport { SubBudgetList } from './SubBudgetList'\n\ninterface BudgetDetailsProps {\n budget: DetailedBudget\n}\n\nexport const BudgetDetails: React.FC<BudgetDetailsProps> = observer(({ budget }) => {\n const { is_mobile_webview } = useAppConfig()\n const { setAlert } = useBudgetsStore()\n const { budgets: copy, common: commonCopy, transactions: transactionCopy } = useGlobalCopyStore()\n const { isDesktop, isSmallTablet, isTablet } = useScreenSize()\n const {\n sortedTransactions: transactions,\n sortedTransactionsWithSplits,\n tags,\n } = useTransactionStore()\n\n const [selectedTab, setSelectedTab] = React.useState(0)\n const [transactionGuid, setTransactionGuid] = React.useState('')\n\n const transaction = React.useMemo(\n () => transactions.find((t) => t.guid === transactionGuid),\n [transactionGuid, transactions],\n )\n\n const handleTabChange = (_event: React.SyntheticEvent, newValue: number) => {\n setSelectedTab(newValue)\n }\n\n const handleExportToCsv = () => {\n exportTransactionsToCSV(sortedTransactionsWithSplits, tags)\n setAlert({ msg: copy.alert_csv_downloaded, severity: 'success' })\n }\n\n const shouldShowExportButton =\n transactions.length > 0 && !is_mobile_webview && (isDesktop || (isTablet && !isSmallTablet))\n\n return (\n <Stack gap={24}>\n <Header budget={budget} />\n\n <Stack>\n <Tabs\n onChange={handleTabChange}\n sx={{ width: '100%' }}\n textColor=\"primary\"\n value={selectedTab}\n variant=\"fullWidth\"\n >\n <Tab label={copy.details_transactions_tab} />\n <Tab label={copy.details_subbudgets_tab} />\n </Tabs>\n {selectedTab === 0 && (\n <Stack>\n {shouldShowExportButton && (\n <Stack direction=\"row\" justifyContent=\"right\" mb={-24} mr={8} mt={8} zIndex={1}>\n <Button\n onClick={handleExportToCsv}\n startIcon={<Icon name=\"ios_share\" />}\n variant=\"text\"\n >\n {transactionCopy.export_csv_btn}\n </Button>\n </Stack>\n )}\n <TransactionList height=\"100%\" onClick={setTransactionGuid} />\n </Stack>\n )}\n {selectedTab === 1 && (\n <SubBudgetList budget={budget} onTransactionClick={setTransactionGuid} />\n )}\n\n <Drawer\n ariaLabelClose={commonCopy.close_aria}\n isOpen={Boolean(transaction)}\n onClose={() => setTransactionGuid('')}\n title={copy.details_transaction_drawer}\n >\n {transaction && <TransactionDetails transaction={transaction} />}\n </Drawer>\n </Stack>\n </Stack>\n )\n})\n"],"mappings":";;;;;;;;;;;;;;;;AA8BA,IAAa,KAA8C,EAAA,CAAU,EAAE,QAAA,EAAA,MAAa;AAClF,QAAM,EAAE,mBAAA,EAAA,IAAsB,EAAa,GACrC,EAAE,UAAA,EAAA,IAAa,EAAgB,GAC/B,EAAE,SAAS,GAAM,QAAQ,GAAY,cAAc,EAAA,IAAoB,EAAmB,GAC1F,EAAE,WAAA,GAAW,eAAA,GAAe,UAAA,EAAA,IAAa,EAAc,GACvD,EACJ,oBAAoB,GACpB,8BAAA,GACA,MAAA,EAAA,IACE,EAAoB,GAElB,CAAC,GAAa,CAAA,IAAkB,EAAM,SAAS,CAAC,GAChD,CAAC,GAAiB,CAAA,IAAsB,EAAM,SAAS,EAAE,GAEzD,IAAc,EAAM,QAAA,MAClB,EAAa,KAAA,CAAM,MAAM,EAAE,SAAS,CAAe,GACzD,CAAC,GAAiB,CAAY,CAChC,GAEM,IAAA,CAAmB,GAA8B,MAAqB;AAC1E,IAAA,EAAe,CAAQ;AAAA,EACzB,GAEM,IAAA,MAA0B;AAC9B,IAAA,EAAwB,GAA8B,CAAI,GAC1D,EAAS;AAAA,MAAE,KAAK,EAAK;AAAA,MAAsB,UAAU;AAAA,IAAU,CAAC;AAAA,EAClE,GAEM,IACJ,EAAa,SAAS,KAAK,CAAC,MAAsB,KAAc,KAAY,CAAC;AAE/E,SACE,gBAAA,EAAC,GAAD;AAAA,IAAO,KAAK;AAAA,IAAZ,UAAA,CACE,gBAAA,EAAC,GAAD,EAAgB,QAAA,EAAS,CAAA,GAEzB,gBAAA,EAAC,GAAD,EAAA,UAAA;AAAA,MACE,gBAAA,EAAC,GAAD;AAAA,QACE,UAAU;AAAA,QACV,IAAI,EAAE,OAAO,OAAO;AAAA,QACpB,WAAU;AAAA,QACV,OAAO;AAAA,QACP,SAAQ;AAAA,QALV,UAAA,CAOE,gBAAA,EAAC,GAAD,EAAK,OAAO,EAAK,yBAA2B,CAAA,GAC5C,gBAAA,EAAC,GAAD,EAAK,OAAO,EAAK,uBAAyB,CAAA,CACtC;AAAA;MACL,MAAgB,KACf,gBAAA,EAAC,GAAD,EAAA,UAAA,CACG,KACC,gBAAA,EAAC,GAAD;AAAA,QAAO,WAAU;AAAA,QAAM,gBAAe;AAAA,QAAQ,IAAI;AAAA,QAAK,IAAI;AAAA,QAAG,IAAI;AAAA,QAAG,QAAQ;AAAA,QAC3E,UAAA,gBAAA,EAAC,GAAD;AAAA,UACE,SAAS;AAAA,UACT,WAAW,gBAAA,EAAC,GAAD,EAAM,MAAK,YAAa,CAAA;AAAA,UACnC,SAAQ;AAAA,UAEP,UAAA,EAAgB;AAAA,QACX,CAAA;AAAA,MACH,CAAA,GAET,gBAAA,EAAC,GAAD;AAAA,QAAiB,QAAO;AAAA,QAAO,SAAS;AAAA,MAAqB,CAAA,CACxD,EAAA,CAAA;AAAA,MAER,MAAgB,KACf,gBAAA,EAAC,GAAD;AAAA,QAAuB,QAAA;AAAA,QAAQ,oBAAoB;AAAA,MAAqB,CAAA;AAAA,MAG1E,gBAAA,EAAC,GAAD;AAAA,QACE,gBAAgB,EAAW;AAAA,QAC3B,QAAQ,EAAQ;AAAA,QAChB,SAAA,MAAe,EAAmB,EAAE;AAAA,QACpC,OAAO,EAAK;AAAA,QAEX,UAAA,KAAe,gBAAA,EAAC,GAAD,EAAiC,aAAA,EAAc,CAAA;AAAA,MACzD,CAAA;AAAA,IACH,EAAA,CAAA,CACF;AAAA;AAEX,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
1
|
import { DetailedBudget } from '../../../core';
|
|
3
2
|
interface SubBudgetListProps {
|
|
4
3
|
budget: DetailedBudget;
|
|
4
|
+
onTransactionClick: (guid: string) => void;
|
|
5
5
|
}
|
|
6
|
-
export declare const SubBudgetList:
|
|
6
|
+
export declare const SubBudgetList: (({ budget, onTransactionClick }: SubBudgetListProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
7
|
+
displayName: string;
|
|
8
|
+
};
|
|
7
9
|
export {};
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { buildDynamicCopy as
|
|
2
|
-
import { useBudgetsStore as
|
|
1
|
+
import { buildDynamicCopy as d } from "../../../core/utils/Localization.es.js";
|
|
2
|
+
import { useBudgetsStore as T, useGlobalCopyStore as N, useTransactionStore as k } from "../../../common/context/hooks.es.js";
|
|
3
3
|
import b from "../../../common/components/dialog/Dialog.es.js";
|
|
4
4
|
import w from "../../../common/components/drawer/Drawer.es.js";
|
|
5
5
|
import F from "../../../transactions/components/shared/TransactionList.es.js";
|
|
6
6
|
import { BudgetAmount as L } from "../shared/BudgetAmount.es.js";
|
|
7
7
|
import { Header as P } from "./Header.es.js";
|
|
8
|
-
import { SubBudgetZeroState as
|
|
9
|
-
import { SubBudgetRow as
|
|
10
|
-
import { AddSubBudget as
|
|
8
|
+
import { SubBudgetZeroState as E } from "../budgetlist/SubBudgetZeroState.es.js";
|
|
9
|
+
import { SubBudgetRow as j } from "../budgetlist/SubBudgetRow.es.js";
|
|
10
|
+
import { AddSubBudget as I } from "./AddSubBudget.es.js";
|
|
11
11
|
import i from "react";
|
|
12
|
-
import { observer as
|
|
13
|
-
import
|
|
14
|
-
import { Text as
|
|
12
|
+
import { observer as R } from "mobx-react-lite";
|
|
13
|
+
import $ from "@mui/material/Stack";
|
|
14
|
+
import { Text as G } from "@mxenabled/mxui";
|
|
15
15
|
import { jsx as r, jsxs as s } from "react/jsx-runtime";
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
var
|
|
19
|
-
const { category:
|
|
16
|
+
import H from "@mui/material/Divider";
|
|
17
|
+
import M from "@mui/material/List";
|
|
18
|
+
var se = R(({ budget: n, onTransactionClick: h }) => {
|
|
19
|
+
const { category: S, subBudgets: u } = n, { budgets: o, common: l } = N(), { deleteBudget: B, selectedSubBudget: e, setAlert: g, setSelectedSubBudget: C, updateBudget: x } = T(), { filter: p, setFilter: y } = k(), [v, m] = i.useState(!1), [A, c] = i.useState(!1), [a, f] = i.useState("");
|
|
20
20
|
i.useEffect(() => {
|
|
21
21
|
e && (f(`${e.amount}`), y({
|
|
22
22
|
...p,
|
|
23
23
|
custom: (t) => t.category_guid === e.category_guid
|
|
24
24
|
}));
|
|
25
25
|
}, [e]);
|
|
26
|
-
const
|
|
26
|
+
const D = async () => {
|
|
27
27
|
if (e) {
|
|
28
|
-
const t = await
|
|
28
|
+
const t = await x({
|
|
29
29
|
...e,
|
|
30
30
|
amount: Number(a)
|
|
31
31
|
});
|
|
32
32
|
m(!1), t || g({
|
|
33
|
-
msg:
|
|
33
|
+
msg: d(o.error_alert_edit_merchant_budget, e.category.name),
|
|
34
34
|
severity: "error"
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
},
|
|
37
|
+
}, O = async () => {
|
|
38
38
|
if (e) {
|
|
39
|
-
const t = await
|
|
40
|
-
|
|
41
|
-
msg:
|
|
39
|
+
const t = await B(e.guid);
|
|
40
|
+
c(!1), t ? _() : g({
|
|
41
|
+
msg: d(o.error_alert_delete_merchant_budget, e.category.name),
|
|
42
42
|
severity: "error"
|
|
43
43
|
});
|
|
44
44
|
}
|
|
@@ -46,13 +46,13 @@ var ae = I(({ budget: n }) => {
|
|
|
46
46
|
y({
|
|
47
47
|
...p,
|
|
48
48
|
custom: (t) => t.category_guid === n.category_guid || t.top_level_category_guid === n.category_guid
|
|
49
|
-
}),
|
|
49
|
+
}), C(void 0);
|
|
50
50
|
};
|
|
51
51
|
return /* @__PURE__ */ s(i.Fragment, { children: [
|
|
52
|
-
/* @__PURE__ */ s(
|
|
52
|
+
/* @__PURE__ */ s(M, {
|
|
53
53
|
sx: { bgcolor: "background.paper" },
|
|
54
|
-
children: [u.length === 0 ? /* @__PURE__ */ r(
|
|
55
|
-
category:
|
|
54
|
+
children: [u.length === 0 ? /* @__PURE__ */ r(E, {}) : u.map((t) => /* @__PURE__ */ s(i.Fragment, { children: [/* @__PURE__ */ r(j, { budget: t }), /* @__PURE__ */ r(H, {})] }, t.guid)), /* @__PURE__ */ r(I, {
|
|
55
|
+
category: S,
|
|
56
56
|
parentBudget: n
|
|
57
57
|
})]
|
|
58
58
|
}),
|
|
@@ -61,13 +61,16 @@ var ae = I(({ budget: n }) => {
|
|
|
61
61
|
isOpen: !!e,
|
|
62
62
|
onClose: _,
|
|
63
63
|
onPrimaryAction: () => m(!0),
|
|
64
|
-
onSecondaryAction: () =>
|
|
64
|
+
onSecondaryAction: () => c(!0),
|
|
65
65
|
primaryText: o.details_edit_button,
|
|
66
66
|
secondaryText: o.details_delete_button,
|
|
67
67
|
title: o.details_title,
|
|
68
|
-
children: e && /* @__PURE__ */ s(
|
|
68
|
+
children: e && /* @__PURE__ */ s($, {
|
|
69
69
|
gap: 24,
|
|
70
|
-
children: [/* @__PURE__ */ r(P, { budget: e }), /* @__PURE__ */ r(F, {
|
|
70
|
+
children: [/* @__PURE__ */ r(P, { budget: e }), /* @__PURE__ */ r(F, {
|
|
71
|
+
height: "100%",
|
|
72
|
+
onClick: h
|
|
73
|
+
})]
|
|
71
74
|
})
|
|
72
75
|
}),
|
|
73
76
|
e && /* @__PURE__ */ s(i.Fragment, { children: [/* @__PURE__ */ r(b, {
|
|
@@ -76,9 +79,9 @@ var ae = I(({ budget: n }) => {
|
|
|
76
79
|
title: o.details_edit_title_subbudget
|
|
77
80
|
},
|
|
78
81
|
disablePrimaryButton: a === "" || Number(a) < 0 || isNaN(Number(a)),
|
|
79
|
-
isOpen:
|
|
82
|
+
isOpen: v,
|
|
80
83
|
onClose: () => m(!1),
|
|
81
|
-
onPrimaryAction:
|
|
84
|
+
onPrimaryAction: D,
|
|
82
85
|
primaryText: o.edit_save_button,
|
|
83
86
|
sx: { "& .MuiStack-root:first-of-type": { pb: 8 } },
|
|
84
87
|
children: /* @__PURE__ */ r(L, {
|
|
@@ -91,21 +94,21 @@ var ae = I(({ budget: n }) => {
|
|
|
91
94
|
close_aria: l.close_aria,
|
|
92
95
|
title: o.delete_title
|
|
93
96
|
},
|
|
94
|
-
isOpen:
|
|
95
|
-
onClose: () =>
|
|
96
|
-
onPrimaryAction:
|
|
97
|
+
isOpen: A,
|
|
98
|
+
onClose: () => c(!1),
|
|
99
|
+
onPrimaryAction: O,
|
|
97
100
|
primaryColor: "error",
|
|
98
101
|
primaryText: "Delete",
|
|
99
102
|
secondaryColor: "inherit",
|
|
100
|
-
children: /* @__PURE__ */ r(
|
|
103
|
+
children: /* @__PURE__ */ r(G, {
|
|
101
104
|
variant: "subtitle1",
|
|
102
|
-
children:
|
|
105
|
+
children: d(o.delete_description, e.category.name)
|
|
103
106
|
})
|
|
104
107
|
})] })
|
|
105
108
|
] });
|
|
106
109
|
});
|
|
107
110
|
export {
|
|
108
|
-
|
|
111
|
+
se as SubBudgetList
|
|
109
112
|
};
|
|
110
113
|
|
|
111
114
|
//# sourceMappingURL=SubBudgetList.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubBudgetList.es.js","names":[],"sources":["../../../../src/budgets/components/budgetdetails/SubBudgetList.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport {\n Dialog,\n Drawer,\n useBudgetsStore,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../common'\nimport { type Budget, type DetailedBudget, type Transaction } from '../../../core'\n\nimport { TransactionList } from '../../../transactions'\n\nimport { SubBudgetZeroState } from '../budgetlist/SubBudgetZeroState'\nimport { SubBudgetRow } from '../budgetlist/SubBudgetRow'\nimport { BudgetAmount } from '../shared/BudgetAmount'\nimport { AddSubBudget } from './AddSubBudget'\nimport { Header } from './Header'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface SubBudgetListProps {\n budget: DetailedBudget\n}\n\nexport const SubBudgetList
|
|
1
|
+
{"version":3,"file":"SubBudgetList.es.js","names":[],"sources":["../../../../src/budgets/components/budgetdetails/SubBudgetList.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Divider from '@mui/material/Divider'\nimport List from '@mui/material/List'\nimport Stack from '@mui/material/Stack'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport {\n Dialog,\n Drawer,\n useBudgetsStore,\n useGlobalCopyStore,\n useTransactionStore,\n} from '../../../common'\nimport { type Budget, type DetailedBudget, type Transaction } from '../../../core'\n\nimport { TransactionList } from '../../../transactions'\n\nimport { SubBudgetZeroState } from '../budgetlist/SubBudgetZeroState'\nimport { SubBudgetRow } from '../budgetlist/SubBudgetRow'\nimport { BudgetAmount } from '../shared/BudgetAmount'\nimport { AddSubBudget } from './AddSubBudget'\nimport { Header } from './Header'\nimport { buildDynamicCopy } from '../../../core/utils/Localization'\n\ninterface SubBudgetListProps {\n budget: DetailedBudget\n onTransactionClick: (guid: string) => void\n}\n\nexport const SubBudgetList = observer(({ budget, onTransactionClick }: SubBudgetListProps) => {\n const { category, subBudgets } = budget\n const { budgets: copy, common: commonCopy } = useGlobalCopyStore()\n const { deleteBudget, selectedSubBudget, setAlert, setSelectedSubBudget, updateBudget } =\n useBudgetsStore()\n const { filter, setFilter } = useTransactionStore()\n\n const [isEditOpen, setIsEditOpen] = React.useState(false)\n const [isDeleteOpen, setIsDeleteOpen] = React.useState(false)\n const [amount, setAmount] = React.useState(``)\n\n React.useEffect(() => {\n if (selectedSubBudget) {\n setAmount(`${selectedSubBudget.amount}`)\n setFilter({\n ...filter,\n custom: (t: Transaction) => t.category_guid === selectedSubBudget.category_guid,\n })\n }\n }, [selectedSubBudget])\n\n const handleUpdateBudget = async () => {\n if (selectedSubBudget) {\n const result = await updateBudget({\n ...selectedSubBudget,\n amount: Number(amount),\n } as Budget)\n setIsEditOpen(false)\n if (!result) {\n setAlert({\n msg: buildDynamicCopy(\n copy.error_alert_edit_merchant_budget,\n selectedSubBudget.category.name,\n ) as string,\n severity: 'error',\n })\n }\n }\n }\n\n const handleDeleteBudget = async () => {\n if (selectedSubBudget) {\n const result = await deleteBudget(selectedSubBudget.guid)\n setIsDeleteOpen(false)\n if (result) {\n handleClose()\n } else {\n setAlert({\n msg: buildDynamicCopy(\n copy.error_alert_delete_merchant_budget,\n selectedSubBudget.category.name,\n ) as string,\n severity: 'error',\n })\n }\n }\n }\n\n const handleClose = () => {\n setFilter({\n ...filter,\n custom: (t: Transaction) =>\n t.category_guid === budget.category_guid ||\n t.top_level_category_guid === budget.category_guid,\n })\n setSelectedSubBudget(undefined)\n }\n\n return (\n <React.Fragment>\n <List sx={{ bgcolor: 'background.paper' }}>\n {subBudgets.length === 0 ? (\n <SubBudgetZeroState />\n ) : (\n subBudgets.map((subBudget) => (\n <React.Fragment key={subBudget.guid}>\n <SubBudgetRow budget={subBudget} />\n <Divider />\n </React.Fragment>\n ))\n )}\n <AddSubBudget category={category} parentBudget={budget} />\n </List>\n <Drawer\n ariaLabelClose={commonCopy.close_aria}\n isOpen={Boolean(selectedSubBudget)}\n onClose={handleClose}\n onPrimaryAction={() => setIsEditOpen(true)}\n onSecondaryAction={() => setIsDeleteOpen(true)}\n primaryText={copy.details_edit_button}\n secondaryText={copy.details_delete_button}\n title={copy.details_title}\n >\n {selectedSubBudget && (\n <Stack gap={24}>\n <Header budget={selectedSubBudget} />\n <TransactionList height=\"100%\" onClick={onTransactionClick} />\n </Stack>\n )}\n </Drawer>\n\n {selectedSubBudget && (\n <React.Fragment>\n <Dialog\n copy={{ close_aria: commonCopy.close_aria, title: copy.details_edit_title_subbudget }}\n disablePrimaryButton={amount === '' || Number(amount) < 0 || isNaN(Number(amount))}\n isOpen={isEditOpen}\n onClose={() => setIsEditOpen(false)}\n onPrimaryAction={handleUpdateBudget}\n primaryText={copy.edit_save_button}\n sx={{\n '& .MuiStack-root:first-of-type': {\n pb: 8,\n },\n }}\n >\n <BudgetAmount\n amount={amount}\n categoryName={selectedSubBudget.category.name}\n onAmountChanged={setAmount}\n />\n </Dialog>\n\n <Dialog\n copy={{ close_aria: commonCopy.close_aria, title: copy.delete_title }}\n isOpen={isDeleteOpen}\n onClose={() => setIsDeleteOpen(false)}\n onPrimaryAction={handleDeleteBudget}\n primaryColor=\"error\"\n primaryText=\"Delete\"\n secondaryColor=\"inherit\"\n >\n <Text variant=\"subtitle1\">\n {buildDynamicCopy(copy.delete_description, selectedSubBudget.category.name) as string}\n </Text>\n </Dialog>\n </React.Fragment>\n )}\n </React.Fragment>\n )\n})\n"],"mappings":"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"}
|