@popmenu/ordering-ui 0.127.0 → 0.127.2
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/DishCheckoutCard/index.d.ts +2 -2
- package/build/cjs/components/DishDetailsReview/index.d.ts +2 -2
- 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/index.d.ts +2 -2
- package/build/cjs/components/MenuBanner/index.d.ts +1 -1
- package/build/cjs/components/MenuDropdown/index.d.ts +2 -2
- package/build/cjs/components/MenuFilter/index.d.ts +2 -2
- package/build/cjs/components/MenuItem/index.d.ts +1 -1
- package/build/cjs/components/MenuSection/index.d.ts +1 -1
- package/build/cjs/components/MenuTab/MenuTab.styles.d.ts +4 -1
- package/build/cjs/components/MenuTab/index.d.ts +2 -2
- package/build/cjs/components/MenuTabGroup/MenuTabGroupProps.d.ts +1 -4
- package/build/cjs/components/MenuTabGroup/index.d.ts +2 -2
- package/build/cjs/components/QuantityPicker/index.d.ts +2 -2
- package/build/cjs/components/ReactionCounter/index.d.ts +2 -2
- package/build/cjs/components/ReactionCounterGroup/index.d.ts +1 -1
- package/build/cjs/components/SelectableChip/index.d.ts +2 -2
- 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/index.d.ts +1 -1
- package/build/cjs/components/StatusTag/index.d.ts +2 -2
- package/build/cjs/components/index.d.ts +41 -22
- package/build/cjs/index.js +524 -674
- 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.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.js +18 -28
- package/build/esm/components/DishCheckoutCard/DishCheckoutCard.js.map +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/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.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/ModifierControls.js +44 -51
- package/build/esm/components/DishModifierCard/ModifierControls.js.map +1 -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.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.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.js +2 -2
- package/build/esm/components/MenuBanner/MenuBannerIcons.js.map +1 -1
- package/build/esm/components/MenuBanner/index.d.ts +1 -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/index.d.ts +2 -2
- 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/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.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.js +12 -15
- package/build/esm/components/MenuItem/MenuItemPrice.js.map +1 -1
- 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.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.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/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.js +5 -6
- package/build/esm/components/MenuTab/MenuTab.js.map +1 -1
- package/build/esm/components/MenuTab/MenuTab.styles.d.ts +4 -1
- package/build/esm/components/MenuTab/MenuTab.styles.js +11 -16
- package/build/esm/components/MenuTab/MenuTab.styles.js.map +1 -1
- package/build/esm/components/MenuTab/index.d.ts +2 -2
- 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.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.js +16 -17
- package/build/esm/components/QuantityPicker/QuantityPicker.js.map +1 -1
- 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/index.d.ts +2 -2
- 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.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.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.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/index.d.ts +2 -2
- 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.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.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.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
package/build/cjs/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var core = require('@material-ui/core');
|
|
4
|
-
var tslib = require('tslib');
|
|
5
4
|
var React = require('react');
|
|
6
|
-
var webIcons = require('@popmenu/web-icons');
|
|
7
|
-
var commonUi = require('@popmenu/common-ui');
|
|
8
5
|
var lab = require('@material-ui/lab');
|
|
6
|
+
var classNames = require('classnames');
|
|
7
|
+
var commonUi = require('@popmenu/common-ui');
|
|
8
|
+
var webIcons = require('@popmenu/web-icons');
|
|
9
9
|
|
|
10
10
|
function _interopNamespaceDefault(e) {
|
|
11
11
|
var n = Object.create(null);
|
|
@@ -26,9 +26,9 @@ function _interopNamespaceDefault(e) {
|
|
|
26
26
|
|
|
27
27
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const Button = React.forwardRef((props, ref) => {
|
|
30
|
+
const { variation = 'primary', ...muiProps } = props;
|
|
31
|
+
const variationProps = {};
|
|
32
32
|
switch (variation) {
|
|
33
33
|
case 'primary':
|
|
34
34
|
variationProps.variant = 'contained';
|
|
@@ -39,137 +39,173 @@ var Button = React.forwardRef(function (props, ref) {
|
|
|
39
39
|
variationProps.color = 'primary';
|
|
40
40
|
break;
|
|
41
41
|
}
|
|
42
|
-
return React.createElement(core.Button,
|
|
42
|
+
return React.createElement(core.Button, { ...variationProps, ...muiProps, ref: ref });
|
|
43
43
|
});
|
|
44
44
|
Button.displayName = 'Button';
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
overflow: 'hidden',
|
|
46
|
+
const useStatusTagStyles = core.makeStyles((theme) => ({
|
|
47
|
+
root: {
|
|
48
|
+
borderRadius: '5px',
|
|
49
|
+
display: 'flex',
|
|
50
|
+
padding: theme.spacing(1),
|
|
51
|
+
alignItems: 'center',
|
|
52
|
+
justifyContent: 'center',
|
|
53
|
+
width: 'fit-content',
|
|
54
|
+
},
|
|
55
|
+
filled: {
|
|
56
|
+
backgroundColor: theme.palette.grey[100],
|
|
57
|
+
color: theme.palette.grey[900],
|
|
58
|
+
},
|
|
59
|
+
outlined: {
|
|
60
|
+
border: `1px solid var(--surfaces-card-stroke, ${theme.palette.grey[900]})`,
|
|
61
|
+
},
|
|
62
|
+
small: {
|
|
63
|
+
padding: theme.spacing(0.25, 0.75),
|
|
64
|
+
},
|
|
65
|
+
default: {
|
|
66
|
+
color: theme.palette.grey[900],
|
|
67
|
+
},
|
|
68
|
+
warning: {
|
|
69
|
+
borderColor: theme.palette.warning.dark,
|
|
70
|
+
color: theme.palette.warning.dark,
|
|
71
|
+
},
|
|
72
|
+
error: {
|
|
73
|
+
borderColor: theme.palette.error.main,
|
|
74
|
+
color: theme.palette.error.main,
|
|
75
|
+
},
|
|
76
|
+
highlight: {
|
|
77
|
+
backgroundColor: theme.palette.warning.light,
|
|
78
|
+
color: theme.palette.grey[900],
|
|
79
|
+
},
|
|
80
|
+
}));
|
|
81
|
+
|
|
82
|
+
const StatusTag = ({ color = 'default', label, size = 'md', variant }) => {
|
|
83
|
+
const classes = useStatusTagStyles();
|
|
84
|
+
return (React.createElement(commonUi.Box, { className: classNames([classes.root, classes[color], classes[variant], size === 'sm' ? classes.small : '']) },
|
|
85
|
+
React.createElement(commonUi.Typography, { variant: "caption" }, label)));
|
|
86
|
+
};
|
|
87
|
+
StatusTag.displayName = 'StatusTag';
|
|
88
|
+
|
|
89
|
+
const useMenuItemStyles = core.makeStyles((theme) => ({
|
|
90
|
+
cardActionArea: {
|
|
91
|
+
display: 'flex',
|
|
92
|
+
gridGap: 16,
|
|
93
|
+
height: '100%',
|
|
94
|
+
[theme.breakpoints.up('lg')]: {
|
|
95
|
+
border: '1px solid #E0E0E0',
|
|
96
|
+
borderRadius: theme.spacing(2),
|
|
97
|
+
padding: theme.spacing(2),
|
|
99
98
|
},
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
99
|
+
},
|
|
100
|
+
card: {
|
|
101
|
+
[theme.breakpoints.down('md')]: {
|
|
102
|
+
'&:after': {
|
|
103
|
+
content: '""',
|
|
104
|
+
position: 'absolute',
|
|
105
|
+
backgroundColor: '#E0E0E0',
|
|
106
|
+
width: '100%',
|
|
107
|
+
height: 1,
|
|
108
|
+
bottom: -16,
|
|
109
|
+
left: 0,
|
|
110
|
+
},
|
|
105
111
|
},
|
|
106
|
-
|
|
107
|
-
|
|
112
|
+
height: 185,
|
|
113
|
+
position: 'relative',
|
|
114
|
+
overflow: 'visible',
|
|
115
|
+
},
|
|
116
|
+
cardTitle: {
|
|
117
|
+
flexGrow: 1,
|
|
118
|
+
fontWeight: 500,
|
|
119
|
+
fontSize: 18,
|
|
120
|
+
lineHeight: '27px',
|
|
121
|
+
color: theme.palette.grey[900],
|
|
122
|
+
'-webkit-line-clamp': 2,
|
|
123
|
+
display: '-webkit-box',
|
|
124
|
+
'-webkit-box-orient': 'vertical',
|
|
125
|
+
textOverflow: 'ellipsis',
|
|
126
|
+
overflow: 'hidden',
|
|
127
|
+
},
|
|
128
|
+
cardDescription: {
|
|
129
|
+
fontWeight: 400,
|
|
130
|
+
fontSize: 14,
|
|
131
|
+
lineHeight: '20px',
|
|
132
|
+
margin: theme.spacing(0.5, 0, 1, 0),
|
|
133
|
+
color: theme.palette.grey[800],
|
|
134
|
+
'-webkit-line-clamp': 2,
|
|
135
|
+
display: '-webkit-box',
|
|
136
|
+
'-webkit-box-orient': 'vertical',
|
|
137
|
+
textOverflow: 'ellipsis',
|
|
138
|
+
overflow: 'hidden',
|
|
139
|
+
},
|
|
140
|
+
outOfStockTag: {
|
|
141
|
+
minWidth: '90px',
|
|
142
|
+
marginLeft: theme.spacing(1),
|
|
143
|
+
display: 'inline-block',
|
|
144
|
+
verticalAlign: 'bottom',
|
|
145
|
+
},
|
|
146
|
+
}));
|
|
108
147
|
|
|
109
|
-
|
|
148
|
+
const useStyles$6 = core.makeStyles(() => ({
|
|
110
149
|
img: {
|
|
111
150
|
objectFit: 'cover',
|
|
112
151
|
width: '100%',
|
|
113
152
|
height: '100%',
|
|
114
153
|
},
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
154
|
+
}));
|
|
155
|
+
const MenuItemImg = (props) => {
|
|
156
|
+
const { image = {} } = props;
|
|
157
|
+
const { src } = image;
|
|
158
|
+
const classes = useStyles$6();
|
|
120
159
|
if (!src) {
|
|
121
160
|
return null;
|
|
122
161
|
}
|
|
123
162
|
return (React.createElement(core.Box, { width: 125, height: "100%", borderRadius: 16, overflow: "hidden", flexShrink: 0 }, React.createElement("img", { src: src, alt: "", className: classes.img })));
|
|
124
163
|
};
|
|
125
164
|
|
|
126
|
-
|
|
165
|
+
const MenuItemInfo = (props) => {
|
|
127
166
|
return (React.createElement(core.Box, { display: "flex", flexGrow: 1, flexDirection: "column", height: "100%" }, props.children));
|
|
128
167
|
};
|
|
129
168
|
|
|
130
|
-
|
|
131
|
-
|
|
169
|
+
const useStyles$5 = core.makeStyles(({ palette, spacing }) => ({
|
|
170
|
+
plusIcon: {
|
|
171
|
+
height: '100%',
|
|
172
|
+
padding: spacing(0.25),
|
|
173
|
+
background: (props) => (props.available ? palette.info.main : 'none'),
|
|
174
|
+
color: (props) => (props.available ? palette.info.contrastText : palette.warning.main),
|
|
175
|
+
borderRadius: '30px',
|
|
176
|
+
marginRight: spacing(1),
|
|
177
|
+
},
|
|
178
|
+
}));
|
|
179
|
+
const MenuItemPrice = (props) => {
|
|
180
|
+
const classes = useStyles$5(props);
|
|
181
|
+
return (React.createElement(core.Box, { display: "flex", alignItems: "center" },
|
|
182
|
+
React.createElement(core.Box, { display: "flex", className: classes.plusIcon },
|
|
183
|
+
React.createElement(commonUi.Icon, { icon: props.available ? webIcons.Plus : webIcons.Lock, size: "medium" })),
|
|
184
|
+
React.createElement(core.Typography, null, props.price)));
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
const ReactionCounter = (props) => {
|
|
188
|
+
const { count, icon, label } = props;
|
|
132
189
|
return (React.createElement(commonUi.Box, { display: "flex", alignItems: "center", gridGap: 6, color: "grey.900" },
|
|
133
190
|
React.createElement(commonUi.Icon, { icon: icon, size: "large", color: "inherit", "aria-label": label }),
|
|
134
191
|
React.createElement(commonUi.Typography, { variant: "body2", color: "grey.900" }, count)));
|
|
135
192
|
};
|
|
136
193
|
|
|
137
|
-
|
|
138
|
-
|
|
194
|
+
const ReactionCounterGroup = (props) => {
|
|
195
|
+
const { children } = props;
|
|
139
196
|
return (React.createElement(commonUi.Box, { display: "flex", gridGap: 16 }, children));
|
|
140
197
|
};
|
|
141
198
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
199
|
+
const MenuItemReactions = (props) => {
|
|
200
|
+
const { likeCount, reviewCount } = props;
|
|
201
|
+
const showLikes = likeCount ? likeCount > 0 : false;
|
|
202
|
+
const showReviews = reviewCount ? reviewCount > 0 : false;
|
|
146
203
|
return (React.createElement(ReactionCounterGroup, null,
|
|
147
|
-
showLikes && React.createElement(ReactionCounter, { icon: webIcons.Heart, count: likeCount
|
|
148
|
-
showReviews && React.createElement(ReactionCounter, { icon: webIcons.Reviews, count: reviewCount
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
var useStyles$5 = core.makeStyles(function (_a) {
|
|
152
|
-
var palette = _a.palette, spacing = _a.spacing;
|
|
153
|
-
return ({
|
|
154
|
-
plusIcon: {
|
|
155
|
-
height: '100%',
|
|
156
|
-
padding: spacing(0.25),
|
|
157
|
-
background: function (props) { return (props.available ? palette.info.main : 'none'); },
|
|
158
|
-
color: function (props) { return (props.available ? palette.info.contrastText : palette.warning.main); },
|
|
159
|
-
borderRadius: '30px',
|
|
160
|
-
marginRight: spacing(1),
|
|
161
|
-
},
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
var MenuItemPrice = function (props) {
|
|
165
|
-
var classes = useStyles$5(props);
|
|
166
|
-
return (React.createElement(core.Box, { display: "flex", alignItems: "center" },
|
|
167
|
-
React.createElement(core.Box, { display: "flex", className: classes.plusIcon },
|
|
168
|
-
React.createElement(commonUi.Icon, { icon: props.available ? webIcons.Plus : webIcons.Lock, size: "medium" })),
|
|
169
|
-
React.createElement(core.Typography, null, props.price)));
|
|
204
|
+
showLikes && React.createElement(ReactionCounter, { icon: webIcons.Heart, count: likeCount ?? 0, label: "likes" }),
|
|
205
|
+
showReviews && React.createElement(ReactionCounter, { icon: webIcons.Reviews, count: reviewCount ?? 0, label: "reviews" })));
|
|
170
206
|
};
|
|
171
207
|
|
|
172
|
-
|
|
208
|
+
const useItemTagStyles = core.makeStyles((theme) => ({
|
|
173
209
|
root: {
|
|
174
210
|
color: theme.palette.text.primary,
|
|
175
211
|
borderColor: theme.palette.text.primary,
|
|
@@ -183,156 +219,33 @@ var useItemTagStyles = core.makeStyles(function (theme) { return ({
|
|
|
183
219
|
text: {
|
|
184
220
|
lineHeight: 1.5,
|
|
185
221
|
},
|
|
186
|
-
})
|
|
222
|
+
}));
|
|
187
223
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
224
|
+
const ItemTag = React.forwardRef((props, ref) => {
|
|
225
|
+
const { alt, children } = props;
|
|
226
|
+
const classes = useItemTagStyles();
|
|
191
227
|
return (React.createElement(core.Avatar, { ref: ref, alt: alt, classes: { root: classes.root } },
|
|
192
228
|
React.createElement(commonUi.Typography, { variant: "caption", className: classes.text }, children)));
|
|
193
229
|
});
|
|
194
230
|
ItemTag.displayName = 'ItemTag';
|
|
195
231
|
|
|
196
|
-
|
|
197
|
-
|
|
232
|
+
const ItemTagGroup = (props) => {
|
|
233
|
+
const { children } = props;
|
|
198
234
|
return (React.createElement(core.Box, { display: "flex", gridGap: 6, ml: 1, flexWrap: "wrap" }, children));
|
|
199
235
|
};
|
|
200
236
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
return (React.createElement(ItemTagGroup, null, itemTags
|
|
237
|
+
const MenuItemTags = (props) => {
|
|
238
|
+
const { itemTags } = props;
|
|
239
|
+
return (React.createElement(ItemTagGroup, null, itemTags?.slice(0, 5).map((itemTag) => (React.createElement(ItemTag, { key: itemTag.name, alt: itemTag.name, color: itemTag.color }, itemTag.abbr)))));
|
|
204
240
|
};
|
|
205
241
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
padding: theme.spacing(1),
|
|
211
|
-
alignItems: 'center',
|
|
212
|
-
justifyContent: 'center',
|
|
213
|
-
width: 'fit-content',
|
|
214
|
-
},
|
|
215
|
-
filled: {
|
|
216
|
-
backgroundColor: theme.palette.grey[100],
|
|
217
|
-
color: theme.palette.grey[900],
|
|
218
|
-
},
|
|
219
|
-
outlined: {
|
|
220
|
-
border: "1px solid var(--surfaces-card-stroke, " + theme.palette.grey[900] + ")",
|
|
221
|
-
},
|
|
222
|
-
small: {
|
|
223
|
-
padding: theme.spacing(0.25, 0.75),
|
|
224
|
-
},
|
|
225
|
-
default: {
|
|
226
|
-
color: theme.palette.grey[900],
|
|
227
|
-
},
|
|
228
|
-
warning: {
|
|
229
|
-
borderColor: theme.palette.warning.dark,
|
|
230
|
-
color: theme.palette.warning.dark,
|
|
231
|
-
},
|
|
232
|
-
error: {
|
|
233
|
-
borderColor: theme.palette.error.main,
|
|
234
|
-
color: theme.palette.error.main,
|
|
235
|
-
},
|
|
236
|
-
highlight: {
|
|
237
|
-
backgroundColor: theme.palette.warning.light,
|
|
238
|
-
color: theme.palette.grey[900],
|
|
239
|
-
},
|
|
240
|
-
}); });
|
|
241
|
-
|
|
242
|
-
var classnames = {exports: {}};
|
|
243
|
-
|
|
244
|
-
/*!
|
|
245
|
-
Copyright (c) 2018 Jed Watson.
|
|
246
|
-
Licensed under the MIT License (MIT), see
|
|
247
|
-
http://jedwatson.github.io/classnames
|
|
248
|
-
*/
|
|
249
|
-
|
|
250
|
-
(function (module) {
|
|
251
|
-
/* global define */
|
|
252
|
-
|
|
253
|
-
(function () {
|
|
254
|
-
|
|
255
|
-
var hasOwn = {}.hasOwnProperty;
|
|
256
|
-
|
|
257
|
-
function classNames () {
|
|
258
|
-
var classes = '';
|
|
259
|
-
|
|
260
|
-
for (var i = 0; i < arguments.length; i++) {
|
|
261
|
-
var arg = arguments[i];
|
|
262
|
-
if (arg) {
|
|
263
|
-
classes = appendClass(classes, parseValue(arg));
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
return classes;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function parseValue (arg) {
|
|
271
|
-
if (typeof arg === 'string' || typeof arg === 'number') {
|
|
272
|
-
return arg;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
if (typeof arg !== 'object') {
|
|
276
|
-
return '';
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
if (Array.isArray(arg)) {
|
|
280
|
-
return classNames.apply(null, arg);
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
|
|
284
|
-
return arg.toString();
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
var classes = '';
|
|
288
|
-
|
|
289
|
-
for (var key in arg) {
|
|
290
|
-
if (hasOwn.call(arg, key) && arg[key]) {
|
|
291
|
-
classes = appendClass(classes, key);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
return classes;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
function appendClass (value, newClass) {
|
|
299
|
-
if (!newClass) {
|
|
300
|
-
return value;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
if (value) {
|
|
304
|
-
return value + ' ' + newClass;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
return value + newClass;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
if (module.exports) {
|
|
311
|
-
classNames.default = classNames;
|
|
312
|
-
module.exports = classNames;
|
|
313
|
-
} else {
|
|
314
|
-
window.classNames = classNames;
|
|
315
|
-
}
|
|
316
|
-
}());
|
|
317
|
-
}(classnames));
|
|
318
|
-
|
|
319
|
-
var classNames = classnames.exports;
|
|
320
|
-
|
|
321
|
-
var StatusTag = function (_a) {
|
|
322
|
-
var _b = _a.color, color = _b === void 0 ? 'default' : _b, label = _a.label, _c = _a.size, size = _c === void 0 ? 'md' : _c, variant = _a.variant;
|
|
323
|
-
var classes = useStatusTagStyles();
|
|
324
|
-
return (React.createElement(commonUi.Box, { className: classNames([classes.root, classes[color], classes[variant], size === 'sm' ? classes.small : '']) },
|
|
325
|
-
React.createElement(commonUi.Typography, { variant: "caption" }, label)));
|
|
326
|
-
};
|
|
327
|
-
StatusTag.displayName = 'StatusTag';
|
|
328
|
-
|
|
329
|
-
var MenuItem = React.forwardRef(function (props, ref) {
|
|
330
|
-
var ariaLabel = props.ariaLabel, onClick = props.onClick, id = props.id, description = props.description, isOutOfStock = props.isOutOfStock, title = props.title, loading = props.loading, isFeatured = props.isFeatured, image = props.image, likeCount = props.likeCount, reviewCount = props.reviewCount, price = props.price, available = props.available, itemTags = props.itemTags, className = props.className, restProps = tslib.__rest(props, ["ariaLabel", "onClick", "id", "description", "isOutOfStock", "title", "loading", "isFeatured", "image", "likeCount", "reviewCount", "price", "available", "itemTags", "className"]);
|
|
331
|
-
var classes = useMenuItemStyles(props);
|
|
332
|
-
var handleClick = function (event) {
|
|
242
|
+
const MenuItem = React.forwardRef((props, ref) => {
|
|
243
|
+
const { ariaLabel, onClick, id, description, isOutOfStock, title, loading, isFeatured, image, likeCount, reviewCount, price, available, itemTags, className, ...restProps } = props;
|
|
244
|
+
const classes = useMenuItemStyles(props);
|
|
245
|
+
const handleClick = (event) => {
|
|
333
246
|
onClick(id, event);
|
|
334
247
|
};
|
|
335
|
-
return (React.createElement(core.Card,
|
|
248
|
+
return (React.createElement(core.Card, { className: classNames(classes.card, className), ref: ref, elevation: 0, "data-component-type": "menu-item", ...restProps },
|
|
336
249
|
React.createElement(core.CardActionArea, { className: classes.cardActionArea, onClick: handleClick, disabled: loading, "aria-label": ariaLabel },
|
|
337
250
|
React.createElement(MenuItemInfo, null,
|
|
338
251
|
isFeatured && React.createElement(StatusTag, { color: "highlight", label: "Featured", variant: "filled", size: "sm" }),
|
|
@@ -351,20 +264,47 @@ var MenuItem = React.forwardRef(function (props, ref) {
|
|
|
351
264
|
});
|
|
352
265
|
MenuItem.displayName = 'MenuItem';
|
|
353
266
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
267
|
+
const useMenuTabStyles = core.makeStyles(({ palette, spacing }) => ({
|
|
268
|
+
root: ({ isUnavailable }) => ({
|
|
269
|
+
color: isUnavailable ? `${palette.grey[700]} !important` : 'inherit',
|
|
270
|
+
'& > .MuiTab-wrapper': {
|
|
271
|
+
flexDirection: 'row-reverse',
|
|
272
|
+
gridGap: spacing(1),
|
|
273
|
+
textAlign: 'center',
|
|
274
|
+
'& > svg': {
|
|
275
|
+
marginBottom: '0 !important',
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
}),
|
|
279
|
+
}));
|
|
280
|
+
|
|
281
|
+
const MenuTab = (props) => {
|
|
282
|
+
const { isUnavailable, value } = props;
|
|
283
|
+
const classes = useMenuTabStyles({ isUnavailable });
|
|
284
|
+
return (React.createElement(core.Tab, { "data-tab-for-section-id": value, classes: {
|
|
285
|
+
root: classes.root,
|
|
286
|
+
}, icon: isUnavailable ? React.createElement(commonUi.Icon, { icon: webIcons.Clock, size: "large" }) : undefined, ...props }));
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
const MenuTabGroup = (props) => {
|
|
290
|
+
const { children, ...muiProps } = props;
|
|
291
|
+
return (React.createElement(core.Tabs, { scrollButtons: "on", variant: "scrollable", ...muiProps }, children));
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
const OrderingAppContext = React.createContext(null);
|
|
295
|
+
const useOrderingAppContext = () => {
|
|
296
|
+
const context = React.useContext(OrderingAppContext);
|
|
357
297
|
if (!context) {
|
|
358
298
|
throw new Error('useOrderingAppContext has to be used within <OrderingAppContext.Provider>');
|
|
359
299
|
}
|
|
360
300
|
return context;
|
|
361
301
|
};
|
|
362
|
-
|
|
363
|
-
|
|
302
|
+
const OrderingAppContextProvider = (props) => {
|
|
303
|
+
const context = React.useState(props.defaultContext);
|
|
364
304
|
return React.createElement(OrderingAppContext.Provider, { value: context }, props.children);
|
|
365
305
|
};
|
|
366
306
|
|
|
367
|
-
|
|
307
|
+
const useDishCheckoutCardStyles = core.makeStyles((theme) => ({
|
|
368
308
|
root: {
|
|
369
309
|
'&:first-of-type': {
|
|
370
310
|
paddingTop: 0,
|
|
@@ -379,10 +319,7 @@ var useDishCheckoutCardStyles = core.makeStyles(function (theme) { return ({
|
|
|
379
319
|
flexDirection: 'column',
|
|
380
320
|
width: '100%',
|
|
381
321
|
gridGap: theme.spacing(2),
|
|
382
|
-
borderBottom:
|
|
383
|
-
var borderBottom = _a.borderBottom;
|
|
384
|
-
return (borderBottom ? '1px solid #E0E0E0' : 'none');
|
|
385
|
-
},
|
|
322
|
+
borderBottom: ({ borderBottom }) => (borderBottom ? '1px solid #E0E0E0' : 'none'),
|
|
386
323
|
},
|
|
387
324
|
deleteButton: {
|
|
388
325
|
color: theme.palette.info.main,
|
|
@@ -443,45 +380,35 @@ var useDishCheckoutCardStyles = core.makeStyles(function (theme) { return ({
|
|
|
443
380
|
display: 'flex',
|
|
444
381
|
gridGap: theme.spacing(0.825),
|
|
445
382
|
},
|
|
446
|
-
})
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
var handleQuantityChange = function (event) {
|
|
457
|
-
return onQuantityChange(id, parseInt(event.target.value, 10));
|
|
458
|
-
};
|
|
459
|
-
var labelString = function (label) {
|
|
383
|
+
}));
|
|
384
|
+
|
|
385
|
+
const DishCheckoutCard = ({ id, borderBottom, name, quantity, modifierGroups, onDelete, onEdit, onQuantityChange, price, specialInstructions, disabled, warningMessage, image = {}, messages, maxQuantity = 99, minQuantity = 1, }) => {
|
|
386
|
+
const { src } = image;
|
|
387
|
+
const classes = useDishCheckoutCardStyles({ borderBottom });
|
|
388
|
+
const [appContext] = useOrderingAppContext();
|
|
389
|
+
const [open, setOpen] = React.useState(false);
|
|
390
|
+
const formattedPrice = typeof price === 'number' ? `${appContext.currencySymbol ?? ''}${price.toFixed(2)}` : price;
|
|
391
|
+
const handleQuantityChange = (event) => onQuantityChange(id, parseInt(event.target.value, 10));
|
|
392
|
+
const labelString = (label) => {
|
|
460
393
|
return label.replace(/[^a-zA-Z\s]/g, '').toLowerCase();
|
|
461
394
|
};
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
return groups.map(function (group) {
|
|
395
|
+
const formatModifiers = (groups, nested = false) => {
|
|
396
|
+
return groups.map((group) => {
|
|
465
397
|
// Get all selected modifiers for this group
|
|
466
|
-
|
|
467
|
-
.map(
|
|
468
|
-
return modifier.quantity > 1 ? modifier.modifierName + " \u00D7 " + modifier.quantity : modifier.modifierName;
|
|
469
|
-
})
|
|
398
|
+
const modifiers = group.selectedModifiers
|
|
399
|
+
.map((modifier) => modifier.quantity > 1 ? `${modifier.modifierName} × ${modifier.quantity}` : modifier.modifierName)
|
|
470
400
|
.join(', ');
|
|
471
401
|
// Render nested groups recursively
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
? formatModifiers(modifier.selectedModifierGroups, true)
|
|
476
|
-
: [];
|
|
477
|
-
});
|
|
402
|
+
const nestedGroups = group.selectedModifiers.flatMap((modifier) => modifier?.selectedModifierGroups && modifier?.selectedModifierGroups?.length > 0
|
|
403
|
+
? formatModifiers(modifier.selectedModifierGroups, true)
|
|
404
|
+
: []);
|
|
478
405
|
// For top-level groups, we render without the list
|
|
479
406
|
if (!nested) {
|
|
480
407
|
return (React.createElement(commonUi.Typography, { key: group.id, variant: "body2" },
|
|
481
408
|
group.menuItemModifierGroupName,
|
|
482
409
|
": ",
|
|
483
410
|
modifiers,
|
|
484
|
-
|
|
411
|
+
nestedGroups?.length > 0 && React.createElement("ul", { className: classes.ul }, nestedGroups)));
|
|
485
412
|
}
|
|
486
413
|
// For nested groups, we use list items
|
|
487
414
|
return (React.createElement("li", { key: group.id, className: classes.li },
|
|
@@ -508,7 +435,7 @@ var DishCheckoutCard = function (_a) {
|
|
|
508
435
|
React.createElement(commonUi.Icon, { icon: webIcons.Trash, size: "large" })))),
|
|
509
436
|
React.createElement(commonUi.Box, { display: "flex", gridGap: 16, alignItems: "center" },
|
|
510
437
|
React.createElement(core.FormControl, { variant: "outlined", hiddenLabel: true },
|
|
511
|
-
React.createElement(core.Select, { disabled: disabled, value: quantity, onOpen:
|
|
438
|
+
React.createElement(core.Select, { disabled: disabled, value: quantity, onOpen: () => setOpen(true), onClose: () => setOpen(false), SelectDisplayProps: { 'aria-label': `${labelString(name)} quantity select` }, disableUnderline: true, onChange: handleQuantityChange, fullWidth: true, startAdornment: React.createElement(core.InputAdornment, { position: "start" },
|
|
512
439
|
React.createElement(commonUi.Icon, { icon: open ? webIcons.ChevronUp : webIcons.ChevronDown, size: "large" })), inputProps: { shrink: false }, MenuProps: {
|
|
513
440
|
disablePortal: true,
|
|
514
441
|
anchorOrigin: {
|
|
@@ -521,7 +448,7 @@ var DishCheckoutCard = function (_a) {
|
|
|
521
448
|
},
|
|
522
449
|
getContentAnchorEl: null,
|
|
523
450
|
classes: { paper: classes.selectPaper },
|
|
524
|
-
}, className: classes.select }, Array.from({ length: maxQuantity - minQuantity + 1 },
|
|
451
|
+
}, className: classes.select }, Array.from({ length: maxQuantity - minQuantity + 1 }, (_, index) => (React.createElement(core.MenuItem, { key: index + minQuantity, value: index + minQuantity, "aria-label": `${index + minQuantity}` }, index + minQuantity))))),
|
|
525
452
|
React.createElement(commonUi.Typography, { className: classes.price }, formattedPrice)),
|
|
526
453
|
warningMessage && (React.createElement(commonUi.Box, { className: classes.warning },
|
|
527
454
|
React.createElement(commonUi.Box, { paddingTop: 0.25 },
|
|
@@ -529,8 +456,8 @@ var DishCheckoutCard = function (_a) {
|
|
|
529
456
|
React.createElement(commonUi.Typography, { variant: "body2" }, warningMessage)))));
|
|
530
457
|
};
|
|
531
458
|
|
|
532
|
-
|
|
533
|
-
|
|
459
|
+
const DishDetailsReview = React.forwardRef((props) => {
|
|
460
|
+
const { userName, userAvatarUrl, content, createdAgo, alt } = props;
|
|
534
461
|
return (React.createElement(commonUi.Box, { display: "flex" },
|
|
535
462
|
React.createElement(commonUi.Box, { mr: 1 },
|
|
536
463
|
React.createElement(commonUi.Avatar, { size: "small", src: userAvatarUrl, alt: alt })),
|
|
@@ -542,14 +469,14 @@ var DishDetailsReview = React.forwardRef(function (props) {
|
|
|
542
469
|
});
|
|
543
470
|
DishDetailsReview.displayName = 'DishDetailsReview';
|
|
544
471
|
|
|
545
|
-
|
|
472
|
+
const useDishModifierCardStyles = core.makeStyles((theme) => ({
|
|
546
473
|
root: {
|
|
547
474
|
borderRadius: '8px',
|
|
548
475
|
border: '1px solid var(--surfaces-card-stroke, #E0E0E0)',
|
|
549
476
|
display: 'flex',
|
|
550
477
|
flexDirection: 'column',
|
|
551
478
|
padding: theme.spacing(2.5),
|
|
552
|
-
color: theme.palette.grey[900]
|
|
479
|
+
color: `${theme.palette.grey[900]} !important`,
|
|
553
480
|
},
|
|
554
481
|
error: {
|
|
555
482
|
color: theme.palette.error.main,
|
|
@@ -561,8 +488,8 @@ var useDishModifierCardStyles = core.makeStyles(function (theme) { return ({
|
|
|
561
488
|
fontSize: theme.spacing(2.25),
|
|
562
489
|
marginBottom: theme.spacing(2),
|
|
563
490
|
},
|
|
564
|
-
})
|
|
565
|
-
|
|
491
|
+
}));
|
|
492
|
+
const useRadioModifierFormStyles = core.makeStyles((theme) => ({
|
|
566
493
|
label: {
|
|
567
494
|
alignItems: 'center',
|
|
568
495
|
display: 'flex',
|
|
@@ -587,8 +514,8 @@ var useRadioModifierFormStyles = core.makeStyles(function (theme) { return ({
|
|
|
587
514
|
flex: 1,
|
|
588
515
|
},
|
|
589
516
|
},
|
|
590
|
-
})
|
|
591
|
-
|
|
517
|
+
}));
|
|
518
|
+
const useCheckboxModifierFormStyles = core.makeStyles((theme) => ({
|
|
592
519
|
label: {
|
|
593
520
|
alignItems: 'center',
|
|
594
521
|
display: 'flex',
|
|
@@ -613,8 +540,8 @@ var useCheckboxModifierFormStyles = core.makeStyles(function (theme) { return ({
|
|
|
613
540
|
flex: 1,
|
|
614
541
|
},
|
|
615
542
|
},
|
|
616
|
-
})
|
|
617
|
-
|
|
543
|
+
}));
|
|
544
|
+
const useLabelStyles = core.makeStyles((theme) => ({
|
|
618
545
|
label: {
|
|
619
546
|
margin: theme.spacing(0.5, 0),
|
|
620
547
|
},
|
|
@@ -624,27 +551,27 @@ var useLabelStyles = core.makeStyles(function (theme) { return ({
|
|
|
624
551
|
price: {
|
|
625
552
|
color: theme.palette.grey[700],
|
|
626
553
|
},
|
|
627
|
-
})
|
|
628
|
-
|
|
554
|
+
}));
|
|
555
|
+
const useOptionsStyles = core.makeStyles((theme) => ({
|
|
629
556
|
options: {
|
|
630
557
|
color: theme.palette.info.main,
|
|
631
558
|
marginBottom: theme.spacing(1.5),
|
|
632
559
|
padding: 0,
|
|
633
560
|
},
|
|
634
|
-
})
|
|
561
|
+
}));
|
|
635
562
|
|
|
636
|
-
|
|
563
|
+
const useQuantityPickerStyles = core.makeStyles((theme) => ({
|
|
637
564
|
root: {
|
|
638
565
|
height: theme.spacing(7),
|
|
639
566
|
backgroundColor: 'none',
|
|
640
567
|
},
|
|
641
|
-
})
|
|
642
|
-
|
|
568
|
+
}));
|
|
569
|
+
const useQuantityInputStyles = core.makeStyles((theme) => ({
|
|
643
570
|
root: {
|
|
644
571
|
height: '100%',
|
|
645
572
|
width: 'min-content',
|
|
646
573
|
borderRadius: theme.spacing(12.5),
|
|
647
|
-
background:
|
|
574
|
+
background: (props) => (props.variation === 'modifierCount' ? 'unset' : theme.palette.grey[100]),
|
|
648
575
|
},
|
|
649
576
|
input: {
|
|
650
577
|
'&::-webkit-clear-button, &::-webkit-outer-spin-button, &::-webkit-inner-spin-button': {
|
|
@@ -654,47 +581,46 @@ var useQuantityInputStyles = core.makeStyles(function (theme) { return ({
|
|
|
654
581
|
fontWeight: 600,
|
|
655
582
|
padding: 0,
|
|
656
583
|
textAlign: 'center',
|
|
657
|
-
zIndex:
|
|
658
|
-
backgroundColor:
|
|
659
|
-
alignSelf:
|
|
660
|
-
height:
|
|
661
|
-
minWidth:
|
|
662
|
-
borderRadius:
|
|
663
|
-
margin:
|
|
664
|
-
},
|
|
665
|
-
})
|
|
666
|
-
|
|
584
|
+
zIndex: (props) => (props.value === 0 && props.variation === 'modifierCount' ? -1 : 1),
|
|
585
|
+
backgroundColor: (props) => (props.variation === 'modifierCount' ? theme.palette.grey[100] : 'unset'),
|
|
586
|
+
alignSelf: (props) => (props.variation === 'modifierCount' ? 'stretch' : 'unset'),
|
|
587
|
+
height: (props) => (props.variation === 'modifierCount' ? 'auto' : 'unset'),
|
|
588
|
+
minWidth: (props) => (props.variation === 'modifierCount' ? theme.spacing(5) : theme.spacing(2.75)),
|
|
589
|
+
borderRadius: (props) => (props.variation === 'modifierCount' ? theme.spacing(1) : 'unset'),
|
|
590
|
+
margin: (props) => (props.variation === 'modifierCount' ? theme.spacing(0.5, 0) : 0),
|
|
591
|
+
},
|
|
592
|
+
}));
|
|
593
|
+
const useStartAdornmentStyles = core.makeStyles((theme) => ({
|
|
667
594
|
root: {
|
|
668
595
|
color: theme.palette.text.primary,
|
|
669
|
-
zIndex:
|
|
596
|
+
zIndex: (props) => (props.value === 0 && props.variation === 'modifierCount' ? -1 : 1),
|
|
670
597
|
},
|
|
671
|
-
})
|
|
672
|
-
|
|
598
|
+
}));
|
|
599
|
+
const useEndAdornmentStyles = core.makeStyles((theme) => ({
|
|
673
600
|
root: {
|
|
674
601
|
color: theme.palette.text.primary,
|
|
675
602
|
},
|
|
676
|
-
})
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
var onIncrement = function (event) {
|
|
603
|
+
}));
|
|
604
|
+
|
|
605
|
+
const QuantityPicker = ({ value, onChange, disabled, preventManualChange, disableIncrement, variation, name, min = 1, max = 99, }) => {
|
|
606
|
+
const fieldClasses = useQuantityPickerStyles();
|
|
607
|
+
const inputClasses = useQuantityInputStyles({ variation, value });
|
|
608
|
+
const startAdornmentClasses = useStartAdornmentStyles({ variation, value });
|
|
609
|
+
const endAdornmentClasses = useEndAdornmentStyles({ variation, value });
|
|
610
|
+
const inputRef = React.useRef(null);
|
|
611
|
+
const [shouldSelect, setShouldSelect] = React.useState(false);
|
|
612
|
+
const onIncrement = (event) => {
|
|
687
613
|
onChange(event, { quantity: value + 1, reason: 'increment' });
|
|
688
614
|
};
|
|
689
|
-
|
|
615
|
+
const onDecrement = (event) => {
|
|
690
616
|
onChange(event, { quantity: value - 1, reason: 'decrement' });
|
|
691
617
|
};
|
|
692
|
-
|
|
618
|
+
const handleChange = (event) => {
|
|
693
619
|
if (preventManualChange) {
|
|
694
620
|
event.preventDefault();
|
|
695
621
|
return;
|
|
696
622
|
}
|
|
697
|
-
|
|
623
|
+
let newValue = parseInt(event.target.value, 10);
|
|
698
624
|
if (isNaN(newValue)) {
|
|
699
625
|
newValue = min;
|
|
700
626
|
setShouldSelect(true);
|
|
@@ -709,7 +635,7 @@ var QuantityPicker = function (_a) {
|
|
|
709
635
|
newValue = max;
|
|
710
636
|
onChange(event, { quantity: newValue, reason: 'change' });
|
|
711
637
|
};
|
|
712
|
-
React.useEffect(
|
|
638
|
+
React.useEffect(() => {
|
|
713
639
|
if (shouldSelect && inputRef.current) {
|
|
714
640
|
inputRef.current.focus();
|
|
715
641
|
inputRef.current.select();
|
|
@@ -719,40 +645,39 @@ var QuantityPicker = function (_a) {
|
|
|
719
645
|
return (React.createElement(core.TextField, { classes: fieldClasses, type: "number", variant: variation === 'itemCount' ? 'filled' : 'standard', value: value, disabled: disabled, onChange: handleChange, inputRef: inputRef, InputProps: {
|
|
720
646
|
classes: inputClasses,
|
|
721
647
|
disableUnderline: true,
|
|
722
|
-
endAdornment: (React.createElement(commonUi.IconButton, { "aria-label":
|
|
648
|
+
endAdornment: (React.createElement(commonUi.IconButton, { "aria-label": `increase quantity ${name}`, className: endAdornmentClasses.root, color: "default", onClick: onIncrement, disabled: disabled || value >= max || disableIncrement },
|
|
723
649
|
React.createElement(commonUi.Icon, { icon: webIcons.PlusCircle }))),
|
|
724
|
-
startAdornment: (React.createElement(commonUi.IconButton, { "aria-label":
|
|
650
|
+
startAdornment: (React.createElement(commonUi.IconButton, { "aria-label": `decrease quantity ${name}`, className: startAdornmentClasses.root, color: "default", onClick: onDecrement, disabled: disabled || value <= min },
|
|
725
651
|
React.createElement(commonUi.Icon, { icon: webIcons.MinusCircle }))),
|
|
726
652
|
}, inputProps: {
|
|
727
|
-
min
|
|
728
|
-
max
|
|
653
|
+
min,
|
|
654
|
+
max,
|
|
729
655
|
} }));
|
|
730
656
|
};
|
|
731
657
|
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
var classes = useLabelStyles();
|
|
658
|
+
const Label = (props) => {
|
|
659
|
+
const { name, price, disabled = false } = props;
|
|
660
|
+
const classes = useLabelStyles();
|
|
736
661
|
return (React.createElement(core.Box, { display: "flex", flexDirection: "column", className: classes.label },
|
|
737
662
|
React.createElement(core.Box, { display: "flex", alignItems: "center", gridGap: 8 },
|
|
738
|
-
React.createElement(core.Typography, { className: classNames(
|
|
739
|
-
price && (React.createElement(core.Typography, { className: classNames(
|
|
663
|
+
React.createElement(core.Typography, { className: classNames({ [classes.disabled]: disabled }) }, name)),
|
|
664
|
+
price && (React.createElement(core.Typography, { className: classNames({ [classes.price]: !disabled }, { [classes.disabled]: disabled }) },
|
|
740
665
|
"+ ",
|
|
741
666
|
price))));
|
|
742
667
|
};
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
668
|
+
const Options = (props) => {
|
|
669
|
+
const { handleOptionsClick } = props;
|
|
670
|
+
const classes = useOptionsStyles();
|
|
746
671
|
return (React.createElement(core.Box, null,
|
|
747
672
|
React.createElement(Button, { variation: "none", className: classes.options, onClick: handleOptionsClick },
|
|
748
673
|
React.createElement(core.Typography, { variant: "caption" }, "OPTIONS"),
|
|
749
674
|
React.createElement(commonUi.Icon, { icon: webIcons.ChevronRight }))));
|
|
750
675
|
};
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
676
|
+
const SingleSelectModifierControl = (props) => {
|
|
677
|
+
const { modifiers, name, isOutOfStock, onChange, value, handleOptionsClick, aggregatePrice, isRequired } = props;
|
|
678
|
+
const radioClasses = useRadioModifierFormStyles();
|
|
679
|
+
const makeHandleChange = (modifier) => (e) => {
|
|
680
|
+
const isModifierInValue = Boolean(value.find((v) => v.modifierId === modifier.id));
|
|
756
681
|
if (!isModifierInValue && modifier.hasModifiers) {
|
|
757
682
|
handleOptionsClick(modifier.id);
|
|
758
683
|
}
|
|
@@ -764,27 +689,23 @@ var SingleSelectModifierControl = function (props) {
|
|
|
764
689
|
price: modifier.price || 0,
|
|
765
690
|
quantity: 1,
|
|
766
691
|
});
|
|
767
|
-
};
|
|
692
|
+
};
|
|
768
693
|
return (React.createElement(core.FormControl, { fullWidth: true },
|
|
769
|
-
React.createElement(core.RadioGroup, { "aria-label": name }, modifiers.map(
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
modifier.outOfStock && (React.createElement(core.Box, { minWidth: "90px", marginLeft: 2 },
|
|
779
|
-
React.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" })))), labelPlacement: "start" }),
|
|
780
|
-
modifier.hasModifiers && !modifier.outOfStock && (React.createElement(Options, { handleOptionsClick: function () { return handleOptionsClick(modifier.id); } }))));
|
|
781
|
-
}))));
|
|
694
|
+
React.createElement(core.RadioGroup, { "aria-label": name }, modifiers.map((modifier) => (React.createElement(core.Box, { key: modifier.id },
|
|
695
|
+
React.createElement(core.FormControlLabel, { key: modifier.id, value: modifier.id, className: radioClasses.root, control: React.createElement(core.Radio, { checked: value[0]?.modifierId === modifier.id, className: classNames({
|
|
696
|
+
[radioClasses.hideRadio]: modifier.outOfStock,
|
|
697
|
+
[radioClasses.radio]: !modifier.outOfStock,
|
|
698
|
+
}), disabled: isOutOfStock || modifier.outOfStock, onChange: makeHandleChange(modifier), required: isRequired }), label: React.createElement(core.Box, { className: radioClasses.label },
|
|
699
|
+
React.createElement(Label, { name: modifier.name, price: aggregatePrice[modifier.id] || modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock }),
|
|
700
|
+
modifier.outOfStock && (React.createElement(core.Box, { minWidth: "90px", marginLeft: 2 },
|
|
701
|
+
React.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" })))), labelPlacement: "start" }),
|
|
702
|
+
modifier.hasModifiers && !modifier.outOfStock && (React.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id) }))))))));
|
|
782
703
|
};
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
704
|
+
const MultipleSelectControl = (props) => {
|
|
705
|
+
const { modifiers, value, isOutOfStock, onChange, disableNewSelections, handleOptionsClick, aggregatePrice } = props;
|
|
706
|
+
const classes = useCheckboxModifierFormStyles();
|
|
707
|
+
const makeHandleChange = (modifier) => () => {
|
|
708
|
+
const isModifierInValue = Boolean(value.find((v) => v.modifierId === modifier.id));
|
|
788
709
|
if (!isModifierInValue && modifier.hasModifiers) {
|
|
789
710
|
handleOptionsClick(modifier.id);
|
|
790
711
|
}
|
|
@@ -796,21 +717,20 @@ var MultipleSelectControl = function (props) {
|
|
|
796
717
|
price: modifier.price || 0,
|
|
797
718
|
quantity: isModifierInValue ? 0 : 1,
|
|
798
719
|
});
|
|
799
|
-
};
|
|
720
|
+
};
|
|
800
721
|
return (React.createElement(core.FormControl, { fullWidth: true },
|
|
801
|
-
React.createElement(core.FormGroup, null, modifiers.map(
|
|
802
|
-
var _a, _b;
|
|
722
|
+
React.createElement(core.FormGroup, null, modifiers.map((modifier) => {
|
|
803
723
|
return (React.createElement(core.Box, { key: modifier.id },
|
|
804
|
-
React.createElement(core.FormControlLabel, { key: modifier.id, value: modifier.id, className: classes.root, checked: value.some(
|
|
724
|
+
React.createElement(core.FormControlLabel, { key: modifier.id, value: modifier.id, className: classes.root, checked: value.some((v) => v.modifierId === modifier.id), onChange: makeHandleChange(modifier), control: React.createElement(core.Checkbox, { className: classNames({ [classes.hideCheckbox]: modifier.outOfStock }, { [classes.checkbox]: !modifier.outOfStock }), disabled: isOutOfStock || modifier.outOfStock || (!modifier.quantity && disableNewSelections) }), label: React.createElement(core.Box, { className: classes.label },
|
|
805
725
|
React.createElement(Label, { name: modifier.name, price: aggregatePrice[modifier.id] || modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock }),
|
|
806
726
|
modifier.outOfStock && (React.createElement(core.Box, { minWidth: "90px", marginLeft: 2 },
|
|
807
727
|
React.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" })))), labelPlacement: "start" }),
|
|
808
|
-
modifier.hasModifiers && !modifier.outOfStock && (React.createElement(Options, { handleOptionsClick:
|
|
728
|
+
modifier.hasModifiers && !modifier.outOfStock && (React.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id) }))));
|
|
809
729
|
}))));
|
|
810
730
|
};
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
731
|
+
const MultipleQuantitySelectControl = (props) => {
|
|
732
|
+
const { modifiers, isOutOfStock, onChange, disableNewSelections, handleOptionsClick, selectionQuantity } = props;
|
|
733
|
+
const makeHandleChange = (modifier) => (_e, customEvent) => {
|
|
814
734
|
onChange({
|
|
815
735
|
isRadio: false,
|
|
816
736
|
modifierId: modifier.id,
|
|
@@ -819,16 +739,16 @@ var MultipleQuantitySelectControl = function (props) {
|
|
|
819
739
|
price: modifier.price || 0,
|
|
820
740
|
quantity: customEvent.quantity,
|
|
821
741
|
});
|
|
822
|
-
};
|
|
742
|
+
};
|
|
823
743
|
return (React.createElement(core.FormControl, { fullWidth: true },
|
|
824
|
-
React.createElement(core.FormGroup, null, modifiers.map(
|
|
744
|
+
React.createElement(core.FormGroup, null, modifiers.map((modifier) => (React.createElement(core.Box, { key: modifier.id, style: { justifyContent: 'space-between', flexDirection: 'column' }, display: "flex" },
|
|
825
745
|
React.createElement(core.Box, { display: "flex", alignItems: "center", justifyContent: "space-between", width: "100%" },
|
|
826
746
|
React.createElement(Label, { name: modifier.name, price: modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock }),
|
|
827
747
|
modifier.outOfStock && (React.createElement(core.Box, { minWidth: "90px", marginLeft: 2 },
|
|
828
748
|
React.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" }))),
|
|
829
749
|
!modifier.outOfStock && (React.createElement(QuantityPicker, { variation: "modifierCount", value: modifier.quantity, disableIncrement: disableNewSelections, preventManualChange: true, onChange: makeHandleChange(modifier), disabled: isOutOfStock || modifier.outOfStock, name: modifier.name }))),
|
|
830
750
|
React.createElement(core.Box, { display: "flex", alignItems: "flex-start", gridGap: 4 },
|
|
831
|
-
modifier.hasModifiers && !modifier.outOfStock && (React.createElement(Options, { handleOptionsClick:
|
|
751
|
+
modifier.hasModifiers && !modifier.outOfStock && (React.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id) })),
|
|
832
752
|
selectionQuantity[modifier.id] &&
|
|
833
753
|
selectionQuantity[modifier.id].requiredSelectionCount > 0 &&
|
|
834
754
|
selectionQuantity[modifier.id].requiredSelectionCount !==
|
|
@@ -836,25 +756,25 @@ var MultipleQuantitySelectControl = function (props) {
|
|
|
836
756
|
selectionQuantity[modifier.id].currentSelectionCount,
|
|
837
757
|
"/",
|
|
838
758
|
selectionQuantity[modifier.id].requiredSelectionCount,
|
|
839
|
-
" selected")))))
|
|
759
|
+
" selected")))))))));
|
|
840
760
|
};
|
|
841
|
-
|
|
761
|
+
const ModifierControls = (props) => {
|
|
842
762
|
switch (props.type) {
|
|
843
763
|
case 'singleSelect':
|
|
844
|
-
return React.createElement(SingleSelectModifierControl,
|
|
764
|
+
return React.createElement(SingleSelectModifierControl, { ...props });
|
|
845
765
|
case 'multipleSelect':
|
|
846
|
-
return React.createElement(MultipleSelectControl,
|
|
766
|
+
return React.createElement(MultipleSelectControl, { ...props });
|
|
847
767
|
case 'multipleQuantitySelect':
|
|
848
|
-
return React.createElement(MultipleQuantitySelectControl,
|
|
768
|
+
return React.createElement(MultipleQuantitySelectControl, { ...props });
|
|
849
769
|
default:
|
|
850
770
|
return null;
|
|
851
771
|
}
|
|
852
772
|
};
|
|
853
773
|
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
774
|
+
const getStatusTagProps = (props) => {
|
|
775
|
+
const { messages, error, isRequired, isOutOfStock } = props;
|
|
776
|
+
const { optionalText, outOfStockText, requiredText } = messages;
|
|
777
|
+
let color = 'default';
|
|
858
778
|
switch (true) {
|
|
859
779
|
case error:
|
|
860
780
|
color = 'error';
|
|
@@ -863,7 +783,7 @@ var getStatusTagProps = function (props) {
|
|
|
863
783
|
color = 'warning';
|
|
864
784
|
break;
|
|
865
785
|
}
|
|
866
|
-
|
|
786
|
+
let label = optionalText;
|
|
867
787
|
switch (true) {
|
|
868
788
|
case isOutOfStock:
|
|
869
789
|
label = outOfStockText;
|
|
@@ -872,40 +792,33 @@ var getStatusTagProps = function (props) {
|
|
|
872
792
|
label = requiredText;
|
|
873
793
|
break;
|
|
874
794
|
}
|
|
875
|
-
|
|
876
|
-
return { color
|
|
795
|
+
const variant = isRequired || isOutOfStock ? 'outlined' : 'filled';
|
|
796
|
+
return { color, label, variant };
|
|
877
797
|
};
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
var classes = useDishModifierCardStyles();
|
|
798
|
+
const DishModifierCard = (props) => {
|
|
799
|
+
const { aggregatePrice, name, disableNewSelections, modifiers, value, messages, onChange, type, error, isOutOfStock, isRequired, handleOptionsClick, selectionQuantity, } = props;
|
|
800
|
+
const classes = useDishModifierCardStyles();
|
|
882
801
|
return (React.createElement(commonUi.Box, { className: classes.root },
|
|
883
802
|
React.createElement(commonUi.Box, { display: "flex", justifyContent: "space-between", width: "100%", alignItems: "center", height: "fit-content", marginBottom: 2 },
|
|
884
|
-
React.createElement(StatusTag,
|
|
885
|
-
!isOutOfStock && (React.createElement(commonUi.Typography, { variant: "subtitle1", className: classNames(
|
|
803
|
+
React.createElement(StatusTag, { ...getStatusTagProps(props) }),
|
|
804
|
+
!isOutOfStock && (React.createElement(commonUi.Typography, { variant: "subtitle1", className: classNames({ [classes.error]: error, [classes.helperText]: !error }) }, messages.helperText))),
|
|
886
805
|
React.createElement(commonUi.Typography, { className: classes.name }, name),
|
|
887
806
|
React.createElement(commonUi.Box, null,
|
|
888
807
|
React.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 }))));
|
|
889
808
|
};
|
|
890
809
|
DishModifierCard.displayName = 'DishModifierCard';
|
|
891
810
|
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
811
|
+
const useLocationCardStyles = core.makeStyles((theme) => {
|
|
812
|
+
const { palette: { info, grey, secondary, background }, spacing, } = theme;
|
|
813
|
+
const selectedBackgroundColor = core.lighten(info.light, 0.9);
|
|
814
|
+
const backgroundColor = background.default;
|
|
896
815
|
return {
|
|
897
816
|
root: {
|
|
898
|
-
border:
|
|
899
|
-
var selected = _a.selected;
|
|
900
|
-
return selected ? "1px solid " + info.light : '1px solid var(--surfaces-card-stroke, #E0E0E0)';
|
|
901
|
-
},
|
|
817
|
+
border: ({ selected }) => selected ? `1px solid ${info.light}` : '1px solid var(--surfaces-card-stroke, #E0E0E0)',
|
|
902
818
|
display: 'flex',
|
|
903
819
|
borderRadius: '10px',
|
|
904
820
|
color: grey[900],
|
|
905
|
-
backgroundColor:
|
|
906
|
-
var selected = _a.selected, outOfRange = _a.outOfRange;
|
|
907
|
-
return selected ? selectedBackgroundColor : outOfRange ? grey[200] : backgroundColor;
|
|
908
|
-
},
|
|
821
|
+
backgroundColor: ({ selected, outOfRange }) => selected ? selectedBackgroundColor : outOfRange ? grey[200] : backgroundColor,
|
|
909
822
|
},
|
|
910
823
|
actionAreaFocusHighlight: {
|
|
911
824
|
'&:disabled': {
|
|
@@ -949,15 +862,15 @@ var useLocationCardStyles = core.makeStyles(function (theme) {
|
|
|
949
862
|
};
|
|
950
863
|
});
|
|
951
864
|
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
865
|
+
const LocationCard = (props) => {
|
|
866
|
+
const { name, address, distance, generalAvailability, pickupAvailability, deliveryAvailability, onClick, selected, value, outOfRange, outOfRangeMessage, CardActionAreaProps, ...muiProps } = props;
|
|
867
|
+
const classes = useLocationCardStyles(props);
|
|
868
|
+
const anyAvailability = generalAvailability || pickupAvailability || deliveryAvailability;
|
|
869
|
+
const handleClick = () => {
|
|
957
870
|
onClick(value);
|
|
958
871
|
};
|
|
959
|
-
return (React.createElement(core.Card,
|
|
960
|
-
React.createElement(core.CardActionArea,
|
|
872
|
+
return (React.createElement(core.Card, { className: classes.root, ...muiProps },
|
|
873
|
+
React.createElement(core.CardActionArea, { onClick: handleClick, role: "radio", "aria-checked": selected, disabled: outOfRange || Boolean(anyAvailability), classes: { focusHighlight: classes.actionAreaFocusHighlight }, ...CardActionAreaProps },
|
|
961
874
|
React.createElement(core.CardContent, { className: classes.content },
|
|
962
875
|
React.createElement(core.Box, { className: classes.locationInfo },
|
|
963
876
|
React.createElement(core.Box, { display: "flex", justifyContent: "space-between" },
|
|
@@ -975,55 +888,48 @@ var LocationCard = function (props) {
|
|
|
975
888
|
React.createElement(core.Typography, { variant: "body2", className: classes.greyText }, outOfRangeMessage)))))));
|
|
976
889
|
};
|
|
977
890
|
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
_a[theme.breakpoints.up('lg')] = {
|
|
983
|
-
alignSelf: 'start',
|
|
984
|
-
},
|
|
985
|
-
_a),
|
|
986
|
-
menuItem: {
|
|
987
|
-
alignItems: 'center',
|
|
988
|
-
display: 'flex',
|
|
989
|
-
gridGap: theme.spacing(1),
|
|
891
|
+
const useMenuDropdownStyles = core.makeStyles((theme) => ({
|
|
892
|
+
formControl: {
|
|
893
|
+
[theme.breakpoints.up('lg')]: {
|
|
894
|
+
alignSelf: 'start',
|
|
990
895
|
},
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
896
|
+
},
|
|
897
|
+
menuItem: {
|
|
898
|
+
alignItems: 'center',
|
|
899
|
+
display: 'flex',
|
|
900
|
+
gridGap: theme.spacing(1),
|
|
901
|
+
},
|
|
902
|
+
select: {
|
|
903
|
+
'& .MuiSelect-root': {
|
|
904
|
+
'&:focus': {
|
|
905
|
+
outline: '2px solid #0076CB',
|
|
906
|
+
borderRadius: 8,
|
|
907
|
+
},
|
|
908
|
+
color: '#212121',
|
|
909
|
+
padding: theme.spacing(1, 0.5, 1, 0.5),
|
|
910
|
+
zIndex: 10,
|
|
911
|
+
[theme.breakpoints.down('md')]: {
|
|
912
|
+
width: 0,
|
|
913
|
+
minWidth: 0,
|
|
914
|
+
padding: 0,
|
|
915
|
+
},
|
|
1010
916
|
},
|
|
1011
|
-
}
|
|
1012
|
-
|
|
917
|
+
},
|
|
918
|
+
unavailable: {
|
|
919
|
+
color: theme.palette.grey[700],
|
|
920
|
+
},
|
|
921
|
+
}));
|
|
1013
922
|
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
var breakpoints = _a.breakpoints;
|
|
1020
|
-
return breakpoints.down('md');
|
|
1021
|
-
});
|
|
923
|
+
const MenuDropdown = (props) => {
|
|
924
|
+
const { menuOptions, onSelect, selectedOptionId } = props;
|
|
925
|
+
const classes = useMenuDropdownStyles(props);
|
|
926
|
+
const [open, setOpen] = React.useState(false);
|
|
927
|
+
const isMobile = core.useMediaQuery((theme) => theme.breakpoints.down('md'));
|
|
1022
928
|
return (React.createElement(core.FormControl, { hiddenLabel: true, classes: { root: classes.formControl } },
|
|
1023
929
|
React.createElement("label", { id: "menu-dropdown-label", className: "sr-only" }, props.label),
|
|
1024
|
-
React.createElement(core.Select, { SelectDisplayProps: { 'aria-labelledby': 'menu-dropdown-label' }, value: selectedOptionId, onOpen:
|
|
1025
|
-
React.createElement(commonUi.Icon, { icon: webIcons.RestaurantMenu, size: isMobile ? 'extra-large' : 'large' })), IconComponent:
|
|
1026
|
-
React.createElement(commonUi.Icon, { color: "#0076CB", icon: open ? webIcons.ChevronUp : webIcons.ChevronDown, size: "large" })))
|
|
930
|
+
React.createElement(core.Select, { SelectDisplayProps: { 'aria-labelledby': 'menu-dropdown-label' }, value: selectedOptionId, onOpen: () => setOpen(true), onClose: () => setOpen(false), disableUnderline: true, onChange: (event) => onSelect(event.target.value), fullWidth: true, open: open, startAdornment: React.createElement(core.InputAdornment, { position: "start", onClick: () => setOpen(true) },
|
|
931
|
+
React.createElement(commonUi.Icon, { icon: webIcons.RestaurantMenu, size: isMobile ? 'extra-large' : 'large' })), IconComponent: () => (React.createElement(core.InputAdornment, { position: "end", onClick: () => setOpen(true) },
|
|
932
|
+
React.createElement(commonUi.Icon, { color: "#0076CB", icon: open ? webIcons.ChevronUp : webIcons.ChevronDown, size: "large" }))), MenuProps: {
|
|
1027
933
|
disablePortal: true,
|
|
1028
934
|
anchorOrigin: {
|
|
1029
935
|
vertical: 'bottom',
|
|
@@ -1034,9 +940,9 @@ var MenuDropdown = function (props) {
|
|
|
1034
940
|
horizontal: 'left',
|
|
1035
941
|
},
|
|
1036
942
|
getContentAnchorEl: null,
|
|
1037
|
-
}, className: classes.select, renderValue:
|
|
943
|
+
}, className: classes.select, renderValue: (selected) => menuOptions.find((menuOption) => menuOption.id === selected)?.name }, menuOptions.map((option, index) => (React.createElement(core.MenuItem, { key: index, value: option.id, className: classNames(classes.menuItem, option.isUnavailable ? classes.unavailable : '') },
|
|
1038
944
|
option.name,
|
|
1039
|
-
option.isUnavailable && React.createElement(commonUi.Icon, { icon: webIcons.Clock, size: "large" })))
|
|
945
|
+
option.isUnavailable && React.createElement(commonUi.Icon, { icon: webIcons.Clock, size: "large" })))))));
|
|
1040
946
|
};
|
|
1041
947
|
|
|
1042
948
|
var _path;
|
|
@@ -1056,36 +962,36 @@ function SvgLeafIcon(props) {
|
|
|
1056
962
|
})));
|
|
1057
963
|
}
|
|
1058
964
|
|
|
1059
|
-
|
|
965
|
+
const useMenuFilterStyles = core.makeStyles((theme) => ({
|
|
1060
966
|
triggerLabel: {
|
|
1061
967
|
color: theme.palette.info.main,
|
|
1062
968
|
whiteSpace: 'nowrap',
|
|
1063
969
|
},
|
|
1064
|
-
})
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
970
|
+
}));
|
|
971
|
+
|
|
972
|
+
const MenuFilter = (props) => {
|
|
973
|
+
const { options, onChange, onClear, value, triggerLabel = 'Add Filter', noOptionsLabel = 'Reset Filters' } = props;
|
|
974
|
+
const triggerId = 'menu-filter-trigger';
|
|
975
|
+
const popoverId = 'menu-filter-popover';
|
|
976
|
+
const classes = useMenuFilterStyles();
|
|
977
|
+
const [anchorEl, setAnchorEl] = React.useState(null);
|
|
978
|
+
const open = Boolean(anchorEl);
|
|
979
|
+
const optionIds = options.map((opt) => opt.id);
|
|
980
|
+
const valueIds = value.map((val) => val.id);
|
|
981
|
+
const availableIds = optionIds.filter((optionId) => !valueIds.includes(optionId));
|
|
982
|
+
const availableFilters = options.filter((opt) => availableIds.includes(opt.id));
|
|
983
|
+
const allFiltersSelected = availableFilters.length === 0;
|
|
984
|
+
const handleChange = (value, event) => {
|
|
1079
985
|
onChange(value, event);
|
|
1080
986
|
setAnchorEl(null);
|
|
1081
987
|
};
|
|
1082
|
-
|
|
988
|
+
const handleTriggerClick = (event) => {
|
|
1083
989
|
setAnchorEl(event.currentTarget);
|
|
1084
990
|
};
|
|
1085
|
-
|
|
991
|
+
const handleClose = () => {
|
|
1086
992
|
setAnchorEl(null);
|
|
1087
993
|
};
|
|
1088
|
-
|
|
994
|
+
const handleClear = () => {
|
|
1089
995
|
onClear();
|
|
1090
996
|
setAnchorEl(null);
|
|
1091
997
|
};
|
|
@@ -1094,46 +1000,14 @@ var MenuFilter = function (props) {
|
|
|
1094
1000
|
}
|
|
1095
1001
|
return (React.createElement(React.Fragment, null,
|
|
1096
1002
|
React.createElement(core.Button, { id: triggerId, "aria-controls": popoverId, "aria-haspopup": "true", "aria-expanded": open, onClick: handleTriggerClick, size: "small", startIcon: React.createElement(commonUi.Icon, { icon: SvgLeafIcon }), classes: { label: classes.triggerLabel } }, triggerLabel),
|
|
1097
|
-
React.createElement(core.Menu, { id: popoverId, anchorEl: anchorEl, open: open, onClose: handleClose }, availableFilters.map(
|
|
1098
|
-
return (React.createElement(core.MenuItem, { key: index, value: option.id, onClick:
|
|
1003
|
+
React.createElement(core.Menu, { id: popoverId, anchorEl: anchorEl, open: open, onClose: handleClose }, availableFilters.map((option, index) => {
|
|
1004
|
+
return (React.createElement(core.MenuItem, { key: index, value: option.id, onClick: (event) => handleChange(option, event) },
|
|
1099
1005
|
React.createElement(ItemTag, { alt: option.abbr, color: option.color }, option.abbr),
|
|
1100
1006
|
React.createElement(core.Box, { ml: 1 }, option.name)));
|
|
1101
1007
|
}))));
|
|
1102
1008
|
};
|
|
1103
1009
|
|
|
1104
|
-
|
|
1105
|
-
var palette = _a.palette, spacing = _a.spacing;
|
|
1106
|
-
return ({
|
|
1107
|
-
root: {
|
|
1108
|
-
'& > .MuiTab-wrapper': {
|
|
1109
|
-
flexDirection: 'row-reverse',
|
|
1110
|
-
gridGap: spacing(1),
|
|
1111
|
-
textAlign: 'center',
|
|
1112
|
-
'& > svg': {
|
|
1113
|
-
marginBottom: '0 !important',
|
|
1114
|
-
},
|
|
1115
|
-
},
|
|
1116
|
-
},
|
|
1117
|
-
isUnavailable: {
|
|
1118
|
-
color: palette.grey[700],
|
|
1119
|
-
},
|
|
1120
|
-
});
|
|
1121
|
-
});
|
|
1122
|
-
|
|
1123
|
-
var MenuTab = function (props) {
|
|
1124
|
-
var isUnavailable = props.isUnavailable, value = props.value;
|
|
1125
|
-
var classes = useMenuTabStyles(props);
|
|
1126
|
-
return (React.createElement(core.Tab, tslib.__assign({ "data-tab-for-section-id": value, classes: {
|
|
1127
|
-
root: classes.root,
|
|
1128
|
-
}, disabled: isUnavailable, icon: isUnavailable ? React.createElement(commonUi.Icon, { icon: webIcons.Clock, size: "large" }) : undefined }, props)));
|
|
1129
|
-
};
|
|
1130
|
-
|
|
1131
|
-
var MenuTabGroup = function (props) {
|
|
1132
|
-
var children = props.children, muiProps = tslib.__rest(props, ["children"]);
|
|
1133
|
-
return (React.createElement(core.Tabs, tslib.__assign({ scrollButtons: "on", variant: "scrollable" }, muiProps), children));
|
|
1134
|
-
};
|
|
1135
|
-
|
|
1136
|
-
var useSelectableChipStyles = core.makeStyles(function (theme) { return ({
|
|
1010
|
+
const useSelectableChipStyles = core.makeStyles((theme) => ({
|
|
1137
1011
|
root: {
|
|
1138
1012
|
border: '2px solid',
|
|
1139
1013
|
borderColor: theme.palette.grey[100],
|
|
@@ -1161,124 +1035,113 @@ var useSelectableChipStyles = core.makeStyles(function (theme) { return ({
|
|
|
1161
1035
|
},
|
|
1162
1036
|
},
|
|
1163
1037
|
},
|
|
1164
|
-
})
|
|
1038
|
+
}));
|
|
1165
1039
|
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
return (React.createElement(core.Tab,
|
|
1040
|
+
const SelectableChip = (props) => {
|
|
1041
|
+
const classes = useSelectableChipStyles(props);
|
|
1042
|
+
return (React.createElement(core.Tab, { "data-tab-for-section-id": props.value, classes: {
|
|
1169
1043
|
root: classes.root,
|
|
1170
1044
|
selected: classes.selected,
|
|
1171
|
-
}
|
|
1045
|
+
}, ...props }));
|
|
1172
1046
|
};
|
|
1173
1047
|
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
_b.gridGap = spacing(1.5),
|
|
1187
|
-
_b),
|
|
1188
|
-
});
|
|
1189
|
-
});
|
|
1048
|
+
const useSelectableChipGroupStyles = core.makeStyles(({ breakpoints, spacing }) => ({
|
|
1049
|
+
flexContainer: {
|
|
1050
|
+
[breakpoints.down('md')]: {
|
|
1051
|
+
padding: spacing(0, 2),
|
|
1052
|
+
},
|
|
1053
|
+
[breakpoints.up('lg')]: {
|
|
1054
|
+
alignItems: 'flex-start',
|
|
1055
|
+
flexDirection: 'column',
|
|
1056
|
+
},
|
|
1057
|
+
gridGap: spacing(1.5),
|
|
1058
|
+
},
|
|
1059
|
+
}));
|
|
1190
1060
|
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
return (React.createElement(core.Tabs,
|
|
1061
|
+
const SelectableChipGroup = (props) => {
|
|
1062
|
+
const { children, ...muiProps } = props;
|
|
1063
|
+
const classes = useSelectableChipGroupStyles(props);
|
|
1064
|
+
return (React.createElement(core.Tabs, { TabIndicatorProps: {
|
|
1195
1065
|
hidden: true,
|
|
1196
|
-
}, variant: "scrollable", scrollButtons: "off", classes: classes
|
|
1066
|
+
}, variant: "scrollable", scrollButtons: "off", classes: classes, ...muiProps }, children));
|
|
1197
1067
|
};
|
|
1198
1068
|
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
}
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
var filters = props.filters, onChipClick = props.onChipClick;
|
|
1217
|
-
var classes = useStyles$4();
|
|
1218
|
-
return (React.createElement(React.Fragment, null, filters.map(function (filter, index) { return (React.createElement(core.Chip, { key: filter.name + "-" + index, classes: classes, onClick: function (event) { return onChipClick(filter, event); }, label: React.createElement(React.Fragment, null,
|
|
1069
|
+
const useStyles$4 = core.makeStyles(({ spacing }) => ({
|
|
1070
|
+
root: {
|
|
1071
|
+
padding: spacing(0.5, 0),
|
|
1072
|
+
height: 'unset',
|
|
1073
|
+
borderRadius: 4,
|
|
1074
|
+
},
|
|
1075
|
+
label: {
|
|
1076
|
+
paddingLeft: 8,
|
|
1077
|
+
display: 'flex',
|
|
1078
|
+
gridGap: 8,
|
|
1079
|
+
alignItems: 'center',
|
|
1080
|
+
},
|
|
1081
|
+
}));
|
|
1082
|
+
const SelectedMenuFiltersList = (props) => {
|
|
1083
|
+
const { filters, onChipClick } = props;
|
|
1084
|
+
const classes = useStyles$4();
|
|
1085
|
+
return (React.createElement(React.Fragment, null, filters.map((filter, index) => (React.createElement(core.Chip, { key: `${filter.name}-${index}`, classes: classes, onClick: (event) => onChipClick(filter, event), label: React.createElement(React.Fragment, null,
|
|
1219
1086
|
React.createElement(ItemTag, { alt: filter.abbr, color: filter.color }, filter.abbr),
|
|
1220
1087
|
React.createElement(core.Typography, { variant: "caption" }, filter.name),
|
|
1221
|
-
React.createElement(commonUi.Icon, { icon: webIcons.XCircle, size: "large" })) }))
|
|
1088
|
+
React.createElement(commonUi.Icon, { icon: webIcons.XCircle, size: "large" })) })))));
|
|
1222
1089
|
};
|
|
1223
1090
|
|
|
1224
|
-
|
|
1225
|
-
var children = props.children, restProps = tslib.__rest(props, ["children"]);
|
|
1226
|
-
return (React.createElement(core.Box, tslib.__assign({ display: "flex", flexDirection: "column", gridGap: 40, marginBottom: 4 }, restProps, { ref: ref }, { "data-component-type": "menu-section-group" }), children));
|
|
1227
|
-
});
|
|
1228
|
-
MenuSectionGroup.displayName = 'MenuSectionGroup';
|
|
1229
|
-
|
|
1230
|
-
var useStyles$3 = core.makeStyles(function () { return ({
|
|
1091
|
+
const useStyles$3 = core.makeStyles(() => ({
|
|
1231
1092
|
title: {
|
|
1232
1093
|
fontWeight: 400,
|
|
1233
1094
|
fontSize: 20,
|
|
1234
1095
|
lineHeight: '30px',
|
|
1235
1096
|
},
|
|
1236
|
-
})
|
|
1097
|
+
}));
|
|
1237
1098
|
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
return (React.createElement(core.Box,
|
|
1099
|
+
const MenuSection = React.forwardRef((props, ref) => {
|
|
1100
|
+
const { name, children, loading, ...restProps } = props;
|
|
1101
|
+
const classes = useStyles$3();
|
|
1102
|
+
return (React.createElement(core.Box, { ...restProps, ...{ ref, component: 'section' }, "data-component-type": "menu-section", style: { scrollMarginTop: '70px' } },
|
|
1242
1103
|
React.createElement(core.Box, { marginTop: 1, marginBottom: 4 },
|
|
1243
1104
|
React.createElement(core.Typography, { component: "h1", className: classes.title }, loading ? React.createElement(lab.Skeleton, null) : name)),
|
|
1244
1105
|
children));
|
|
1245
1106
|
});
|
|
1246
1107
|
MenuSection.displayName = 'MenuSection';
|
|
1247
1108
|
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
return ({
|
|
1252
|
-
main: (_b = {},
|
|
1253
|
-
_b[breakpoints.down('md')] = {
|
|
1254
|
-
gridTemplateColumns: '1fr',
|
|
1255
|
-
},
|
|
1256
|
-
_b[breakpoints.up('lg')] = {
|
|
1257
|
-
gridTemplateColumns: 'repeat(2, minmax(280px, 1fr))',
|
|
1258
|
-
},
|
|
1259
|
-
_b.display = 'grid',
|
|
1260
|
-
_b.gridGap = 32,
|
|
1261
|
-
_b),
|
|
1262
|
-
});
|
|
1109
|
+
const MenuSectionGroup = React.forwardRef((props, ref) => {
|
|
1110
|
+
const { children, ...restProps } = props;
|
|
1111
|
+
return (React.createElement(core.Box, { display: "flex", flexDirection: "column", gridGap: 40, marginBottom: 4, ...restProps, ...{ ref }, "data-component-type": "menu-section-group" }, children));
|
|
1263
1112
|
});
|
|
1113
|
+
MenuSectionGroup.displayName = 'MenuSectionGroup';
|
|
1264
1114
|
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1115
|
+
const useStyles$2 = core.makeStyles(({ breakpoints }) => ({
|
|
1116
|
+
main: {
|
|
1117
|
+
[breakpoints.down('md')]: {
|
|
1118
|
+
gridTemplateColumns: '1fr',
|
|
1119
|
+
},
|
|
1120
|
+
[breakpoints.up('lg')]: {
|
|
1121
|
+
gridTemplateColumns: 'repeat(2, minmax(280px, 1fr))',
|
|
1122
|
+
},
|
|
1123
|
+
display: 'grid',
|
|
1124
|
+
gridGap: 32,
|
|
1125
|
+
},
|
|
1126
|
+
}));
|
|
1127
|
+
|
|
1128
|
+
const MenuItemGroup = React.forwardRef((props, ref) => {
|
|
1129
|
+
const classes = useStyles$2();
|
|
1130
|
+
const { children, className, ...restProps } = props;
|
|
1131
|
+
return (React.createElement(core.Box, { className: classNames(classes.main, className), ...{ ref }, "data-component-type": "menu-item-group", ...restProps }, props.children));
|
|
1269
1132
|
});
|
|
1270
1133
|
MenuItemGroup.displayName = 'MenuItemGroup';
|
|
1271
1134
|
|
|
1272
|
-
|
|
1135
|
+
const PageSection = (props) => (React.createElement(core.Box, { p: 4, borderBottom: "1px solid #E0E0E0" }, props.children));
|
|
1273
1136
|
|
|
1274
|
-
|
|
1137
|
+
const useStyles$1 = core.makeStyles(() => ({
|
|
1275
1138
|
closeButton: {
|
|
1276
1139
|
padding: 0,
|
|
1277
1140
|
},
|
|
1278
|
-
})
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1141
|
+
}));
|
|
1142
|
+
const DialogTitle = (props) => {
|
|
1143
|
+
const { Icon, title, titleId, onClose } = props;
|
|
1144
|
+
const classes = useStyles$1();
|
|
1282
1145
|
return (React.createElement(core.DialogTitle, null,
|
|
1283
1146
|
React.createElement(core.Box, { display: "flex", alignItems: "center", gridGap: 16 },
|
|
1284
1147
|
Icon && Icon,
|
|
@@ -1287,56 +1150,47 @@ var DialogTitle = function (props) {
|
|
|
1287
1150
|
React.createElement(commonUi.Icon, { icon: webIcons.X })))));
|
|
1288
1151
|
};
|
|
1289
1152
|
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
return (React.createElement(core.Box,
|
|
1153
|
+
const DialogSection = (props) => {
|
|
1154
|
+
const { edgeToEdge, borderBottom, children, ...restProps } = props;
|
|
1155
|
+
return (React.createElement(core.Box, { paddingTop: 4, paddingBottom: borderBottom ? 4 : 0, paddingX: edgeToEdge ? 0 : 2, borderBottom: borderBottom ? '1px solid #E0E0E0' : undefined, ...restProps }, children));
|
|
1293
1156
|
};
|
|
1294
1157
|
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
'& $thumb': {
|
|
1300
|
-
backgroundColor: palette.success.main,
|
|
1301
|
-
},
|
|
1302
|
-
'&& + $track': {
|
|
1303
|
-
backgroundColor: palette.success.main,
|
|
1304
|
-
opacity: 0.5,
|
|
1305
|
-
},
|
|
1158
|
+
const Switch = core.withStyles(({ palette }) => ({
|
|
1159
|
+
checked: {
|
|
1160
|
+
'& $thumb': {
|
|
1161
|
+
backgroundColor: palette.success.main,
|
|
1306
1162
|
},
|
|
1307
|
-
|
|
1308
|
-
|
|
1163
|
+
'&& + $track': {
|
|
1164
|
+
backgroundColor: palette.success.main,
|
|
1165
|
+
opacity: 0.5,
|
|
1309
1166
|
},
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
}
|
|
1167
|
+
},
|
|
1168
|
+
switchBase: {
|
|
1169
|
+
color: palette.grey[300],
|
|
1170
|
+
},
|
|
1171
|
+
thumb: {},
|
|
1172
|
+
track: {},
|
|
1173
|
+
}))(core.Switch);
|
|
1314
1174
|
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
checked: {
|
|
1319
|
-
|
|
1320
|
-
'&$checked': {
|
|
1321
|
-
color: palette.info.main,
|
|
1322
|
-
},
|
|
1175
|
+
const Checkbox = core.withStyles(({ palette }) => ({
|
|
1176
|
+
checked: {},
|
|
1177
|
+
root: {
|
|
1178
|
+
'&$checked': {
|
|
1179
|
+
color: palette.info.main,
|
|
1323
1180
|
},
|
|
1324
|
-
}
|
|
1325
|
-
})(core.Checkbox);
|
|
1181
|
+
},
|
|
1182
|
+
}))(core.Checkbox);
|
|
1326
1183
|
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
checked: {
|
|
1331
|
-
|
|
1332
|
-
'&$checked': {
|
|
1333
|
-
color: palette.info.main,
|
|
1334
|
-
},
|
|
1184
|
+
const Radio = core.withStyles(({ palette }) => ({
|
|
1185
|
+
checked: {},
|
|
1186
|
+
root: {
|
|
1187
|
+
'&$checked': {
|
|
1188
|
+
color: palette.info.main,
|
|
1335
1189
|
},
|
|
1336
|
-
}
|
|
1337
|
-
})(core.Radio);
|
|
1190
|
+
},
|
|
1191
|
+
}))(core.Radio);
|
|
1338
1192
|
|
|
1339
|
-
|
|
1193
|
+
const useStyles = core.makeStyles((theme) => ({
|
|
1340
1194
|
root: {
|
|
1341
1195
|
'& > div': {
|
|
1342
1196
|
padding: 0,
|
|
@@ -1358,63 +1212,59 @@ var useStyles = core.makeStyles(function (theme) { return ({
|
|
|
1358
1212
|
color: theme.palette.grey[700],
|
|
1359
1213
|
},
|
|
1360
1214
|
header: {
|
|
1361
|
-
color:
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
}[props.type]);
|
|
1367
|
-
},
|
|
1215
|
+
color: (props) => ({
|
|
1216
|
+
alert: theme.palette.error.main,
|
|
1217
|
+
info: theme.palette.info.main,
|
|
1218
|
+
offer: theme.palette.success.main,
|
|
1219
|
+
}[props.type]),
|
|
1368
1220
|
},
|
|
1369
1221
|
headerTitle: {
|
|
1370
|
-
color:
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
}[props.type]);
|
|
1376
|
-
},
|
|
1222
|
+
color: (props) => ({
|
|
1223
|
+
alert: theme.palette.error.main,
|
|
1224
|
+
info: theme.palette.info.main,
|
|
1225
|
+
offer: theme.palette.success.main,
|
|
1226
|
+
}[props.type]),
|
|
1377
1227
|
fontWeight: 600,
|
|
1378
1228
|
},
|
|
1379
1229
|
content: {
|
|
1380
1230
|
marginLeft: theme.spacing(5),
|
|
1381
1231
|
},
|
|
1382
|
-
})
|
|
1232
|
+
}));
|
|
1383
1233
|
|
|
1384
|
-
|
|
1385
|
-
|
|
1234
|
+
const bannerIconStyles = { color: 'inherit', width: 24, height: 24 };
|
|
1235
|
+
const BannerTypeIcons = {
|
|
1386
1236
|
alert: React.createElement(webIcons.Warning, { style: bannerIconStyles }),
|
|
1387
1237
|
info: React.createElement(webIcons.Info, { style: bannerIconStyles }),
|
|
1388
1238
|
offer: React.createElement(webIcons.DollarSign, { style: bannerIconStyles }),
|
|
1389
1239
|
};
|
|
1390
1240
|
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1241
|
+
const MenuBanner = (props) => {
|
|
1242
|
+
const { show } = props;
|
|
1243
|
+
const classes = useStyles(props);
|
|
1394
1244
|
if (!show)
|
|
1395
1245
|
return null;
|
|
1396
1246
|
return (React.createElement(core.Card, { classes: { root: classes.root }, variant: "outlined" },
|
|
1397
1247
|
React.createElement(core.CardHeader, { avatar: BannerTypeIcons[props.type], title: props.title, titleTypographyProps: { variant: 'body1' }, classes: { root: classes.header, title: classes.headerTitle } }),
|
|
1398
|
-
React.createElement(MenuBannerDescription,
|
|
1399
|
-
React.createElement(MenuBannerButton,
|
|
1248
|
+
React.createElement(MenuBannerDescription, { ...props }),
|
|
1249
|
+
React.createElement(MenuBannerButton, { ...props })));
|
|
1400
1250
|
};
|
|
1401
1251
|
function MenuBannerDescription(props) {
|
|
1402
|
-
|
|
1403
|
-
|
|
1252
|
+
const classes = useStyles(props);
|
|
1253
|
+
const { description } = props;
|
|
1404
1254
|
if (!description)
|
|
1405
1255
|
return null;
|
|
1406
1256
|
return (React.createElement(core.CardContent, { classes: { root: classes.content } },
|
|
1407
1257
|
React.createElement(core.Typography, { className: classes.description, variant: "body2" }, props.description)));
|
|
1408
1258
|
}
|
|
1409
1259
|
function MenuBannerButton(props) {
|
|
1410
|
-
|
|
1260
|
+
const classes = useStyles(props);
|
|
1411
1261
|
if (!props.buttonLabel)
|
|
1412
1262
|
return null;
|
|
1413
1263
|
return (React.createElement(core.CardContent, { classes: { root: classes.content } },
|
|
1414
|
-
React.createElement(core.Link,
|
|
1264
|
+
React.createElement(core.Link, { ...{ component: 'button', variant: 'body2', className: classes.button }, ...props.ButtonProps }, props.buttonLabel)));
|
|
1415
1265
|
}
|
|
1416
1266
|
|
|
1417
|
-
|
|
1267
|
+
const palette = {
|
|
1418
1268
|
primary: {
|
|
1419
1269
|
main: '#0A202F',
|
|
1420
1270
|
},
|
|
@@ -1441,7 +1291,7 @@ var palette = {
|
|
|
1441
1291
|
},
|
|
1442
1292
|
};
|
|
1443
1293
|
|
|
1444
|
-
|
|
1294
|
+
const overrides = {
|
|
1445
1295
|
MuiButton: {
|
|
1446
1296
|
root: {
|
|
1447
1297
|
borderRadius: 32,
|
|
@@ -1514,7 +1364,7 @@ var overrides = {
|
|
|
1514
1364
|
},
|
|
1515
1365
|
};
|
|
1516
1366
|
|
|
1517
|
-
|
|
1367
|
+
const props = {
|
|
1518
1368
|
MuiButton: {
|
|
1519
1369
|
disableElevation: true,
|
|
1520
1370
|
},
|
|
@@ -1523,8 +1373,8 @@ var props = {
|
|
|
1523
1373
|
},
|
|
1524
1374
|
};
|
|
1525
1375
|
|
|
1526
|
-
|
|
1527
|
-
|
|
1376
|
+
const fonts = ['"Poppins"', '"sans-serif"'];
|
|
1377
|
+
const typography = {
|
|
1528
1378
|
htmlFontSize: 16,
|
|
1529
1379
|
fontFamily: fonts.join(', '),
|
|
1530
1380
|
h1: {
|
|
@@ -1581,11 +1431,11 @@ var typography = {
|
|
|
1581
1431
|
},
|
|
1582
1432
|
};
|
|
1583
1433
|
|
|
1584
|
-
|
|
1585
|
-
typography
|
|
1586
|
-
palette
|
|
1587
|
-
overrides
|
|
1588
|
-
props
|
|
1434
|
+
const orderingTheme = {
|
|
1435
|
+
typography,
|
|
1436
|
+
palette,
|
|
1437
|
+
overrides,
|
|
1438
|
+
props,
|
|
1589
1439
|
};
|
|
1590
1440
|
|
|
1591
1441
|
exports.Button = Button;
|