bananas-commerce-admin 0.17.7 → 0.17.8
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/contexts/DialogContext.js +4 -4
- package/dist/esm/contexts/DialogContext.js.map +1 -1
- package/dist/esm/extensions/pos/components/ReceiptTable.js +16 -1
- package/dist/esm/extensions/pos/components/ReceiptTable.js.map +1 -1
- package/dist/types/contexts/DialogContext.d.ts +2 -2
- package/dist/types/extensions/pos/types/purchase.d.ts +2 -0
- package/package.json +1 -1
- package/src/contexts/DialogContext.tsx +10 -10
- package/src/extensions/pos/components/ReceiptTable.tsx +34 -1
- package/src/extensions/pos/types/purchase.ts +3 -0
|
@@ -26,10 +26,10 @@ function DialogContextProvider(props) {
|
|
|
26
26
|
setTitle(title);
|
|
27
27
|
setChildren(children);
|
|
28
28
|
setOpen(true);
|
|
29
|
-
if (options?.ok) {
|
|
29
|
+
if (options?.ok !== undefined) {
|
|
30
30
|
setOk(options.ok);
|
|
31
31
|
}
|
|
32
|
-
if (options?.cancel) {
|
|
32
|
+
if (options?.cancel !== undefined) {
|
|
33
33
|
setCancel(options.cancel);
|
|
34
34
|
}
|
|
35
35
|
if (options?.dialogProps) {
|
|
@@ -62,8 +62,8 @@ export function BcomDialog() {
|
|
|
62
62
|
React.createElement(DialogTitle, null, ctx.title),
|
|
63
63
|
React.createElement(DialogContent, null, ctx.children),
|
|
64
64
|
React.createElement(DialogActions, null,
|
|
65
|
-
React.createElement(Button, { onClick: () => ctx.cb(false) }, ctx.cancel),
|
|
66
|
-
React.createElement(Button, { onClick: () => ctx.cb(true) }, ctx.ok)))));
|
|
65
|
+
ctx.cancel && React.createElement(Button, { onClick: () => ctx.cb(false) }, ctx.cancel),
|
|
66
|
+
ctx.ok && React.createElement(Button, { onClick: () => ctx.cb(true) }, ctx.ok)))));
|
|
67
67
|
}
|
|
68
68
|
export function useDialog() {
|
|
69
69
|
const { makeOpen } = useContext(DialogContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogContext.js","sourceRoot":"","sources":["../../../src/contexts/DialogContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,MAAuB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,WAAW,MAAM,2BAA2B,CAAC;AAIpD,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAmBtC;IACD,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,IAAI;IACd,EAAE,EAAE,CAAC,EAAW,EAAE,EAAE,CAAC,KAAK,EAAE;IAC5B,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAEtC,WAAW,EAAE,EAAE;IACf,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAEH,SAAS,qBAAqB,CAAC,KAAoC;IACjE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"DialogContext.js","sourceRoot":"","sources":["../../../src/contexts/DialogContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useState } from "react";
|
|
2
|
+
import ListAltOutlinedIcon from "@mui/icons-material/ListAltOutlined";
|
|
2
3
|
import Checkbox from "@mui/material/Checkbox";
|
|
4
|
+
import IconButton from "@mui/material/IconButton";
|
|
3
5
|
import Input from "@mui/material/Input";
|
|
4
6
|
import Table from "@mui/material/Table";
|
|
5
7
|
import TableBody from "@mui/material/TableBody";
|
|
@@ -8,11 +10,13 @@ import Typography from "@mui/material/Typography";
|
|
|
8
10
|
import { TableCell } from "../../../components/Table/TableCell";
|
|
9
11
|
import TableHead from "../../../components/Table/TableHead";
|
|
10
12
|
import TableHeading from "../../../components/Table/TableHeading";
|
|
13
|
+
import { useDialog } from "../../../contexts/DialogContext";
|
|
11
14
|
import { useI18n } from "../../../contexts/I18nContext";
|
|
12
15
|
export const HIDDEN_ITEM_TYPES = ["SHIPPING", "PICKUP"];
|
|
13
16
|
export const ReceiptTable = ({ lines, currency, editable, onSelect, }) => {
|
|
14
17
|
const [selected, setSelected] = useState([]);
|
|
15
18
|
const { t } = useI18n();
|
|
19
|
+
const openDialog = useDialog();
|
|
16
20
|
const refundableLines = lines.filter((line) => Boolean(line.adjustments.reduce((t, v) => t + v.quantity, line.quantity)));
|
|
17
21
|
const sortedLines = lines.sort((a, b) => a.line_number - b.line_number);
|
|
18
22
|
// Group lines by their whole number part, sorted by their decimal part
|
|
@@ -46,6 +50,14 @@ export const ReceiptTable = ({ lines, currency, editable, onSelect, }) => {
|
|
|
46
50
|
if (onSelect != null)
|
|
47
51
|
onSelect(selected);
|
|
48
52
|
}, [onSelect, selected]);
|
|
53
|
+
const showItemProperties = async (title, itemProperties) => {
|
|
54
|
+
await openDialog(title, React.createElement(Table, { size: "small", sx: { "& td": { border: 0 } } }, Object.entries(itemProperties ?? {}).map(([key, value]) => (React.createElement(TableRow, { key: key },
|
|
55
|
+
React.createElement(TableCell, { variant: "head" }, key.toUpperCase()),
|
|
56
|
+
React.createElement(TableCell, { variant: "body" }, `${value}`))))), {
|
|
57
|
+
ok: false,
|
|
58
|
+
cancel: "Close",
|
|
59
|
+
});
|
|
60
|
+
};
|
|
49
61
|
return (React.createElement(Table, null,
|
|
50
62
|
React.createElement(TableHead, null,
|
|
51
63
|
editable && (React.createElement(TableHeading, { align: "left", padding: "checkbox" },
|
|
@@ -78,7 +90,10 @@ export const ReceiptTable = ({ lines, currency, editable, onSelect, }) => {
|
|
|
78
90
|
} },
|
|
79
91
|
editable ? (React.createElement(TableCell, { align: "left", padding: "checkbox", sx: { verticalAlign: "top" } }, disabled ? null : (React.createElement(Checkbox, { checked: isSelected && currentQuantity !== 0, color: "secondary", onChange: (_, checked) => toggleLine({ ...line, quantity: currentQuantity }, checked) })))) : null,
|
|
80
92
|
React.createElement(TableCell, { align: "left" },
|
|
81
|
-
React.createElement(Typography, { fontSize: "0.875rem", paddingLeft: subLine ? 2 : undefined },
|
|
93
|
+
React.createElement(Typography, { fontSize: "0.875rem", paddingLeft: subLine ? 2 : undefined },
|
|
94
|
+
line.title,
|
|
95
|
+
line.item_properties && (React.createElement(IconButton, { "aria-label": "Show line item properties", size: "small", onClick: () => showItemProperties(line.title, line.item_properties) },
|
|
96
|
+
React.createElement(ListAltOutlinedIcon, { fontSize: "small" }))))),
|
|
82
97
|
React.createElement(TableCell, { align: "left" }, ["SHIPPING", "PICKUP"].includes(line.item_type) ? null : line.reference),
|
|
83
98
|
React.createElement(TableCell, { align: "right", typographyProps: { fontSize: "0.875rem" } }, line.quantity),
|
|
84
99
|
React.createElement(TableCell, { align: "right" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReceiptTable.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/components/ReceiptTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAChD,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,SAAS,MAAM,qCAAqC,CAAC;AAC5D,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAGxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AASxD,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ReceiptTable.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/components/ReceiptTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ declare function DialogContextProvider(props: {
|
|
|
6
6
|
}): React.JSX.Element;
|
|
7
7
|
export declare function BcomDialog(): React.JSX.Element;
|
|
8
8
|
export declare function useDialog(): (title: string, children: React.ReactNode, options?: {
|
|
9
|
-
ok?: string;
|
|
10
|
-
cancel?: string;
|
|
9
|
+
ok?: string | false;
|
|
10
|
+
cancel?: string | false;
|
|
11
11
|
dialogProps?: BananasDialogProps;
|
|
12
12
|
}) => Promise<boolean>;
|
|
13
13
|
export default DialogContextProvider;
|
|
@@ -32,9 +32,11 @@ export interface PurchaseDetail {
|
|
|
32
32
|
} | null;
|
|
33
33
|
lines: Line[];
|
|
34
34
|
}
|
|
35
|
+
export type ItemProperties = Record<string, string | number | boolean>;
|
|
35
36
|
export interface Line {
|
|
36
37
|
line_number: number;
|
|
37
38
|
item_type: string;
|
|
39
|
+
item_properties?: ItemProperties;
|
|
38
40
|
title: string;
|
|
39
41
|
reference: string;
|
|
40
42
|
quantity: number;
|
package/package.json
CHANGED
|
@@ -17,16 +17,16 @@ const DialogContext = React.createContext<{
|
|
|
17
17
|
title: string,
|
|
18
18
|
children: React.ReactNode,
|
|
19
19
|
options?: {
|
|
20
|
-
ok?: string;
|
|
21
|
-
cancel?: string;
|
|
20
|
+
ok?: string | false;
|
|
21
|
+
cancel?: string | false;
|
|
22
22
|
|
|
23
23
|
dialogProps?: BananasDialogProps;
|
|
24
24
|
},
|
|
25
25
|
) => Promise<boolean>;
|
|
26
26
|
|
|
27
27
|
dialogProps: BananasDialogProps;
|
|
28
|
-
ok: string;
|
|
29
|
-
cancel: string;
|
|
28
|
+
ok: string | false;
|
|
29
|
+
cancel: string | false;
|
|
30
30
|
}>({
|
|
31
31
|
title: "",
|
|
32
32
|
children: null,
|
|
@@ -43,8 +43,8 @@ function DialogContextProvider(props: { children: React.ReactNode }) {
|
|
|
43
43
|
const [title, setTitle] = useState("");
|
|
44
44
|
const [children, setChildren] = useState<React.ReactNode>(null);
|
|
45
45
|
const [open, setOpen] = useState(false);
|
|
46
|
-
const [ok, setOk] = useState("Ok");
|
|
47
|
-
const [cancel, setCancel] = useState("Cancel");
|
|
46
|
+
const [ok, setOk] = useState<string | false>("Ok");
|
|
47
|
+
const [cancel, setCancel] = useState<string | false>("Cancel");
|
|
48
48
|
|
|
49
49
|
const [dialogProps, setDialogProps] = useState<BananasDialogProps>({});
|
|
50
50
|
|
|
@@ -56,11 +56,11 @@ function DialogContextProvider(props: { children: React.ReactNode }) {
|
|
|
56
56
|
setChildren(children);
|
|
57
57
|
setOpen(true);
|
|
58
58
|
|
|
59
|
-
if (options?.ok) {
|
|
59
|
+
if (options?.ok !== undefined) {
|
|
60
60
|
setOk(options.ok);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
if (options?.cancel) {
|
|
63
|
+
if (options?.cancel !== undefined) {
|
|
64
64
|
setCancel(options.cancel);
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -103,8 +103,8 @@ export function BcomDialog() {
|
|
|
103
103
|
<DialogTitle>{ctx.title}</DialogTitle>
|
|
104
104
|
<DialogContent>{ctx.children}</DialogContent>
|
|
105
105
|
<DialogActions>
|
|
106
|
-
<Button onClick={() => ctx.cb(false)}>{ctx.cancel}</Button>
|
|
107
|
-
<Button onClick={() => ctx.cb(true)}>{ctx.ok}</Button>
|
|
106
|
+
{ctx.cancel && <Button onClick={() => ctx.cb(false)}>{ctx.cancel}</Button>}
|
|
107
|
+
{ctx.ok && <Button onClick={() => ctx.cb(true)}>{ctx.ok}</Button>}
|
|
108
108
|
</DialogActions>
|
|
109
109
|
</DialogContent>
|
|
110
110
|
</Dialog>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React, { useEffect, useState } from "react";
|
|
2
2
|
|
|
3
|
+
import ListAltOutlinedIcon from "@mui/icons-material/ListAltOutlined";
|
|
3
4
|
import Checkbox from "@mui/material/Checkbox";
|
|
5
|
+
import IconButton from "@mui/material/IconButton";
|
|
4
6
|
import Input from "@mui/material/Input";
|
|
5
7
|
import Table from "@mui/material/Table";
|
|
6
8
|
import TableBody from "@mui/material/TableBody";
|
|
@@ -10,8 +12,9 @@ import Typography from "@mui/material/Typography";
|
|
|
10
12
|
import { TableCell } from "../../../components/Table/TableCell";
|
|
11
13
|
import TableHead from "../../../components/Table/TableHead";
|
|
12
14
|
import TableHeading from "../../../components/Table/TableHeading";
|
|
15
|
+
import { useDialog } from "../../../contexts/DialogContext";
|
|
13
16
|
import { useI18n } from "../../../contexts/I18nContext";
|
|
14
|
-
import { Adjustment, Line } from "../types/purchase";
|
|
17
|
+
import { Adjustment, ItemProperties, Line } from "../types/purchase";
|
|
15
18
|
|
|
16
19
|
export const HIDDEN_ITEM_TYPES = ["SHIPPING", "PICKUP"];
|
|
17
20
|
|
|
@@ -30,6 +33,7 @@ export const ReceiptTable: React.FC<ReceiptTableProps> = ({
|
|
|
30
33
|
}) => {
|
|
31
34
|
const [selected, setSelected] = useState<Line[]>([]);
|
|
32
35
|
const { t } = useI18n();
|
|
36
|
+
const openDialog = useDialog();
|
|
33
37
|
|
|
34
38
|
const refundableLines = lines.filter((line) =>
|
|
35
39
|
Boolean(line.adjustments.reduce((t, v) => t + v.quantity, line.quantity)),
|
|
@@ -71,6 +75,24 @@ export const ReceiptTable: React.FC<ReceiptTableProps> = ({
|
|
|
71
75
|
if (onSelect != null) onSelect(selected);
|
|
72
76
|
}, [onSelect, selected]);
|
|
73
77
|
|
|
78
|
+
const showItemProperties = async (title: string, itemProperties: ItemProperties) => {
|
|
79
|
+
await openDialog(
|
|
80
|
+
title,
|
|
81
|
+
<Table size="small" sx={{ "& td": { border: 0 } }}>
|
|
82
|
+
{Object.entries(itemProperties ?? {}).map(([key, value]) => (
|
|
83
|
+
<TableRow key={key}>
|
|
84
|
+
<TableCell variant="head">{key.toUpperCase()}</TableCell>
|
|
85
|
+
<TableCell variant="body">{`${value}`}</TableCell>
|
|
86
|
+
</TableRow>
|
|
87
|
+
))}
|
|
88
|
+
</Table>,
|
|
89
|
+
{
|
|
90
|
+
ok: false,
|
|
91
|
+
cancel: "Close",
|
|
92
|
+
},
|
|
93
|
+
);
|
|
94
|
+
};
|
|
95
|
+
|
|
74
96
|
return (
|
|
75
97
|
<Table>
|
|
76
98
|
<TableHead>
|
|
@@ -148,6 +170,17 @@ export const ReceiptTable: React.FC<ReceiptTableProps> = ({
|
|
|
148
170
|
<TableCell align="left">
|
|
149
171
|
<Typography fontSize="0.875rem" paddingLeft={subLine ? 2 : undefined}>
|
|
150
172
|
{line.title}
|
|
173
|
+
{line.item_properties && (
|
|
174
|
+
<IconButton
|
|
175
|
+
aria-label="Show line item properties"
|
|
176
|
+
size="small"
|
|
177
|
+
onClick={() =>
|
|
178
|
+
showItemProperties(line.title, line.item_properties as ItemProperties)
|
|
179
|
+
}
|
|
180
|
+
>
|
|
181
|
+
<ListAltOutlinedIcon fontSize="small" />
|
|
182
|
+
</IconButton>
|
|
183
|
+
)}
|
|
151
184
|
</Typography>
|
|
152
185
|
</TableCell>
|
|
153
186
|
<TableCell align="left">
|
|
@@ -34,9 +34,12 @@ export interface PurchaseDetail {
|
|
|
34
34
|
lines: Line[];
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
export type ItemProperties = Record<string, string | number | boolean>;
|
|
38
|
+
|
|
37
39
|
export interface Line {
|
|
38
40
|
line_number: number;
|
|
39
41
|
item_type: string;
|
|
42
|
+
item_properties?: ItemProperties;
|
|
40
43
|
title: string;
|
|
41
44
|
reference: string;
|
|
42
45
|
quantity: number;
|