@popmenu/ordering-ui 0.119.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
@@ -1629,6 +1629,10 @@ var useDishCheckoutCardStyles = styles.makeStyles(function (theme) { return ({
1629
1629
  selectPaper: {
1630
1630
  maxHeight: theme.spacing(37),
1631
1631
  },
1632
+ ul: {
1633
+ margin: 0,
1634
+ paddingLeft: theme.spacing(3),
1635
+ },
1632
1636
  warning: {
1633
1637
  color: theme.palette.error.main,
1634
1638
  display: 'flex',
@@ -1651,7 +1655,7 @@ var OrderingAppContextProvider = function (props) {
1651
1655
 
1652
1656
  var DishCheckoutCard = function (props) {
1653
1657
  var _a;
1654
- 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, _b = props.image, image = _b === void 0 ? {} : _b;
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;
1655
1659
  var src = image.src, alt = image.alt;
1656
1660
  var classes = useDishCheckoutCardStyles(props);
1657
1661
  var appContext = useOrderingAppContext()[0];
@@ -1663,16 +1667,41 @@ var DishCheckoutCard = function (props) {
1663
1667
  var labelString = function (label) {
1664
1668
  return label.replace(/[^a-zA-Z\s]/g, '').toLowerCase();
1665
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
+ };
1666
1699
  return (React__default['default'].createElement(core.Box, { className: classes.root },
1667
1700
  React__default['default'].createElement(core.Box, { display: "flex", gridGap: 3 },
1668
1701
  src && alt && React__default['default'].createElement("img", { src: src, alt: alt, className: classes.img }),
1669
1702
  React__default['default'].createElement(core.Box, { flexGrow: 1 },
1670
1703
  React__default['default'].createElement(Typography, { variant: "h2", className: classes.name }, name),
1671
- modifiers &&
1672
- modifiers.map(function (modifier, i) { return (React__default['default'].createElement(Typography, { key: i, variant: "body2" },
1673
- modifier[0],
1674
- ": ",
1675
- modifier[1])); }),
1704
+ modifierGroups && formatModifiers(modifierGroups),
1676
1705
  specialInstructions && React__default['default'].createElement(Typography, { variant: "body2" },
1677
1706
  "\"",
1678
1707
  specialInstructions,