bananas-commerce-admin 0.1.1 → 0.1.2

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.
Files changed (73) hide show
  1. package/dist/cjs/containers/Content.js +6 -7
  2. package/dist/cjs/contexts/RouterContext.js +12 -1
  3. package/dist/cjs/extensions/bananas/pages/me/list.js +14 -8
  4. package/dist/cjs/extensions/fulfillment/components/AddressInfo.js +1 -1
  5. package/dist/cjs/extensions/fulfillment/components/ContactInfo.js +4 -4
  6. package/dist/cjs/extensions/fulfillment/components/RecipientCard.js +2 -2
  7. package/dist/cjs/extensions/fulfillment/components/SearchBar.js +1 -1
  8. package/dist/cjs/extensions/fulfillment/components/ShipmentAccordion.js +2 -2
  9. package/dist/cjs/extensions/fulfillment/components/ShipmentDestinationButtons.js +1 -1
  10. package/dist/cjs/extensions/fulfillment/components/ShipmentDestinationIcon.js +1 -1
  11. package/dist/cjs/extensions/fulfillment/components/ShipmentItemsCard.js +129 -0
  12. package/dist/cjs/extensions/fulfillment/components/ShipmentRow.js +1 -1
  13. package/dist/cjs/extensions/fulfillment/pages/recipient/detail.js +3 -1
  14. package/dist/cjs/extensions/fulfillment/pages/shipment/detail.js +37 -3
  15. package/dist/cjs/extensions/fulfillment/pages/shipment/list.js +12 -10
  16. package/dist/cjs/extensions/pos/components/ReceiptCard.js +1 -1
  17. package/dist/cjs/extensions/pos/pages/purchase/detail.js +3 -1
  18. package/dist/cjs/extensions/pos/pages/purchase/list.js +2 -2
  19. package/dist/cjs/pages/DashboardPage.js +1 -1
  20. package/dist/cjs/router/routes.js +3 -1
  21. package/dist/esm/containers/Content.js +6 -7
  22. package/dist/esm/contexts/RouterContext.js +13 -2
  23. package/dist/esm/extensions/bananas/pages/me/list.js +14 -8
  24. package/dist/esm/extensions/fulfillment/components/AddressInfo.js +1 -1
  25. package/dist/esm/extensions/fulfillment/components/ContactInfo.js +4 -4
  26. package/dist/esm/extensions/fulfillment/components/RecipientCard.js +2 -2
  27. package/dist/esm/extensions/fulfillment/components/SearchBar.js +1 -1
  28. package/dist/esm/extensions/fulfillment/components/ShipmentAccordion.js +2 -2
  29. package/dist/esm/extensions/fulfillment/components/ShipmentDestinationButtons.js +1 -1
  30. package/dist/esm/extensions/fulfillment/components/ShipmentDestinationIcon.js +1 -1
  31. package/dist/esm/extensions/fulfillment/components/ShipmentItemsCard.js +122 -0
  32. package/dist/esm/extensions/fulfillment/components/ShipmentRow.js +1 -1
  33. package/dist/esm/extensions/fulfillment/pages/recipient/detail.js +3 -1
  34. package/dist/esm/extensions/fulfillment/pages/shipment/detail.js +37 -3
  35. package/dist/esm/extensions/fulfillment/pages/shipment/list.js +12 -10
  36. package/dist/esm/extensions/pos/components/ReceiptCard.js +1 -1
  37. package/dist/esm/extensions/pos/pages/purchase/detail.js +3 -1
  38. package/dist/esm/extensions/pos/pages/purchase/list.js +2 -2
  39. package/dist/esm/pages/DashboardPage.js +1 -1
  40. package/dist/esm/router/routes.js +2 -2
  41. package/dist/types/contexts/RouterContext.d.ts +5 -0
  42. package/dist/types/extensions/fulfillment/components/AddressInfo.d.ts +2 -2
  43. package/dist/types/extensions/fulfillment/components/ContactInfo.d.ts +3 -3
  44. package/dist/types/extensions/fulfillment/components/ShipmentDestinationIcon.d.ts +1 -1
  45. package/dist/types/extensions/fulfillment/components/ShipmentItemsCard.d.ts +6 -0
  46. package/dist/types/extensions/fulfillment/pages/shipment/detail.d.ts +2 -2
  47. package/dist/types/extensions/fulfillment/types/recipient.d.ts +1 -1
  48. package/dist/types/extensions/fulfillment/types/shipment.d.ts +19 -1
  49. package/dist/types/pages/DashboardPage.d.ts +1 -3
  50. package/dist/types/router/routes.d.ts +2 -0
  51. package/package.json +1 -1
  52. package/src/containers/Content.tsx +8 -6
  53. package/src/contexts/RouterContext.tsx +16 -2
  54. package/src/extensions/bananas/pages/me/list.tsx +21 -13
  55. package/src/extensions/fulfillment/components/AddressInfo.tsx +4 -3
  56. package/src/extensions/fulfillment/components/ContactInfo.tsx +8 -7
  57. package/src/extensions/fulfillment/components/RecipientCard.tsx +4 -3
  58. package/src/extensions/fulfillment/components/SearchBar.tsx +1 -1
  59. package/src/extensions/fulfillment/components/ShipmentAccordion.tsx +4 -3
  60. package/src/extensions/fulfillment/components/ShipmentDestinationButtons.tsx +3 -1
  61. package/src/extensions/fulfillment/components/ShipmentDestinationIcon.tsx +3 -2
  62. package/src/extensions/fulfillment/components/ShipmentItemsCard.tsx +183 -0
  63. package/src/extensions/fulfillment/components/ShipmentRow.tsx +3 -1
  64. package/src/extensions/fulfillment/pages/recipient/detail.tsx +7 -1
  65. package/src/extensions/fulfillment/pages/shipment/detail.tsx +53 -4
  66. package/src/extensions/fulfillment/pages/shipment/list.tsx +30 -27
  67. package/src/extensions/fulfillment/types/recipient.ts +1 -1
  68. package/src/extensions/fulfillment/types/shipment.ts +20 -1
  69. package/src/extensions/pos/components/ReceiptCard.tsx +1 -1
  70. package/src/extensions/pos/pages/purchase/detail.tsx +4 -1
  71. package/src/extensions/pos/pages/purchase/list.tsx +3 -3
  72. package/src/pages/DashboardPage.tsx +1 -3
  73. package/src/router/routes.ts +2 -2
@@ -3,16 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var Box_1 = __importDefault(require("@mui/material/Box"));
6
+ var Grid_1 = __importDefault(require("@mui/material/Grid"));
7
7
  var react_1 = __importDefault(require("react"));
8
8
  var Content = function (_a) {
9
9
  var children = _a.children;
10
- return (react_1.default.createElement(Box_1.default, { sx: {
11
- display: "flex",
12
- flexDirection: "column",
10
+ return (react_1.default.createElement(Grid_1.default, { container: true, sx: {
13
11
  position: "relative",
14
- flexGrow: 1,
15
- padding: 3,
16
- } }, children));
12
+ padding: 2,
13
+ minWidth: 600,
14
+ overflow: "scroll",
15
+ }, spacing: 2 }, children));
17
16
  };
18
17
  exports.default = Content;
@@ -31,6 +31,7 @@ var routes_1 = require("../router/routes");
31
31
  var ApiContext_1 = require("./ApiContext");
32
32
  var RouterContext = React.createContext({
33
33
  routes: [],
34
+ getCurrent: function () { return void 0; },
34
35
  getRoute: function (reverse) { return void reverse; },
35
36
  navigate: function (route, options) { return void [route, options]; },
36
37
  });
@@ -64,6 +65,16 @@ var RouterContextProvider = function (_a) {
64
65
  page: page,
65
66
  });
66
67
  }
68
+ var getCurrent = function () {
69
+ for (var _i = 0, routes_2 = routes; _i < routes_2.length; _i++) {
70
+ var route = routes_2[_i];
71
+ var match = (0, react_router_dom_1.matchPath)(route.path, location.pathname);
72
+ if (match !== null) {
73
+ return { route: route, match: match };
74
+ }
75
+ }
76
+ return undefined;
77
+ };
67
78
  var getRoute = function (reverse) {
68
79
  return routes.find(function (_a) {
69
80
  var id = _a.id;
@@ -100,7 +111,7 @@ var RouterContextProvider = function (_a) {
100
111
  search: new URLSearchParams(options === null || options === void 0 ? void 0 : options.query).toString(),
101
112
  }, { replace: options === null || options === void 0 ? void 0 : options.replace });
102
113
  };
103
- return (React.createElement(RouterContext.Provider, { value: { routes: routes, getRoute: getRoute, navigate: navigate } }, children));
114
+ return (React.createElement(RouterContext.Provider, { value: { routes: routes, getCurrent: getCurrent, getRoute: getRoute, navigate: navigate } }, children));
104
115
  };
105
116
  exports.RouterContextProvider = RouterContextProvider;
106
117
  exports.default = RouterContext;
@@ -5,16 +5,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var react_1 = __importDefault(require("react"));
7
7
  var Paper_1 = __importDefault(require("@mui/material/Paper"));
8
- var styles_1 = require("@mui/material/styles");
9
8
  var Content_1 = __importDefault(require("../../../../containers/Content"));
10
9
  var PasswordChangeForm_1 = __importDefault(require("../../components/PasswordChangeForm"));
10
+ var Grid_1 = __importDefault(require("@mui/material/Grid"));
11
+ var TitleBar_1 = require("../../../../components/TitleBar");
12
+ var UserContext_1 = require("../../../../contexts/UserContext");
11
13
  var MePage = function () {
12
- var theme = (0, styles_1.useTheme)();
13
- return (react_1.default.createElement(Content_1.default, null,
14
- react_1.default.createElement(Paper_1.default, { sx: {
15
- padding: theme.spacing(3),
16
- alignSelf: "flex-start",
17
- }, elevation: 1, square: true },
18
- react_1.default.createElement(PasswordChangeForm_1.default, null))));
14
+ var _a;
15
+ var user = (0, UserContext_1.useUser)().user;
16
+ return (react_1.default.createElement(react_1.default.Fragment, null,
17
+ react_1.default.createElement(TitleBar_1.TitleBar, { title: (_a = user === null || user === void 0 ? void 0 : user.username) !== null && _a !== void 0 ? _a : "Me" }),
18
+ react_1.default.createElement(Content_1.default, null,
19
+ react_1.default.createElement(Grid_1.default, { item: true },
20
+ react_1.default.createElement(Paper_1.default, { sx: {
21
+ padding: 3,
22
+ alignSelf: "flex-start",
23
+ }, elevation: 1, square: true },
24
+ react_1.default.createElement(PasswordChangeForm_1.default, null))))));
19
25
  };
20
26
  exports.default = MePage;
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AddressInfo = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
- var Typography_1 = __importDefault(require("@mui/material/Typography"));
9
8
  var Box_1 = __importDefault(require("@mui/material/Box"));
9
+ var Typography_1 = __importDefault(require("@mui/material/Typography"));
10
10
  var countryCodeFormatter = new Intl.DisplayNames("sv", { type: "region" });
11
11
  var AddressInfo = function (_a) {
12
12
  var name = _a.name, streetAddress = _a.streetAddress, streetAddress2 = _a.streetAddress2, careOf = _a.careOf, postalCode = _a.postalCode, city = _a.city, countryCode = _a.countryCode;
@@ -4,15 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ContactInfo = void 0;
7
- var Link_1 = __importDefault(require("@mui/material/Link"));
8
7
  var react_1 = __importDefault(require("react"));
9
- var Typography_1 = __importDefault(require("@mui/material/Typography"));
10
8
  var Box_1 = __importDefault(require("@mui/material/Box"));
9
+ var Link_1 = __importDefault(require("@mui/material/Link"));
10
+ var Typography_1 = __importDefault(require("@mui/material/Typography"));
11
11
  var ContactInfo = function (_a) {
12
12
  var name = _a.name, email = _a.email, phone = _a.phone;
13
13
  return (react_1.default.createElement(Box_1.default, null,
14
- react_1.default.createElement(Typography_1.default, { noWrap: true }, "Link"),
15
- react_1.default.createElement(Link_1.default, { href: "mailto:".concat(email), noWrap: true }, email),
14
+ react_1.default.createElement(Typography_1.default, { noWrap: true }, name),
15
+ email ? react_1.default.createElement(Link_1.default, { href: "mailto:".concat(email), noWrap: true }, email) : null,
16
16
  phone ? react_1.default.createElement(Link_1.default, { href: "tel:".concat(phone), noWrap: true }, phone) : null));
17
17
  };
18
18
  exports.ContactInfo = ContactInfo;
@@ -9,13 +9,13 @@ var Card_1 = __importDefault(require("@mui/material/Card"));
9
9
  var CardContent_1 = __importDefault(require("@mui/material/CardContent"));
10
10
  var CardHeader_1 = __importDefault(require("@mui/material/CardHeader"));
11
11
  var Divider_1 = __importDefault(require("@mui/material/Divider"));
12
- var styles_1 = require("@mui/material/styles");
13
12
  var Grid_1 = __importDefault(require("@mui/material/Grid"));
13
+ var styles_1 = require("@mui/material/styles");
14
14
  var Typography_1 = __importDefault(require("@mui/material/Typography"));
15
15
  var RecipientCard = function (_a) {
16
16
  var recipient = _a.recipient;
17
17
  var theme = (0, styles_1.useTheme)();
18
- return (react_1.default.createElement(Card_1.default, { sx: { width: 550 } },
18
+ return (react_1.default.createElement(Card_1.default, null,
19
19
  react_1.default.createElement(CardHeader_1.default, { title: "Recipient" }),
20
20
  react_1.default.createElement(CardContent_1.default, null,
21
21
  react_1.default.createElement(Divider_1.default, { sx: { marginBottom: theme.spacing(2) } }),
@@ -25,8 +25,8 @@ var Search_1 = __importDefault(require("@mui/icons-material/Search"));
25
25
  var FormControl_1 = __importDefault(require("@mui/material/FormControl"));
26
26
  var IconButton_1 = __importDefault(require("@mui/material/IconButton"));
27
27
  var styles_1 = require("@mui/material/styles");
28
- var is_positive_integer_1 = require("../../../util/is_positive_integer");
29
28
  var is_email_1 = require("../../../util/is_email");
29
+ var is_positive_integer_1 = require("../../../util/is_positive_integer");
30
30
  var ChipIcons = {
31
31
  email: AlternateEmail_1.default,
32
32
  phone: Phone_1.default,
@@ -5,13 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ShipmentAccordion = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
+ var ExpandMore_1 = __importDefault(require("@mui/icons-material/ExpandMore"));
8
9
  var Accordion_1 = __importDefault(require("@mui/material/Accordion"));
9
10
  var AccordionDetails_1 = __importDefault(require("@mui/material/AccordionDetails"));
10
11
  var AccordionSummary_1 = __importDefault(require("@mui/material/AccordionSummary"));
11
- var Typography_1 = __importDefault(require("@mui/material/Typography"));
12
12
  var Checkbox_1 = __importDefault(require("@mui/material/Checkbox"));
13
- var ExpandMore_1 = __importDefault(require("@mui/icons-material/ExpandMore"));
14
13
  var Grid_1 = __importDefault(require("@mui/material/Grid"));
14
+ var Typography_1 = __importDefault(require("@mui/material/Typography"));
15
15
  var ShipmentAccordion = function (_a) {
16
16
  var shipment = _a.shipment;
17
17
  return (react_1.default.createElement(Accordion_1.default, { sx: { width: "100%" } },
@@ -13,11 +13,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.ShipmentDestinationButtons = exports.ALL_SELECTED = void 0;
16
+ var react_1 = __importDefault(require("react"));
16
17
  var styles_1 = require("@mui/material/styles");
17
18
  var ToggleButton_1 = __importDefault(require("@mui/material/ToggleButton"));
18
19
  var ToggleButtonGroup_1 = __importDefault(require("@mui/material/ToggleButtonGroup"));
19
20
  var useMediaQuery_1 = __importDefault(require("@mui/material/useMediaQuery"));
20
- var react_1 = __importDefault(require("react"));
21
21
  var ShipmentDestinationIcon_1 = require("./ShipmentDestinationIcon");
22
22
  exports.ALL_SELECTED = [
23
23
  "HOME",
@@ -27,8 +27,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.ShipmentDestinationIcon = void 0;
29
29
  var react_1 = __importDefault(require("react"));
30
- var Home_1 = __importDefault(require("@mui/icons-material/Home"));
31
30
  var AllInbox_1 = __importDefault(require("@mui/icons-material/AllInbox"));
31
+ var Home_1 = __importDefault(require("@mui/icons-material/Home"));
32
32
  var LocalShipping_1 = __importDefault(require("@mui/icons-material/LocalShipping"));
33
33
  var Store_1 = __importDefault(require("@mui/icons-material/Store"));
34
34
  var ShipmentDestinationIcon = function (_a) {
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ShipmentItemsCard = void 0;
16
+ var notistack_1 = require("notistack");
17
+ var react_1 = __importDefault(require("react"));
18
+ var Inventory2Outlined_1 = __importDefault(require("@mui/icons-material/Inventory2Outlined"));
19
+ var LoadingButton_1 = __importDefault(require("@mui/lab/LoadingButton"));
20
+ var Card_1 = __importDefault(require("@mui/material/Card"));
21
+ var CardActions_1 = __importDefault(require("@mui/material/CardActions"));
22
+ var CardContent_1 = __importDefault(require("@mui/material/CardContent"));
23
+ var CardHeader_1 = __importDefault(require("@mui/material/CardHeader"));
24
+ var Checkbox_1 = __importDefault(require("@mui/material/Checkbox"));
25
+ var Input_1 = __importDefault(require("@mui/material/Input"));
26
+ var styles_1 = require("@mui/material/styles");
27
+ var Table_1 = __importDefault(require("@mui/material/Table"));
28
+ var TableBody_1 = __importDefault(require("@mui/material/TableBody"));
29
+ var TableCell_1 = __importDefault(require("@mui/material/TableCell"));
30
+ var TableContainer_1 = __importDefault(require("@mui/material/TableContainer"));
31
+ var TableHead_1 = __importDefault(require("@mui/material/TableHead"));
32
+ var TableRow_1 = __importDefault(require("@mui/material/TableRow"));
33
+ var Typography_1 = __importDefault(require("@mui/material/Typography"));
34
+ var ApiContext_1 = require("../../../contexts/ApiContext");
35
+ var ShipmentItemsCard = function (_a) {
36
+ var shipment = _a.shipment;
37
+ var theme = (0, styles_1.useTheme)();
38
+ var api = (0, ApiContext_1.useApi)();
39
+ var enqueueSnackbar = (0, notistack_1.useSnackbar)().enqueueSnackbar;
40
+ var _b = react_1.default.useState([]), selected = _b[0], setSelected = _b[1];
41
+ var _c = react_1.default.useState(false), loading = _c[0], setLoading = _c[1];
42
+ var _d = react_1.default.useState(false), disabled = _d[0], setDisabled = _d[1];
43
+ var toggleSelectAll = function (_, checked) {
44
+ setSelected(checked ? shipment.items : []);
45
+ };
46
+ var toggleItem = function (item, checked) {
47
+ var index = selected.map(function (_a) {
48
+ var code = _a.code;
49
+ return code;
50
+ }).indexOf(item.code);
51
+ if (checked && index === -1) {
52
+ setSelected(__spreadArray(__spreadArray([], selected, true), [item], false));
53
+ }
54
+ else {
55
+ var unselected = __spreadArray([], selected, true);
56
+ unselected.splice(index, 1);
57
+ setSelected(unselected);
58
+ }
59
+ };
60
+ var itemQuantityChange = function (item) {
61
+ var index = selected.map(function (_a) {
62
+ var code = _a.code;
63
+ return code;
64
+ }).indexOf(item.code);
65
+ var changed = __spreadArray([], selected, true);
66
+ changed[index] = item;
67
+ setSelected(changed);
68
+ };
69
+ var markAsArrived = function () {
70
+ setLoading(true);
71
+ api.operations["fulfillment.shipment:arrived"].call({
72
+ params: { shipment_reference: shipment.shipment_reference },
73
+ body: selected,
74
+ }).then(function (response) {
75
+ if (response.ok) {
76
+ enqueueSnackbar("Successfully marked shipment items as arrived!", {
77
+ variant: "success",
78
+ });
79
+ setDisabled(true);
80
+ }
81
+ else {
82
+ enqueueSnackbar("Failed to mark shipment items as arrived, view console for more info", {
83
+ variant: "error",
84
+ });
85
+ throw response;
86
+ }
87
+ }).finally(function () {
88
+ setLoading(false);
89
+ });
90
+ };
91
+ return (react_1.default.createElement(Card_1.default, null,
92
+ react_1.default.createElement(CardHeader_1.default, { title: react_1.default.createElement(Typography_1.default, { variant: "h6" },
93
+ react_1.default.createElement("b", null, "Items")), avatar: react_1.default.createElement(Inventory2Outlined_1.default, null), sx: {
94
+ borderBottomWidth: 1,
95
+ borderBottomStyle: "solid",
96
+ borderBottomColor: theme.palette.divider,
97
+ } }),
98
+ react_1.default.createElement(CardContent_1.default, null,
99
+ react_1.default.createElement(TableContainer_1.default, null,
100
+ react_1.default.createElement(Table_1.default, null,
101
+ react_1.default.createElement(TableHead_1.default, null,
102
+ react_1.default.createElement(TableRow_1.default, null,
103
+ react_1.default.createElement(TableCell_1.default, { align: "left", padding: "checkbox" },
104
+ react_1.default.createElement(Checkbox_1.default, { color: "secondary", indeterminate: selected.length > 0 &&
105
+ selected.length < shipment.items.length, checked: shipment.items.length !== 0 &&
106
+ selected.length === shipment.items.length, onChange: toggleSelectAll, disabled: disabled || shipment.items.length === 0 })),
107
+ react_1.default.createElement(TableCell_1.default, { align: "left" }, "Reference"),
108
+ react_1.default.createElement(TableCell_1.default, { align: "right" }, "Quantity"))),
109
+ react_1.default.createElement(TableBody_1.default, null, shipment.items.map(function (item) {
110
+ var isSelected = selected.map(function (_a) {
111
+ var code = _a.code;
112
+ return code;
113
+ }).includes(item.code);
114
+ return (react_1.default.createElement(TableRow_1.default, { key: item.code },
115
+ react_1.default.createElement(TableCell_1.default, { align: "left", padding: "checkbox" },
116
+ react_1.default.createElement(Checkbox_1.default, { disabled: disabled, color: "secondary", checked: isSelected, onChange: function (_, checked) { return toggleItem(item, checked); } })),
117
+ react_1.default.createElement(TableCell_1.default, { align: "left" }, item.code),
118
+ react_1.default.createElement(TableCell_1.default, { align: "right" },
119
+ react_1.default.createElement(Input_1.default, { type: "number", defaultValue: item.quantity, inputProps: { min: 0, max: item.quantity }, disabled: disabled || !isSelected, onChange: function (event) {
120
+ return itemQuantityChange({
121
+ code: item.code,
122
+ quantity: parseInt(event.target.value),
123
+ });
124
+ } }))));
125
+ }))))),
126
+ react_1.default.createElement(CardActions_1.default, { sx: { justifyContent: "end" } },
127
+ react_1.default.createElement(LoadingButton_1.default, { variant: "contained", color: "secondary", loading: loading, disabled: disabled || loading || selected.length === 0, onClick: markAsArrived }, "Mark as arrived"))));
128
+ };
129
+ exports.ShipmentItemsCard = ShipmentItemsCard;
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ShipmentRow = void 0;
7
+ var react_1 = __importDefault(require("react"));
7
8
  var TableCell_1 = __importDefault(require("@mui/material/TableCell"));
8
9
  var TableRow_1 = __importDefault(require("@mui/material/TableRow"));
9
- var react_1 = __importDefault(require("react"));
10
10
  var RouterContext_1 = require("../../../contexts/RouterContext");
11
11
  var ShipmentRow = function (_a) {
12
12
  var _b;
@@ -7,10 +7,12 @@ var react_1 = __importDefault(require("react"));
7
7
  var Content_1 = __importDefault(require("../../../../containers/Content"));
8
8
  var ShipmentCard_1 = require("../../components/ShipmentCard");
9
9
  var TitleBar_1 = require("../../../../components/TitleBar");
10
+ var Grid_1 = __importDefault(require("@mui/material/Grid"));
10
11
  var RecipientDetailPage = function (_a) {
11
12
  var recipient = _a.data;
12
13
  return (react_1.default.createElement(react_1.default.Fragment, null,
13
14
  react_1.default.createElement(TitleBar_1.TitleBar, { back: true, title: "Recipient ".concat(recipient.reference) }),
14
- react_1.default.createElement(Content_1.default, null, recipient.shipments.map(function (shipment) { return (react_1.default.createElement(ShipmentCard_1.ShipmentCard, { key: shipment.shipment_reference, shipment: shipment })); }))));
15
+ react_1.default.createElement(Content_1.default, null, recipient.shipments.map(function (shipment) { return (react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
16
+ react_1.default.createElement(ShipmentCard_1.ShipmentCard, { key: shipment.shipment_reference, shipment: shipment }))); }))));
15
17
  };
16
18
  exports.default = RecipientDetailPage;
@@ -1,17 +1,51 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
15
  };
5
16
  Object.defineProperty(exports, "__esModule", { value: true });
6
17
  var react_1 = __importDefault(require("react"));
7
18
  var Content_1 = __importDefault(require("../../../../containers/Content"));
8
- var ShipmentCard_1 = require("../../components/ShipmentCard");
9
19
  var TitleBar_1 = require("../../../../components/TitleBar");
20
+ var RouterContext_1 = require("../../../../contexts/RouterContext");
21
+ var ShipmentItemsCard_1 = require("../../components/ShipmentItemsCard");
22
+ var Card_1 = __importDefault(require("@mui/material/Card"));
23
+ var CardHeader_1 = __importDefault(require("@mui/material/CardHeader"));
24
+ var CardContent_1 = __importDefault(require("@mui/material/CardContent"));
25
+ var Typography_1 = __importDefault(require("@mui/material/Typography"));
26
+ var Person_1 = __importDefault(require("@mui/icons-material/Person"));
27
+ var ContactInfo_1 = require("../../components/ContactInfo");
28
+ var AddressInfo_1 = require("../../components/AddressInfo");
29
+ var Grid_1 = __importDefault(require("@mui/material/Grid"));
10
30
  var ShipmentDetailPage = function (_a) {
11
- var shipment = _a.data;
31
+ var data = _a.data;
32
+ var getCurrent = (0, RouterContext_1.useRouter)().getCurrent;
33
+ var shipment = __assign(__assign({}, data), { shipment_reference: getCurrent().match.params.shipment_reference });
12
34
  return (react_1.default.createElement(react_1.default.Fragment, null,
13
35
  react_1.default.createElement(TitleBar_1.TitleBar, { back: true, title: "Shipment ".concat(shipment.shipment_reference) }),
14
36
  react_1.default.createElement(Content_1.default, null,
15
- react_1.default.createElement(ShipmentCard_1.ShipmentCard, { key: shipment.shipment_reference, shipment: shipment }))));
37
+ react_1.default.createElement(Grid_1.default, { item: true, sm: 12, md: 6 },
38
+ react_1.default.createElement(Card_1.default, null,
39
+ react_1.default.createElement(CardHeader_1.default, { title: react_1.default.createElement(Typography_1.default, { variant: "h6" },
40
+ react_1.default.createElement("b", null, "Info")), avatar: react_1.default.createElement(Person_1.default, null), sx: {
41
+ borderBottomWidth: 1,
42
+ borderBottomStyle: "solid",
43
+ borderBottomColor: "divider",
44
+ } }),
45
+ react_1.default.createElement(CardContent_1.default, null,
46
+ react_1.default.createElement(ContactInfo_1.ContactInfo, { name: shipment.name }),
47
+ react_1.default.createElement(AddressInfo_1.AddressInfo, { streetAddress: shipment.street_address, streetAddress2: shipment.street_address2, careOf: shipment.care_of, postalCode: shipment.postal_code, city: shipment.city, countryCode: shipment.country_code })))),
48
+ react_1.default.createElement(Grid_1.default, { item: true, sm: 12, md: 6 },
49
+ react_1.default.createElement(ShipmentItemsCard_1.ShipmentItemsCard, { shipment: shipment })))));
16
50
  };
17
51
  exports.default = ShipmentDetailPage;
@@ -22,6 +22,7 @@ var SearchBar_1 = require("../../components/SearchBar");
22
22
  var ShipmentCard_1 = require("../../components/ShipmentCard");
23
23
  var ShipmentDestinationButtons_1 = require("../../components/ShipmentDestinationButtons");
24
24
  var TitleBar_1 = require("../../../../components/TitleBar");
25
+ var Grid_1 = __importDefault(require("@mui/material/Grid"));
25
26
  var ShipmentListPage = function (_a) {
26
27
  var _b = _a.data, _next = _b.next, _previous = _b.previous, results = _b.results;
27
28
  var theme = (0, styles_1.useTheme)();
@@ -40,15 +41,16 @@ var ShipmentListPage = function (_a) {
40
41
  return (react_1.default.createElement(react_1.default.Fragment, null,
41
42
  react_1.default.createElement(TitleBar_1.TitleBar, { title: "Shipments" }),
42
43
  react_1.default.createElement(Content_1.default, null,
43
- react_1.default.createElement(Box_1.default, { sx: {
44
- width: "100%",
45
- display: "flex",
46
- flexDirection: "column",
47
- gap: theme.spacing(1),
48
- marginBottom: theme.spacing(2),
49
- }, component: "form", onSubmit: doSearch },
50
- react_1.default.createElement(SearchBar_1.SearchBar, { defaultValue: searchInputs, onChange: function (inputs) { return setSearchInputs(inputs); } }),
51
- react_1.default.createElement(ShipmentDestinationButtons_1.ShipmentDestinationButtons, { defaultSelected: destinationTypes, onChange: function (selected) { return setDestinationTypes(selected); } })),
52
- react_1.default.createElement(Stack_1.default, { gap: 1 }, results.map(function (shipment) { return (react_1.default.createElement(ShipmentCard_1.ShipmentCard, { key: shipment.shipment_reference, shipment: shipment })); })))));
44
+ react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
45
+ react_1.default.createElement(Box_1.default, { sx: {
46
+ width: "100%",
47
+ display: "flex",
48
+ flexDirection: "column",
49
+ gap: theme.spacing(1),
50
+ marginBottom: theme.spacing(2),
51
+ }, component: "form", onSubmit: doSearch },
52
+ react_1.default.createElement(SearchBar_1.SearchBar, { defaultValue: searchInputs, onChange: function (inputs) { return setSearchInputs(inputs); } }),
53
+ react_1.default.createElement(ShipmentDestinationButtons_1.ShipmentDestinationButtons, { defaultSelected: destinationTypes, onChange: function (selected) { return setDestinationTypes(selected); } })),
54
+ react_1.default.createElement(Stack_1.default, { gap: 1 }, results.map(function (shipment) { return (react_1.default.createElement(ShipmentCard_1.ShipmentCard, { key: shipment.shipment_reference, shipment: shipment })); }))))));
53
55
  };
54
56
  exports.default = ShipmentListPage;
@@ -64,7 +64,7 @@ var ReceiptCard = function (_a) {
64
64
  var _b;
65
65
  var receipt = _a.receipt;
66
66
  var theme = (0, styles_1.useTheme)();
67
- return (react_1.default.createElement(Card_1.default, { sx: { width: 550 } },
67
+ return (react_1.default.createElement(Card_1.default, null,
68
68
  react_1.default.createElement(CardHeader_1.default, { title: react_1.default.createElement(Typography_1.default, { variant: "h6" },
69
69
  react_1.default.createElement("b", null, "Receipt")), avatar: react_1.default.createElement(Receipt_1.default, null), action: react_1.default.createElement(IconButton_1.default, { "aria-label": "settings" },
70
70
  react_1.default.createElement(MoreVert_1.default, null)), sx: {
@@ -8,10 +8,12 @@ var ReceiptCard_1 = require("../../components/ReceiptCard");
8
8
  var Content_1 = __importDefault(require("../../../../containers/Content"));
9
9
  var TitleBar_1 = require("../../../../components/TitleBar");
10
10
  var format_purchase_number_1 = require("../../../../util/format_purchase_number");
11
+ var Grid_1 = __importDefault(require("@mui/material/Grid"));
11
12
  var PurchaseDetailPage = function (_a) {
12
13
  var _b = _a.data, purchase = _b.purchase, receipts = _b.receipts;
13
14
  return (react_1.default.createElement(react_1.default.Fragment, null,
14
15
  react_1.default.createElement(TitleBar_1.TitleBar, { back: true, title: "Purchase ".concat((0, format_purchase_number_1.formatPurchaseNumber)(purchase.number)) }),
15
- react_1.default.createElement(Content_1.default, null, receipts.map(function (receipt, i) { return (react_1.default.createElement(ReceiptCard_1.ReceiptCard, { key: receipt.number, receipt: receipt })); }))));
16
+ react_1.default.createElement(Content_1.default, null, receipts.map(function (receipt, i) { return (react_1.default.createElement(Grid_1.default, { item: true, sm: 12, md: 6 },
17
+ react_1.default.createElement(ReceiptCard_1.ReceiptCard, { key: receipt.number, receipt: receipt }))); }))));
16
18
  };
17
19
  exports.default = PurchaseDetailPage;
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var react_1 = __importDefault(require("react"));
7
- var Box_1 = __importDefault(require("@mui/material/Box"));
8
7
  var Paper_1 = __importDefault(require("@mui/material/Paper"));
9
8
  var Table_1 = __importDefault(require("@mui/material/Table"));
10
9
  var TableBody_1 = __importDefault(require("@mui/material/TableBody"));
@@ -15,12 +14,13 @@ var TableRow_1 = __importDefault(require("@mui/material/TableRow"));
15
14
  var Content_1 = __importDefault(require("../../../../containers/Content"));
16
15
  var PurchaseRow_1 = require("../../components/PurchaseRow");
17
16
  var TitleBar_1 = require("../../../../components/TitleBar");
17
+ var Grid_1 = __importDefault(require("@mui/material/Grid"));
18
18
  var PurchaseListPage = function (_a) {
19
19
  var data = _a.data;
20
20
  return (react_1.default.createElement(react_1.default.Fragment, null,
21
21
  react_1.default.createElement(TitleBar_1.TitleBar, { title: "Purchases" }),
22
22
  react_1.default.createElement(Content_1.default, null,
23
- react_1.default.createElement(Box_1.default, { sx: { width: "100%" } },
23
+ react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
24
24
  react_1.default.createElement(TableContainer_1.default, { component: Paper_1.default },
25
25
  react_1.default.createElement(Table_1.default, null,
26
26
  react_1.default.createElement(TableHead_1.default, null,
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var react_1 = __importDefault(require("react"));
7
- var DashboardPage = function (_a) {
7
+ var DashboardPage = function () {
8
8
  return react_1.default.createElement("h1", null, "Dashboard!");
9
9
  };
10
10
  exports.default = DashboardPage;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTitle = exports.getPage = exports.getPath = exports.isNavigation = exports.parseOperationId = void 0;
3
+ exports.getTitle = exports.getView = exports.getAppLabel = exports.getPage = exports.getPath = exports.isNavigation = exports.parseOperationId = void 0;
4
4
  var util_1 = require("../util");
5
5
  /**
6
6
  * Parses an `operationId` returning app, view and action
@@ -48,9 +48,11 @@ function getAppLabel(tags) {
48
48
  var _a;
49
49
  return (_a = tags.filter(function (tag) { return tag.startsWith("app:"); })[0]) === null || _a === void 0 ? void 0 : _a.split(":")[1];
50
50
  }
51
+ exports.getAppLabel = getAppLabel;
51
52
  function getView(id) {
52
53
  return id.substring(id.indexOf(".") + 1, id.indexOf(":"));
53
54
  }
55
+ exports.getView = getView;
54
56
  function getTitle(view, summary) {
55
57
  return (summary !== null && summary !== void 0 ? summary : (view && (0, util_1.capitalize)(view.replace("_", " "))));
56
58
  }
@@ -1,13 +1,12 @@
1
- import Box from "@mui/material/Box";
1
+ import Grid from "@mui/material/Grid";
2
2
  import React from "react";
3
3
  var Content = function (_a) {
4
4
  var children = _a.children;
5
- return (React.createElement(Box, { sx: {
6
- display: "flex",
7
- flexDirection: "column",
5
+ return (React.createElement(Grid, { container: true, sx: {
8
6
  position: "relative",
9
- flexGrow: 1,
10
- padding: 3,
11
- } }, children));
7
+ padding: 2,
8
+ minWidth: 600,
9
+ overflow: "scroll",
10
+ }, spacing: 2 }, children));
12
11
  };
13
12
  export default Content;
@@ -1,10 +1,11 @@
1
1
  import { useSnackbar } from "notistack";
2
2
  import * as React from "react";
3
- import { useNavigate } from "react-router-dom";
3
+ import { matchPath, useNavigate } from "react-router-dom";
4
4
  import { getPage, getPath, getTitle, isNavigation, parseOperationId, } from "../router/routes";
5
5
  import { useApi } from "./ApiContext";
6
6
  var RouterContext = React.createContext({
7
7
  routes: [],
8
+ getCurrent: function () { return void 0; },
8
9
  getRoute: function (reverse) { return void reverse; },
9
10
  navigate: function (route, options) { return void [route, options]; },
10
11
  });
@@ -37,6 +38,16 @@ export var RouterContextProvider = function (_a) {
37
38
  page: page,
38
39
  });
39
40
  }
41
+ var getCurrent = function () {
42
+ for (var _i = 0, routes_1 = routes; _i < routes_1.length; _i++) {
43
+ var route = routes_1[_i];
44
+ var match = matchPath(route.path, location.pathname);
45
+ if (match !== null) {
46
+ return { route: route, match: match };
47
+ }
48
+ }
49
+ return undefined;
50
+ };
40
51
  var getRoute = function (reverse) {
41
52
  return routes.find(function (_a) {
42
53
  var id = _a.id;
@@ -73,6 +84,6 @@ export var RouterContextProvider = function (_a) {
73
84
  search: new URLSearchParams(options === null || options === void 0 ? void 0 : options.query).toString(),
74
85
  }, { replace: options === null || options === void 0 ? void 0 : options.replace });
75
86
  };
76
- return (React.createElement(RouterContext.Provider, { value: { routes: routes, getRoute: getRoute, navigate: navigate } }, children));
87
+ return (React.createElement(RouterContext.Provider, { value: { routes: routes, getCurrent: getCurrent, getRoute: getRoute, navigate: navigate } }, children));
77
88
  };
78
89
  export default RouterContext;
@@ -1,15 +1,21 @@
1
1
  import React from "react";
2
2
  import Paper from "@mui/material/Paper";
3
- import { useTheme } from "@mui/material/styles";
4
3
  import Content from "../../../../containers/Content";
5
4
  import PasswordChangeForm from "../../components/PasswordChangeForm";
5
+ import Grid from "@mui/material/Grid";
6
+ import { TitleBar } from "../../../../components/TitleBar";
7
+ import { useUser } from "../../../../contexts/UserContext";
6
8
  var MePage = function () {
7
- var theme = useTheme();
8
- return (React.createElement(Content, null,
9
- React.createElement(Paper, { sx: {
10
- padding: theme.spacing(3),
11
- alignSelf: "flex-start",
12
- }, elevation: 1, square: true },
13
- React.createElement(PasswordChangeForm, null))));
9
+ var _a;
10
+ var user = useUser().user;
11
+ return (React.createElement(React.Fragment, null,
12
+ React.createElement(TitleBar, { title: (_a = user === null || user === void 0 ? void 0 : user.username) !== null && _a !== void 0 ? _a : "Me" }),
13
+ React.createElement(Content, null,
14
+ React.createElement(Grid, { item: true },
15
+ React.createElement(Paper, { sx: {
16
+ padding: 3,
17
+ alignSelf: "flex-start",
18
+ }, elevation: 1, square: true },
19
+ React.createElement(PasswordChangeForm, null))))));
14
20
  };
15
21
  export default MePage;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import Typography from "@mui/material/Typography";
3
2
  import Box from "@mui/material/Box";
3
+ import Typography from "@mui/material/Typography";
4
4
  var countryCodeFormatter = new Intl.DisplayNames("sv", { type: "region" });
5
5
  export var AddressInfo = function (_a) {
6
6
  var name = _a.name, streetAddress = _a.streetAddress, streetAddress2 = _a.streetAddress2, careOf = _a.careOf, postalCode = _a.postalCode, city = _a.city, countryCode = _a.countryCode;