bananas-commerce-admin 0.17.18 → 0.17.19
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/dist/esm/extensions/pos/components/ExchangeSwitch.js +2 -2
- package/dist/esm/extensions/pos/components/ExchangeSwitch.js.map +1 -1
- package/dist/esm/extensions/pos/contrib/PurchaseAmountWidget.js +2 -2
- package/dist/esm/extensions/pos/contrib/PurchaseAmountWidget.js.map +1 -1
- package/dist/esm/extensions/pos/hooks/useExchangedData.js +4 -1
- package/dist/esm/extensions/pos/hooks/useExchangedData.js.map +1 -1
- package/dist/types/extensions/pos/components/ExchangeSwitch.d.ts +1 -0
- package/dist/types/extensions/pos/hooks/useExchangedData.d.ts +1 -0
- package/package.json +1 -1
- package/src/extensions/pos/components/ExchangeSwitch.tsx +3 -1
- package/src/extensions/pos/contrib/PurchaseAmountWidget.tsx +2 -1
- package/src/extensions/pos/hooks/useExchangedData.ts +10 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Box, FormControlLabel, Switch, Typography } from "@mui/material";
|
|
3
3
|
import { useI18n } from "../../../contexts/I18nContext";
|
|
4
|
-
const ExchangeSwitch = ({ checked, onChange }) => {
|
|
4
|
+
const ExchangeSwitch = ({ checked, onChange, disabled }) => {
|
|
5
5
|
const { t } = useI18n();
|
|
6
6
|
return (React.createElement(Box, { position: "absolute", right: 16, top: 16 },
|
|
7
|
-
React.createElement(FormControlLabel, { checked: checked, control: React.createElement(Switch, { color: "primary", size: "small" }), label: React.createElement(Typography, { color: "textSecondary", variant: "caption" }, t("Exchange")), labelPlacement: "end", sx: { margin: 0, gap: 0.5 }, onChange: () => onChange() })));
|
|
7
|
+
React.createElement(FormControlLabel, { checked: checked, control: React.createElement(Switch, { color: "primary", size: "small" }), disabled: disabled, label: React.createElement(Typography, { color: "textSecondary", variant: "caption" }, t("Exchange")), labelPlacement: "end", sx: { margin: 0, gap: 0.5 }, onChange: () => onChange() })));
|
|
8
8
|
};
|
|
9
9
|
export default ExchangeSwitch;
|
|
10
10
|
//# sourceMappingURL=ExchangeSwitch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExchangeSwitch.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/components/ExchangeSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"ExchangeSwitch.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/components/ExchangeSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAQxD,MAAM,cAAc,GAAkC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxF,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,OAAO,CACL,oBAAC,GAAG,IAAC,QAAQ,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;QACzC,oBAAC,gBAAgB,IACf,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,oBAAC,MAAM,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,GAAG,EAChD,QAAQ,EAAE,QAAQ,EAClB,KAAK,EACH,oBAAC,UAAU,IAAC,KAAK,EAAC,eAAe,EAAC,OAAO,EAAC,SAAS,IAChD,CAAC,CAAC,UAAU,CAAC,CACH,EAEf,cAAc,EAAC,KAAK,EACpB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,GAC1B,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -19,7 +19,7 @@ const PurchaseAmountWidget = ({ data, sx }) => {
|
|
|
19
19
|
const api = useApi();
|
|
20
20
|
const { user } = useUser();
|
|
21
21
|
const [shouldExchange, setShouldExchange] = useState(true);
|
|
22
|
-
const { exchangedData, totalAmount, onlyExchangedCurrency } = useExchangedData(data, shouldExchange);
|
|
22
|
+
const { exchangedData, totalAmount, onlyExchangedCurrency, exchangeAvailable } = useExchangedData(data, shouldExchange);
|
|
23
23
|
const purchaseAmounts = data.length;
|
|
24
24
|
const filteredAmount = diffDatesByGranularityWithFilter(filter);
|
|
25
25
|
const isFourColumn = useMemo(() => {
|
|
@@ -34,7 +34,7 @@ const PurchaseAmountWidget = ({ data, sx }) => {
|
|
|
34
34
|
return false;
|
|
35
35
|
}, [api, user]);
|
|
36
36
|
return (React.createElement(WidgetCard, { gridColumn: { md: isFourColumn ? "span 3" : "span 4", sm: "span 1" }, gridRow: "span 1", sx: sx, title: t("Purchase Revenue") },
|
|
37
|
-
React.createElement(ExchangeSwitch, { checked: shouldExchange, onChange: () => setShouldExchange((prev) => !prev) }),
|
|
37
|
+
React.createElement(ExchangeSwitch, { checked: shouldExchange, disabled: !exchangeAvailable, onChange: () => setShouldExchange((prev) => !prev) }),
|
|
38
38
|
purchaseAmounts >= 2 ? (React.createElement(React.Fragment, null,
|
|
39
39
|
React.createElement(SitesAmountsList, { data: exchangedData, isExchanged: shouldExchange }),
|
|
40
40
|
shouldExchange && onlyExchangedCurrency && (React.createElement(SitesTotal, { amount: totalAmount, currency: "SEK" })))) : (React.createElement(Stack, { height: "100%", px: 2 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PurchaseAmountWidget.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/contrib/PurchaseAmountWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAsB,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAEnF,MAAM,oBAAoB,GAA2C,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;IACpF,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAE3B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"PurchaseAmountWidget.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/contrib/PurchaseAmountWidget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -17,11 +17,14 @@ export function useExchangedData(data, shouldExchange, toCurrency = "SEK", excha
|
|
|
17
17
|
const totalAmount = exchangedData.reduce((acc, item) => {
|
|
18
18
|
return acc + parseFloat(item.amount);
|
|
19
19
|
}, 0);
|
|
20
|
-
const onlyExchangedCurrency = exchangedData.every((item) => item.currency === toCurrency);
|
|
20
|
+
const onlyExchangedCurrency = exchangedData.every((item) => item.currency.toUpperCase() === toCurrency.toUpperCase());
|
|
21
|
+
const exchangeAvailable = data.some((item) => item.currency.toUpperCase() in exchangeRates &&
|
|
22
|
+
item.currency.toUpperCase() !== toCurrency.toUpperCase());
|
|
21
23
|
return {
|
|
22
24
|
exchangedData,
|
|
23
25
|
totalAmount,
|
|
24
26
|
onlyExchangedCurrency,
|
|
27
|
+
exchangeAvailable,
|
|
25
28
|
};
|
|
26
29
|
}
|
|
27
30
|
const sekExchangeRates = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExchangedData.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/hooks/useExchangedData.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAC9B,IAA0B,EAC1B,cAAuB,EACvB,aAAqB,KAAK,EAC1B,gBAAwC,gBAAgB;IAExD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,IAAI,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,aAAa,EAAE,CAAC;YACnE,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,CACN,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;oBACvB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAgC,CAAC,CACzE,CAAC,OAAO,CAAC,CAAC,CAAC;gBACZ,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;aACtD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACrD,OAAO,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,MAAM,qBAAqB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useExchangedData.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/hooks/useExchangedData.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAC9B,IAA0B,EAC1B,cAAuB,EACvB,aAAqB,KAAK,EAC1B,gBAAwC,gBAAgB;IAExD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,IAAI,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,aAAa,EAAE,CAAC;YACnE,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,CACN,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;oBACvB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAgC,CAAC,CACzE,CAAC,OAAO,CAAC,CAAC,CAAC;gBACZ,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;aACtD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACrD,OAAO,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,MAAM,qBAAqB,GAAG,aAAa,CAAC,KAAK,CAC/C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CACnE,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CACjC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,aAAa;QAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAC3D,CAAC;IAEF,OAAO;QACL,aAAa;QACb,WAAW;QACX,qBAAqB;QACrB,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG;IACvB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,IAAI;CACV,CAAC"}
|
package/package.json
CHANGED
|
@@ -7,9 +7,10 @@ import { useI18n } from "../../../contexts/I18nContext";
|
|
|
7
7
|
export interface ExchangeSwitchProps {
|
|
8
8
|
checked: boolean;
|
|
9
9
|
onChange: () => void;
|
|
10
|
+
disabled?: boolean;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
const ExchangeSwitch: React.FC<ExchangeSwitchProps> = ({ checked, onChange }) => {
|
|
13
|
+
const ExchangeSwitch: React.FC<ExchangeSwitchProps> = ({ checked, onChange, disabled }) => {
|
|
13
14
|
const { t } = useI18n();
|
|
14
15
|
|
|
15
16
|
return (
|
|
@@ -17,6 +18,7 @@ const ExchangeSwitch: React.FC<ExchangeSwitchProps> = ({ checked, onChange }) =>
|
|
|
17
18
|
<FormControlLabel
|
|
18
19
|
checked={checked}
|
|
19
20
|
control={<Switch color="primary" size="small" />}
|
|
21
|
+
disabled={disabled}
|
|
20
22
|
label={
|
|
21
23
|
<Typography color="textSecondary" variant="caption">
|
|
22
24
|
{t("Exchange")}
|
|
@@ -24,7 +24,7 @@ const PurchaseAmountWidget: ContribComponent<PurchaseAmountItem[]> = ({ data, sx
|
|
|
24
24
|
const { user } = useUser();
|
|
25
25
|
|
|
26
26
|
const [shouldExchange, setShouldExchange] = useState(true);
|
|
27
|
-
const { exchangedData, totalAmount, onlyExchangedCurrency } = useExchangedData(
|
|
27
|
+
const { exchangedData, totalAmount, onlyExchangedCurrency, exchangeAvailable } = useExchangedData(
|
|
28
28
|
data,
|
|
29
29
|
shouldExchange,
|
|
30
30
|
);
|
|
@@ -56,6 +56,7 @@ const PurchaseAmountWidget: ContribComponent<PurchaseAmountItem[]> = ({ data, sx
|
|
|
56
56
|
>
|
|
57
57
|
<ExchangeSwitch
|
|
58
58
|
checked={shouldExchange}
|
|
59
|
+
disabled={!exchangeAvailable}
|
|
59
60
|
onChange={() => setShouldExchange((prev) => !prev)}
|
|
60
61
|
/>
|
|
61
62
|
{purchaseAmounts >= 2 ? (
|
|
@@ -29,12 +29,21 @@ export function useExchangedData(
|
|
|
29
29
|
return acc + parseFloat(item.amount);
|
|
30
30
|
}, 0);
|
|
31
31
|
|
|
32
|
-
const onlyExchangedCurrency = exchangedData.every(
|
|
32
|
+
const onlyExchangedCurrency = exchangedData.every(
|
|
33
|
+
(item) => item.currency.toUpperCase() === toCurrency.toUpperCase(),
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const exchangeAvailable = data.some(
|
|
37
|
+
(item) =>
|
|
38
|
+
item.currency.toUpperCase() in exchangeRates &&
|
|
39
|
+
item.currency.toUpperCase() !== toCurrency.toUpperCase(),
|
|
40
|
+
);
|
|
33
41
|
|
|
34
42
|
return {
|
|
35
43
|
exchangedData,
|
|
36
44
|
totalAmount,
|
|
37
45
|
onlyExchangedCurrency,
|
|
46
|
+
exchangeAvailable,
|
|
38
47
|
};
|
|
39
48
|
}
|
|
40
49
|
|