@popmenu/ordering-ui 0.83.1 → 0.84.1

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
@@ -1288,8 +1288,7 @@ var useDishCheckoutCardStyles = styles.makeStyles(function (theme) { return ({
1288
1288
  gridGap: theme.spacing(2),
1289
1289
  border: '1px',
1290
1290
  },
1291
- deleteIcon: {
1292
- height: theme.spacing(2.5),
1291
+ deleteButton: {
1293
1292
  color: theme.palette.info.main,
1294
1293
  },
1295
1294
  editButton: {
@@ -1326,10 +1325,26 @@ var useDishCheckoutCardStyles = styles.makeStyles(function (theme) { return ({
1326
1325
  },
1327
1326
  }); });
1328
1327
 
1328
+ var OrderingAppContext = React.createContext(null);
1329
+ var useOrderingAppContext = function () {
1330
+ var context = React.useContext(OrderingAppContext);
1331
+ if (!context) {
1332
+ throw new Error('useOrderingAppContext has to be used within <OrderingAppContext.Provider>');
1333
+ }
1334
+ return context;
1335
+ };
1336
+ var OrderingAppContextProvider = function (props) {
1337
+ var context = React.useState(props.defaultContext);
1338
+ return React__default['default'].createElement(OrderingAppContext.Provider, { value: context }, props.children);
1339
+ };
1340
+
1329
1341
  var DishCheckoutCard = function (props) {
1330
- var id = props.id, name = props.name, quantity = props.quantity, modifiers = props.modifiers, onDelete = props.onDelete, onEdit = props.onEdit, onChange = props.onChange, price = props.price, specialInstructions = props.specialInstructions;
1342
+ var _a;
1343
+ var id = props.id, name = props.name, quantity = props.quantity, modifiers = props.modifiers, onDelete = props.onDelete, onEdit = props.onEdit, onChange = props.onChange, price = props.price, specialInstructions = props.specialInstructions, disabled = props.disabled;
1331
1344
  var classes = useDishCheckoutCardStyles(props);
1332
- var _a = React.useState(false), open = _a[0], setOpen = _a[1];
1345
+ var appContext = useOrderingAppContext()[0];
1346
+ var _b = React.useState(false), open = _b[0], setOpen = _b[1];
1347
+ var formattedPrice = typeof price === 'number' ? "" + ((_a = appContext.currencySymbol) !== null && _a !== void 0 ? _a : '') + price.toFixed(2) : price;
1333
1348
  return (React__default['default'].createElement(core.Box, { className: classes.root },
1334
1349
  React__default['default'].createElement(core.Box, { display: "flex", justifyContent: "space-between", gridGap: 3 },
1335
1350
  React__default['default'].createElement(core.Box, null,
@@ -1343,13 +1358,13 @@ var DishCheckoutCard = function (props) {
1343
1358
  "\"",
1344
1359
  specialInstructions,
1345
1360
  "\"")),
1346
- React__default['default'].createElement(core.Box, { display: "flex", gridGap: 1, height: "100%" },
1347
- React__default['default'].createElement(Button$1, { className: classes.editButton, variant: "text", onClick: onEdit }, "Edit"),
1348
- React__default['default'].createElement(IconButton, { onClick: onDelete },
1349
- React__default['default'].createElement(Icon, { icon: SvgTrash, className: classes.deleteIcon })))),
1361
+ React__default['default'].createElement(core.Box, { display: "flex", gridGap: 1, height: "100%", alignItems: "center" },
1362
+ React__default['default'].createElement(Button$1, { disabled: disabled, className: classes.editButton, variant: "text", onClick: onEdit }, "Edit"),
1363
+ React__default['default'].createElement(IconButton, { disabled: disabled, onClick: onDelete, classes: { root: classes.deleteButton } },
1364
+ React__default['default'].createElement(Icon, { icon: SvgTrash, size: "large" })))),
1350
1365
  React__default['default'].createElement(core.Box, { display: "flex", gridGap: 16, alignItems: "center" },
1351
1366
  React__default['default'].createElement(core.FormControl, { variant: "outlined", hiddenLabel: true },
1352
- React__default['default'].createElement(core.Select, { open: open, value: quantity, labelId: "select-label-" + id, onClick: function () { return setOpen(!open); }, disableUnderline: true, onChange: function (event) { return onChange(id, event.target.value); }, fullWidth: true, startAdornment: React__default['default'].createElement(core.InputAdornment, { position: "start" },
1367
+ React__default['default'].createElement(core.Select, { disabled: disabled, open: open, value: quantity, labelId: "select-label-" + id, onClick: function () { return setOpen(!open); }, disableUnderline: true, onChange: function (event) { return onChange(id, event.target.value); }, fullWidth: true, startAdornment: React__default['default'].createElement(core.InputAdornment, { position: "start" },
1353
1368
  React__default['default'].createElement(Icon, { icon: open ? SvgChevronUp : SvgChevronDown, size: "large" })), inputProps: { shrink: false }, MenuProps: {
1354
1369
  disablePortal: true,
1355
1370
  anchorOrigin: {
@@ -1363,7 +1378,7 @@ var DishCheckoutCard = function (props) {
1363
1378
  getContentAnchorEl: null,
1364
1379
  classes: { paper: classes.selectPaper },
1365
1380
  }, className: classes.select }, Array.from({ length: 99 }, function (_, index) { return (React__default['default'].createElement(core.MenuItem, { key: index + 1, value: index + 1 }, index + 1)); }))),
1366
- React__default['default'].createElement(Typography, { className: classes.price }, price))));
1381
+ React__default['default'].createElement(Typography, { className: classes.price }, formattedPrice))));
1367
1382
  };
1368
1383
 
1369
1384
  var DishDetailsReview = React.forwardRef(function (props) {
@@ -1404,14 +1419,6 @@ var useDishModifierCardStyles = styles.makeStyles(function (theme) { return ({
1404
1419
  },
1405
1420
  }); });
1406
1421
  var useRadioModifierFormStyles = styles.makeStyles(function (theme) { return ({
1407
- root: {
1408
- '& .MuiFormControlLabel-label': {
1409
- margin: theme.spacing(0.5, 0),
1410
- '& div p:nth-child(2)': {
1411
- color: theme.palette.grey[700],
1412
- },
1413
- },
1414
- },
1415
1422
  radio: {
1416
1423
  fontSize: theme.spacing(2),
1417
1424
  padding: 'unset',
@@ -1422,14 +1429,6 @@ var useRadioModifierFormStyles = styles.makeStyles(function (theme) { return ({
1422
1429
  },
1423
1430
  }); });
1424
1431
  var useCheckboxModifierFormStyles = styles.makeStyles(function (theme) { return ({
1425
- root: {
1426
- '& .MuiFormControlLabel-label': {
1427
- margin: theme.spacing(0.5, 0),
1428
- },
1429
- '&:not(.Mui-disabled) div p:nth-child(2)': {
1430
- color: theme.palette.grey[700],
1431
- },
1432
- },
1433
1432
  radio: {
1434
1433
  color: '#616161',
1435
1434
  fontSize: theme.spacing(2),
@@ -1439,6 +1438,14 @@ var useCheckboxModifierFormStyles = styles.makeStyles(function (theme) { return
1439
1438
  color: theme.palette.info.main,
1440
1439
  },
1441
1440
  },
1441
+ }); });
1442
+ var useLabelStyles = styles.makeStyles(function (theme) { return ({
1443
+ label: {
1444
+ margin: theme.spacing(0.5, 0),
1445
+ },
1446
+ price: {
1447
+ color: theme.palette.grey[700],
1448
+ },
1442
1449
  }); });
1443
1450
 
1444
1451
  var useStatusTagStyles = styles.makeStyles(function (theme) { return ({
@@ -1542,29 +1549,17 @@ StatusTag.defaultProps = {
1542
1549
  };
1543
1550
  StatusTag.displayName = 'StatusTag';
1544
1551
 
1545
- var OrderingAppContext = React.createContext(null);
1546
- var useOrderingAppContext = function () {
1547
- var context = React.useContext(OrderingAppContext);
1548
- if (!context) {
1549
- throw new Error('useOrderingAppContext has to be used within <OrderingAppContext.Provider>');
1550
- }
1551
- return context;
1552
- };
1553
- var OrderingAppContextProvider = function (props) {
1554
- var context = React.useState(props.defaultContext);
1555
- return React__default['default'].createElement(OrderingAppContext.Provider, { value: context }, props.children);
1556
- };
1557
-
1558
1552
  var Label = function (props) {
1559
- var name = props.name, price = props.price;
1560
- return (React__default['default'].createElement(core.Box, { display: "flex", flexDirection: "column" },
1553
+ var name = props.name, price = props.price, disabled = props.disabled;
1554
+ var classes = useLabelStyles();
1555
+ return (React__default['default'].createElement(core.Box, { display: "flex", flexDirection: "column", className: classes.label },
1561
1556
  React__default['default'].createElement(core.Typography, null, name),
1562
- price && React__default['default'].createElement(core.Typography, null,
1557
+ price && React__default['default'].createElement(core.Typography, { className: !disabled ? classes.price : '' },
1563
1558
  "+ ",
1564
1559
  price)));
1565
1560
  };
1566
1561
  var CheckboxGroup = function (props) {
1567
- var value = props.value, modifiers = props.modifiers, onChange = props.onChange, disableNewSelections = props.disableNewSelections;
1562
+ var value = props.value, modifiers = props.modifiers, onChange = props.onChange, disableNewSelections = props.disableNewSelections, isOutOfStock = props.isOutOfStock;
1568
1563
  var classes = useCheckboxModifierFormStyles();
1569
1564
  var appContext = useOrderingAppContext()[0];
1570
1565
  var handleChange = function (event) {
@@ -1580,13 +1575,13 @@ var CheckboxGroup = function (props) {
1580
1575
  };
1581
1576
  return (React__default['default'].createElement(core.Box, { display: "flex", flexDirection: "column" }, modifiers.map(function (modifier, index) {
1582
1577
  var targetValue = value === null || value === void 0 ? void 0 : value.find(function (v) { return v.id == modifier.id; });
1583
- 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 }), label: React__default['default'].createElement(Label, { name: modifier.name, price: modifier.price
1578
+ 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 }), label: React__default['default'].createElement(Label, { name: modifier.name, price: modifier.price
1584
1579
  ? "" + (appContext && appContext.currencySymbol) + Number(modifier.price).toFixed(2)
1585
- : null }), className: classes.root, checked: !!targetValue, onChange: handleChange }));
1580
+ : null, disabled: isOutOfStock }), className: classes.root, checked: !!targetValue, onChange: handleChange }));
1586
1581
  })));
1587
1582
  };
1588
1583
  var RadioGroup = function (props) {
1589
- var value = props.value, modifiers = props.modifiers, onChange = props.onChange;
1584
+ var value = props.value, modifiers = props.modifiers, onChange = props.onChange, isOutOfStock = props.isOutOfStock;
1590
1585
  var classes = useRadioModifierFormStyles();
1591
1586
  var appContext = useOrderingAppContext()[0];
1592
1587
  var handleChange = function (event) {
@@ -1600,16 +1595,16 @@ var RadioGroup = function (props) {
1600
1595
  },
1601
1596
  ]);
1602
1597
  };
1603
- return (React__default['default'].createElement(MuiRadioGroup__default['default'], { name: "selectedModifiers", value: value ? value[0].id : '', onChange: handleChange }, modifiers.map(function (modifier, index) { return (React__default['default'].createElement(core.FormControlLabel, { key: index, value: modifier.id, control: React__default['default'].createElement(core.Radio, { className: classes.radio }), label: React__default['default'].createElement(Label, { name: modifier.name, price: modifier.price ? "" + (appContext && appContext.currencySymbol) + Number(modifier.price).toFixed(2) : null }), className: classes.root })); })));
1598
+ return (React__default['default'].createElement(MuiRadioGroup__default['default'], { name: "selectedModifiers", value: value ? value[0].id : '', onChange: handleChange }, modifiers.map(function (modifier, index) { return (React__default['default'].createElement(core.FormControlLabel, { key: index, value: modifier.id, control: React__default['default'].createElement(core.Radio, { className: classes.radio, disabled: isOutOfStock }), label: React__default['default'].createElement(Label, { name: modifier.name, price: modifier.price ? "" + (appContext && appContext.currencySymbol) + Number(modifier.price).toFixed(2) : null, disabled: isOutOfStock }) })); })));
1604
1599
  };
1605
1600
 
1606
1601
  var ModifierOptionsControl = function (props) {
1607
- var type = props.type, modifiers = props.modifiers, value = props.value, onChange = props.onChange, disableNewSelections = props.disableNewSelections;
1602
+ var type = props.type, modifiers = props.modifiers, value = props.value, onChange = props.onChange, disableNewSelections = props.disableNewSelections, isOutOfStock = props.isOutOfStock;
1608
1603
  switch (type) {
1609
1604
  case 'singleSelect':
1610
- return React__default['default'].createElement(RadioGroup, { modifiers: modifiers, value: value, onChange: onChange });
1605
+ return React__default['default'].createElement(RadioGroup, { modifiers: modifiers, value: value, onChange: onChange, isOutOfStock: isOutOfStock });
1611
1606
  case 'multipleSelect':
1612
- return (React__default['default'].createElement(CheckboxGroup, { modifiers: modifiers, value: value, onChange: onChange, disableNewSelections: disableNewSelections }));
1607
+ return (React__default['default'].createElement(CheckboxGroup, { modifiers: modifiers, value: value, onChange: onChange, disableNewSelections: disableNewSelections, isOutOfStock: isOutOfStock }));
1613
1608
  default:
1614
1609
  return null;
1615
1610
  }
@@ -1628,10 +1623,12 @@ var DishModifierCard = function (props) {
1628
1623
  }
1629
1624
  var label = optionalText;
1630
1625
  switch (true) {
1631
- case isRequired:
1632
- label = requiredText;
1633
1626
  case isOutOfStock:
1634
1627
  label = outOfStockText;
1628
+ break;
1629
+ case isRequired:
1630
+ label = requiredText;
1631
+ break;
1635
1632
  }
1636
1633
  return (React__default['default'].createElement(core.Box, { className: classes.root },
1637
1634
  React__default['default'].createElement(core.Box, { display: "flex", justifyContent: "space-between", width: "100%", alignItems: "center", height: "fit-content" },
@@ -1642,7 +1639,7 @@ var DishModifierCard = function (props) {
1642
1639
  React__default['default'].createElement(Typography, { variant: "subtitle1", className: error ? classes.error : undefined }, helperText)),
1643
1640
  React__default['default'].createElement(core.Box, null,
1644
1641
  React__default['default'].createElement(core.FormControl, null,
1645
- React__default['default'].createElement(ModifierOptionsControl, { type: type, modifiers: modifiers, value: value, onChange: onChange, disableNewSelections: disableNewSelections })))));
1642
+ React__default['default'].createElement(ModifierOptionsControl, { type: type, modifiers: modifiers, value: value, onChange: onChange, disableNewSelections: disableNewSelections, isOutOfStock: isOutOfStock })))));
1646
1643
  };
1647
1644
  DishModifierCard.displayName = 'DishModifierCard';
1648
1645
 
@@ -2017,6 +2014,8 @@ var MenuItemGroup = React.forwardRef(function (props, ref) {
2017
2014
  });
2018
2015
  MenuItemGroup.displayName = 'MenuItemGroup';
2019
2016
 
2017
+ var PageSection = function (props) { return (React__default['default'].createElement(core.Box, { p: 4, borderBottom: "1px solid #E0E0E0" }, props.children)); };
2018
+
2020
2019
  var palette = {
2021
2020
  primary: {
2022
2021
  light: '#7B7FA3',
@@ -2146,6 +2145,7 @@ exports.MenuSection = MenuSection;
2146
2145
  exports.MenuSectionGroup = MenuSectionGroup;
2147
2146
  exports.OrderingAppContext = OrderingAppContext;
2148
2147
  exports.OrderingAppContextProvider = OrderingAppContextProvider;
2148
+ exports.PageSection = PageSection;
2149
2149
  exports.QuantityPicker = QuantityPicker;
2150
2150
  exports.ReactionCounter = ReactionCounter;
2151
2151
  exports.ReactionCounterGroup = ReactionCounterGroup;