@popmenu/ordering-ui 0.118.0 → 0.120.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/index.js
CHANGED
|
@@ -187,7 +187,7 @@ var useMenuItemStyles = styles.makeStyles(function (theme) {
|
|
|
187
187
|
fontWeight: 400,
|
|
188
188
|
fontSize: 14,
|
|
189
189
|
lineHeight: '20px',
|
|
190
|
-
|
|
190
|
+
margin: theme.spacing(0.5, 0, 1, 0),
|
|
191
191
|
color: theme.palette.grey[800],
|
|
192
192
|
'-webkit-line-clamp': 2,
|
|
193
193
|
display: '-webkit-box',
|
|
@@ -195,6 +195,12 @@ var useMenuItemStyles = styles.makeStyles(function (theme) {
|
|
|
195
195
|
textOverflow: 'ellipsis',
|
|
196
196
|
overflow: 'hidden',
|
|
197
197
|
},
|
|
198
|
+
outOfStockTag: {
|
|
199
|
+
minWidth: '90px',
|
|
200
|
+
marginLeft: theme.spacing(1),
|
|
201
|
+
display: 'inline-block',
|
|
202
|
+
verticalAlign: 'bottom',
|
|
203
|
+
},
|
|
198
204
|
});
|
|
199
205
|
});
|
|
200
206
|
|
|
@@ -1540,8 +1546,9 @@ var MenuItem = React.forwardRef(function (props, ref) {
|
|
|
1540
1546
|
React__default['default'].createElement(MenuItemInfo, null,
|
|
1541
1547
|
isFeatured && React__default['default'].createElement(StatusTag, { color: "highlight", label: "Featured", variant: "filled", size: "sm" }),
|
|
1542
1548
|
React__default['default'].createElement(core.Box, { display: "flex", gridGap: 8, alignItems: "center" },
|
|
1543
|
-
React__default['default'].createElement(core.Typography, { component: "h3", className: classes.cardTitle },
|
|
1544
|
-
|
|
1549
|
+
React__default['default'].createElement(core.Typography, { component: "h3", className: classes.cardTitle },
|
|
1550
|
+
loading ? React__default['default'].createElement(lab.Skeleton, null) : title,
|
|
1551
|
+
React__default['default'].createElement("span", { className: classes.outOfStockTag }, isOutOfStock && React__default['default'].createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "sm" })))),
|
|
1545
1552
|
React__default['default'].createElement(core.Typography, { className: classes.cardDescription, paragraph: true }, loading ? React__default['default'].createElement(lab.Skeleton, null) : description),
|
|
1546
1553
|
loading ? (React__default['default'].createElement(lab.Skeleton, null,
|
|
1547
1554
|
React__default['default'].createElement(MenuItemReactions, { likeCount: likeCount, reviewCount: reviewCount }))) : (React__default['default'].createElement(MenuItemReactions, { likeCount: likeCount, reviewCount: reviewCount })),
|
|
@@ -1622,6 +1629,10 @@ var useDishCheckoutCardStyles = styles.makeStyles(function (theme) { return ({
|
|
|
1622
1629
|
selectPaper: {
|
|
1623
1630
|
maxHeight: theme.spacing(37),
|
|
1624
1631
|
},
|
|
1632
|
+
ul: {
|
|
1633
|
+
margin: 0,
|
|
1634
|
+
paddingLeft: theme.spacing(3),
|
|
1635
|
+
},
|
|
1625
1636
|
warning: {
|
|
1626
1637
|
color: theme.palette.error.main,
|
|
1627
1638
|
display: 'flex',
|
|
@@ -1644,7 +1655,7 @@ var OrderingAppContextProvider = function (props) {
|
|
|
1644
1655
|
|
|
1645
1656
|
var DishCheckoutCard = function (props) {
|
|
1646
1657
|
var _a;
|
|
1647
|
-
var id = props.id, name = props.name, quantity = props.quantity,
|
|
1658
|
+
var id = props.id, name = props.name, quantity = props.quantity, modifierGroups = props.modifierGroups, onDelete = props.onDelete, onEdit = props.onEdit, onQuantityChange = props.onQuantityChange, price = props.price, specialInstructions = props.specialInstructions, disabled = props.disabled, warningMessage = props.warningMessage, _b = props.image, image = _b === void 0 ? {} : _b;
|
|
1648
1659
|
var src = image.src, alt = image.alt;
|
|
1649
1660
|
var classes = useDishCheckoutCardStyles(props);
|
|
1650
1661
|
var appContext = useOrderingAppContext()[0];
|
|
@@ -1656,16 +1667,41 @@ var DishCheckoutCard = function (props) {
|
|
|
1656
1667
|
var labelString = function (label) {
|
|
1657
1668
|
return label.replace(/[^a-zA-Z\s]/g, '').toLowerCase();
|
|
1658
1669
|
};
|
|
1670
|
+
var formatModifiers = function (groups, nested) {
|
|
1671
|
+
if (nested === void 0) { nested = false; }
|
|
1672
|
+
return groups.map(function (group) {
|
|
1673
|
+
// Get all selected modifiers for this group
|
|
1674
|
+
var modifiers = group.selectedModifiers.map(function (modifier) { return modifier.modifierName; }).join(', ');
|
|
1675
|
+
// Render nested groups recursively
|
|
1676
|
+
var nestedGroups = group.selectedModifiers.flatMap(function (modifier) {
|
|
1677
|
+
var _a;
|
|
1678
|
+
return (modifier === null || modifier === void 0 ? void 0 : modifier.selectedModifierGroups) && ((_a = modifier === null || modifier === void 0 ? void 0 : modifier.selectedModifierGroups) === null || _a === void 0 ? void 0 : _a.length) > 0
|
|
1679
|
+
? formatModifiers(modifier.selectedModifierGroups, true)
|
|
1680
|
+
: [];
|
|
1681
|
+
});
|
|
1682
|
+
// For top-level groups, we render without the list
|
|
1683
|
+
if (!nested) {
|
|
1684
|
+
return (React__default['default'].createElement(Typography, { key: group.id, variant: "body2" },
|
|
1685
|
+
group.menuItemModifierGroupName,
|
|
1686
|
+
": ",
|
|
1687
|
+
modifiers,
|
|
1688
|
+
(nestedGroups === null || nestedGroups === void 0 ? void 0 : nestedGroups.length) > 0 && React__default['default'].createElement("ul", { className: classes.ul }, nestedGroups)));
|
|
1689
|
+
}
|
|
1690
|
+
// For nested groups, we use list items
|
|
1691
|
+
return (React__default['default'].createElement("li", { key: group.id, className: classes.li },
|
|
1692
|
+
React__default['default'].createElement(Typography, { variant: "body2" },
|
|
1693
|
+
group.menuItemModifierGroupName,
|
|
1694
|
+
": ",
|
|
1695
|
+
modifiers,
|
|
1696
|
+
nestedGroups && nestedGroups.length > 0 && React__default['default'].createElement("ul", { className: classes.ul }, nestedGroups))));
|
|
1697
|
+
});
|
|
1698
|
+
};
|
|
1659
1699
|
return (React__default['default'].createElement(core.Box, { className: classes.root },
|
|
1660
1700
|
React__default['default'].createElement(core.Box, { display: "flex", gridGap: 3 },
|
|
1661
1701
|
src && alt && React__default['default'].createElement("img", { src: src, alt: alt, className: classes.img }),
|
|
1662
1702
|
React__default['default'].createElement(core.Box, { flexGrow: 1 },
|
|
1663
1703
|
React__default['default'].createElement(Typography, { variant: "h2", className: classes.name }, name),
|
|
1664
|
-
|
|
1665
|
-
modifiers.map(function (modifier, i) { return (React__default['default'].createElement(Typography, { key: i, variant: "body2" },
|
|
1666
|
-
modifier[0],
|
|
1667
|
-
": ",
|
|
1668
|
-
modifier[1])); }),
|
|
1704
|
+
modifierGroups && formatModifiers(modifierGroups),
|
|
1669
1705
|
specialInstructions && React__default['default'].createElement(Typography, { variant: "body2" },
|
|
1670
1706
|
"\"",
|
|
1671
1707
|
specialInstructions,
|
|
@@ -1996,8 +2032,10 @@ var getStatusTagProps = function (props) {
|
|
|
1996
2032
|
switch (true) {
|
|
1997
2033
|
case error:
|
|
1998
2034
|
color = 'error';
|
|
2035
|
+
break;
|
|
1999
2036
|
case isOutOfStock:
|
|
2000
2037
|
color = 'warning';
|
|
2038
|
+
break;
|
|
2001
2039
|
}
|
|
2002
2040
|
var label = optionalText;
|
|
2003
2041
|
switch (true) {
|