@popmenu/ordering-ui 0.152.0 → 0.154.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/build/cjs/components/ExpandableModifierGroup/ExpandableModifierGroup.d.ts +6 -0
  2. package/build/cjs/components/ExpandableModifierGroup/ExpandableModifierGroup.styles.d.ts +1 -0
  3. package/build/cjs/components/ExpandableModifierGroup/ExpandableModifierGroupProps.d.ts +11 -0
  4. package/build/cjs/components/ExpandableModifierGroup/index.d.ts +2 -0
  5. package/build/cjs/components/NestedModsV2DishModifierCard/DishModifierCard.styles.d.ts +5 -0
  6. package/build/cjs/components/NestedModsV2DishModifierCard/DishModifierCardProps.d.ts +79 -0
  7. package/build/cjs/components/NestedModsV2DishModifierCard/ModifierControls.d.ts +3 -0
  8. package/build/cjs/components/NestedModsV2DishModifierCard/NestedModsV2DishModifierCard.d.ts +6 -0
  9. package/build/cjs/components/NestedModsV2DishModifierCard/index.d.ts +2 -0
  10. package/build/cjs/components/index.d.ts +4 -0
  11. package/build/cjs/index.js +455 -28
  12. package/build/cjs/index.js.map +1 -1
  13. package/build/esm/components/ExpandableModifierGroup/ExpandableModifierGroup.d.ts +6 -0
  14. package/build/esm/components/ExpandableModifierGroup/ExpandableModifierGroup.js +23 -0
  15. package/build/esm/components/ExpandableModifierGroup/ExpandableModifierGroup.js.map +1 -0
  16. package/build/esm/components/ExpandableModifierGroup/ExpandableModifierGroup.styles.d.ts +1 -0
  17. package/build/esm/components/ExpandableModifierGroup/ExpandableModifierGroup.styles.js +57 -0
  18. package/build/esm/components/ExpandableModifierGroup/ExpandableModifierGroup.styles.js.map +1 -0
  19. package/build/esm/components/ExpandableModifierGroup/ExpandableModifierGroupProps.d.ts +11 -0
  20. package/build/esm/components/ExpandableModifierGroup/index.d.ts +2 -0
  21. package/build/esm/components/NestedModsV2DishModifierCard/DishModifierCard.styles.d.ts +5 -0
  22. package/build/esm/components/NestedModsV2DishModifierCard/DishModifierCard.styles.js +165 -0
  23. package/build/esm/components/NestedModsV2DishModifierCard/DishModifierCard.styles.js.map +1 -0
  24. package/build/esm/components/NestedModsV2DishModifierCard/DishModifierCardProps.d.ts +79 -0
  25. package/build/esm/components/NestedModsV2DishModifierCard/ModifierControls.d.ts +3 -0
  26. package/build/esm/components/NestedModsV2DishModifierCard/ModifierControls.js +171 -0
  27. package/build/esm/components/NestedModsV2DishModifierCard/ModifierControls.js.map +1 -0
  28. package/build/esm/components/NestedModsV2DishModifierCard/NestedModsV2DishModifierCard.d.ts +6 -0
  29. package/build/esm/components/NestedModsV2DishModifierCard/NestedModsV2DishModifierCard.js +47 -0
  30. package/build/esm/components/NestedModsV2DishModifierCard/NestedModsV2DishModifierCard.js.map +1 -0
  31. package/build/esm/components/NestedModsV2DishModifierCard/index.d.ts +2 -0
  32. package/build/esm/components/index.d.ts +4 -0
  33. package/build/esm/index.js +2 -0
  34. package/build/esm/index.js.map +1 -1
  35. package/package.json +2 -2
@@ -0,0 +1,165 @@
1
+ import { makeStyles } from '@material-ui/core';
2
+
3
+ const useDishModifierCardStyles = makeStyles((theme) => ({
4
+ root: {
5
+ display: 'flex',
6
+ flexDirection: 'column',
7
+ padding: theme.spacing(2.5),
8
+ color: `${theme.palette.grey[900]} !important`,
9
+ },
10
+ card: {
11
+ borderRadius: '8px',
12
+ border: '1px solid var(--surfaces-card-stroke, #E0E0E0)',
13
+ },
14
+ error: {
15
+ color: theme.palette.error.main,
16
+ },
17
+ helperText: {
18
+ color: theme.palette.grey[700],
19
+ },
20
+ optionalStatusTag: {
21
+ '& > div': {
22
+ backgroundColor: theme.palette.grey[300],
23
+ },
24
+ },
25
+ name: {
26
+ fontSize: '1.125rem',
27
+ fontWeight: theme.typography.fontWeightBold,
28
+ marginBottom: theme.spacing(2),
29
+ },
30
+ }));
31
+ const useRadioModifierFormStyles = makeStyles((theme) => ({
32
+ radioGroup: {
33
+ gap: theme.spacing(2),
34
+ },
35
+ label: {
36
+ alignItems: 'center',
37
+ display: 'flex',
38
+ justifyContent: 'space-between',
39
+ width: '100%',
40
+ },
41
+ radio: {
42
+ fontSize: '1rem',
43
+ padding: 'unset',
44
+ marginRight: theme.spacing(-0.25),
45
+ '&.Mui-checked': {
46
+ color: theme.palette.info.main,
47
+ },
48
+ },
49
+ hideRadio: {
50
+ display: 'none',
51
+ },
52
+ root: {
53
+ justifyContent: 'space-between',
54
+ margin: 0,
55
+ width: '100%',
56
+ '& > :last-child': {
57
+ flex: 1,
58
+ },
59
+ },
60
+ }));
61
+ const useCheckboxModifierFormStyles = makeStyles((theme) => ({
62
+ formGroup: {
63
+ gap: theme.spacing(2),
64
+ },
65
+ label: {
66
+ alignItems: 'center',
67
+ display: 'flex',
68
+ justifyContent: 'space-between',
69
+ width: '100%',
70
+ },
71
+ checkbox: {
72
+ color: theme.palette.grey[700],
73
+ fontSize: '1rem',
74
+ marginRight: theme.spacing(-0.25),
75
+ padding: 'unset',
76
+ '&.Mui-checked': {
77
+ color: theme.palette.info.main,
78
+ },
79
+ },
80
+ hideCheckbox: {
81
+ display: 'none',
82
+ },
83
+ root: {
84
+ margin: 0,
85
+ width: '100%',
86
+ '& > :last-child': {
87
+ flex: 1,
88
+ },
89
+ },
90
+ }));
91
+ const useLabelStyles = makeStyles((theme) => ({
92
+ label: {
93
+ margin: theme.spacing(0.5, 0),
94
+ },
95
+ selectedLabel: {
96
+ margin: theme.spacing(0.5, 0),
97
+ },
98
+ disabled: {
99
+ color: theme.palette.grey[500],
100
+ },
101
+ price: {
102
+ color: theme.palette.grey[700],
103
+ },
104
+ selectedSummary: {
105
+ color: theme.palette.grey[700],
106
+ },
107
+ selectedSummaryInlineRow: {
108
+ alignItems: 'center',
109
+ color: theme.palette.grey[700],
110
+ columnGap: theme.spacing(1),
111
+ display: 'flex',
112
+ justifyContent: 'space-between',
113
+ marginTop: theme.spacing(0.5),
114
+ minHeight: theme.spacing(2.5),
115
+ width: '100%',
116
+ },
117
+ selectedSummaryPrimary: {
118
+ alignItems: 'center',
119
+ columnGap: theme.spacing(1),
120
+ display: 'flex',
121
+ flex: 1,
122
+ minWidth: 0,
123
+ },
124
+ // TODO [sc-162475]: 0.625rem (10px) is below the recommended minimum font size for accessibility — address in followup
125
+ selectedSummaryPrimaryText: {
126
+ color: theme.palette.grey[700],
127
+ fontSize: '0.625rem',
128
+ fontWeight: theme.typography.fontWeightRegular,
129
+ lineHeight: 1.2,
130
+ overflow: 'hidden',
131
+ textOverflow: 'ellipsis',
132
+ whiteSpace: 'nowrap',
133
+ },
134
+ selectedSummaryIcon: {
135
+ color: theme.palette.success.main,
136
+ },
137
+ }));
138
+ const useOptionsStyles = makeStyles((theme) => ({
139
+ options: {
140
+ color: theme.palette.info.main,
141
+ marginBottom: theme.spacing(1.5),
142
+ minWidth: 'unset',
143
+ padding: 0,
144
+ },
145
+ inlineOptions: {
146
+ alignItems: 'center',
147
+ display: 'inline-flex',
148
+ justifyContent: 'center',
149
+ height: 'auto',
150
+ marginBottom: 0,
151
+ minHeight: 'unset',
152
+ paddingBottom: 0,
153
+ paddingLeft: '10px',
154
+ paddingRight: 0,
155
+ paddingTop: 0,
156
+ '& .MuiTypography-root': {
157
+ // TODO [sc-162475]: 0.625rem (10px) is below the recommended minimum font size for accessibility — address in followup
158
+ fontSize: '0.625rem',
159
+ lineHeight: 1.2,
160
+ },
161
+ },
162
+ }));
163
+
164
+ export { useCheckboxModifierFormStyles, useDishModifierCardStyles, useLabelStyles, useOptionsStyles, useRadioModifierFormStyles };
165
+ //# sourceMappingURL=DishModifierCard.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DishModifierCard.styles.js","sources":["../../../../src/components/NestedModsV2DishModifierCard/DishModifierCard.styles.ts"],"sourcesContent":["import { makeStyles, Theme } from '@material-ui/core'\n\nexport const useDishModifierCardStyles = makeStyles<Theme>((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(2.5),\n color: `${theme.palette.grey[900]} !important`,\n },\n card: {\n borderRadius: '8px',\n border: '1px solid var(--surfaces-card-stroke, #E0E0E0)',\n },\n error: {\n color: theme.palette.error.main,\n },\n helperText: {\n color: theme.palette.grey[700],\n },\n optionalStatusTag: {\n '& > div': {\n backgroundColor: theme.palette.grey[300],\n },\n },\n name: {\n fontSize: '1.125rem',\n fontWeight: theme.typography.fontWeightBold,\n marginBottom: theme.spacing(2),\n },\n}))\n\nexport const useRadioModifierFormStyles = makeStyles<Theme>((theme) => ({\n radioGroup: {\n gap: theme.spacing(2),\n },\n label: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n },\n radio: {\n fontSize: '1rem',\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: '100%',\n\n '& > :last-child': {\n flex: 1,\n },\n },\n}))\n\nexport const useCheckboxModifierFormStyles = makeStyles<Theme>((theme) => ({\n formGroup: {\n gap: theme.spacing(2),\n },\n label: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n },\n checkbox: {\n color: theme.palette.grey[700],\n fontSize: '1rem',\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: '100%',\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 selectedLabel: {\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 selectedSummary: {\n color: theme.palette.grey[700],\n },\n selectedSummaryInlineRow: {\n alignItems: 'center',\n color: theme.palette.grey[700],\n columnGap: theme.spacing(1),\n display: 'flex',\n justifyContent: 'space-between',\n marginTop: theme.spacing(0.5),\n minHeight: theme.spacing(2.5),\n width: '100%',\n },\n selectedSummaryPrimary: {\n alignItems: 'center',\n columnGap: theme.spacing(1),\n display: 'flex',\n flex: 1,\n minWidth: 0,\n },\n // TODO [sc-162475]: 0.625rem (10px) is below the recommended minimum font size for accessibility — address in followup\n selectedSummaryPrimaryText: {\n color: theme.palette.grey[700],\n fontSize: '0.625rem',\n fontWeight: theme.typography.fontWeightRegular,\n lineHeight: 1.2,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n selectedSummaryIcon: {\n color: theme.palette.success.main,\n },\n}))\n\nexport const useOptionsStyles = makeStyles<Theme>((theme) => ({\n options: {\n color: theme.palette.info.main,\n marginBottom: theme.spacing(1.5),\n minWidth: 'unset',\n padding: 0,\n },\n inlineOptions: {\n alignItems: 'center',\n display: 'inline-flex',\n justifyContent: 'center',\n height: 'auto',\n marginBottom: 0,\n minHeight: 'unset',\n paddingBottom: 0,\n paddingLeft: '10px',\n paddingRight: 0,\n paddingTop: 0,\n '& .MuiTypography-root': {\n // TODO [sc-162475]: 0.625rem (10px) is below the recommended minimum font size for accessibility — address in followup\n fontSize: '0.625rem',\n lineHeight: 1.2,\n },\n },\n}))\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ export type ModifierValue = {
2
+ groupId: number;
3
+ modifierId: number;
4
+ parentModifierId?: number | null;
5
+ price: number;
6
+ quantity: number;
7
+ isRadio?: boolean;
8
+ };
9
+ export type Modifier = {
10
+ id: number;
11
+ hasModifiers: boolean;
12
+ name: string;
13
+ outOfStock: boolean;
14
+ price: number;
15
+ formattedPrice: string;
16
+ hidePrice?: boolean;
17
+ quantity: number;
18
+ parentModifierGroupId: number;
19
+ parentModifierGroupItemId?: number | null;
20
+ };
21
+ export type OnChangeValueType = ModifierValue;
22
+ export type ModifierControlsOptions = {
23
+ /** Applies selected modifier visual treatment used by nested mods V2 */
24
+ enableSelectedModifierStyles?: boolean;
25
+ /** Changes the action label to UPDATE when a modifier is selected */
26
+ showUpdateButton?: boolean;
27
+ /** Optional selected modifier summary text shown below selected modifier names */
28
+ selectedNestedSummaryByModifierId?: Record<number, string>;
29
+ /**
30
+ * Suppresses the inline OPTIONS / UPDATE action on every modifier row,
31
+ * regardless of selection state, AND prevents the built-in auto-trigger
32
+ * of `handleOptionsClick` when a modifier with `hasModifiers: true` is
33
+ * selected.
34
+ */
35
+ hideNestedOptionsButton?: boolean;
36
+ };
37
+ export type NestedModsV2DishModifierCardProps = {
38
+ /** Aggregate price of the modifier and its nested children modifiers */
39
+ aggregatePrice: Record<number, string>;
40
+ /** Modifier options */
41
+ modifiers: Array<Modifier>;
42
+ /** The values of the modifier form */
43
+ value: Array<ModifierValue>;
44
+ /** Handles the change event */
45
+ onChange: (value: OnChangeValueType) => void;
46
+ /** Name of the modifier */
47
+ name: string;
48
+ /** Denotes the max amount of selections have been reached */
49
+ disableNewSelections?: boolean;
50
+ /** Denotes if modifier has an error */
51
+ error: boolean;
52
+ /** Denotes if modifier is required */
53
+ isRequired: boolean;
54
+ /** Denotes if modifier is out of stock */
55
+ isOutOfStock: boolean;
56
+ /** Selection type for modifier group */
57
+ type: 'singleSelect' | 'multipleSelect' | 'multipleQuantitySelect';
58
+ /** Renders the text of the dish modifiers */
59
+ messages: {
60
+ optionalText: string;
61
+ outOfStockText: string;
62
+ requiredText: string;
63
+ helperText: string;
64
+ };
65
+ /** Handles the dialog change for nested modifiers */
66
+ handleOptionsClick: (id: number) => void;
67
+ /** Used by parent modifier quantity tracking: parent modifier quantity denotes requiredSelectionCount and currentSelectionCount is the total quantity of the child modifier */
68
+ selectionQuantity: Record<number, {
69
+ requiredSelectionCount: number;
70
+ currentSelectionCount: number;
71
+ }>;
72
+ /** Optional feature-gated options for nested modifier controls */
73
+ modifierControlsOptions?: ModifierControlsOptions;
74
+ /** Removes the card border and border-radius, for use inside a container that provides its own card styling */
75
+ disableCardStyle?: boolean;
76
+ /** Hides the group name heading, useful when the name is already shown by a parent container */
77
+ hideName?: boolean;
78
+ };
79
+ export type ModifierOptionsControlProps = Pick<NestedModsV2DishModifierCardProps, 'value' | 'modifiers' | 'isOutOfStock' | 'isRequired' | 'onChange' | 'disableNewSelections' | 'type' | 'messages' | 'handleOptionsClick' | 'aggregatePrice' | 'selectionQuantity' | 'name' | 'modifierControlsOptions'>;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { ModifierOptionsControlProps } from './DishModifierCardProps';
3
+ export declare const ModifierControls: (props: ModifierOptionsControlProps) => React.JSX.Element | null;
@@ -0,0 +1,171 @@
1
+ import { FormControl, FormGroup, Box, Typography, FormControlLabel, Checkbox, RadioGroup, Radio } from '@material-ui/core';
2
+ import { Icon } from '@popmenu/common-ui';
3
+ import { CheckCircle, ChevronRight } from '@popmenu/web-icons';
4
+ import classNames from 'classnames';
5
+ import React__default from 'react';
6
+ import { Button } from '../Button/Button.js';
7
+ import { QuantityPicker } from '../QuantityPicker/QuantityPicker.js';
8
+ import { StatusTag } from '../StatusTag/StatusTag.js';
9
+ import { useCheckboxModifierFormStyles, useRadioModifierFormStyles, useLabelStyles, useOptionsStyles } from './DishModifierCard.styles.js';
10
+
11
+ const Label = (props) => {
12
+ const { name, price, disabled = false, hidePrice = false, isSelected = false, selectedSummary, enableSelectedModifierStyles = false, } = props;
13
+ const classes = useLabelStyles();
14
+ const numericPrice = price ? parseFloat(price.replace(/[^0-9.-]/g, '')) : NaN;
15
+ const shouldHidePrice = hidePrice || !price || numericPrice === 0 || isNaN(numericPrice);
16
+ const showSelectedSummary = Boolean(enableSelectedModifierStyles && isSelected && selectedSummary);
17
+ return (React__default.createElement(Box, { display: "flex", flexDirection: "column", className: classNames({ [classes.label]: !showSelectedSummary, [classes.selectedLabel]: showSelectedSummary }) },
18
+ React__default.createElement(Box, { display: "flex", alignItems: "center", gridGap: 8 },
19
+ React__default.createElement(Typography, { className: classNames({
20
+ [classes.disabled]: disabled,
21
+ }) }, name)),
22
+ !shouldHidePrice && (React__default.createElement(Typography, { className: classNames({ [classes.price]: !disabled }, { [classes.disabled]: disabled }) }, `+ ${price}`)),
23
+ showSelectedSummary && React__default.createElement(Typography, { className: classes.selectedSummary }, selectedSummary)));
24
+ };
25
+ const Options = (props) => {
26
+ const { handleOptionsClick, actionLabel, hidden = false, inline = false } = props;
27
+ const classes = useOptionsStyles();
28
+ const displayActionLabel = inline ? (actionLabel === 'UPDATE' ? 'Update' : 'Options') : actionLabel;
29
+ if (hidden)
30
+ return null;
31
+ return (React__default.createElement(Box, null,
32
+ React__default.createElement(Button, { variation: "none", className: classNames(classes.options, { [classes.inlineOptions]: inline }), onClick: handleOptionsClick },
33
+ React__default.createElement(Typography, { variant: "caption" }, displayActionLabel),
34
+ !inline && React__default.createElement(Icon, { icon: ChevronRight }))));
35
+ };
36
+ const getIsSelected = (modifierId, value) => value.some((modifierValue) => modifierValue.modifierId === modifierId && modifierValue.quantity > 0);
37
+ const getActionLabel = (isSelected, props) => props.modifierControlsOptions?.showUpdateButton && isSelected ? 'UPDATE' : 'OPTIONS';
38
+ const shouldHideNestedOptionsButton = (isSelected, props) => Boolean(props.modifierControlsOptions?.hideNestedOptionsButton ||
39
+ (props.modifierControlsOptions?.enableSelectedModifierStyles && !isSelected));
40
+ const shouldShowInlineAction = (isSelected, props) => Boolean(isSelected &&
41
+ props.modifierControlsOptions?.enableSelectedModifierStyles &&
42
+ !props.modifierControlsOptions?.hideNestedOptionsButton);
43
+ const getModifierActionState = (modifier, isSelected, props) => ({
44
+ isSelected,
45
+ shouldHideNestedOptions: shouldHideNestedOptionsButton(isSelected, props),
46
+ showInlineAction: shouldShowInlineAction(isSelected, props),
47
+ actionLabel: getActionLabel(isSelected, props),
48
+ selectedSummary: props.modifierControlsOptions?.selectedNestedSummaryByModifierId?.[modifier.id],
49
+ });
50
+ const NestedModifierActions = (props) => {
51
+ const { modifier, handleOptionsClick, state, renderRegularButton = true } = props;
52
+ const labelClasses = useLabelStyles();
53
+ if (!modifier.hasModifiers || modifier.outOfStock)
54
+ return null;
55
+ return (React__default.createElement(React__default.Fragment, null,
56
+ state.showInlineAction && state.selectedSummary && (React__default.createElement(Box, { className: labelClasses.selectedSummaryInlineRow },
57
+ React__default.createElement(Box, { className: labelClasses.selectedSummaryPrimary },
58
+ React__default.createElement(Icon, { icon: CheckCircle, size: "medium", className: labelClasses.selectedSummaryIcon }),
59
+ React__default.createElement(Typography, { variant: "caption", className: labelClasses.selectedSummaryPrimaryText }, state.selectedSummary)),
60
+ React__default.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id), actionLabel: state.actionLabel, inline: true, hidden: state.shouldHideNestedOptions }))),
61
+ renderRegularButton && (React__default.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id), actionLabel: state.actionLabel, hidden: state.shouldHideNestedOptions || (state.showInlineAction && Boolean(state.selectedSummary)) }))));
62
+ };
63
+ const SingleSelectModifierControl = (props) => {
64
+ const { modifiers, name, isOutOfStock, onChange, value, handleOptionsClick, aggregatePrice, isRequired } = props;
65
+ const radioClasses = useRadioModifierFormStyles();
66
+ const makeHandleChange = (modifier) => (e) => {
67
+ const isModifierInValue = Boolean(value.find((v) => v.modifierId === modifier.id));
68
+ if (!isModifierInValue && modifier.hasModifiers && !props.modifierControlsOptions?.hideNestedOptionsButton) {
69
+ handleOptionsClick(modifier.id);
70
+ }
71
+ onChange({
72
+ isRadio: true,
73
+ modifierId: Number(e.target.value),
74
+ groupId: modifier.parentModifierGroupId,
75
+ parentModifierId: modifier.parentModifierGroupItemId,
76
+ price: modifier.price || 0,
77
+ quantity: 1,
78
+ });
79
+ };
80
+ return (React__default.createElement(FormControl, { fullWidth: true },
81
+ React__default.createElement(RadioGroup, { className: radioClasses.radioGroup, "aria-label": name }, modifiers.map((modifier) => {
82
+ const modifierActionState = getModifierActionState(modifier, getIsSelected(modifier.id, value), props);
83
+ return (React__default.createElement(Box, { key: modifier.id },
84
+ 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({
85
+ [radioClasses.hideRadio]: modifier.outOfStock,
86
+ [radioClasses.radio]: !modifier.outOfStock,
87
+ }), disabled: isOutOfStock || modifier.outOfStock, onChange: makeHandleChange(modifier), required: isRequired }), label: React__default.createElement(Box, { className: radioClasses.label },
88
+ React__default.createElement(Label, { name: modifier.name, price: aggregatePrice[modifier.id] || modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock, hidePrice: modifier.hidePrice, isSelected: modifierActionState.isSelected, enableSelectedModifierStyles: props.modifierControlsOptions?.enableSelectedModifierStyles, selectedSummary: modifierActionState.showInlineAction ? undefined : modifierActionState.selectedSummary }),
89
+ modifier.outOfStock && (React__default.createElement(Box, { minWidth: "90px", marginLeft: 2 },
90
+ React__default.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" })))), labelPlacement: "start" }),
91
+ React__default.createElement(NestedModifierActions, { modifier: modifier, handleOptionsClick: handleOptionsClick, state: modifierActionState })));
92
+ }))));
93
+ };
94
+ const MultipleSelectControl = (props) => {
95
+ const { modifiers, value, isOutOfStock, onChange, disableNewSelections, handleOptionsClick, aggregatePrice } = props;
96
+ const classes = useCheckboxModifierFormStyles();
97
+ const makeHandleChange = (modifier) => () => {
98
+ const isModifierInValue = Boolean(value.find((v) => v.modifierId === modifier.id));
99
+ if (!isModifierInValue && modifier.hasModifiers && !props.modifierControlsOptions?.hideNestedOptionsButton) {
100
+ handleOptionsClick(modifier.id);
101
+ }
102
+ onChange({
103
+ isRadio: false,
104
+ modifierId: modifier.id,
105
+ groupId: modifier.parentModifierGroupId,
106
+ parentModifierId: modifier.parentModifierGroupItemId,
107
+ price: modifier.price || 0,
108
+ quantity: isModifierInValue ? 0 : 1,
109
+ });
110
+ };
111
+ return (React__default.createElement(FormControl, { fullWidth: true },
112
+ React__default.createElement(FormGroup, { className: classes.formGroup }, modifiers.map((modifier) => {
113
+ const modifierActionState = getModifierActionState(modifier, getIsSelected(modifier.id, value), props);
114
+ return (React__default.createElement(Box, { key: modifier.id },
115
+ 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 },
116
+ React__default.createElement(Label, { name: modifier.name, price: aggregatePrice[modifier.id] || modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock, hidePrice: modifier.hidePrice, isSelected: modifierActionState.isSelected, enableSelectedModifierStyles: props.modifierControlsOptions?.enableSelectedModifierStyles, selectedSummary: modifierActionState.showInlineAction ? undefined : modifierActionState.selectedSummary }),
117
+ modifier.outOfStock && (React__default.createElement(Box, { minWidth: "90px", marginLeft: 2 },
118
+ React__default.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" })))), labelPlacement: "start" }),
119
+ React__default.createElement(NestedModifierActions, { modifier: modifier, handleOptionsClick: handleOptionsClick, state: modifierActionState })));
120
+ }))));
121
+ };
122
+ const MultipleQuantitySelectControl = (props) => {
123
+ const { modifiers, isOutOfStock, onChange, disableNewSelections, handleOptionsClick, selectionQuantity, aggregatePrice, } = props;
124
+ const makeHandleChange = (modifier) => (_e, customEvent) => {
125
+ onChange({
126
+ isRadio: false,
127
+ modifierId: modifier.id,
128
+ groupId: modifier.parentModifierGroupId,
129
+ parentModifierId: modifier.parentModifierGroupItemId,
130
+ price: modifier.price || 0,
131
+ quantity: customEvent.quantity,
132
+ });
133
+ };
134
+ return (React__default.createElement(FormControl, { fullWidth: true },
135
+ React__default.createElement(FormGroup, null, modifiers.map((modifier) => {
136
+ const modifierActionState = getModifierActionState(modifier, modifier.quantity > 0, props);
137
+ return (React__default.createElement(Box, { key: modifier.id, style: { justifyContent: 'space-between', flexDirection: 'column' }, display: "flex" },
138
+ React__default.createElement(Box, { display: "flex", alignItems: "center", justifyContent: "space-between", width: "100%" },
139
+ React__default.createElement(Label, { name: modifier.name, price: aggregatePrice[modifier.id] || modifier.formattedPrice, disabled: isOutOfStock || modifier.outOfStock, hidePrice: modifier.hidePrice, isSelected: modifierActionState.isSelected, enableSelectedModifierStyles: props.modifierControlsOptions?.enableSelectedModifierStyles, selectedSummary: modifierActionState.showInlineAction ? undefined : modifierActionState.selectedSummary }),
140
+ modifier.outOfStock && (React__default.createElement(Box, { minWidth: "90px", marginLeft: 2 },
141
+ React__default.createElement(StatusTag, { color: "warning", label: "Out of stock", variant: "outlined", size: "md" }))),
142
+ !modifier.outOfStock && (React__default.createElement(QuantityPicker, { incrementButtonTitle: `Add ${modifier.name}`, decrementButtonTitle: `Remove ${modifier.name}`, id: `${modifier.id}-quantity-picker`, variation: "modifierCount", value: modifier.quantity, disableIncrement: disableNewSelections, preventManualChange: true, onChange: makeHandleChange(modifier), disabled: isOutOfStock || modifier.outOfStock, name: modifier.name }))),
143
+ React__default.createElement(NestedModifierActions, { modifier: modifier, handleOptionsClick: handleOptionsClick, state: modifierActionState, renderRegularButton: false }),
144
+ React__default.createElement(Box, { display: "flex", alignItems: "flex-start", gridGap: 4 },
145
+ modifier.hasModifiers && !modifier.outOfStock && (React__default.createElement(Options, { handleOptionsClick: () => handleOptionsClick(modifier.id), actionLabel: modifierActionState.actionLabel, hidden: modifierActionState.shouldHideNestedOptions ||
146
+ (modifierActionState.showInlineAction && Boolean(modifierActionState.selectedSummary)) })),
147
+ selectionQuantity[modifier.id] &&
148
+ selectionQuantity[modifier.id].requiredSelectionCount > 0 &&
149
+ selectionQuantity[modifier.id].requiredSelectionCount !==
150
+ selectionQuantity[modifier.id].currentSelectionCount && (React__default.createElement(Typography, { variant: "caption", color: "error" },
151
+ selectionQuantity[modifier.id].currentSelectionCount,
152
+ "/",
153
+ selectionQuantity[modifier.id].requiredSelectionCount,
154
+ " selected")))));
155
+ }))));
156
+ };
157
+ const ModifierControls = (props) => {
158
+ switch (props.type) {
159
+ case 'singleSelect':
160
+ return React__default.createElement(SingleSelectModifierControl, { ...props });
161
+ case 'multipleSelect':
162
+ return React__default.createElement(MultipleSelectControl, { ...props });
163
+ case 'multipleQuantitySelect':
164
+ return React__default.createElement(MultipleQuantitySelectControl, { ...props });
165
+ default:
166
+ return null;
167
+ }
168
+ };
169
+
170
+ export { ModifierControls };
171
+ //# sourceMappingURL=ModifierControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModifierControls.js","sources":["../../../../src/components/NestedModsV2DishModifierCard/ModifierControls.tsx"],"sourcesContent":["import {\n Box,\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n Radio,\n RadioGroup,\n Typography,\n} from '@material-ui/core'\nimport { Icon } from '@popmenu/common-ui'\nimport { CheckCircle, ChevronRight } from '@popmenu/web-icons'\nimport classNames from 'classnames'\nimport React from 'react'\nimport { Button } from '../Button'\nimport type { QuantityChangeEvent } from '../QuantityPicker'\nimport { QuantityPicker } from '../QuantityPicker'\nimport { StatusTag } from '../StatusTag'\nimport {\n useCheckboxModifierFormStyles,\n useLabelStyles,\n useOptionsStyles,\n useRadioModifierFormStyles,\n} from './DishModifierCard.styles'\nimport { Modifier, ModifierOptionsControlProps } from './DishModifierCardProps'\n\nconst Label = (props: {\n name: string\n price: string\n disabled?: boolean\n hidePrice?: boolean\n isSelected?: boolean\n selectedSummary?: string\n enableSelectedModifierStyles?: boolean\n}) => {\n const {\n name,\n price,\n disabled = false,\n hidePrice = false,\n isSelected = false,\n selectedSummary,\n enableSelectedModifierStyles = false,\n } = props\n const classes = useLabelStyles()\n const numericPrice = price ? parseFloat(price.replace(/[^0-9.-]/g, '')) : NaN\n const shouldHidePrice = hidePrice || !price || numericPrice === 0 || isNaN(numericPrice)\n const showSelectedSummary = Boolean(enableSelectedModifierStyles && isSelected && selectedSummary)\n\n return (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n className={classNames({ [classes.label]: !showSelectedSummary, [classes.selectedLabel]: showSelectedSummary })}\n >\n <Box display=\"flex\" alignItems=\"center\" gridGap={8}>\n <Typography\n className={classNames({\n [classes.disabled]: disabled,\n })}\n >\n {name}\n </Typography>\n </Box>\n {!shouldHidePrice && (\n <Typography className={classNames({ [classes.price]: !disabled }, { [classes.disabled]: disabled })}>\n {`+ ${price}`}\n </Typography>\n )}\n {showSelectedSummary && <Typography className={classes.selectedSummary}>{selectedSummary}</Typography>}\n </Box>\n )\n}\n\nconst Options = (props: {\n handleOptionsClick: () => void\n actionLabel: 'OPTIONS' | 'UPDATE'\n hidden?: boolean\n inline?: boolean\n}) => {\n const { handleOptionsClick, actionLabel, hidden = false, inline = false } = props\n const classes = useOptionsStyles()\n const displayActionLabel = inline ? (actionLabel === 'UPDATE' ? 'Update' : 'Options') : actionLabel\n if (hidden) return null\n\n return (\n <Box>\n <Button\n variation=\"none\"\n className={classNames(classes.options, { [classes.inlineOptions]: inline })}\n onClick={handleOptionsClick}\n >\n <Typography variant=\"caption\">{displayActionLabel}</Typography>\n {!inline && <Icon icon={ChevronRight} />}\n </Button>\n </Box>\n )\n}\n\nconst getIsSelected = (modifierId: number, value: ModifierOptionsControlProps['value']) =>\n value.some((modifierValue) => modifierValue.modifierId === modifierId && modifierValue.quantity > 0)\n\nconst getActionLabel = (isSelected: boolean, props: ModifierOptionsControlProps) =>\n props.modifierControlsOptions?.showUpdateButton && isSelected ? 'UPDATE' : 'OPTIONS'\n\nconst shouldHideNestedOptionsButton = (isSelected: boolean, props: ModifierOptionsControlProps) =>\n Boolean(\n props.modifierControlsOptions?.hideNestedOptionsButton ||\n (props.modifierControlsOptions?.enableSelectedModifierStyles && !isSelected),\n )\n\nconst shouldShowInlineAction = (isSelected: boolean, props: ModifierOptionsControlProps) =>\n Boolean(\n isSelected &&\n props.modifierControlsOptions?.enableSelectedModifierStyles &&\n !props.modifierControlsOptions?.hideNestedOptionsButton,\n )\n\nconst getModifierActionState = (\n modifier: Modifier,\n isSelected: boolean,\n props: ModifierOptionsControlProps,\n): {\n isSelected: boolean\n shouldHideNestedOptions: boolean\n showInlineAction: boolean\n actionLabel: 'OPTIONS' | 'UPDATE'\n selectedSummary?: string\n} => ({\n isSelected,\n shouldHideNestedOptions: shouldHideNestedOptionsButton(isSelected, props),\n showInlineAction: shouldShowInlineAction(isSelected, props),\n actionLabel: getActionLabel(isSelected, props),\n selectedSummary: props.modifierControlsOptions?.selectedNestedSummaryByModifierId?.[modifier.id],\n})\n\nconst NestedModifierActions = (props: {\n modifier: Modifier\n handleOptionsClick: (id: number) => void\n state: ReturnType<typeof getModifierActionState>\n renderRegularButton?: boolean\n}) => {\n const { modifier, handleOptionsClick, state, renderRegularButton = true } = props\n const labelClasses = useLabelStyles()\n\n if (!modifier.hasModifiers || modifier.outOfStock) return null\n\n return (\n <>\n {state.showInlineAction && state.selectedSummary && (\n <Box className={labelClasses.selectedSummaryInlineRow}>\n <Box className={labelClasses.selectedSummaryPrimary}>\n <Icon icon={CheckCircle} size=\"medium\" className={labelClasses.selectedSummaryIcon} />\n <Typography variant=\"caption\" className={labelClasses.selectedSummaryPrimaryText}>\n {state.selectedSummary}\n </Typography>\n </Box>\n <Options\n handleOptionsClick={() => handleOptionsClick(modifier.id)}\n actionLabel={state.actionLabel}\n inline\n hidden={state.shouldHideNestedOptions}\n />\n </Box>\n )}\n {renderRegularButton && (\n <Options\n handleOptionsClick={() => handleOptionsClick(modifier.id)}\n actionLabel={state.actionLabel}\n hidden={state.shouldHideNestedOptions || (state.showInlineAction && Boolean(state.selectedSummary))}\n />\n )}\n </>\n )\n}\n\nconst SingleSelectModifierControl = (props: ModifierOptionsControlProps) => {\n const { modifiers, name, isOutOfStock, onChange, value, handleOptionsClick, aggregatePrice, isRequired } = props\n const radioClasses = useRadioModifierFormStyles()\n const makeHandleChange = (modifier: Modifier) => (e: React.ChangeEvent<HTMLInputElement>) => {\n const isModifierInValue = Boolean(value.find((v) => v.modifierId === modifier.id))\n if (!isModifierInValue && modifier.hasModifiers && !props.modifierControlsOptions?.hideNestedOptionsButton) {\n handleOptionsClick(modifier.id)\n }\n\n onChange({\n isRadio: true,\n modifierId: Number(e.target.value),\n groupId: modifier.parentModifierGroupId,\n parentModifierId: modifier.parentModifierGroupItemId,\n price: modifier.price || 0,\n quantity: 1,\n })\n }\n return (\n <FormControl fullWidth>\n <RadioGroup className={radioClasses.radioGroup} aria-label={name}>\n {modifiers.map((modifier) => {\n const modifierActionState = getModifierActionState(modifier, getIsSelected(modifier.id, value), props)\n return (\n <Box key={modifier.id}>\n <FormControlLabel\n key={modifier.id}\n value={modifier.id}\n className={radioClasses.root}\n control={\n <Radio\n checked={value[0]?.modifierId === modifier.id}\n className={classNames({\n [radioClasses.hideRadio]: modifier.outOfStock,\n [radioClasses.radio]: !modifier.outOfStock,\n })}\n disabled={isOutOfStock || modifier.outOfStock}\n onChange={makeHandleChange(modifier)}\n required={isRequired}\n />\n }\n label={\n <Box className={radioClasses.label}>\n <Label\n name={modifier.name}\n price={aggregatePrice[modifier.id] || modifier.formattedPrice}\n disabled={isOutOfStock || modifier.outOfStock}\n hidePrice={modifier.hidePrice}\n isSelected={modifierActionState.isSelected}\n enableSelectedModifierStyles={props.modifierControlsOptions?.enableSelectedModifierStyles}\n selectedSummary={\n modifierActionState.showInlineAction ? undefined : modifierActionState.selectedSummary\n }\n />\n {modifier.outOfStock && (\n <Box minWidth=\"90px\" marginLeft={2}>\n <StatusTag color=\"warning\" label=\"Out of stock\" variant=\"outlined\" size=\"md\" />\n </Box>\n )}\n </Box>\n }\n labelPlacement=\"start\"\n />\n <NestedModifierActions\n modifier={modifier}\n handleOptionsClick={handleOptionsClick}\n state={modifierActionState}\n />\n </Box>\n )\n })}\n </RadioGroup>\n </FormControl>\n )\n}\n\nconst MultipleSelectControl = (props: ModifierOptionsControlProps) => {\n const { modifiers, value, isOutOfStock, onChange, disableNewSelections, handleOptionsClick, aggregatePrice } = props\n const classes = useCheckboxModifierFormStyles()\n const makeHandleChange = (modifier: Modifier) => () => {\n const isModifierInValue = Boolean(value.find((v) => v.modifierId === modifier.id))\n if (!isModifierInValue && modifier.hasModifiers && !props.modifierControlsOptions?.hideNestedOptionsButton) {\n handleOptionsClick(modifier.id)\n }\n\n onChange({\n isRadio: false,\n modifierId: modifier.id,\n groupId: modifier.parentModifierGroupId,\n parentModifierId: modifier.parentModifierGroupItemId,\n price: modifier.price || 0,\n quantity: isModifierInValue ? 0 : 1,\n })\n }\n\n return (\n <FormControl fullWidth>\n <FormGroup className={classes.formGroup}>\n {modifiers.map((modifier) => {\n const modifierActionState = getModifierActionState(modifier, getIsSelected(modifier.id, value), props)\n return (\n <Box key={modifier.id}>\n <FormControlLabel\n key={modifier.id}\n value={modifier.id}\n className={classes.root}\n checked={value.some((v) => v.modifierId === modifier.id)}\n onChange={makeHandleChange(modifier)}\n control={\n <Checkbox\n className={classNames(\n { [classes.hideCheckbox]: modifier.outOfStock },\n { [classes.checkbox]: !modifier.outOfStock },\n )}\n disabled={isOutOfStock || modifier.outOfStock || (!modifier.quantity && disableNewSelections)}\n />\n }\n label={\n <Box className={classes.label}>\n <Label\n name={modifier.name}\n price={aggregatePrice[modifier.id] || modifier.formattedPrice}\n disabled={isOutOfStock || modifier.outOfStock}\n hidePrice={modifier.hidePrice}\n isSelected={modifierActionState.isSelected}\n enableSelectedModifierStyles={props.modifierControlsOptions?.enableSelectedModifierStyles}\n selectedSummary={\n modifierActionState.showInlineAction ? undefined : modifierActionState.selectedSummary\n }\n />\n {modifier.outOfStock && (\n <Box minWidth=\"90px\" marginLeft={2}>\n <StatusTag color=\"warning\" label=\"Out of stock\" variant=\"outlined\" size=\"md\" />\n </Box>\n )}\n </Box>\n }\n labelPlacement=\"start\"\n />\n <NestedModifierActions\n modifier={modifier}\n handleOptionsClick={handleOptionsClick}\n state={modifierActionState}\n />\n </Box>\n )\n })}\n </FormGroup>\n </FormControl>\n )\n}\nconst MultipleQuantitySelectControl = (props: ModifierOptionsControlProps) => {\n const {\n modifiers,\n isOutOfStock,\n onChange,\n disableNewSelections,\n handleOptionsClick,\n selectionQuantity,\n aggregatePrice,\n } = props\n const makeHandleChange = (modifier: Modifier) => (_e: unknown, customEvent: QuantityChangeEvent) => {\n onChange({\n isRadio: false,\n modifierId: modifier.id,\n groupId: modifier.parentModifierGroupId,\n parentModifierId: modifier.parentModifierGroupItemId,\n price: modifier.price || 0,\n quantity: customEvent.quantity,\n })\n }\n return (\n <FormControl fullWidth>\n <FormGroup>\n {modifiers.map((modifier) => {\n const modifierActionState = getModifierActionState(modifier, modifier.quantity > 0, props)\n return (\n <Box key={modifier.id} style={{ justifyContent: 'space-between', flexDirection: 'column' }} display=\"flex\">\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\" width=\"100%\">\n <Label\n name={modifier.name}\n price={aggregatePrice[modifier.id] || modifier.formattedPrice}\n disabled={isOutOfStock || modifier.outOfStock}\n hidePrice={modifier.hidePrice}\n isSelected={modifierActionState.isSelected}\n enableSelectedModifierStyles={props.modifierControlsOptions?.enableSelectedModifierStyles}\n selectedSummary={\n modifierActionState.showInlineAction ? undefined : modifierActionState.selectedSummary\n }\n />\n {modifier.outOfStock && (\n <Box minWidth=\"90px\" marginLeft={2}>\n <StatusTag color=\"warning\" label=\"Out of stock\" variant=\"outlined\" size=\"md\" />\n </Box>\n )}\n {!modifier.outOfStock && (\n <QuantityPicker\n incrementButtonTitle={`Add ${modifier.name}`}\n decrementButtonTitle={`Remove ${modifier.name}`}\n id={`${modifier.id}-quantity-picker`}\n variation=\"modifierCount\"\n value={modifier.quantity}\n disableIncrement={disableNewSelections}\n preventManualChange={true}\n onChange={makeHandleChange(modifier)}\n disabled={isOutOfStock || modifier.outOfStock}\n name={modifier.name}\n />\n )}\n </Box>\n <NestedModifierActions\n modifier={modifier}\n handleOptionsClick={handleOptionsClick}\n state={modifierActionState}\n renderRegularButton={false}\n />\n <Box display=\"flex\" alignItems=\"flex-start\" gridGap={4}>\n {modifier.hasModifiers && !modifier.outOfStock && (\n <Options\n handleOptionsClick={() => handleOptionsClick(modifier.id)}\n actionLabel={modifierActionState.actionLabel}\n hidden={\n modifierActionState.shouldHideNestedOptions ||\n (modifierActionState.showInlineAction && Boolean(modifierActionState.selectedSummary))\n }\n />\n )}\n {selectionQuantity[modifier.id] &&\n selectionQuantity[modifier.id].requiredSelectionCount > 0 &&\n selectionQuantity[modifier.id].requiredSelectionCount !==\n selectionQuantity[modifier.id].currentSelectionCount && (\n <Typography variant=\"caption\" color=\"error\">\n {selectionQuantity[modifier.id].currentSelectionCount}/\n {selectionQuantity[modifier.id].requiredSelectionCount} selected\n </Typography>\n )}\n </Box>\n </Box>\n )\n })}\n </FormGroup>\n </FormControl>\n )\n}\n\nexport const ModifierControls = (props: ModifierOptionsControlProps) => {\n switch (props.type) {\n case 'singleSelect':\n return <SingleSelectModifierControl {...props} />\n case 'multipleSelect':\n return <MultipleSelectControl {...props} />\n case 'multipleQuantitySelect':\n return <MultipleQuantitySelectControl {...props} />\n default:\n return null\n }\n}\n"],"names":["React"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { NestedModsV2DishModifierCardProps } from './DishModifierCardProps';
3
+ export declare const NestedModsV2DishModifierCard: {
4
+ (props: NestedModsV2DishModifierCardProps): React.JSX.Element;
5
+ displayName: string;
6
+ };
@@ -0,0 +1,47 @@
1
+ import { Box, Typography } from '@popmenu/common-ui';
2
+ import React__default from 'react';
3
+ import classNames from 'classnames';
4
+ import { StatusTag } from '../StatusTag/StatusTag.js';
5
+ import { useDishModifierCardStyles } from './DishModifierCard.styles.js';
6
+ import { ModifierControls } from './ModifierControls.js';
7
+
8
+ const getStatusTagProps = (props) => {
9
+ const { messages, error, isRequired, isOutOfStock } = props;
10
+ const { optionalText, outOfStockText, requiredText } = messages;
11
+ let color = 'default';
12
+ switch (true) {
13
+ case error:
14
+ color = 'error';
15
+ break;
16
+ case isOutOfStock:
17
+ color = 'warning';
18
+ break;
19
+ }
20
+ let label = optionalText;
21
+ switch (true) {
22
+ case isOutOfStock:
23
+ label = outOfStockText;
24
+ break;
25
+ case isRequired:
26
+ label = requiredText;
27
+ break;
28
+ }
29
+ const variant = isRequired || isOutOfStock ? 'outlined' : 'filled';
30
+ return { color, label, variant };
31
+ };
32
+ const NestedModsV2DishModifierCard = (props) => {
33
+ const { aggregatePrice, name, disableNewSelections, modifiers, value, messages, onChange, type, error, isOutOfStock, isRequired, handleOptionsClick, selectionQuantity, modifierControlsOptions, disableCardStyle = false, hideName = false, } = props;
34
+ const classes = useDishModifierCardStyles();
35
+ return (React__default.createElement(Box, { className: classNames(classes.root, { [classes.card]: !disableCardStyle }) },
36
+ React__default.createElement(Box, { display: "flex", justifyContent: "space-between", width: "100%", alignItems: "center", height: "fit-content", marginBottom: 2 },
37
+ React__default.createElement(Box, { className: classNames({ [classes.optionalStatusTag]: !isRequired && !isOutOfStock }) },
38
+ React__default.createElement(StatusTag, { ...getStatusTagProps(props) })),
39
+ !isOutOfStock && (React__default.createElement(Typography, { variant: "subtitle1", className: classNames({ [classes.error]: error, [classes.helperText]: !error }) }, messages.helperText))),
40
+ !hideName && (React__default.createElement(Typography, { component: "h3", className: classes.name }, name)),
41
+ React__default.createElement(Box, null,
42
+ 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, modifierControlsOptions: modifierControlsOptions }))));
43
+ };
44
+ NestedModsV2DishModifierCard.displayName = 'NestedModsV2DishModifierCard';
45
+
46
+ export { NestedModsV2DishModifierCard };
47
+ //# sourceMappingURL=NestedModsV2DishModifierCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NestedModsV2DishModifierCard.js","sources":["../../../../src/components/NestedModsV2DishModifierCard/NestedModsV2DishModifierCard.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 { NestedModsV2DishModifierCardProps } from './DishModifierCardProps'\nimport { ModifierControls } from './ModifierControls'\n\nconst getStatusTagProps = (props: NestedModsV2DishModifierCardProps): 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 NestedModsV2DishModifierCard = (props: NestedModsV2DishModifierCardProps) => {\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 modifierControlsOptions,\n disableCardStyle = false,\n hideName = false,\n } = props\n const classes = useDishModifierCardStyles()\n\n return (\n <Box className={classNames(classes.root, { [classes.card]: !disableCardStyle })}>\n <Box\n display=\"flex\"\n justifyContent=\"space-between\"\n width=\"100%\"\n alignItems=\"center\"\n height=\"fit-content\"\n marginBottom={2}\n >\n <Box className={classNames({ [classes.optionalStatusTag]: !isRequired && !isOutOfStock })}>\n <StatusTag {...getStatusTagProps(props)} />\n </Box>\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 {!hideName && (\n <Typography component=\"h3\" className={classes.name}>\n {name}\n </Typography>\n )}\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 modifierControlsOptions={modifierControlsOptions}\n />\n </Box>\n </Box>\n )\n}\n\nNestedModsV2DishModifierCard.displayName = 'NestedModsV2DishModifierCard'\n"],"names":["React"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { NestedModsV2DishModifierCard } from './NestedModsV2DishModifierCard';
2
+ export type { NestedModsV2DishModifierCardProps } from './DishModifierCardProps';
@@ -48,3 +48,7 @@ export { Checkbox } from './Checkbox';
48
48
  export { Radio } from './Radio';
49
49
  export { MenuBanner } from './MenuBanner';
50
50
  export type { MenuBannerProps } from './MenuBanner';
51
+ export { ExpandableModifierGroup } from './ExpandableModifierGroup';
52
+ export type { ExpandableModifierGroupProps } from './ExpandableModifierGroup';
53
+ export { NestedModsV2DishModifierCard } from './NestedModsV2DishModifierCard';
54
+ export type { NestedModsV2DishModifierCardProps } from './NestedModsV2DishModifierCard';
@@ -30,5 +30,7 @@ export { Switch } from './components/Switch/Switch.js';
30
30
  export { Checkbox } from './components/Checkbox/Checkbox.js';
31
31
  export { Radio } from './components/Radio/Radio.js';
32
32
  export { MenuBanner } from './components/MenuBanner/MenuBanner.js';
33
+ export { ExpandableModifierGroup } from './components/ExpandableModifierGroup/ExpandableModifierGroup.js';
34
+ export { NestedModsV2DishModifierCard } from './components/NestedModsV2DishModifierCard/NestedModsV2DishModifierCard.js';
33
35
  export { orderingTheme } from './theme/theme.js';
34
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popmenu/ordering-ui",
3
- "version": "0.152.0",
3
+ "version": "0.154.0",
4
4
  "license": "MIT",
5
5
  "author": "Popmenu Design System Team",
6
6
  "description": "React components specifically for the popmenu Online Ordering web app.",
@@ -32,5 +32,5 @@
32
32
  "react": "18.x || 19.x"
33
33
  },
34
34
  "sideEffects": false,
35
- "gitHead": "befcac06eaf85377080f4455bc1e7fe253b9f453"
35
+ "gitHead": "5a7633f43ac0b6a3af67866a1d2467143fb7a946"
36
36
  }