@popmenu/ordering-ui 0.126.6 → 0.127.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/cjs/components/Button/index.d.ts +1 -1
- package/build/cjs/components/Checkbox/Checkbox.d.ts +0 -1
- package/build/cjs/components/DishCheckoutCard/DishCheckoutCard.d.ts +1 -2
- package/build/cjs/components/DishCheckoutCard/DishCheckoutCard.styles.d.ts +1 -1
- package/build/cjs/components/DishCheckoutCard/DishCheckoutCardProps.d.ts +6 -2
- package/build/cjs/components/DishCheckoutCard/index.d.ts +2 -2
- package/build/cjs/components/DishDetailsReview/index.d.ts +2 -2
- package/build/cjs/components/DishModifierCard/DishModifierCard.d.ts +0 -1
- package/build/cjs/components/DishModifierCard/DishModifierCardProps.d.ts +7 -7
- package/build/cjs/components/DishModifierCard/ModifierControls.d.ts +0 -1
- package/build/cjs/components/DishModifierCard/ModifierForm.d.ts +0 -1
- package/build/cjs/components/DishModifierCard/index.d.ts +2 -2
- package/build/cjs/components/ItemTag/index.d.ts +2 -2
- package/build/cjs/components/ItemTagGroup/index.d.ts +1 -1
- package/build/cjs/components/LocationCard/LocationCard.d.ts +0 -1
- package/build/cjs/components/LocationCard/index.d.ts +2 -2
- package/build/cjs/components/MenuBanner/MenuBanner.d.ts +0 -1
- package/build/cjs/components/MenuBanner/MenuBannerIcons.d.ts +0 -1
- package/build/cjs/components/MenuBanner/MenuBannerProps.d.ts +1 -1
- package/build/cjs/components/MenuBanner/index.d.ts +1 -1
- package/build/cjs/components/MenuDropdown/MenuDropdown.d.ts +0 -1
- package/build/cjs/components/MenuDropdown/MenuDropdownProps.d.ts +1 -1
- package/build/cjs/components/MenuDropdown/index.d.ts +2 -2
- package/build/cjs/components/MenuFilter/MenuFilter.d.ts +0 -1
- package/build/cjs/components/MenuFilter/MenuFilterProps.d.ts +3 -4
- package/build/cjs/components/MenuFilter/index.d.ts +2 -2
- package/build/cjs/components/MenuItem/MenuItemImg.d.ts +1 -2
- package/build/cjs/components/MenuItem/MenuItemPrice.d.ts +1 -2
- package/build/cjs/components/MenuItem/MenuItemProps.d.ts +1 -1
- package/build/cjs/components/MenuItem/MenuItemReactions.d.ts +1 -2
- package/build/cjs/components/MenuItem/MenuItemTags.d.ts +1 -2
- package/build/cjs/components/MenuItem/index.d.ts +1 -1
- package/build/cjs/components/MenuItemGroup/MenuItemGroup.d.ts +1 -1
- package/build/cjs/components/MenuSection/MenuSectionProps.d.ts +0 -1
- package/build/cjs/components/MenuSection/index.d.ts +1 -1
- package/build/cjs/components/MenuTab/MenuTab.d.ts +0 -1
- package/build/cjs/components/MenuTab/MenuTabProps.d.ts +1 -1
- package/build/cjs/components/MenuTab/index.d.ts +2 -2
- package/build/cjs/components/MenuTabGroup/MenuTabGroup.d.ts +0 -1
- package/build/cjs/components/MenuTabGroup/MenuTabGroupProps.d.ts +1 -4
- package/build/cjs/components/MenuTabGroup/index.d.ts +2 -2
- package/build/cjs/components/OrderingAppContext/OrderingAppContext.d.ts +3 -3
- package/build/cjs/components/QuantityPicker/QuantityPicker.d.ts +1 -2
- package/build/cjs/components/QuantityPicker/QuantityPicker.styles.d.ts +3 -3
- package/build/cjs/components/QuantityPicker/QuantityPickerProps.d.ts +6 -2
- package/build/cjs/components/QuantityPicker/index.d.ts +2 -2
- package/build/cjs/components/Radio/Radio.d.ts +0 -1
- package/build/cjs/components/ReactionCounter/ReactionCounter.d.ts +0 -1
- package/build/cjs/components/ReactionCounter/index.d.ts +2 -2
- package/build/cjs/components/ReactionCounterGroup/ReactionCounterGroup.d.ts +1 -1
- package/build/cjs/components/ReactionCounterGroup/index.d.ts +1 -1
- package/build/cjs/components/SelectableChip/SelectableChip.d.ts +0 -1
- package/build/cjs/components/SelectableChip/SelectableChipProps.d.ts +1 -1
- package/build/cjs/components/SelectableChip/index.d.ts +2 -2
- package/build/cjs/components/SelectableChipGroup/SelectableChipGroup.d.ts +0 -1
- package/build/cjs/components/SelectableChipGroup/SelectableChipGroupProps.d.ts +1 -4
- package/build/cjs/components/SelectableChipGroup/index.d.ts +2 -2
- package/build/cjs/components/SelectedMenuFiltersList/SelectedMenuFiltersList.d.ts +0 -1
- package/build/cjs/components/SelectedMenuFiltersList/index.d.ts +1 -1
- package/build/cjs/components/StatusTag/StatusTag.d.ts +0 -1
- package/build/cjs/components/StatusTag/index.d.ts +2 -2
- package/build/cjs/components/Switch/Switch.d.ts +0 -1
- package/build/cjs/components/index.d.ts +41 -22
- package/build/cjs/index.js +553 -677
- package/build/cjs/index.js.map +1 -1
- package/build/esm/components/Button/Button.js +4 -5
- package/build/esm/components/Button/Button.js.map +1 -1
- package/build/esm/components/Button/index.d.ts +1 -1
- package/build/esm/components/Checkbox/Checkbox.d.ts +0 -1
- package/build/esm/components/Checkbox/Checkbox.js +7 -10
- package/build/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/build/esm/components/DialogSection/DialogSection.js +3 -4
- package/build/esm/components/DialogSection/DialogSection.js.map +1 -1
- package/build/esm/components/DialogTitle/DialogTitle.js +5 -5
- package/build/esm/components/DialogTitle/DialogTitle.js.map +1 -1
- package/build/esm/components/DishCheckoutCard/DishCheckoutCard.d.ts +1 -2
- package/build/esm/components/DishCheckoutCard/DishCheckoutCard.js +21 -31
- package/build/esm/components/DishCheckoutCard/DishCheckoutCard.js.map +1 -1
- package/build/esm/components/DishCheckoutCard/DishCheckoutCard.styles.d.ts +1 -1
- package/build/esm/components/DishCheckoutCard/DishCheckoutCard.styles.js +3 -6
- package/build/esm/components/DishCheckoutCard/DishCheckoutCard.styles.js.map +1 -1
- package/build/esm/components/DishCheckoutCard/DishCheckoutCardProps.d.ts +6 -2
- package/build/esm/components/DishCheckoutCard/index.d.ts +2 -2
- package/build/esm/components/DishDetailsReview/DishDetailsReview.js +2 -2
- package/build/esm/components/DishDetailsReview/DishDetailsReview.js.map +1 -1
- package/build/esm/components/DishDetailsReview/index.d.ts +2 -2
- package/build/esm/components/DishModifierCard/DishModifierCard.d.ts +0 -1
- package/build/esm/components/DishModifierCard/DishModifierCard.js +15 -17
- package/build/esm/components/DishModifierCard/DishModifierCard.js.map +1 -1
- package/build/esm/components/DishModifierCard/DishModifierCard.styles.js +11 -11
- package/build/esm/components/DishModifierCard/DishModifierCard.styles.js.map +1 -1
- package/build/esm/components/DishModifierCard/DishModifierCardProps.d.ts +7 -7
- package/build/esm/components/DishModifierCard/ModifierControls.d.ts +0 -1
- package/build/esm/components/DishModifierCard/ModifierControls.js +47 -54
- package/build/esm/components/DishModifierCard/ModifierControls.js.map +1 -1
- package/build/esm/components/DishModifierCard/ModifierForm.d.ts +0 -1
- package/build/esm/components/DishModifierCard/index.d.ts +2 -2
- package/build/esm/components/ItemTag/ItemTag.js +3 -3
- package/build/esm/components/ItemTag/ItemTag.js.map +1 -1
- package/build/esm/components/ItemTag/index.d.ts +2 -2
- package/build/esm/components/ItemTag/itemTag.styles.js +2 -2
- package/build/esm/components/ItemTag/itemTag.styles.js.map +1 -1
- package/build/esm/components/ItemTagGroup/ItemTagGroup.js +2 -2
- package/build/esm/components/ItemTagGroup/ItemTagGroup.js.map +1 -1
- package/build/esm/components/ItemTagGroup/index.d.ts +1 -1
- package/build/esm/components/LocationCard/LocationCard.d.ts +0 -1
- package/build/esm/components/LocationCard/LocationCard.js +7 -8
- package/build/esm/components/LocationCard/LocationCard.js.map +1 -1
- package/build/esm/components/LocationCard/LocationCard.styles.js +6 -12
- package/build/esm/components/LocationCard/LocationCard.styles.js.map +1 -1
- package/build/esm/components/LocationCard/index.d.ts +2 -2
- package/build/esm/components/MenuBanner/MenuBanner.d.ts +0 -1
- package/build/esm/components/MenuBanner/MenuBanner.js +9 -10
- package/build/esm/components/MenuBanner/MenuBanner.js.map +1 -1
- package/build/esm/components/MenuBanner/MenuBanner.styles.js +12 -16
- package/build/esm/components/MenuBanner/MenuBanner.styles.js.map +1 -1
- package/build/esm/components/MenuBanner/MenuBannerIcons.d.ts +0 -1
- package/build/esm/components/MenuBanner/MenuBannerIcons.js +2 -2
- package/build/esm/components/MenuBanner/MenuBannerIcons.js.map +1 -1
- package/build/esm/components/MenuBanner/MenuBannerProps.d.ts +1 -1
- package/build/esm/components/MenuBanner/index.d.ts +1 -1
- package/build/esm/components/MenuDropdown/MenuDropdown.d.ts +0 -1
- package/build/esm/components/MenuDropdown/MenuDropdown.js +12 -15
- package/build/esm/components/MenuDropdown/MenuDropdown.js.map +1 -1
- package/build/esm/components/MenuDropdown/MenuDropdown.styles.js +29 -33
- package/build/esm/components/MenuDropdown/MenuDropdown.styles.js.map +1 -1
- package/build/esm/components/MenuDropdown/MenuDropdownProps.d.ts +1 -1
- package/build/esm/components/MenuDropdown/index.d.ts +2 -2
- package/build/esm/components/MenuFilter/MenuFilter.d.ts +0 -1
- package/build/esm/components/MenuFilter/MenuFilter.js +18 -18
- package/build/esm/components/MenuFilter/MenuFilter.js.map +1 -1
- package/build/esm/components/MenuFilter/MenuFilter.styles.js +2 -2
- package/build/esm/components/MenuFilter/MenuFilter.styles.js.map +1 -1
- package/build/esm/components/MenuFilter/MenuFilterProps.d.ts +3 -4
- package/build/esm/components/MenuFilter/index.d.ts +2 -2
- package/build/esm/components/MenuItem/MenuItem.js +10 -11
- package/build/esm/components/MenuItem/MenuItem.js.map +1 -1
- package/build/esm/components/MenuItem/MenuItem.styles.js +56 -60
- package/build/esm/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/build/esm/components/MenuItem/MenuItemImg.d.ts +1 -2
- package/build/esm/components/MenuItem/MenuItemImg.js +6 -6
- package/build/esm/components/MenuItem/MenuItemImg.js.map +1 -1
- package/build/esm/components/MenuItem/MenuItemInfo.js +1 -1
- package/build/esm/components/MenuItem/MenuItemInfo.js.map +1 -1
- package/build/esm/components/MenuItem/MenuItemPrice.d.ts +1 -2
- package/build/esm/components/MenuItem/MenuItemPrice.js +12 -15
- package/build/esm/components/MenuItem/MenuItemPrice.js.map +1 -1
- package/build/esm/components/MenuItem/MenuItemProps.d.ts +1 -1
- package/build/esm/components/MenuItem/MenuItemReactions.d.ts +1 -2
- package/build/esm/components/MenuItem/MenuItemReactions.js +7 -7
- package/build/esm/components/MenuItem/MenuItemReactions.js.map +1 -1
- package/build/esm/components/MenuItem/MenuItemTags.d.ts +1 -2
- package/build/esm/components/MenuItem/MenuItemTags.js +3 -3
- package/build/esm/components/MenuItem/MenuItemTags.js.map +1 -1
- package/build/esm/components/MenuItem/index.d.ts +1 -1
- package/build/esm/components/MenuItemGroup/MenuItemGroup.d.ts +1 -1
- package/build/esm/components/MenuItemGroup/MenuItemGroup.js +5 -6
- package/build/esm/components/MenuItemGroup/MenuItemGroup.js.map +1 -1
- package/build/esm/components/MenuItemGroup/MenuItemGroupStyles.js +12 -16
- package/build/esm/components/MenuItemGroup/MenuItemGroupStyles.js.map +1 -1
- package/build/esm/components/MenuSection/MenuSection.js +4 -5
- package/build/esm/components/MenuSection/MenuSection.js.map +1 -1
- package/build/esm/components/MenuSection/MenuSectionProps.d.ts +0 -1
- package/build/esm/components/MenuSection/MenuSectionStyles.js +2 -2
- package/build/esm/components/MenuSection/MenuSectionStyles.js.map +1 -1
- package/build/esm/components/MenuSection/index.d.ts +1 -1
- package/build/esm/components/MenuSectionGroup/MenuSectionGroup.js +3 -4
- package/build/esm/components/MenuSectionGroup/MenuSectionGroup.js.map +1 -1
- package/build/esm/components/MenuTab/MenuTab.d.ts +0 -1
- package/build/esm/components/MenuTab/MenuTab.js +5 -6
- package/build/esm/components/MenuTab/MenuTab.js.map +1 -1
- package/build/esm/components/MenuTab/MenuTab.styles.js +13 -16
- package/build/esm/components/MenuTab/MenuTab.styles.js.map +1 -1
- package/build/esm/components/MenuTab/MenuTabProps.d.ts +1 -1
- package/build/esm/components/MenuTab/index.d.ts +2 -2
- package/build/esm/components/MenuTabGroup/MenuTabGroup.d.ts +0 -1
- package/build/esm/components/MenuTabGroup/MenuTabGroup.js +4 -5
- package/build/esm/components/MenuTabGroup/MenuTabGroup.js.map +1 -1
- package/build/esm/components/MenuTabGroup/MenuTabGroupProps.d.ts +1 -4
- package/build/esm/components/MenuTabGroup/index.d.ts +2 -2
- package/build/esm/components/OrderingAppContext/OrderingAppContext.d.ts +3 -3
- package/build/esm/components/OrderingAppContext/OrderingAppContext.js +6 -6
- package/build/esm/components/OrderingAppContext/OrderingAppContext.js.map +1 -1
- package/build/esm/components/PageSection/PageSection.js +1 -1
- package/build/esm/components/PageSection/PageSection.js.map +1 -1
- package/build/esm/components/QuantityPicker/QuantityPicker.d.ts +1 -2
- package/build/esm/components/QuantityPicker/QuantityPicker.js +39 -16
- package/build/esm/components/QuantityPicker/QuantityPicker.js.map +1 -1
- package/build/esm/components/QuantityPicker/QuantityPicker.styles.d.ts +3 -3
- package/build/esm/components/QuantityPicker/QuantityPicker.styles.js +17 -17
- package/build/esm/components/QuantityPicker/QuantityPicker.styles.js.map +1 -1
- package/build/esm/components/QuantityPicker/QuantityPickerProps.d.ts +6 -2
- package/build/esm/components/QuantityPicker/index.d.ts +2 -2
- package/build/esm/components/Radio/Radio.d.ts +0 -1
- package/build/esm/components/Radio/Radio.js +7 -10
- package/build/esm/components/Radio/Radio.js.map +1 -1
- package/build/esm/components/ReactionCounter/ReactionCounter.d.ts +0 -1
- package/build/esm/components/ReactionCounter/ReactionCounter.js +2 -2
- package/build/esm/components/ReactionCounter/ReactionCounter.js.map +1 -1
- package/build/esm/components/ReactionCounter/index.d.ts +2 -2
- package/build/esm/components/ReactionCounterGroup/ReactionCounterGroup.d.ts +1 -1
- package/build/esm/components/ReactionCounterGroup/ReactionCounterGroup.js +2 -2
- package/build/esm/components/ReactionCounterGroup/ReactionCounterGroup.js.map +1 -1
- package/build/esm/components/ReactionCounterGroup/index.d.ts +1 -1
- package/build/esm/components/SelectableChip/SelectableChip.d.ts +0 -1
- package/build/esm/components/SelectableChip/SelectableChip.js +4 -5
- package/build/esm/components/SelectableChip/SelectableChip.js.map +1 -1
- package/build/esm/components/SelectableChip/SelectableChip.styles.js +2 -2
- package/build/esm/components/SelectableChip/SelectableChip.styles.js.map +1 -1
- package/build/esm/components/SelectableChip/SelectableChipProps.d.ts +1 -1
- package/build/esm/components/SelectableChip/index.d.ts +2 -2
- package/build/esm/components/SelectableChipGroup/SelectableChipGroup.d.ts +0 -1
- package/build/esm/components/SelectableChipGroup/SelectableChipGroup.js +5 -6
- package/build/esm/components/SelectableChipGroup/SelectableChipGroup.js.map +1 -1
- package/build/esm/components/SelectableChipGroup/SelectableChipGroup.styles.js +12 -16
- package/build/esm/components/SelectableChipGroup/SelectableChipGroup.styles.js.map +1 -1
- package/build/esm/components/SelectableChipGroup/SelectableChipGroupProps.d.ts +1 -4
- package/build/esm/components/SelectableChipGroup/index.d.ts +2 -2
- package/build/esm/components/SelectedMenuFiltersList/SelectedMenuFiltersList.d.ts +0 -1
- package/build/esm/components/SelectedMenuFiltersList/SelectedMenuFiltersList.js +20 -23
- package/build/esm/components/SelectedMenuFiltersList/SelectedMenuFiltersList.js.map +1 -1
- package/build/esm/components/SelectedMenuFiltersList/index.d.ts +1 -1
- package/build/esm/components/StatusTag/StatusTag.d.ts +0 -1
- package/build/esm/components/StatusTag/StatusTag.js +3 -4
- package/build/esm/components/StatusTag/StatusTag.js.map +1 -1
- package/build/esm/components/StatusTag/StatusTag.styles.js +3 -3
- package/build/esm/components/StatusTag/StatusTag.styles.js.map +1 -1
- package/build/esm/components/StatusTag/index.d.ts +2 -2
- package/build/esm/components/Switch/Switch.d.ts +0 -1
- package/build/esm/components/Switch/Switch.js +14 -17
- package/build/esm/components/Switch/Switch.js.map +1 -1
- package/build/esm/components/index.d.ts +41 -22
- package/build/esm/index.js +3 -3
- package/build/esm/theme/overrides.js +1 -1
- package/build/esm/theme/overrides.js.map +1 -1
- package/build/esm/theme/palette.js +1 -1
- package/build/esm/theme/palette.js.map +1 -1
- package/build/esm/theme/props.js +1 -1
- package/build/esm/theme/props.js.map +1 -1
- package/build/esm/theme/theme.js +5 -5
- package/build/esm/theme/theme.js.map +1 -1
- package/build/esm/theme/typography.js +2 -2
- package/build/esm/theme/typography.js.map +1 -1
- package/package.json +4 -4
- package/build/esm/_virtual/index.js +0 -4
- package/build/esm/_virtual/index.js.map +0 -1
- package/build/esm/node_modules/classnames/index.js +0 -81
- package/build/esm/node_modules/classnames/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DishCheckoutCard.js","sources":["../../../../src/components/DishCheckoutCard/DishCheckoutCard.tsx"],"sourcesContent":["import React, { ChangeEvent, useState } from 'react'\nimport { Box, Icon, Typography, IconButton } from '@popmenu/common-ui'\nimport { Trash, ChevronDown, ChevronUp, Warning } from '@popmenu/web-icons'\n\nimport { DishCheckoutCardProps, ModifierGroupsType, ModifiersType } from './DishCheckoutCardProps'\nimport { useDishCheckoutCardStyles } from './DishCheckoutCard.styles'\nimport { Button } from '../Button'\nimport { FormControl, Select, MenuItem, InputAdornment } from '@material-ui/core'\nimport { useOrderingAppContext } from '../OrderingAppContext'\n\nexport const DishCheckoutCard = (props: DishCheckoutCardProps) => {\n const {\n id,\n name,\n quantity,\n modifierGroups,\n onDelete,\n onEdit,\n onQuantityChange,\n price,\n specialInstructions,\n disabled,\n warningMessage,\n image = {},\n messages,\n } = props\n const { src } = image\n const classes = useDishCheckoutCardStyles(props)\n const [appContext] = useOrderingAppContext()\n const [open, setOpen] = useState(false)\n const formattedPrice = typeof price === 'number' ? `${appContext.currencySymbol ?? ''}${price.toFixed(2)}` : price\n const handleQuantityChange = (event: ChangeEvent<HTMLInputElement>) =>\n onQuantityChange(id, parseInt(event.target.value, 10))\n\n const labelString = (label: string) => {\n return label.replace(/[^a-zA-Z\\s]/g, '').toLowerCase()\n }\n\n const formatModifiers = (groups: ModifierGroupsType[], nested = false) => {\n return groups.map((group: any) => {\n // Get all selected modifiers for this group\n const modifiers = group.selectedModifiers\n .map((modifier: ModifiersType) =>\n modifier.quantity > 1 ? `${modifier.modifierName} × ${modifier.quantity}` : modifier.modifierName,\n )\n .join(', ')\n\n // Render nested groups recursively\n const nestedGroups = group.selectedModifiers.flatMap((modifier: ModifiersType) =>\n modifier?.selectedModifierGroups && modifier?.selectedModifierGroups?.length > 0\n ? formatModifiers(modifier.selectedModifierGroups, true)\n : [],\n )\n\n // For top-level groups, we render without the list\n if (!nested) {\n return (\n <Typography key={group.id} variant=\"body2\">\n {group.menuItemModifierGroupName}: {modifiers}\n {nestedGroups?.length > 0 && <ul className={classes.ul}>{nestedGroups}</ul>}\n </Typography>\n )\n }\n\n // For nested groups, we use list items\n return (\n <li key={group.id} className={classes.li}>\n <Typography variant=\"body2\">\n {group.menuItemModifierGroupName}: {modifiers}\n {nestedGroups && nestedGroups.length > 0 && <ul className={classes.ul}>{nestedGroups}</ul>}\n </Typography>\n </li>\n )\n })\n }\n\n return (\n <Box className={classes.root}>\n <Box display=\"flex\" gridGap={3}>\n {src && <img src={src} alt=\"\" className={classes.img} />}\n <Box flexGrow={1}>\n <Typography variant=\"h2\" className={classes.name}>\n {name}\n </Typography>\n {modifierGroups && formatModifiers(modifierGroups)}\n {specialInstructions && <Typography variant=\"body2\">"{specialInstructions}"</Typography>}\n </Box>\n <Box display=\"flex\" gridGap={1} height=\"100%\" alignItems=\"center\">\n <Button\n aria-label={messages.ariaEdit}\n disabled={disabled}\n className={classes.editButton}\n variant=\"text\"\n onClick={onEdit}\n >\n {messages.edit}\n </Button>\n <IconButton\n aria-label={messages.ariaDelete}\n disabled={disabled}\n onClick={onDelete}\n classes={{ root: classes.deleteButton }}\n >\n <Icon icon={Trash} size=\"large\" />\n </IconButton>\n </Box>\n </Box>\n <Box display=\"flex\" gridGap={16} alignItems=\"center\">\n <FormControl variant=\"outlined\" hiddenLabel={true}>\n <Select\n disabled={disabled}\n value={quantity}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n SelectDisplayProps={{ 'aria-label': `${labelString(name)} quantity select` }}\n disableUnderline\n onChange={handleQuantityChange}\n fullWidth\n startAdornment={\n <InputAdornment position=\"start\">\n <Icon icon={open ? ChevronUp : ChevronDown} size=\"large\" />\n </InputAdornment>\n }\n inputProps={{ shrink: false }}\n MenuProps={{\n disablePortal: true,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n getContentAnchorEl: null,\n classes: { paper: classes.selectPaper },\n }}\n className={classes.select}\n >\n {Array.from({ length: 99 }, (_, index) => (\n <MenuItem key={index + 1} value={index + 1} aria-label={`${index + 1}`}>\n {index + 1}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <Typography className={classes.price}>{formattedPrice}</Typography>\n </Box>\n {warningMessage && (\n <Box className={classes.warning}>\n <Box paddingTop={0.25}>\n <Icon icon={Warning} size=\"medium\" />\n </Box>\n <Typography variant=\"body2\">{warningMessage}</Typography>\n </Box>\n )}\n </Box>\n )\n}\n"],"names":["React"],"mappings":";;;;;;;;AAUO,IAAM,gBAAgB,GAAG,UAAC,KAA4B,EAAA;;AAEzD,IAAA,IAAA,EAAE,GAaA,KAAK,CAAA,EAbL,EACF,IAAI,GAYF,KAAK,CAAA,IAZH,EACJ,QAAQ,GAWN,KAAK,SAXC,EACR,cAAc,GAUZ,KAAK,CAVO,cAAA,EACd,QAAQ,GASN,KAAK,CATC,QAAA,EACR,MAAM,GAQJ,KAAK,CAAA,MARD,EACN,gBAAgB,GAOd,KAAK,CAAA,gBAPS,EAChB,KAAK,GAMH,KAAK,CANF,KAAA,EACL,mBAAmB,GAKjB,KAAK,CALY,mBAAA,EACnB,QAAQ,GAIN,KAAK,CAAA,QAJC,EACR,cAAc,GAGZ,KAAK,CAAA,cAHO,EACd,EAAA,GAEE,KAAK,CAAA,KAFG,EAAV,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACV,QAAQ,GACN,KAAK,SADC;AAEF,IAAA,IAAA,GAAG,GAAK,KAAK,CAAA,GAAV;AACX,IAAA,IAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC;AACzC,IAAA,IAAA,UAAU,GAAI,qBAAqB,EAAE,GAA3B;IACX,IAAA,EAAA,GAAkB,QAAQ,CAAC,KAAK,CAAC,EAAhC,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,OAAO,GAAA,EAAA,CAAA,CAAA,CAAmB;IACvC,IAAM,cAAc,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAG,IAAA,CAAA,EAAA,GAAA,UAAU,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAA,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAG,GAAG,KAAK;IAClH,IAAM,oBAAoB,GAAG,UAAC,KAAoC,EAAA;AAChE,QAAA,OAAA,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAAtD,KAAsD;IAExD,IAAM,WAAW,GAAG,UAAC,KAAa,EAAA;QAChC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AACxD,KAAC;AAED,IAAA,IAAM,eAAe,GAAG,UAAC,MAA4B,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,MAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA;AACnE,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,UAAC,KAAU,EAAA;;AAE3B,YAAA,IAAM,SAAS,GAAG,KAAK,CAAC;iBACrB,GAAG,CAAC,UAAC,QAAuB,EAAA;gBAC3B,OAAA,QAAQ,CAAC,QAAQ,GAAG,CAAC,GAAM,QAAQ,CAAC,YAAY,GAAM,UAAA,GAAA,QAAQ,CAAC,QAAU,GAAG,QAAQ,CAAC,YAAY;AAAjG,aAAiG;iBAElG,IAAI,CAAC,IAAI,CAAC;;YAGb,IAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,QAAuB,EAAA;;gBAC3E,OAAA,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,sBAAsB,KAAI,CAAA,MAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAE,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,IAAG;sBAC3E,eAAe,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI;sBACrD,EAAE;AAAA,aAAA,CACP;;YAGD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,QACEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAC,OAAO,EAAA;AACvC,oBAAA,KAAK,CAAC,yBAAyB;;oBAAI,SAAS;oBAC5C,CAAA,YAAY,aAAZ,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZ,YAAY,CAAE,MAAM,IAAG,CAAC,IAAIA,qCAAI,SAAS,EAAE,OAAO,CAAC,EAAE,IAAG,YAAY,CAAM,CAChE;AAEhB;;AAGD,YAAA,QACEA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAA;AACtC,gBAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAC,OAAO,EAAA;AACxB,oBAAA,KAAK,CAAC,yBAAyB;;oBAAI,SAAS;AAC5C,oBAAA,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAIA,cAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,SAAS,EAAE,OAAO,CAAC,EAAE,EAAG,EAAA,YAAY,CAAM,CAC/E,CACV;AAET,SAAC,CAAC;AACJ,KAAC;IAED,QACEA,6BAAC,GAAG,EAAA,EAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAA;QAC1BA,cAAC,CAAA,aAAA,CAAA,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,CAAC,EAAA;AAC3B,YAAA,GAAG,IAAIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAE,OAAO,CAAC,GAAG,EAAI,CAAA;AACxD,YAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,EAAC,QAAQ,EAAE,CAAC,EAAA;AACd,gBAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAC,IAAI,EAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAA,EAC7C,IAAI,CACM;AACZ,gBAAA,cAAc,IAAI,eAAe,CAAC,cAAc,CAAC;AACjD,gBAAA,mBAAmB,IAAIA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAC,EAAA,OAAO,EAAC,OAAO,EAAA;;oBAAQ,mBAAmB;yBAAoB,CAC9F;AACN,YAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAC,EAAA,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAC,MAAM,EAAC,UAAU,EAAC,QAAQ,EAAA;gBAC/DA,cAAC,CAAA,aAAA,CAAA,MAAM,EACO,EAAA,YAAA,EAAA,QAAQ,CAAC,QAAQ,EAC7B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,OAAO,CAAC,UAAU,EAC7B,OAAO,EAAC,MAAM,EACd,OAAO,EAAE,MAAM,EAEd,EAAA,QAAQ,CAAC,IAAI,CACP;gBACTA,cAAC,CAAA,aAAA,CAAA,UAAU,kBACG,QAAQ,CAAC,UAAU,EAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,EAAA;AAEvC,oBAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,OAAO,EAAA,CAAG,CACvB,CACT,CACF;AACN,QAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,EAAE,EAAE,UAAU,EAAC,QAAQ,EAAA;YAClDA,cAAC,CAAA,aAAA,CAAA,WAAW,IAAC,OAAO,EAAC,UAAU,EAAC,WAAW,EAAE,IAAI,EAAA;gBAC/CA,cAAC,CAAA,aAAA,CAAA,MAAM,EACL,EAAA,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,IAAI,CAAC,CAAA,EAAA,EAC3B,OAAO,EAAE,YAAM,EAAA,OAAA,OAAO,CAAC,KAAK,CAAC,CAAd,EAAc,EAC7B,kBAAkB,EAAE,EAAE,YAAY,EAAK,WAAW,CAAC,IAAI,CAAC,GAAkB,kBAAA,EAAE,EAC5E,gBAAgB,EAChB,IAAA,EAAA,QAAQ,EAAE,oBAAoB,EAC9B,SAAS,EACT,IAAA,EAAA,cAAc,EACZA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EAAC,QAAQ,EAAC,OAAO,EAAA;AAC9B,wBAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,WAAW,EAAE,IAAI,EAAC,OAAO,EAAA,CAAG,CAC5C,EAEnB,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAC7B,SAAS,EAAE;AACT,wBAAA,aAAa,EAAE,IAAI;AACnB,wBAAA,YAAY,EAAE;AACZ,4BAAA,QAAQ,EAAE,QAAQ;AAClB,4BAAA,UAAU,EAAE,MAAM;AACnB,yBAAA;AACD,wBAAA,eAAe,EAAE;AACf,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,UAAU,EAAE,MAAM;AACnB,yBAAA;AACD,wBAAA,kBAAkB,EAAE,IAAI;AACxB,wBAAA,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE;qBACxC,EACD,SAAS,EAAE,OAAO,CAAC,MAAM,IAExB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAC,CAAC,EAAE,KAAK,EAAK,EAAA,QACxCA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAA,YAAA,EAAc,EAAG,IAAA,KAAK,GAAG,CAAC,CAAE,EACnE,EAAA,KAAK,GAAG,CAAC,CACD,EAH6B,EAIzC,CAAC,CACK,CACG;YACdA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAC,EAAA,SAAS,EAAE,OAAO,CAAC,KAAK,EAAA,EAAG,cAAc,CAAc,CAC/D;QACL,cAAc,KACbA,cAAC,CAAA,aAAA,CAAA,GAAG,IAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAA;AAC7B,YAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,EAAC,UAAU,EAAE,IAAI,EAAA;gBACnBA,cAAC,CAAA,aAAA,CAAA,IAAI,EAAC,EAAA,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,QAAQ,EAAA,CAAG,CACjC;AACN,YAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAC,OAAO,EAAA,EAAE,cAAc,CAAc,CACrD,CACP,CACG;AAEV;;;;"}
|
|
1
|
+
{"version":3,"file":"DishCheckoutCard.js","sources":["../../../../src/components/DishCheckoutCard/DishCheckoutCard.tsx"],"sourcesContent":["import { Box, Icon, IconButton, Typography } from '@popmenu/common-ui'\nimport { ChevronDown, ChevronUp, Trash, Warning } from '@popmenu/web-icons'\nimport React, { ChangeEvent, useState } from 'react'\n\nimport { FormControl, InputAdornment, MenuItem, Select } from '@material-ui/core'\nimport { Button } from '../Button'\nimport { useOrderingAppContext } from '../OrderingAppContext'\nimport { useDishCheckoutCardStyles } from './DishCheckoutCard.styles'\nimport { DishCheckoutCardProps, ModifierGroupsType, ModifiersType } from './DishCheckoutCardProps'\n\nexport const DishCheckoutCard = ({\n id,\n borderBottom,\n name,\n quantity,\n modifierGroups,\n onDelete,\n onEdit,\n onQuantityChange,\n price,\n specialInstructions,\n disabled,\n warningMessage,\n image = {},\n messages,\n maxQuantity = 99,\n minQuantity = 1,\n}: DishCheckoutCardProps) => {\n const { src } = image\n const classes = useDishCheckoutCardStyles({ borderBottom })\n const [appContext] = useOrderingAppContext()\n const [open, setOpen] = useState(false)\n const formattedPrice = typeof price === 'number' ? `${appContext.currencySymbol ?? ''}${price.toFixed(2)}` : price\n const handleQuantityChange = (event: ChangeEvent<Record<string, unknown>>) =>\n onQuantityChange(id, parseInt(event.target.value as string, 10))\n\n const labelString = (label: string) => {\n return label.replace(/[^a-zA-Z\\s]/g, '').toLowerCase()\n }\n\n const formatModifiers = (groups: ModifierGroupsType[], nested = false) => {\n return groups.map((group: any) => {\n // Get all selected modifiers for this group\n const modifiers = group.selectedModifiers\n .map((modifier: ModifiersType) =>\n modifier.quantity > 1 ? `${modifier.modifierName} × ${modifier.quantity}` : modifier.modifierName,\n )\n .join(', ')\n\n // Render nested groups recursively\n const nestedGroups = group.selectedModifiers.flatMap((modifier: ModifiersType) =>\n modifier?.selectedModifierGroups && modifier?.selectedModifierGroups?.length > 0\n ? formatModifiers(modifier.selectedModifierGroups, true)\n : [],\n )\n\n // For top-level groups, we render without the list\n if (!nested) {\n return (\n <Typography key={group.id} variant=\"body2\">\n {group.menuItemModifierGroupName}: {modifiers}\n {nestedGroups?.length > 0 && <ul className={classes.ul}>{nestedGroups}</ul>}\n </Typography>\n )\n }\n\n // For nested groups, we use list items\n return (\n <li key={group.id} className={classes.li}>\n <Typography variant=\"body2\">\n {group.menuItemModifierGroupName}: {modifiers}\n {nestedGroups && nestedGroups.length > 0 && <ul className={classes.ul}>{nestedGroups}</ul>}\n </Typography>\n </li>\n )\n })\n }\n\n return (\n <Box className={classes.root}>\n <Box display=\"flex\" gridGap={3}>\n {src && <img src={src} alt=\"\" className={classes.img} />}\n <Box flexGrow={1}>\n <Typography variant=\"h2\" className={classes.name}>\n {name}\n </Typography>\n {modifierGroups && formatModifiers(modifierGroups)}\n {specialInstructions && <Typography variant=\"body2\">"{specialInstructions}"</Typography>}\n </Box>\n <Box display=\"flex\" gridGap={1} height=\"100%\" alignItems=\"center\">\n <Button\n aria-label={messages.ariaEdit}\n disabled={disabled}\n className={classes.editButton}\n variant=\"text\"\n onClick={onEdit}\n >\n {messages.edit}\n </Button>\n <IconButton\n aria-label={messages.ariaDelete}\n disabled={disabled}\n onClick={onDelete}\n classes={{ root: classes.deleteButton }}\n >\n <Icon icon={Trash} size=\"large\" />\n </IconButton>\n </Box>\n </Box>\n <Box display=\"flex\" gridGap={16} alignItems=\"center\">\n <FormControl variant=\"outlined\" hiddenLabel={true}>\n <Select\n disabled={disabled}\n value={quantity}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n SelectDisplayProps={{ 'aria-label': `${labelString(name)} quantity select` }}\n disableUnderline\n onChange={handleQuantityChange}\n fullWidth\n startAdornment={\n <InputAdornment position=\"start\">\n <Icon icon={open ? ChevronUp : ChevronDown} size=\"large\" />\n </InputAdornment>\n }\n inputProps={{ shrink: false }}\n MenuProps={{\n disablePortal: true,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n getContentAnchorEl: null,\n classes: { paper: classes.selectPaper },\n }}\n className={classes.select}\n >\n {Array.from({ length: maxQuantity - minQuantity + 1 }, (_, index) => (\n <MenuItem key={index + minQuantity} value={index + minQuantity} aria-label={`${index + minQuantity}`}>\n {index + minQuantity}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <Typography className={classes.price}>{formattedPrice}</Typography>\n </Box>\n {warningMessage && (\n <Box className={classes.warning}>\n <Box paddingTop={0.25}>\n <Icon icon={Warning} size=\"medium\" />\n </Box>\n <Typography variant=\"body2\">{warningMessage}</Typography>\n </Box>\n )}\n </Box>\n )\n}\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { DishCheckoutCardProps } from './DishCheckoutCardProps';
|
|
2
|
-
export declare const useDishCheckoutCardStyles: (props: DishCheckoutCardProps) => import("@material-ui/styles").ClassNameMap<string>;
|
|
2
|
+
export declare const useDishCheckoutCardStyles: (props: Pick<DishCheckoutCardProps, "borderBottom">) => import("@material-ui/styles").ClassNameMap<string>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { makeStyles } from '@material-ui/core';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const useDishCheckoutCardStyles = makeStyles((theme) => ({
|
|
4
4
|
root: {
|
|
5
5
|
'&:first-of-type': {
|
|
6
6
|
paddingTop: 0,
|
|
@@ -15,10 +15,7 @@ var useDishCheckoutCardStyles = makeStyles(function (theme) { return ({
|
|
|
15
15
|
flexDirection: 'column',
|
|
16
16
|
width: '100%',
|
|
17
17
|
gridGap: theme.spacing(2),
|
|
18
|
-
borderBottom:
|
|
19
|
-
var borderBottom = _a.borderBottom;
|
|
20
|
-
return (borderBottom ? '1px solid #E0E0E0' : 'none');
|
|
21
|
-
},
|
|
18
|
+
borderBottom: ({ borderBottom }) => (borderBottom ? '1px solid #E0E0E0' : 'none'),
|
|
22
19
|
},
|
|
23
20
|
deleteButton: {
|
|
24
21
|
color: theme.palette.info.main,
|
|
@@ -79,7 +76,7 @@ var useDishCheckoutCardStyles = makeStyles(function (theme) { return ({
|
|
|
79
76
|
display: 'flex',
|
|
80
77
|
gridGap: theme.spacing(0.825),
|
|
81
78
|
},
|
|
82
|
-
})
|
|
79
|
+
}));
|
|
83
80
|
|
|
84
81
|
export { useDishCheckoutCardStyles };
|
|
85
82
|
//# sourceMappingURL=DishCheckoutCard.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DishCheckoutCard.styles.js","sources":["../../../../src/components/DishCheckoutCard/DishCheckoutCard.styles.ts"],"sourcesContent":["import { makeStyles, Theme } from '@material-ui/core'\nimport { DishCheckoutCardProps } from './DishCheckoutCardProps'\n\nexport const useDishCheckoutCardStyles = makeStyles<Theme, DishCheckoutCardProps
|
|
1
|
+
{"version":3,"file":"DishCheckoutCard.styles.js","sources":["../../../../src/components/DishCheckoutCard/DishCheckoutCard.styles.ts"],"sourcesContent":["import { makeStyles, Theme } from '@material-ui/core'\nimport { DishCheckoutCardProps } from './DishCheckoutCardProps'\n\nexport const useDishCheckoutCardStyles = makeStyles<Theme, Pick<DishCheckoutCardProps, 'borderBottom'>>((theme) => ({\n root: {\n '&:first-of-type': {\n paddingTop: 0,\n },\n '&:last-of-type': {\n paddingBottom: 0,\n borderBottom: 'none',\n },\n color: theme.palette.grey[900],\n padding: theme.spacing(2, 0),\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n gridGap: theme.spacing(2),\n borderBottom: ({ borderBottom }) => (borderBottom ? '1px solid #E0E0E0' : 'none'),\n },\n deleteButton: {\n color: theme.palette.info.main,\n },\n editButton: {\n color: theme.palette.info.main,\n },\n img: {\n objectFit: 'cover',\n borderRadius: theme.spacing(1),\n flexBasis: 'auto',\n flexShrink: 0,\n height: theme.spacing(7),\n marginRight: theme.spacing(1),\n overflow: 'hidden',\n width: theme.spacing(7),\n },\n name: {\n fontSize: 16,\n fontWeight: 500,\n lineHeight: '24px',\n },\n price: {\n fontSize: '18px',\n },\n select: {\n paddingLeft: 'unset',\n borderRadius: '25px',\n\n '& fieldset': {\n borderColor: theme.palette.grey[700],\n },\n\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[700],\n borderWidth: '1px',\n },\n\n '& .MuiSelect-root': {\n padding: theme.spacing(1, 1.5, 1, 4.5),\n zIndex: 10,\n textAlign: 'right',\n },\n\n '& .MuiInputAdornment-positionStart': {\n position: 'absolute',\n left: theme.spacing(1.5),\n },\n\n '& .MuiSelect-iconOutlined': {\n display: 'none',\n },\n },\n selectPaper: {\n maxHeight: theme.spacing(37),\n },\n ul: {\n margin: 0,\n paddingLeft: theme.spacing(3),\n },\n warning: {\n color: theme.palette.error.main,\n display: 'flex',\n gridGap: theme.spacing(0.825),\n },\n}))\n"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,10 @@ export interface DishCheckoutCardProps {
|
|
|
10
10
|
alt?: string;
|
|
11
11
|
src?: string | null;
|
|
12
12
|
};
|
|
13
|
+
/** Maximum quantity of the dish */
|
|
14
|
+
maxQuantity?: number;
|
|
15
|
+
/** Minimum quantity of the dish */
|
|
16
|
+
minQuantity?: number;
|
|
13
17
|
/** Edit and remove button text and aria-label */
|
|
14
18
|
messages: Record<'edit' | 'ariaEdit' | 'ariaDelete', string>;
|
|
15
19
|
/** Modifier group object of the dish */
|
|
@@ -31,12 +35,12 @@ export interface DishCheckoutCardProps {
|
|
|
31
35
|
/** If item is in cart but is not unavailable */
|
|
32
36
|
warningMessage?: string;
|
|
33
37
|
}
|
|
34
|
-
export
|
|
38
|
+
export type ModifierGroupsType = {
|
|
35
39
|
id: number;
|
|
36
40
|
menuItemModifierGroupName?: string | null;
|
|
37
41
|
selectedModifiers: ModifiersType[];
|
|
38
42
|
};
|
|
39
|
-
export
|
|
43
|
+
export type ModifiersType = {
|
|
40
44
|
id: number;
|
|
41
45
|
modifierName?: string | null;
|
|
42
46
|
quantity: number;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { DishCheckoutCard
|
|
2
|
-
export { DishCheckoutCardProps } from './DishCheckoutCardProps';
|
|
1
|
+
export { DishCheckoutCard } from './DishCheckoutCard';
|
|
2
|
+
export type { DishCheckoutCardProps } from './DishCheckoutCardProps';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React__default, { forwardRef } from 'react';
|
|
2
2
|
import { Box, Avatar, Typography } from '@popmenu/common-ui';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const DishDetailsReview = forwardRef((props) => {
|
|
5
|
+
const { userName, userAvatarUrl, content, createdAgo, alt } = props;
|
|
6
6
|
return (React__default.createElement(Box, { display: "flex" },
|
|
7
7
|
React__default.createElement(Box, { mr: 1 },
|
|
8
8
|
React__default.createElement(Avatar, { size: "small", src: userAvatarUrl, alt: alt })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DishDetailsReview.js","sources":["../../../../src/components/DishDetailsReview/DishDetailsReview.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { Avatar, Box, Typography } from '@popmenu/common-ui'\n\nimport { DishDetailsReviewProps } from './DishDetailsReviewProps'\n\nexport const DishDetailsReview = forwardRef<HTMLDivElement, DishDetailsReviewProps>((props) => {\n const { userName, userAvatarUrl, content, createdAgo, alt } = props\n\n return (\n <Box display=\"flex\">\n <Box mr={1}>\n <Avatar size=\"small\" src={userAvatarUrl} alt={alt} />\n </Box>\n <Box width=\"100%\">\n <Box display=\"flex\" justifyContent=\"space-between\" mb={1}>\n <Typography\n variant=\"body1\"\n variantMapping={{ body1: 'h3' }}\n color=\"grey.600\"\n style={{ display: 'flex', alignItems: 'center' }}\n >\n {userName}\n </Typography>\n <Typography color=\"grey.600\" variant=\"subtitle1\" style={{ display: 'flex', alignItems: 'center' }}>\n {createdAgo}\n </Typography>\n </Box>\n <Typography color=\"grey.900\" weight=\"regular\">\n {content}\n </Typography>\n </Box>\n </Box>\n )\n})\n\nDishDetailsReview.displayName = 'DishDetailsReview'\n"],"names":["React"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DishDetailsReview.js","sources":["../../../../src/components/DishDetailsReview/DishDetailsReview.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { Avatar, Box, Typography } from '@popmenu/common-ui'\n\nimport { DishDetailsReviewProps } from './DishDetailsReviewProps'\n\nexport const DishDetailsReview = forwardRef<HTMLDivElement, DishDetailsReviewProps>((props) => {\n const { userName, userAvatarUrl, content, createdAgo, alt } = props\n\n return (\n <Box display=\"flex\">\n <Box mr={1}>\n <Avatar size=\"small\" src={userAvatarUrl} alt={alt} />\n </Box>\n <Box width=\"100%\">\n <Box display=\"flex\" justifyContent=\"space-between\" mb={1}>\n <Typography\n variant=\"body1\"\n variantMapping={{ body1: 'h3' }}\n color=\"grey.600\"\n style={{ display: 'flex', alignItems: 'center' }}\n >\n {userName}\n </Typography>\n <Typography color=\"grey.600\" variant=\"subtitle1\" style={{ display: 'flex', alignItems: 'center' }}>\n {createdAgo}\n </Typography>\n </Box>\n <Typography color=\"grey.900\" weight=\"regular\">\n {content}\n </Typography>\n </Box>\n </Box>\n )\n})\n\nDishDetailsReview.displayName = 'DishDetailsReview'\n"],"names":["React"],"mappings":";;;MAKa,iBAAiB,GAAG,UAAU,CAAyC,CAAC,KAAK,KAAI;AAC5F,IAAA,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK;AAEnE,IAAA,QACEA,cAAC,CAAA,aAAA,CAAA,GAAG,EAAC,EAAA,OAAO,EAAC,MAAM,EAAA;AACjB,QAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,EAAC,EAAE,EAAE,CAAC,EAAA;AACR,YAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,GAAI,CACjD;AACN,QAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,EAAC,KAAK,EAAC,MAAM,EAAA;AACf,YAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,EAAC,OAAO,EAAC,MAAM,EAAC,cAAc,EAAC,eAAe,EAAC,EAAE,EAAE,CAAC,EAAA;AACtD,gBAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACT,OAAO,EAAC,OAAO,EACf,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAC/B,KAAK,EAAC,UAAU,EAChB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,EAE/C,QAAQ,CACE;gBACbA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAC,EAAA,KAAK,EAAC,UAAU,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,EAC9F,UAAU,CACA,CACT;AACN,YAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAC,UAAU,EAAC,MAAM,EAAC,SAAS,IAC1C,OAAO,CACG,CACT,CACF;AAEV,CAAC;AAED,iBAAiB,CAAC,WAAW,GAAG,mBAAmB;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { DishDetailsReview
|
|
2
|
-
export { DishDetailsReviewProps } from './DishDetailsReviewProps';
|
|
1
|
+
export { DishDetailsReview } from './DishDetailsReview';
|
|
2
|
+
export type { DishDetailsReviewProps } from './DishDetailsReviewProps';
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { __assign } from 'tslib';
|
|
2
|
-
import React__default from 'react';
|
|
3
1
|
import { Box, Typography } from '@popmenu/common-ui';
|
|
4
|
-
import
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
5
4
|
import { StatusTag } from '../StatusTag/StatusTag.js';
|
|
5
|
+
import { useDishModifierCardStyles } from './DishModifierCard.styles.js';
|
|
6
6
|
import { ModifierControls } from './ModifierControls.js';
|
|
7
|
-
import classNames from '../../node_modules/classnames/index.js';
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
const getStatusTagProps = (props) => {
|
|
9
|
+
const { messages, error, isRequired, isOutOfStock } = props;
|
|
10
|
+
const { optionalText, outOfStockText, requiredText } = messages;
|
|
11
|
+
let color = 'default';
|
|
13
12
|
switch (true) {
|
|
14
13
|
case error:
|
|
15
14
|
color = 'error';
|
|
@@ -18,7 +17,7 @@ var getStatusTagProps = function (props) {
|
|
|
18
17
|
color = 'warning';
|
|
19
18
|
break;
|
|
20
19
|
}
|
|
21
|
-
|
|
20
|
+
let label = optionalText;
|
|
22
21
|
switch (true) {
|
|
23
22
|
case isOutOfStock:
|
|
24
23
|
label = outOfStockText;
|
|
@@ -27,17 +26,16 @@ var getStatusTagProps = function (props) {
|
|
|
27
26
|
label = requiredText;
|
|
28
27
|
break;
|
|
29
28
|
}
|
|
30
|
-
|
|
31
|
-
return { color
|
|
29
|
+
const variant = isRequired || isOutOfStock ? 'outlined' : 'filled';
|
|
30
|
+
return { color, label, variant };
|
|
32
31
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var classes = useDishModifierCardStyles();
|
|
32
|
+
const DishModifierCard = (props) => {
|
|
33
|
+
const { aggregatePrice, name, disableNewSelections, modifiers, value, messages, onChange, type, error, isOutOfStock, isRequired, handleOptionsClick, selectionQuantity, } = props;
|
|
34
|
+
const classes = useDishModifierCardStyles();
|
|
37
35
|
return (React__default.createElement(Box, { className: classes.root },
|
|
38
36
|
React__default.createElement(Box, { display: "flex", justifyContent: "space-between", width: "100%", alignItems: "center", height: "fit-content", marginBottom: 2 },
|
|
39
|
-
React__default.createElement(StatusTag,
|
|
40
|
-
!isOutOfStock && (React__default.createElement(Typography, { variant: "subtitle1", className: classNames(
|
|
37
|
+
React__default.createElement(StatusTag, { ...getStatusTagProps(props) }),
|
|
38
|
+
!isOutOfStock && (React__default.createElement(Typography, { variant: "subtitle1", className: classNames({ [classes.error]: error, [classes.helperText]: !error }) }, messages.helperText))),
|
|
41
39
|
React__default.createElement(Typography, { className: classes.name }, name),
|
|
42
40
|
React__default.createElement(Box, null,
|
|
43
41
|
React__default.createElement(ModifierControls, { name: name, value: value, modifiers: modifiers, isOutOfStock: isOutOfStock, isRequired: isRequired, onChange: onChange, disableNewSelections: disableNewSelections, type: type, messages: messages, handleOptionsClick: handleOptionsClick, aggregatePrice: aggregatePrice, selectionQuantity: selectionQuantity }))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DishModifierCard.js","sources":["../../../../src/components/DishModifierCard/DishModifierCard.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"DishModifierCard.js","sources":["../../../../src/components/DishModifierCard/DishModifierCard.tsx"],"sourcesContent":["import { Box, Typography } from '@popmenu/common-ui'\nimport React from 'react'\n\nimport classNames from 'classnames'\nimport type { StatusTagProps } from '../StatusTag'\nimport { StatusTag } from '../StatusTag'\nimport { useDishModifierCardStyles } from './DishModifierCard.styles'\nimport { DishModifierCardProps } from './DishModifierCardProps'\nimport { ModifierControls } from './ModifierControls'\n\nconst getStatusTagProps = (props: DishModifierCardProps): StatusTagProps => {\n const { messages, error, isRequired, isOutOfStock } = props\n const { optionalText, outOfStockText, requiredText } = messages\n\n let color: StatusTagProps['color'] = 'default'\n switch (true) {\n case error:\n color = 'error'\n break\n case isOutOfStock:\n color = 'warning'\n break\n }\n\n let label: string = optionalText\n switch (true) {\n case isOutOfStock:\n label = outOfStockText\n break\n case isRequired:\n label = requiredText\n break\n }\n\n const variant = isRequired || isOutOfStock ? 'outlined' : 'filled'\n return { color, label, variant }\n}\n\nexport const DishModifierCard = (props: DishModifierCardProps) => {\n const {\n aggregatePrice,\n name,\n disableNewSelections,\n modifiers,\n value,\n messages,\n onChange,\n type,\n error,\n isOutOfStock,\n isRequired,\n handleOptionsClick,\n selectionQuantity,\n } = props\n const classes = useDishModifierCardStyles()\n\n return (\n <Box className={classes.root}>\n <Box\n display=\"flex\"\n justifyContent=\"space-between\"\n width=\"100%\"\n alignItems=\"center\"\n height=\"fit-content\"\n marginBottom={2}\n >\n <StatusTag {...getStatusTagProps(props)} />\n {!isOutOfStock && (\n <Typography\n variant=\"subtitle1\"\n className={classNames({ [classes.error]: error, [classes.helperText]: !error })}\n >\n {messages.helperText}\n </Typography>\n )}\n </Box>\n <Typography className={classes.name}>{name}</Typography>\n <Box>\n <ModifierControls\n name={name}\n value={value}\n modifiers={modifiers}\n isOutOfStock={isOutOfStock}\n isRequired={isRequired}\n onChange={onChange}\n disableNewSelections={disableNewSelections}\n type={type}\n messages={messages}\n handleOptionsClick={handleOptionsClick}\n aggregatePrice={aggregatePrice}\n selectionQuantity={selectionQuantity}\n />\n </Box>\n </Box>\n )\n}\n\nDishModifierCard.displayName = 'DishModifierCard'\n"],"names":["React"],"mappings":";;;;;;;AAUA,MAAM,iBAAiB,GAAG,CAAC,KAA4B,KAAoB;IACzE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK;IAC3D,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,QAAQ;IAE/D,IAAI,KAAK,GAA4B,SAAS;IAC9C,QAAQ,IAAI;AACV,QAAA,KAAK,KAAK;YACR,KAAK,GAAG,OAAO;YACf;AACF,QAAA,KAAK,YAAY;YACf,KAAK,GAAG,SAAS;YACjB;;IAGJ,IAAI,KAAK,GAAW,YAAY;IAChC,QAAQ,IAAI;AACV,QAAA,KAAK,YAAY;YACf,KAAK,GAAG,cAAc;YACtB;AACF,QAAA,KAAK,UAAU;YACb,KAAK,GAAG,YAAY;YACpB;;AAGJ,IAAA,MAAM,OAAO,GAAG,UAAU,IAAI,YAAY,GAAG,UAAU,GAAG,QAAQ;AAClE,IAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;AAClC,CAAC;AAEY,MAAA,gBAAgB,GAAG,CAAC,KAA4B,KAAI;AAC/D,IAAA,MAAM,EACJ,cAAc,EACd,IAAI,EACJ,oBAAoB,EACpB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,GAAG,KAAK;AACT,IAAA,MAAM,OAAO,GAAG,yBAAyB,EAAE;IAE3C,QACEA,6BAAC,GAAG,EAAA,EAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAA;QAC1BA,cAAC,CAAA,aAAA,CAAA,GAAG,EACF,EAAA,OAAO,EAAC,MAAM,EACd,cAAc,EAAC,eAAe,EAC9B,KAAK,EAAC,MAAM,EACZ,UAAU,EAAC,QAAQ,EACnB,MAAM,EAAC,aAAa,EACpB,YAAY,EAAE,CAAC,EAAA;AAEf,YAAAA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAK,EAAA,GAAA,iBAAiB,CAAC,KAAK,CAAC,EAAI,CAAA;AAC1C,YAAA,CAAC,YAAY,KACZA,cAAC,CAAA,aAAA,CAAA,UAAU,IACT,OAAO,EAAC,WAAW,EACnB,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC,EAE9E,EAAA,QAAQ,CAAC,UAAU,CACT,CACd,CACG;QACNA,cAAC,CAAA,aAAA,CAAA,UAAU,IAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAG,EAAA,IAAI,CAAc;AACxD,QAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,IAAA;YACFA,cAAC,CAAA,aAAA,CAAA,gBAAgB,EACf,EAAA,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,oBAAoB,EAC1C,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,EACpC,CAAA,CACE,CACF;AAEV;AAEA,gBAAgB,CAAC,WAAW,GAAG,kBAAkB;;;;"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { makeStyles } from '@material-ui/core';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const useDishModifierCardStyles = makeStyles((theme) => ({
|
|
4
4
|
root: {
|
|
5
5
|
borderRadius: '8px',
|
|
6
6
|
border: '1px solid var(--surfaces-card-stroke, #E0E0E0)',
|
|
7
7
|
display: 'flex',
|
|
8
8
|
flexDirection: 'column',
|
|
9
9
|
padding: theme.spacing(2.5),
|
|
10
|
-
color: theme.palette.grey[900]
|
|
10
|
+
color: `${theme.palette.grey[900]} !important`,
|
|
11
11
|
},
|
|
12
12
|
error: {
|
|
13
13
|
color: theme.palette.error.main,
|
|
@@ -19,8 +19,8 @@ var useDishModifierCardStyles = makeStyles(function (theme) { return ({
|
|
|
19
19
|
fontSize: theme.spacing(2.25),
|
|
20
20
|
marginBottom: theme.spacing(2),
|
|
21
21
|
},
|
|
22
|
-
})
|
|
23
|
-
|
|
22
|
+
}));
|
|
23
|
+
const useRadioModifierFormStyles = makeStyles((theme) => ({
|
|
24
24
|
label: {
|
|
25
25
|
alignItems: 'center',
|
|
26
26
|
display: 'flex',
|
|
@@ -45,8 +45,8 @@ var useRadioModifierFormStyles = makeStyles(function (theme) { return ({
|
|
|
45
45
|
flex: 1,
|
|
46
46
|
},
|
|
47
47
|
},
|
|
48
|
-
})
|
|
49
|
-
|
|
48
|
+
}));
|
|
49
|
+
const useCheckboxModifierFormStyles = makeStyles((theme) => ({
|
|
50
50
|
label: {
|
|
51
51
|
alignItems: 'center',
|
|
52
52
|
display: 'flex',
|
|
@@ -71,8 +71,8 @@ var useCheckboxModifierFormStyles = makeStyles(function (theme) { return ({
|
|
|
71
71
|
flex: 1,
|
|
72
72
|
},
|
|
73
73
|
},
|
|
74
|
-
})
|
|
75
|
-
|
|
74
|
+
}));
|
|
75
|
+
const useLabelStyles = makeStyles((theme) => ({
|
|
76
76
|
label: {
|
|
77
77
|
margin: theme.spacing(0.5, 0),
|
|
78
78
|
},
|
|
@@ -82,14 +82,14 @@ var useLabelStyles = makeStyles(function (theme) { return ({
|
|
|
82
82
|
price: {
|
|
83
83
|
color: theme.palette.grey[700],
|
|
84
84
|
},
|
|
85
|
-
})
|
|
86
|
-
|
|
85
|
+
}));
|
|
86
|
+
const useOptionsStyles = makeStyles((theme) => ({
|
|
87
87
|
options: {
|
|
88
88
|
color: theme.palette.info.main,
|
|
89
89
|
marginBottom: theme.spacing(1.5),
|
|
90
90
|
padding: 0,
|
|
91
91
|
},
|
|
92
|
-
})
|
|
92
|
+
}));
|
|
93
93
|
|
|
94
94
|
export { useCheckboxModifierFormStyles, useDishModifierCardStyles, useLabelStyles, useOptionsStyles, useRadioModifierFormStyles };
|
|
95
95
|
//# sourceMappingURL=DishModifierCard.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DishModifierCard.styles.js","sources":["../../../../src/components/DishModifierCard/DishModifierCard.styles.ts"],"sourcesContent":["import { makeStyles, Theme } from '@material-ui/core'\n\nexport const useDishModifierCardStyles = makeStyles<Theme>((theme) => ({\n root: {\n borderRadius: '8px',\n border: '1px solid var(--surfaces-card-stroke, #E0E0E0)',\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(2.5),\n color: `${theme.palette.grey[900]} !important`,\n },\n error: {\n color: theme.palette.error.main,\n },\n helperText: {\n color: theme.palette.text.primary,\n },\n name: {\n fontSize: theme.spacing(2.25),\n marginBottom: theme.spacing(2),\n },\n}))\n\nexport const useRadioModifierFormStyles = makeStyles<Theme>((theme) => ({\n label: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n },\n radio: {\n fontSize: theme.spacing(2),\n padding: 'unset',\n marginRight: theme.spacing(-0.25),\n\n '&.Mui-checked': {\n color: theme.palette.info.main,\n },\n },\n hideRadio: {\n display: 'none',\n },\n root: {\n justifyContent: 'space-between',\n margin: 0,\n width: 'fill-available',\n\n '& > :last-child': {\n flex: 1,\n },\n },\n}))\n\nexport const useCheckboxModifierFormStyles = makeStyles<Theme>((theme) => ({\n label: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n },\n checkbox: {\n color: '#616161',\n fontSize: theme.spacing(2),\n marginRight: theme.spacing(-0.25),\n padding: 'unset',\n\n '&.Mui-checked': {\n color: theme.palette.info.main,\n },\n },\n hideCheckbox: {\n display: 'none',\n },\n root: {\n margin: 0,\n width: 'fill-available',\n\n '& > :last-child': {\n flex: 1,\n },\n },\n}))\n\nexport const useLabelStyles = makeStyles<Theme>((theme) => ({\n label: {\n margin: theme.spacing(0.5, 0),\n },\n disabled: {\n color: theme.palette.grey[500],\n },\n price: {\n color: theme.palette.grey[700],\n },\n}))\n\nexport const useOptionsStyles = makeStyles<Theme>((theme) => ({\n options: {\n color: theme.palette.info.main,\n marginBottom: theme.spacing(1.5),\n padding: 0,\n },\n}))\n"],"names":[],"mappings":";;AAEa,
|
|
1
|
+
{"version":3,"file":"DishModifierCard.styles.js","sources":["../../../../src/components/DishModifierCard/DishModifierCard.styles.ts"],"sourcesContent":["import { makeStyles, Theme } from '@material-ui/core'\n\nexport const useDishModifierCardStyles = makeStyles<Theme>((theme) => ({\n root: {\n borderRadius: '8px',\n border: '1px solid var(--surfaces-card-stroke, #E0E0E0)',\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(2.5),\n color: `${theme.palette.grey[900]} !important`,\n },\n error: {\n color: theme.palette.error.main,\n },\n helperText: {\n color: theme.palette.text.primary,\n },\n name: {\n fontSize: theme.spacing(2.25),\n marginBottom: theme.spacing(2),\n },\n}))\n\nexport const useRadioModifierFormStyles = makeStyles<Theme>((theme) => ({\n label: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n },\n radio: {\n fontSize: theme.spacing(2),\n padding: 'unset',\n marginRight: theme.spacing(-0.25),\n\n '&.Mui-checked': {\n color: theme.palette.info.main,\n },\n },\n hideRadio: {\n display: 'none',\n },\n root: {\n justifyContent: 'space-between',\n margin: 0,\n width: 'fill-available',\n\n '& > :last-child': {\n flex: 1,\n },\n },\n}))\n\nexport const useCheckboxModifierFormStyles = makeStyles<Theme>((theme) => ({\n label: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n },\n checkbox: {\n color: '#616161',\n fontSize: theme.spacing(2),\n marginRight: theme.spacing(-0.25),\n padding: 'unset',\n\n '&.Mui-checked': {\n color: theme.palette.info.main,\n },\n },\n hideCheckbox: {\n display: 'none',\n },\n root: {\n margin: 0,\n width: 'fill-available',\n\n '& > :last-child': {\n flex: 1,\n },\n },\n}))\n\nexport const useLabelStyles = makeStyles<Theme>((theme) => ({\n label: {\n margin: theme.spacing(0.5, 0),\n },\n disabled: {\n color: theme.palette.grey[500],\n },\n price: {\n color: theme.palette.grey[700],\n },\n}))\n\nexport const useOptionsStyles = makeStyles<Theme>((theme) => ({\n options: {\n color: theme.palette.info.main,\n marginBottom: theme.spacing(1.5),\n padding: 0,\n },\n}))\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type ModifierValue = {
|
|
2
2
|
groupId: number;
|
|
3
3
|
modifierId: number;
|
|
4
4
|
parentModifierId?: number | null;
|
|
@@ -6,7 +6,7 @@ export declare type ModifierValue = {
|
|
|
6
6
|
quantity: number;
|
|
7
7
|
isRadio?: boolean;
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export type Modifier = {
|
|
10
10
|
id: number;
|
|
11
11
|
hasModifiers: boolean;
|
|
12
12
|
name: string;
|
|
@@ -17,7 +17,7 @@ export declare type Modifier = {
|
|
|
17
17
|
parentModifierGroupId: number;
|
|
18
18
|
parentModifierGroupItemId?: number | null;
|
|
19
19
|
};
|
|
20
|
-
export
|
|
20
|
+
export type OnChangeValueType = ModifierValue;
|
|
21
21
|
interface Base {
|
|
22
22
|
/** Modifier options */
|
|
23
23
|
modifiers: Array<Modifier>;
|
|
@@ -27,7 +27,7 @@ interface Base {
|
|
|
27
27
|
onChange: (value: OnChangeValueType) => void;
|
|
28
28
|
isOutOfStock: boolean;
|
|
29
29
|
}
|
|
30
|
-
export
|
|
30
|
+
export type DishModifierCardProps = {
|
|
31
31
|
/** Aggregate price of the modifier and its nested children modifiers */
|
|
32
32
|
aggregatePrice: Record<number, string>;
|
|
33
33
|
/** Modifier options */
|
|
@@ -63,9 +63,9 @@ export declare type DishModifierCardProps = {
|
|
|
63
63
|
currentSelectionCount: number;
|
|
64
64
|
}>;
|
|
65
65
|
};
|
|
66
|
-
export
|
|
67
|
-
export
|
|
66
|
+
export type RadioModifierFormProps = Base;
|
|
67
|
+
export type CheckboxModifierFormProps = Base & {
|
|
68
68
|
disableNewSelections?: boolean;
|
|
69
69
|
};
|
|
70
|
-
export
|
|
70
|
+
export type ModifierOptionsControlProps = Pick<DishModifierCardProps, 'value' | 'modifiers' | 'isOutOfStock' | 'isRequired' | 'onChange' | 'disableNewSelections' | 'type' | 'messages' | 'handleOptionsClick' | 'aggregatePrice' | 'selectionQuantity' | 'name'>;
|
|
71
71
|
export {};
|
|
@@ -1,38 +1,36 @@
|
|
|
1
|
-
import { __assign } from 'tslib';
|
|
2
|
-
import React__default from 'react';
|
|
3
1
|
import { FormControl, FormGroup, Box, Typography, FormControlLabel, Checkbox, RadioGroup, Radio } from '@material-ui/core';
|
|
4
2
|
import { Icon } from '@popmenu/common-ui';
|
|
5
3
|
import { ChevronRight } from '@popmenu/web-icons';
|
|
6
|
-
import classNames from '
|
|
7
|
-
import
|
|
8
|
-
import { QuantityPicker } from '../QuantityPicker/QuantityPicker.js';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import React__default from 'react';
|
|
9
6
|
import { Button } from '../Button/Button.js';
|
|
7
|
+
import { QuantityPicker } from '../QuantityPicker/QuantityPicker.js';
|
|
10
8
|
import { StatusTag } from '../StatusTag/StatusTag.js';
|
|
9
|
+
import { useCheckboxModifierFormStyles, useRadioModifierFormStyles, useLabelStyles, useOptionsStyles } from './DishModifierCard.styles.js';
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var classes = useLabelStyles();
|
|
11
|
+
const Label = (props) => {
|
|
12
|
+
const { name, price, disabled = false } = props;
|
|
13
|
+
const classes = useLabelStyles();
|
|
16
14
|
return (React__default.createElement(Box, { display: "flex", flexDirection: "column", className: classes.label },
|
|
17
15
|
React__default.createElement(Box, { display: "flex", alignItems: "center", gridGap: 8 },
|
|
18
|
-
React__default.createElement(Typography, { className: classNames(
|
|
19
|
-
price && (React__default.createElement(Typography, { className: classNames(
|
|
16
|
+
React__default.createElement(Typography, { className: classNames({ [classes.disabled]: disabled }) }, name)),
|
|
17
|
+
price && (React__default.createElement(Typography, { className: classNames({ [classes.price]: !disabled }, { [classes.disabled]: disabled }) },
|
|
20
18
|
"+ ",
|
|
21
19
|
price))));
|
|
22
20
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
const Options = (props) => {
|
|
22
|
+
const { handleOptionsClick } = props;
|
|
23
|
+
const classes = useOptionsStyles();
|
|
26
24
|
return (React__default.createElement(Box, null,
|
|
27
25
|
React__default.createElement(Button, { variation: "none", className: classes.options, onClick: handleOptionsClick },
|
|
28
26
|
React__default.createElement(Typography, { variant: "caption" }, "OPTIONS"),
|
|
29
27
|
React__default.createElement(Icon, { icon: ChevronRight }))));
|
|
30
28
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
const SingleSelectModifierControl = (props) => {
|
|
30
|
+
const { modifiers, name, isOutOfStock, onChange, value, handleOptionsClick, aggregatePrice, isRequired } = props;
|
|
31
|
+
const radioClasses = useRadioModifierFormStyles();
|
|
32
|
+
const makeHandleChange = (modifier) => (e) => {
|
|
33
|
+
const isModifierInValue = Boolean(value.find((v) => v.modifierId === modifier.id));
|
|
36
34
|
if (!isModifierInValue && modifier.hasModifiers) {
|
|
37
35
|
handleOptionsClick(modifier.id);
|
|
38
36
|
}
|
|
@@ -44,27 +42,23 @@ var SingleSelectModifierControl = function (props) {
|
|
|
44
42
|
price: modifier.price || 0,
|
|
45
43
|
quantity: 1,
|
|
46
44
|
});
|
|
47
|
-
};
|
|
45
|
+
};
|
|
48
46
|
return (React__default.createElement(FormControl, { fullWidth: true },
|
|
49
|
-
React__default.createElement(RadioGroup, { "aria-label": name }, modifiers.map(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
modifier.outOfStock && (React__default.createElement(Box, { minWidth: "90px", marginLeft: 2 },
|
|
59
|
-
React__default.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" })))), labelPlacement: "start" }),
|
|
60
|
-
modifier.hasModifiers && !modifier.outOfStock && (React__default.createElement(Options, { handleOptionsClick: function () { return handleOptionsClick(modifier.id); } }))));
|
|
61
|
-
}))));
|
|
47
|
+
React__default.createElement(RadioGroup, { "aria-label": name }, modifiers.map((modifier) => (React__default.createElement(Box, { key: modifier.id },
|
|
48
|
+
React__default.createElement(FormControlLabel, { key: modifier.id, value: modifier.id, className: radioClasses.root, control: React__default.createElement(Radio, { checked: value[0]?.modifierId === modifier.id, className: classNames({
|
|
49
|
+
[radioClasses.hideRadio]: modifier.outOfStock,
|
|
50
|
+
[radioClasses.radio]: !modifier.outOfStock,
|
|
51
|
+
}), disabled: isOutOfStock || modifier.outOfStock, onChange: makeHandleChange(modifier), required: isRequired }), label: React__default.createElement(Box, { className: radioClasses.label },
|
|
52
|
+
React__default.createElement(Label, { name: modifier.name, price: aggregatePrice[modifier.id] || modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock }),
|
|
53
|
+
modifier.outOfStock && (React__default.createElement(Box, { minWidth: "90px", marginLeft: 2 },
|
|
54
|
+
React__default.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" })))), labelPlacement: "start" }),
|
|
55
|
+
modifier.hasModifiers && !modifier.outOfStock && (React__default.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id) }))))))));
|
|
62
56
|
};
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
57
|
+
const MultipleSelectControl = (props) => {
|
|
58
|
+
const { modifiers, value, isOutOfStock, onChange, disableNewSelections, handleOptionsClick, aggregatePrice } = props;
|
|
59
|
+
const classes = useCheckboxModifierFormStyles();
|
|
60
|
+
const makeHandleChange = (modifier) => () => {
|
|
61
|
+
const isModifierInValue = Boolean(value.find((v) => v.modifierId === modifier.id));
|
|
68
62
|
if (!isModifierInValue && modifier.hasModifiers) {
|
|
69
63
|
handleOptionsClick(modifier.id);
|
|
70
64
|
}
|
|
@@ -76,21 +70,20 @@ var MultipleSelectControl = function (props) {
|
|
|
76
70
|
price: modifier.price || 0,
|
|
77
71
|
quantity: isModifierInValue ? 0 : 1,
|
|
78
72
|
});
|
|
79
|
-
};
|
|
73
|
+
};
|
|
80
74
|
return (React__default.createElement(FormControl, { fullWidth: true },
|
|
81
|
-
React__default.createElement(FormGroup, null, modifiers.map(
|
|
82
|
-
var _a, _b;
|
|
75
|
+
React__default.createElement(FormGroup, null, modifiers.map((modifier) => {
|
|
83
76
|
return (React__default.createElement(Box, { key: modifier.id },
|
|
84
|
-
React__default.createElement(FormControlLabel, { key: modifier.id, value: modifier.id, className: classes.root, checked: value.some(
|
|
77
|
+
React__default.createElement(FormControlLabel, { key: modifier.id, value: modifier.id, className: classes.root, checked: value.some((v) => v.modifierId === modifier.id), onChange: makeHandleChange(modifier), control: React__default.createElement(Checkbox, { className: classNames({ [classes.hideCheckbox]: modifier.outOfStock }, { [classes.checkbox]: !modifier.outOfStock }), disabled: isOutOfStock || modifier.outOfStock || (!modifier.quantity && disableNewSelections) }), label: React__default.createElement(Box, { className: classes.label },
|
|
85
78
|
React__default.createElement(Label, { name: modifier.name, price: aggregatePrice[modifier.id] || modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock }),
|
|
86
79
|
modifier.outOfStock && (React__default.createElement(Box, { minWidth: "90px", marginLeft: 2 },
|
|
87
80
|
React__default.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" })))), labelPlacement: "start" }),
|
|
88
|
-
modifier.hasModifiers && !modifier.outOfStock && (React__default.createElement(Options, { handleOptionsClick:
|
|
81
|
+
modifier.hasModifiers && !modifier.outOfStock && (React__default.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id) }))));
|
|
89
82
|
}))));
|
|
90
83
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
const MultipleQuantitySelectControl = (props) => {
|
|
85
|
+
const { modifiers, isOutOfStock, onChange, disableNewSelections, handleOptionsClick, selectionQuantity } = props;
|
|
86
|
+
const makeHandleChange = (modifier) => (_e, customEvent) => {
|
|
94
87
|
onChange({
|
|
95
88
|
isRadio: false,
|
|
96
89
|
modifierId: modifier.id,
|
|
@@ -99,16 +92,16 @@ var MultipleQuantitySelectControl = function (props) {
|
|
|
99
92
|
price: modifier.price || 0,
|
|
100
93
|
quantity: customEvent.quantity,
|
|
101
94
|
});
|
|
102
|
-
};
|
|
95
|
+
};
|
|
103
96
|
return (React__default.createElement(FormControl, { fullWidth: true },
|
|
104
|
-
React__default.createElement(FormGroup, null, modifiers.map(
|
|
97
|
+
React__default.createElement(FormGroup, null, modifiers.map((modifier) => (React__default.createElement(Box, { key: modifier.id, style: { justifyContent: 'space-between', flexDirection: 'column' }, display: "flex" },
|
|
105
98
|
React__default.createElement(Box, { display: "flex", alignItems: "center", justifyContent: "space-between", width: "100%" },
|
|
106
99
|
React__default.createElement(Label, { name: modifier.name, price: modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock }),
|
|
107
100
|
modifier.outOfStock && (React__default.createElement(Box, { minWidth: "90px", marginLeft: 2 },
|
|
108
101
|
React__default.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" }))),
|
|
109
102
|
!modifier.outOfStock && (React__default.createElement(QuantityPicker, { variation: "modifierCount", value: modifier.quantity, disableIncrement: disableNewSelections, preventManualChange: true, onChange: makeHandleChange(modifier), disabled: isOutOfStock || modifier.outOfStock, name: modifier.name }))),
|
|
110
103
|
React__default.createElement(Box, { display: "flex", alignItems: "flex-start", gridGap: 4 },
|
|
111
|
-
modifier.hasModifiers && !modifier.outOfStock && (React__default.createElement(Options, { handleOptionsClick:
|
|
104
|
+
modifier.hasModifiers && !modifier.outOfStock && (React__default.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id) })),
|
|
112
105
|
selectionQuantity[modifier.id] &&
|
|
113
106
|
selectionQuantity[modifier.id].requiredSelectionCount > 0 &&
|
|
114
107
|
selectionQuantity[modifier.id].requiredSelectionCount !==
|
|
@@ -116,16 +109,16 @@ var MultipleQuantitySelectControl = function (props) {
|
|
|
116
109
|
selectionQuantity[modifier.id].currentSelectionCount,
|
|
117
110
|
"/",
|
|
118
111
|
selectionQuantity[modifier.id].requiredSelectionCount,
|
|
119
|
-
" selected")))))
|
|
112
|
+
" selected")))))))));
|
|
120
113
|
};
|
|
121
|
-
|
|
114
|
+
const ModifierControls = (props) => {
|
|
122
115
|
switch (props.type) {
|
|
123
116
|
case 'singleSelect':
|
|
124
|
-
return React__default.createElement(SingleSelectModifierControl,
|
|
117
|
+
return React__default.createElement(SingleSelectModifierControl, { ...props });
|
|
125
118
|
case 'multipleSelect':
|
|
126
|
-
return React__default.createElement(MultipleSelectControl,
|
|
119
|
+
return React__default.createElement(MultipleSelectControl, { ...props });
|
|
127
120
|
case 'multipleQuantitySelect':
|
|
128
|
-
return React__default.createElement(MultipleQuantitySelectControl,
|
|
121
|
+
return React__default.createElement(MultipleQuantitySelectControl, { ...props });
|
|
129
122
|
default:
|
|
130
123
|
return null;
|
|
131
124
|
}
|