@popmenu/ordering-ui 0.89.1 → 0.91.0
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/build/components/DishCheckoutCard/DishCheckoutCardProps.d.ts +2 -0
- package/build/components/DishModifierCard/DishModifierCardProps.d.ts +18 -15
- package/build/components/DishModifierCard/ModifierControls.d.ts +3 -0
- package/build/components/MenuDropdown/MenuDropdownProps.d.ts +1 -0
- package/build/components/QuantityPicker/QuantityPicker.styles.d.ts +4 -1
- package/build/components/QuantityPicker/QuantityPickerProps.d.ts +10 -4
- package/build/index.es.js +211 -141
- package/build/index.es.js.map +1 -1
- package/build/index.js +207 -140
- package/build/index.js.map +1 -1
- package/package.json +2 -2
- package/build/components/DishModifierCard/ModifierOptionsControl.d.ts +0 -3
package/build/index.js
CHANGED
|
@@ -9,8 +9,8 @@ require('@material-ui/lab/Alert');
|
|
|
9
9
|
require('@material-ui/core/AppBar');
|
|
10
10
|
var MuiAvatar = require('@material-ui/core/Avatar');
|
|
11
11
|
require('@material-ui/core/Badge');
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
require('@material-ui/core/Button');
|
|
13
|
+
require('@material-ui/core/CircularProgress');
|
|
14
14
|
require('@material-ui/core/ButtonGroup');
|
|
15
15
|
var Card = require('@material-ui/core/Card');
|
|
16
16
|
var CardActionArea = require('@material-ui/core/CardActionArea');
|
|
@@ -50,7 +50,6 @@ var MuiToggleButton = require('@material-ui/lab/ToggleButton');
|
|
|
50
50
|
var MuiToggleButtonGroup = require('@material-ui/lab/ToggleButtonGroup');
|
|
51
51
|
var MuiTooltip = require('@material-ui/core/Tooltip');
|
|
52
52
|
var lab = require('@material-ui/lab');
|
|
53
|
-
var MuiRadioGroup = require('@material-ui/core/RadioGroup');
|
|
54
53
|
|
|
55
54
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
56
55
|
|
|
@@ -77,8 +76,6 @@ function _interopNamespace(e) {
|
|
|
77
76
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
78
77
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
79
78
|
var MuiAvatar__default = /*#__PURE__*/_interopDefaultLegacy(MuiAvatar);
|
|
80
|
-
var MuiButton__default = /*#__PURE__*/_interopDefaultLegacy(MuiButton);
|
|
81
|
-
var CircularProgress__default = /*#__PURE__*/_interopDefaultLegacy(CircularProgress);
|
|
82
79
|
var Card__default = /*#__PURE__*/_interopDefaultLegacy(Card);
|
|
83
80
|
var CardActionArea__default = /*#__PURE__*/_interopDefaultLegacy(CardActionArea);
|
|
84
81
|
var CardContent__default = /*#__PURE__*/_interopDefaultLegacy(CardContent);
|
|
@@ -91,7 +88,6 @@ var Tab__default = /*#__PURE__*/_interopDefaultLegacy(Tab);
|
|
|
91
88
|
var MuiToggleButton__default = /*#__PURE__*/_interopDefaultLegacy(MuiToggleButton);
|
|
92
89
|
var MuiToggleButtonGroup__default = /*#__PURE__*/_interopDefaultLegacy(MuiToggleButtonGroup);
|
|
93
90
|
var MuiTooltip__default = /*#__PURE__*/_interopDefaultLegacy(MuiTooltip);
|
|
94
|
-
var MuiRadioGroup__default = /*#__PURE__*/_interopDefaultLegacy(MuiRadioGroup);
|
|
95
91
|
|
|
96
92
|
/*! *****************************************************************************
|
|
97
93
|
Copyright (c) Microsoft Corporation.
|
|
@@ -129,9 +125,19 @@ function __rest$1(s, e) {
|
|
|
129
125
|
t[p[i]] = s[p[i]];
|
|
130
126
|
}
|
|
131
127
|
return t;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function __spreadArray(to, from, pack) {
|
|
131
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
132
|
+
if (ar || !(i in from)) {
|
|
133
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
134
|
+
ar[i] = from[i];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return to.concat(ar || from);
|
|
132
138
|
}
|
|
133
139
|
|
|
134
|
-
var Button
|
|
140
|
+
var Button = React.forwardRef(function (props, ref) {
|
|
135
141
|
var _a = props.variation, variation = _a === void 0 ? 'primary' : _a, muiProps = __rest$1(props, ["variation"]);
|
|
136
142
|
var variationProps = {};
|
|
137
143
|
switch (variation) {
|
|
@@ -146,7 +152,7 @@ var Button$1 = React.forwardRef(function (props, ref) {
|
|
|
146
152
|
}
|
|
147
153
|
return React__default['default'].createElement(core.Button, __assign$1({}, variationProps, muiProps, { ref: ref }));
|
|
148
154
|
});
|
|
149
|
-
Button
|
|
155
|
+
Button.displayName = 'Button';
|
|
150
156
|
|
|
151
157
|
var useDishCardStyles = styles.makeStyles(function (theme) {
|
|
152
158
|
var _a, _b;
|
|
@@ -474,6 +480,24 @@ function SvgTag(props) {
|
|
|
474
480
|
})));
|
|
475
481
|
}
|
|
476
482
|
|
|
483
|
+
var _path$K;
|
|
484
|
+
|
|
485
|
+
function _extends$1I() { _extends$1I = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1I.apply(this, arguments); }
|
|
486
|
+
|
|
487
|
+
function SvgWarning(props) {
|
|
488
|
+
return /*#__PURE__*/React__namespace.createElement("svg", _extends$1I({
|
|
489
|
+
viewBox: "0 0 16 16",
|
|
490
|
+
fill: "none",
|
|
491
|
+
strokeLinecap: "round",
|
|
492
|
+
strokeLinejoin: "round",
|
|
493
|
+
width: "1em",
|
|
494
|
+
height: "1em"
|
|
495
|
+
}, props), _path$K || (_path$K = /*#__PURE__*/React__namespace.createElement("path", {
|
|
496
|
+
d: "M6.86 2.573L1.213 12a1.334 1.334 0 001.14 2h11.294a1.332 1.332 0 001.14-2L9.14 2.573a1.333 1.333 0 00-2.28 0v0zM8 6v2.667m0 2.667h.007",
|
|
497
|
+
stroke: "currentColor"
|
|
498
|
+
})));
|
|
499
|
+
}
|
|
500
|
+
|
|
477
501
|
var _path$z;
|
|
478
502
|
|
|
479
503
|
function _extends$1o() { _extends$1o = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1o.apply(this, arguments); }
|
|
@@ -789,7 +813,7 @@ styles.makeStyles(function (theme) { return ({
|
|
|
789
813
|
},
|
|
790
814
|
}); });
|
|
791
815
|
|
|
792
|
-
|
|
816
|
+
styles.makeStyles(function () { return ({
|
|
793
817
|
root: {
|
|
794
818
|
minWidth: 'unset',
|
|
795
819
|
},
|
|
@@ -801,19 +825,6 @@ var useButtonStyles = styles.makeStyles(function () { return ({
|
|
|
801
825
|
},
|
|
802
826
|
}); });
|
|
803
827
|
|
|
804
|
-
var Button = React.forwardRef(function (props, ref) {
|
|
805
|
-
props.textTransform; var loading = props.loading, classesOverride = props.classes, className = props.className, muiProps = __rest(props, ["textTransform", "loading", "classes", "className"]);
|
|
806
|
-
props.classes; var styleProps = __rest(props, ["classes"]);
|
|
807
|
-
var classes = useButtonStyles(styleProps);
|
|
808
|
-
var typography = styles.useTheme().typography;
|
|
809
|
-
var loadingIndicator = {
|
|
810
|
-
startIcon: React__default['default'].createElement(CircularProgress__default['default'], { color: "inherit", size: typography.button.fontSize }),
|
|
811
|
-
disabled: true,
|
|
812
|
-
};
|
|
813
|
-
return (React__default['default'].createElement(MuiButton__default['default'], __assign({ ref: ref, classes: __assign(__assign({}, classes), classesOverride), className: classNames$1([className, 'pm-button']) }, muiProps, (loading && loadingIndicator))));
|
|
814
|
-
});
|
|
815
|
-
Button.displayName = 'Button';
|
|
816
|
-
|
|
817
828
|
var Checkbox$1 = React.forwardRef(function (props, ref) {
|
|
818
829
|
var label = props.label, disabled = props.disabled, LabelProps = props.LabelProps, muiProps = __rest(props, ["label", "disabled", "LabelProps"]);
|
|
819
830
|
var control = React__default['default'].createElement(MuiCheckbox__default['default'], __assign({ disabled: label ? undefined : disabled }, muiProps));
|
|
@@ -968,12 +979,12 @@ var useTypographyStyles = styles.makeStyles(function (theme) {
|
|
|
968
979
|
});
|
|
969
980
|
});
|
|
970
981
|
|
|
971
|
-
var Typography =
|
|
972
|
-
props.weight; props.color; var restProps = __rest(props, ["weight", "color"]);
|
|
982
|
+
var Typography = function (props) {
|
|
983
|
+
props.weight; props.color; var TypographyRef = props.TypographyRef, restProps = __rest(props, ["weight", "color", "TypographyRef"]);
|
|
973
984
|
var classes = useTypographyStyles(__assign({}, props));
|
|
974
985
|
var variantMapping = { subtitle1: 'p' };
|
|
975
|
-
return React__default['default'].createElement(core.Typography, __assign({
|
|
976
|
-
}
|
|
986
|
+
return React__default['default'].createElement(core.Typography, __assign({ classes: classes, variantMapping: variantMapping, ref: TypographyRef }, restProps));
|
|
987
|
+
};
|
|
977
988
|
Typography.displayName = 'Typography';
|
|
978
989
|
Typography.defaultProps = defaultTypographyProps;
|
|
979
990
|
|
|
@@ -1500,6 +1511,11 @@ var useDishCheckoutCardStyles = styles.makeStyles(function (theme) { return ({
|
|
|
1500
1511
|
selectPaper: {
|
|
1501
1512
|
maxHeight: theme.spacing(37),
|
|
1502
1513
|
},
|
|
1514
|
+
warning: {
|
|
1515
|
+
color: theme.palette.error.main,
|
|
1516
|
+
display: 'flex',
|
|
1517
|
+
gridGap: theme.spacing(0.825),
|
|
1518
|
+
},
|
|
1503
1519
|
}); });
|
|
1504
1520
|
|
|
1505
1521
|
var OrderingAppContext = React.createContext(null);
|
|
@@ -1517,7 +1533,7 @@ var OrderingAppContextProvider = function (props) {
|
|
|
1517
1533
|
|
|
1518
1534
|
var DishCheckoutCard = function (props) {
|
|
1519
1535
|
var _a;
|
|
1520
|
-
var id = props.id, name = props.name, quantity = props.quantity, modifiers = props.modifiers, onDelete = props.onDelete, onEdit = props.onEdit, onQuantityChange = props.onQuantityChange, price = props.price, specialInstructions = props.specialInstructions, disabled = props.disabled;
|
|
1536
|
+
var id = props.id, name = props.name, quantity = props.quantity, modifiers = props.modifiers, onDelete = props.onDelete, onEdit = props.onEdit, onQuantityChange = props.onQuantityChange, price = props.price, specialInstructions = props.specialInstructions, disabled = props.disabled, warningMessage = props.warningMessage;
|
|
1521
1537
|
var classes = useDishCheckoutCardStyles(props);
|
|
1522
1538
|
var appContext = useOrderingAppContext()[0];
|
|
1523
1539
|
var _b = React.useState(false), open = _b[0], setOpen = _b[1];
|
|
@@ -1539,7 +1555,7 @@ var DishCheckoutCard = function (props) {
|
|
|
1539
1555
|
specialInstructions,
|
|
1540
1556
|
"\"")),
|
|
1541
1557
|
React__default['default'].createElement(core.Box, { display: "flex", gridGap: 1, height: "100%", alignItems: "center" },
|
|
1542
|
-
React__default['default'].createElement(Button
|
|
1558
|
+
React__default['default'].createElement(Button, { disabled: disabled, className: classes.editButton, variant: "text", onClick: onEdit }, "Edit"),
|
|
1543
1559
|
React__default['default'].createElement(IconButton, { disabled: disabled, onClick: onDelete, classes: { root: classes.deleteButton } },
|
|
1544
1560
|
React__default['default'].createElement(Icon, { icon: SvgTrash, size: "large" })))),
|
|
1545
1561
|
React__default['default'].createElement(core.Box, { display: "flex", gridGap: 16, alignItems: "center" },
|
|
@@ -1558,7 +1574,11 @@ var DishCheckoutCard = function (props) {
|
|
|
1558
1574
|
getContentAnchorEl: null,
|
|
1559
1575
|
classes: { paper: classes.selectPaper },
|
|
1560
1576
|
}, className: classes.select }, Array.from({ length: 99 }, function (_, index) { return (React__default['default'].createElement(core.MenuItem, { key: index + 1, value: index + 1 }, index + 1)); }))),
|
|
1561
|
-
React__default['default'].createElement(Typography, { className: classes.price }, formattedPrice))
|
|
1577
|
+
React__default['default'].createElement(Typography, { className: classes.price }, formattedPrice)),
|
|
1578
|
+
warningMessage && (React__default['default'].createElement(core.Box, { className: classes.warning },
|
|
1579
|
+
React__default['default'].createElement(core.Box, { paddingTop: 0.25 },
|
|
1580
|
+
React__default['default'].createElement(Icon, { icon: SvgWarning, size: "medium" })),
|
|
1581
|
+
React__default['default'].createElement(Typography, { variant: "body2" }, warningMessage)))));
|
|
1562
1582
|
};
|
|
1563
1583
|
|
|
1564
1584
|
var DishDetailsReview = React.forwardRef(function (props) {
|
|
@@ -1624,98 +1644,190 @@ var useLabelStyles = styles.makeStyles(function (theme) { return ({
|
|
|
1624
1644
|
},
|
|
1625
1645
|
}); });
|
|
1626
1646
|
|
|
1647
|
+
var useQuantityPickerStyles = styles.makeStyles(function (theme) { return ({
|
|
1648
|
+
root: {
|
|
1649
|
+
height: theme.spacing(7),
|
|
1650
|
+
backgroundColor: 'none',
|
|
1651
|
+
},
|
|
1652
|
+
}); });
|
|
1653
|
+
var useQuantityInputStyles = styles.makeStyles(function (theme) { return ({
|
|
1654
|
+
root: {
|
|
1655
|
+
height: '100%',
|
|
1656
|
+
width: 'min-content',
|
|
1657
|
+
borderRadius: theme.spacing(12.5),
|
|
1658
|
+
background: function (props) { return (props.variation === 'modifierCount' ? 'unset' : theme.palette.grey[100]); },
|
|
1659
|
+
},
|
|
1660
|
+
input: {
|
|
1661
|
+
'&::-webkit-clear-button, &::-webkit-outer-spin-button, &::-webkit-inner-spin-button': {
|
|
1662
|
+
display: 'none',
|
|
1663
|
+
},
|
|
1664
|
+
'-moz-appearance': 'textfield',
|
|
1665
|
+
fontWeight: 600,
|
|
1666
|
+
padding: 0,
|
|
1667
|
+
textAlign: 'center',
|
|
1668
|
+
zIndex: function (props) { return (props.value === 0 && props.variation === 'modifierCount' ? -1 : 1); },
|
|
1669
|
+
backgroundColor: function (props) { return (props.variation === 'modifierCount' ? theme.palette.grey[100] : 'unset'); },
|
|
1670
|
+
alignSelf: function (props) { return (props.variation === 'modifierCount' ? 'stretch' : 'unset'); },
|
|
1671
|
+
height: function (props) { return (props.variation === 'modifierCount' ? 'auto' : 'unset'); },
|
|
1672
|
+
minWidth: function (props) { return (props.variation === 'modifierCount' ? theme.spacing(5) : theme.spacing(2.75)); },
|
|
1673
|
+
borderRadius: function (props) { return (props.variation === 'modifierCount' ? theme.spacing(1) : 'unset'); },
|
|
1674
|
+
margin: function (props) { return (props.variation === 'modifierCount' ? theme.spacing(0.5, 0) : 0); },
|
|
1675
|
+
},
|
|
1676
|
+
}); });
|
|
1677
|
+
var useStartAdornmentStyles = styles.makeStyles(function (theme) { return ({
|
|
1678
|
+
root: {
|
|
1679
|
+
color: theme.palette.text.primary,
|
|
1680
|
+
zIndex: function (props) { return (props.value === 0 && props.variation === 'modifierCount' ? -1 : 1); },
|
|
1681
|
+
},
|
|
1682
|
+
}); });
|
|
1683
|
+
var useEndAdornmentStyles = styles.makeStyles(function (theme) { return ({
|
|
1684
|
+
root: {
|
|
1685
|
+
color: theme.palette.text.primary,
|
|
1686
|
+
},
|
|
1687
|
+
}); });
|
|
1688
|
+
|
|
1689
|
+
var QuantityPicker = function (props) {
|
|
1690
|
+
var value = props.value, onChange = props.onChange, disabled = props.disabled, disableIncrement = props.disableIncrement, preventManualChange = props.preventManualChange, variation = props.variation;
|
|
1691
|
+
var fieldClasses = useQuantityPickerStyles();
|
|
1692
|
+
var inputClasses = useQuantityInputStyles(props);
|
|
1693
|
+
var startAdornmentClasses = useStartAdornmentStyles(props);
|
|
1694
|
+
var endAdornmentClasses = useEndAdornmentStyles(props);
|
|
1695
|
+
var onIncrement = function (event) {
|
|
1696
|
+
onChange(event, { quantity: value + 1, reason: 'increment' });
|
|
1697
|
+
};
|
|
1698
|
+
var onDecrement = function (event) {
|
|
1699
|
+
onChange(event, { quantity: value - 1, reason: 'decrement' });
|
|
1700
|
+
};
|
|
1701
|
+
var handleChange = function (event) {
|
|
1702
|
+
if (preventManualChange) {
|
|
1703
|
+
event.preventDefault();
|
|
1704
|
+
}
|
|
1705
|
+
if (!preventManualChange) {
|
|
1706
|
+
onChange(event, { quantity: parseInt(event.target.value), reason: 'change' });
|
|
1707
|
+
}
|
|
1708
|
+
};
|
|
1709
|
+
return (React__default['default'].createElement(core.TextField, { classes: fieldClasses, type: "number", variant: variation === 'itemCount' ? 'filled' : 'standard', defaultValue: value, value: value, disabled: disabled, onChange: handleChange, InputProps: {
|
|
1710
|
+
classes: inputClasses,
|
|
1711
|
+
disableUnderline: true,
|
|
1712
|
+
endAdornment: (React__default['default'].createElement(IconButton, { className: endAdornmentClasses.root, color: "default", tabIndex: -1, onClick: onIncrement, disabled: disabled || disableIncrement },
|
|
1713
|
+
React__default['default'].createElement(Icon, { icon: SvgPlusCircle }))),
|
|
1714
|
+
startAdornment: (React__default['default'].createElement(IconButton, { className: startAdornmentClasses.root, color: "default", tabIndex: -1, onClick: onDecrement, disabled: disabled || value <= 0 },
|
|
1715
|
+
React__default['default'].createElement(Icon, { icon: SvgMinusCircle }))),
|
|
1716
|
+
} }));
|
|
1717
|
+
};
|
|
1718
|
+
|
|
1627
1719
|
var Label = function (props) {
|
|
1628
|
-
var name = props.name, price = props.price,
|
|
1720
|
+
var name = props.name, price = props.price, outOfStock = props.outOfStock, messages = props.messages;
|
|
1629
1721
|
var classes = useLabelStyles();
|
|
1630
1722
|
return (React__default['default'].createElement(core.Box, { display: "flex", flexDirection: "column", className: classes.label },
|
|
1631
1723
|
React__default['default'].createElement(core.Box, { display: "flex", alignItems: "center", gridGap: 8 },
|
|
1632
1724
|
React__default['default'].createElement(core.Typography, null, name),
|
|
1633
|
-
|
|
1634
|
-
price && React__default['default'].createElement(core.Typography,
|
|
1725
|
+
outOfStock && (React__default['default'].createElement(core.Typography, { variant: "caption", className: classes.outOfStock }, messages.outOfStockText))),
|
|
1726
|
+
price && React__default['default'].createElement(core.Typography, null,
|
|
1635
1727
|
"+ ",
|
|
1636
1728
|
price)));
|
|
1637
1729
|
};
|
|
1638
|
-
var
|
|
1639
|
-
var
|
|
1640
|
-
var
|
|
1641
|
-
var
|
|
1642
|
-
var handleChange = function (event) {
|
|
1643
|
-
var _a;
|
|
1644
|
-
var price = (_a = modifiers.find(function (modifier) { return modifier.id === parseInt(event.target.value); })) === null || _a === void 0 ? void 0 : _a.price;
|
|
1730
|
+
var SingleSelectModifierControl = function (props) {
|
|
1731
|
+
var modifiers = props.modifiers, isOutOfStock = props.isOutOfStock, onChange = props.onChange, value = props.value, messages = props.messages;
|
|
1732
|
+
var radioClasses = useRadioModifierFormStyles();
|
|
1733
|
+
var makeHandleChange = function (modifier) { return function (e) {
|
|
1645
1734
|
onChange([
|
|
1646
1735
|
{
|
|
1647
|
-
id:
|
|
1648
|
-
price:
|
|
1649
|
-
quantity: 1,
|
|
1650
|
-
},
|
|
1651
|
-
], event.target.checked);
|
|
1652
|
-
};
|
|
1653
|
-
return (React__default['default'].createElement(core.Box, { display: "flex", flexDirection: "column" }, modifiers.map(function (modifier, index) {
|
|
1654
|
-
var targetValue = value === null || value === void 0 ? void 0 : value.find(function (v) { return v.id == modifier.id; });
|
|
1655
|
-
return (React__default['default'].createElement(core.FormControlLabel, { key: index, value: modifier.id, control: React__default['default'].createElement(core.Checkbox, { className: classes.radio, disabled: (!targetValue && disableNewSelections) || isOutOfStock || modifier.outOfStock }), label: React__default['default'].createElement(Label, { name: modifier.name, price: modifier.price
|
|
1656
|
-
? "" + (appContext && appContext.currencySymbol) + Number(modifier.price).toFixed(2)
|
|
1657
|
-
: null, disabled: isOutOfStock || modifier.outOfStock, isOutOfStock: isOutOfStock }), className: classes.root, checked: !!targetValue, onChange: handleChange }));
|
|
1658
|
-
})));
|
|
1659
|
-
};
|
|
1660
|
-
var RadioGroup = function (props) {
|
|
1661
|
-
var value = props.value, modifiers = props.modifiers, onChange = props.onChange, isOutOfStock = props.isOutOfStock;
|
|
1662
|
-
var classes = useRadioModifierFormStyles();
|
|
1663
|
-
var appContext = useOrderingAppContext()[0];
|
|
1664
|
-
var handleChange = function (event) {
|
|
1665
|
-
var _a;
|
|
1666
|
-
var price = (_a = modifiers.find(function (modifier) { return modifier.id === parseInt(event.target.value); })) === null || _a === void 0 ? void 0 : _a.price;
|
|
1667
|
-
onChange([
|
|
1668
|
-
{
|
|
1669
|
-
id: parseInt(event.target.value),
|
|
1670
|
-
price: (price && parseInt(price)) || 0,
|
|
1736
|
+
id: Number(e.target.value),
|
|
1737
|
+
price: modifier.price,
|
|
1671
1738
|
quantity: 1,
|
|
1672
1739
|
},
|
|
1673
1740
|
]);
|
|
1674
|
-
};
|
|
1675
|
-
return (React__default['default'].createElement(
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1741
|
+
}; };
|
|
1742
|
+
return (React__default['default'].createElement(core.FormControl, { fullWidth: true },
|
|
1743
|
+
React__default['default'].createElement(core.RadioGroup, null, modifiers.map(function (modifier) {
|
|
1744
|
+
var _a;
|
|
1745
|
+
return (React__default['default'].createElement(core.FormControlLabel, { key: modifier.id, value: modifier.id, control: React__default['default'].createElement(core.Radio, { checked: ((_a = value[0]) === null || _a === void 0 ? void 0 : _a.id) === modifier.id, className: radioClasses.radio, disabled: isOutOfStock || modifier.outOfStock, onChange: makeHandleChange(modifier) }), label: React__default['default'].createElement(Label, { messages: messages, name: modifier.name, price: modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock, outOfStock: isOutOfStock }) }));
|
|
1746
|
+
}))));
|
|
1747
|
+
};
|
|
1748
|
+
var MultipleSelectControl = function (props) {
|
|
1749
|
+
var modifiers = props.modifiers, value = props.value, isOutOfStock = props.isOutOfStock, onChange = props.onChange, messages = props.messages, disableNewSelections = props.disableNewSelections;
|
|
1750
|
+
var classes = useCheckboxModifierFormStyles();
|
|
1751
|
+
var makeHandleChange = function (modifier) { return function () {
|
|
1752
|
+
var isModifierInValue = Boolean(value.find(function (v) { return v.id === modifier.id; }));
|
|
1753
|
+
if (isModifierInValue) {
|
|
1754
|
+
onChange(value.filter(function (v) { return v.id !== modifier.id; }));
|
|
1755
|
+
}
|
|
1756
|
+
else {
|
|
1757
|
+
onChange(__spreadArray(__spreadArray([], value), [{ id: modifier.id, price: modifier.price || 0, quantity: 1 }]));
|
|
1758
|
+
}
|
|
1759
|
+
}; };
|
|
1760
|
+
return (React__default['default'].createElement(core.FormControl, { fullWidth: true },
|
|
1761
|
+
React__default['default'].createElement(core.FormGroup, null, modifiers.map(function (modifier) { return (React__default['default'].createElement(core.FormControlLabel, { key: modifier.id, value: modifier.id, className: classes.root, checked: value.some(function (v) { return v.id === modifier.id; }), onChange: makeHandleChange(modifier), control: React__default['default'].createElement(core.Checkbox, { className: classes.radio, disabled: isOutOfStock || modifier.outOfStock || (!modifier.quantity && disableNewSelections) }), label: React__default['default'].createElement(Label, { messages: messages, name: modifier.name, price: modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock, outOfStock: isOutOfStock }) })); }))));
|
|
1762
|
+
};
|
|
1763
|
+
var MultipleQuantitySelectControl = function (props) {
|
|
1764
|
+
var modifiers = props.modifiers, value = props.value, isOutOfStock = props.isOutOfStock, onChange = props.onChange, messages = props.messages, disableNewSelections = props.disableNewSelections;
|
|
1765
|
+
var makeHandleChange = function (modifier) { return function (_e, customEvent) {
|
|
1766
|
+
var isModifierInValue = Boolean(value.find(function (v) { return v.id === modifier.id; }));
|
|
1767
|
+
var isQuantityZero = customEvent.quantity === 0;
|
|
1768
|
+
var shouldRemoveModifierFromValue = isModifierInValue && isQuantityZero;
|
|
1769
|
+
var shouldAddModifierToValue = !isModifierInValue && !isQuantityZero;
|
|
1770
|
+
var shouldUpdateModifierInValue = isModifierInValue && !isQuantityZero;
|
|
1771
|
+
if (shouldRemoveModifierFromValue) {
|
|
1772
|
+
onChange(value.filter(function (v) { return v.id !== modifier.id; }));
|
|
1773
|
+
}
|
|
1774
|
+
if (shouldAddModifierToValue) {
|
|
1775
|
+
onChange(__spreadArray(__spreadArray([], value), [{ id: modifier.id, price: modifier.price, quantity: customEvent.quantity }]));
|
|
1776
|
+
}
|
|
1777
|
+
if (shouldUpdateModifierInValue) {
|
|
1778
|
+
onChange(value.map(function (val) { return (val.id === modifier.id ? __assign$1(__assign$1({}, val), { quantity: customEvent.quantity }) : val); }));
|
|
1779
|
+
}
|
|
1780
|
+
}; };
|
|
1781
|
+
return (React__default['default'].createElement(core.FormControl, { fullWidth: true },
|
|
1782
|
+
React__default['default'].createElement(core.FormGroup, null, modifiers.map(function (modifier) { return (React__default['default'].createElement(core.Box, { key: modifier.id, style: { justifyContent: 'space-between' }, display: "flex" },
|
|
1783
|
+
React__default['default'].createElement(Label, { messages: messages, name: modifier.name, price: modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock, outOfStock: isOutOfStock }),
|
|
1784
|
+
React__default['default'].createElement(QuantityPicker, { variation: "modifierCount", value: modifier.quantity, disableIncrement: disableNewSelections, preventManualChange: true, onChange: makeHandleChange(modifier) }))); }))));
|
|
1785
|
+
};
|
|
1786
|
+
var ModifierControls = function (props) {
|
|
1787
|
+
switch (props.type) {
|
|
1681
1788
|
case 'singleSelect':
|
|
1682
|
-
return React__default['default'].createElement(
|
|
1789
|
+
return React__default['default'].createElement(SingleSelectModifierControl, __assign$1({}, props));
|
|
1683
1790
|
case 'multipleSelect':
|
|
1684
|
-
return
|
|
1791
|
+
return React__default['default'].createElement(MultipleSelectControl, __assign$1({}, props));
|
|
1792
|
+
case 'multipleQuantitySelect':
|
|
1793
|
+
return React__default['default'].createElement(MultipleQuantitySelectControl, __assign$1({}, props));
|
|
1685
1794
|
default:
|
|
1686
1795
|
return null;
|
|
1687
1796
|
}
|
|
1688
1797
|
};
|
|
1689
1798
|
|
|
1690
|
-
var
|
|
1691
|
-
var
|
|
1692
|
-
var optionalText = messages.optionalText, outOfStockText = messages.outOfStockText, requiredText = messages.requiredText
|
|
1693
|
-
var isFullyOutOfStock = isOutOfStock || !modifiers.some(function (modifier) { return !modifier.outOfStock; });
|
|
1694
|
-
var classes = useDishModifierCardStyles();
|
|
1799
|
+
var getStatusTagProps = function (props) {
|
|
1800
|
+
var messages = props.messages, error = props.error, isRequired = props.isRequired, isOutOfStock = props.isOutOfStock;
|
|
1801
|
+
var optionalText = messages.optionalText, outOfStockText = messages.outOfStockText, requiredText = messages.requiredText;
|
|
1695
1802
|
var color = 'default';
|
|
1696
1803
|
switch (true) {
|
|
1697
1804
|
case error:
|
|
1698
1805
|
color = 'error';
|
|
1699
|
-
case
|
|
1806
|
+
case isOutOfStock:
|
|
1700
1807
|
color = 'warning';
|
|
1701
1808
|
}
|
|
1702
1809
|
var label = optionalText;
|
|
1703
1810
|
switch (true) {
|
|
1704
|
-
case
|
|
1811
|
+
case isOutOfStock:
|
|
1705
1812
|
label = outOfStockText;
|
|
1706
1813
|
break;
|
|
1707
1814
|
case isRequired:
|
|
1708
1815
|
label = requiredText;
|
|
1709
1816
|
break;
|
|
1710
1817
|
}
|
|
1818
|
+
var variant = isRequired || isOutOfStock ? 'outlined' : 'filled';
|
|
1819
|
+
return { color: color, label: label, variant: variant };
|
|
1820
|
+
};
|
|
1821
|
+
var DishModifierCard = function (props) {
|
|
1822
|
+
var name = props.name, disableNewSelections = props.disableNewSelections, modifiers = props.modifiers, value = props.value, messages = props.messages, onChange = props.onChange, type = props.type, error = props.error, isOutOfStock = props.isOutOfStock;
|
|
1823
|
+
var classes = useDishModifierCardStyles();
|
|
1711
1824
|
return (React__default['default'].createElement(core.Box, { className: classes.root },
|
|
1712
1825
|
React__default['default'].createElement(core.Box, { display: "flex", justifyContent: "space-between", width: "100%", alignItems: "center", height: "fit-content", marginBottom: 2 },
|
|
1713
|
-
React__default['default'].createElement(StatusTag, {
|
|
1714
|
-
!
|
|
1826
|
+
React__default['default'].createElement(StatusTag, __assign$1({}, getStatusTagProps(props))),
|
|
1827
|
+
!isOutOfStock && (React__default['default'].createElement(Typography, { variant: "subtitle1", className: error ? classes.error : undefined }, messages.helperText))),
|
|
1715
1828
|
React__default['default'].createElement(Typography, { className: classes.name }, name),
|
|
1716
1829
|
React__default['default'].createElement(core.Box, null,
|
|
1717
|
-
React__default['default'].createElement(
|
|
1718
|
-
React__default['default'].createElement(ModifierOptionsControl, { type: type, modifiers: modifiers, value: value, onChange: onChange, disableNewSelections: disableNewSelections, isOutOfStock: isFullyOutOfStock })))));
|
|
1830
|
+
React__default['default'].createElement(ModifierControls, { value: value, modifiers: modifiers, isOutOfStock: isOutOfStock, onChange: onChange, disableNewSelections: disableNewSelections, type: type, messages: messages }))));
|
|
1719
1831
|
};
|
|
1720
1832
|
DishModifierCard.displayName = 'DishModifierCard';
|
|
1721
1833
|
|
|
@@ -1835,6 +1947,11 @@ var useMenuDropdownStyles = styles.makeStyles(function (theme) {
|
|
|
1835
1947
|
alignSelf: 'start',
|
|
1836
1948
|
},
|
|
1837
1949
|
_a),
|
|
1950
|
+
menuItem: {
|
|
1951
|
+
alignItems: 'center',
|
|
1952
|
+
display: 'flex',
|
|
1953
|
+
gridGap: theme.spacing(1),
|
|
1954
|
+
},
|
|
1838
1955
|
select: {
|
|
1839
1956
|
'& .MuiSelect-root': {
|
|
1840
1957
|
color: '#212121',
|
|
@@ -1842,6 +1959,9 @@ var useMenuDropdownStyles = styles.makeStyles(function (theme) {
|
|
|
1842
1959
|
zIndex: 10,
|
|
1843
1960
|
},
|
|
1844
1961
|
},
|
|
1962
|
+
unavailable: {
|
|
1963
|
+
color: theme.palette.grey[700],
|
|
1964
|
+
},
|
|
1845
1965
|
});
|
|
1846
1966
|
});
|
|
1847
1967
|
|
|
@@ -1863,7 +1983,9 @@ var MenuDropdown = function (props) {
|
|
|
1863
1983
|
horizontal: 'left',
|
|
1864
1984
|
},
|
|
1865
1985
|
getContentAnchorEl: null,
|
|
1866
|
-
}, className: classes.select }, menuOptions.map(function (option, index) { return (React__default['default'].createElement(core.MenuItem, { key: index, value: option.id
|
|
1986
|
+
}, className: classes.select, renderValue: function (selected) { var _a; return (_a = menuOptions.find(function (menuOption) { return menuOption.id === selected; })) === null || _a === void 0 ? void 0 : _a.name; } }, menuOptions.map(function (option, index) { return (React__default['default'].createElement(core.MenuItem, { key: index, value: option.id, className: classNames(classes.menuItem, option.isUnavailable ? classes.unavailable : '') },
|
|
1987
|
+
option.name,
|
|
1988
|
+
option.isUnavailable && React__default['default'].createElement(Icon, { icon: SvgClock, size: "large" }))); }))));
|
|
1867
1989
|
};
|
|
1868
1990
|
|
|
1869
1991
|
var useMenuFilterStyles = styles.makeStyles(function (theme) { return ({
|
|
@@ -1925,61 +2047,6 @@ var MenuFilter = function (props) {
|
|
|
1925
2047
|
React__default['default'].createElement(Typography, { variant: "body1", color: "grey.500" }, noOptionsLabel)))))));
|
|
1926
2048
|
};
|
|
1927
2049
|
|
|
1928
|
-
var useQuantityPickerStyles = styles.makeStyles(function (theme) { return ({
|
|
1929
|
-
root: {
|
|
1930
|
-
height: theme.spacing(7),
|
|
1931
|
-
},
|
|
1932
|
-
}); });
|
|
1933
|
-
var useQuantityInputStyles = styles.makeStyles(function (theme) { return ({
|
|
1934
|
-
root: {
|
|
1935
|
-
height: '100%',
|
|
1936
|
-
width: 'min-content',
|
|
1937
|
-
borderRadius: theme.spacing(12.5),
|
|
1938
|
-
background: theme.palette.grey[100],
|
|
1939
|
-
},
|
|
1940
|
-
input: {
|
|
1941
|
-
'&::-webkit-clear-button, &::-webkit-outer-spin-button, &::-webkit-inner-spin-button': {
|
|
1942
|
-
display: 'none',
|
|
1943
|
-
},
|
|
1944
|
-
'-moz-appearance': 'textfield',
|
|
1945
|
-
fontWeight: 600,
|
|
1946
|
-
minWidth: theme.spacing(2.75),
|
|
1947
|
-
padding: 0,
|
|
1948
|
-
textAlign: 'center',
|
|
1949
|
-
position: 'relative',
|
|
1950
|
-
left: 1,
|
|
1951
|
-
},
|
|
1952
|
-
adornedStart: {
|
|
1953
|
-
padding: theme.spacing(0.25),
|
|
1954
|
-
},
|
|
1955
|
-
adornedEnd: {
|
|
1956
|
-
padding: theme.spacing(0.5),
|
|
1957
|
-
},
|
|
1958
|
-
}); });
|
|
1959
|
-
|
|
1960
|
-
var QuantityPicker = function (props) {
|
|
1961
|
-
var value = props.value, onChange = props.onChange, disabled = props.disabled;
|
|
1962
|
-
var fieldClasses = useQuantityPickerStyles();
|
|
1963
|
-
var inputClasses = useQuantityInputStyles();
|
|
1964
|
-
var onIncrement = function () {
|
|
1965
|
-
onChange({ target: { value: value + 1 } }, 'increment');
|
|
1966
|
-
};
|
|
1967
|
-
var onDecrement = function () {
|
|
1968
|
-
onChange({ target: { value: value - 1 } }, 'decrement');
|
|
1969
|
-
};
|
|
1970
|
-
var handleChange = function (event) {
|
|
1971
|
-
onChange({ target: { value: parseInt(event.target.value) } }, 'change');
|
|
1972
|
-
};
|
|
1973
|
-
return (React__default['default'].createElement(core.TextField, { classes: __assign$1({}, fieldClasses), variant: "filled", type: "number", defaultValue: value, value: value, disabled: disabled, onChange: handleChange, InputProps: {
|
|
1974
|
-
classes: __assign$1({}, inputClasses),
|
|
1975
|
-
disableUnderline: true,
|
|
1976
|
-
endAdornment: (React__default['default'].createElement(IconButton, { color: "default", tabIndex: -1, onClick: onIncrement, disabled: disabled },
|
|
1977
|
-
React__default['default'].createElement(Icon, { icon: SvgPlusCircle }))),
|
|
1978
|
-
startAdornment: (React__default['default'].createElement(IconButton, { color: "default", tabIndex: -1, onClick: onDecrement, disabled: disabled },
|
|
1979
|
-
React__default['default'].createElement(Icon, { icon: SvgMinusCircle }))),
|
|
1980
|
-
} }));
|
|
1981
|
-
};
|
|
1982
|
-
|
|
1983
2050
|
var useSelectableChipStyles = styles.makeStyles(function (theme) { return ({
|
|
1984
2051
|
root: {
|
|
1985
2052
|
border: '2px solid',
|
|
@@ -2337,7 +2404,7 @@ var orderingTheme = {
|
|
|
2337
2404
|
props: props,
|
|
2338
2405
|
};
|
|
2339
2406
|
|
|
2340
|
-
exports.Button = Button
|
|
2407
|
+
exports.Button = Button;
|
|
2341
2408
|
exports.Checkbox = Checkbox;
|
|
2342
2409
|
exports.DialogSection = DialogSection;
|
|
2343
2410
|
exports.DialogTitle = DialogTitle;
|