@wix/headless-restaurants-olo 0.0.62 → 0.0.63
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/cjs/dist/services/utils.d.ts +17 -0
- package/cjs/dist/services/utils.js +20 -8
- package/dist/services/utils.d.ts +17 -0
- package/dist/services/utils.js +18 -7
- package/package.json +2 -2
|
@@ -11,6 +11,7 @@ export declare const getFirstPreSelectedModifier: (modifiers: EnhancedModifier[]
|
|
|
11
11
|
export declare const getPreSelectedModifiers: (modifiers: EnhancedModifier[]) => string[];
|
|
12
12
|
export declare const convertModifierToFormModifier: (modifier: EnhancedModifier, index: number) => {
|
|
13
13
|
_id: string;
|
|
14
|
+
modifierId: string | null | undefined;
|
|
14
15
|
revision?: string | null;
|
|
15
16
|
_createdDate?: Date | null;
|
|
16
17
|
_updatedDate?: Date | null;
|
|
@@ -40,6 +41,22 @@ export declare const getModifierGroupErrors: (selectedModifiers: Record<string,
|
|
|
40
41
|
hasError: boolean;
|
|
41
42
|
};
|
|
42
43
|
export declare const getAreNotEnoughModifiersOfMandatoryModifierGroupInStock: (modifierGroups: EnhancedModifierGroup[]) => boolean;
|
|
44
|
+
export declare const findModifierByFormId: (modifierGroup: EnhancedModifierGroup | undefined, selectedModifierId: string) => {
|
|
45
|
+
_id: string;
|
|
46
|
+
modifierId: string | null | undefined;
|
|
47
|
+
revision?: string | null;
|
|
48
|
+
_createdDate?: Date | null;
|
|
49
|
+
_updatedDate?: Date | null;
|
|
50
|
+
name?: string | null;
|
|
51
|
+
extendedFields?: import("@wix/auto_sdk_restaurants_item-modifiers").ExtendedFields;
|
|
52
|
+
inStock?: boolean | null;
|
|
53
|
+
businessLocationIds?: string[];
|
|
54
|
+
additionalChargeInfo?: {
|
|
55
|
+
additionalCharge?: string;
|
|
56
|
+
formattedAdditionalCharge?: string;
|
|
57
|
+
};
|
|
58
|
+
preSelected?: boolean;
|
|
59
|
+
} | undefined;
|
|
43
60
|
export declare const getLineItemModifiers: (selectedModifiers: Record<string, Array<string>>, modifierGroups: EnhancedModifierGroup[], formatCurrency: (price?: number) => string) => {
|
|
44
61
|
id: string;
|
|
45
62
|
modifiers: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAvailabilityText = exports.calculateItemPrice = exports.getSelectedVariantPrice = exports.getSelectedModifierPrices = exports.getPriceVariantOptions = exports.getLineItemModifiers = exports.getAreNotEnoughModifiersOfMandatoryModifierGroupInStock = exports.getModifierGroupErrors = exports.checkModifiersValidation = exports.getRuleTypeMapValue = exports.hasToChooseBetweenXAndY = exports.chooseUpToX = exports.hasToChooseAtLeastX = exports.hasToChooseAtLeastOne = exports.hasToChooseX = exports.hasToChooseOne = exports.canChooseOne = exports.hasNoLimit = exports.getModifierGroupRuleType = exports.convertModifierToFormModifier = exports.getPreSelectedModifiers = exports.getFirstPreSelectedModifier = exports.isSingleSelectRule = exports.getModifiersInitState = void 0;
|
|
3
|
+
exports.getAvailabilityText = exports.calculateItemPrice = exports.getSelectedVariantPrice = exports.getSelectedModifierPrices = exports.getPriceVariantOptions = exports.getLineItemModifiers = exports.findModifierByFormId = exports.getAreNotEnoughModifiersOfMandatoryModifierGroupInStock = exports.getModifierGroupErrors = exports.checkModifiersValidation = exports.getRuleTypeMapValue = exports.hasToChooseBetweenXAndY = exports.chooseUpToX = exports.hasToChooseAtLeastX = exports.hasToChooseAtLeastOne = exports.hasToChooseX = exports.hasToChooseOne = exports.canChooseOne = exports.hasNoLimit = exports.getModifierGroupRuleType = exports.convertModifierToFormModifier = exports.getPreSelectedModifiers = exports.getFirstPreSelectedModifier = exports.isSingleSelectRule = exports.getModifiersInitState = void 0;
|
|
4
4
|
const common_types_js_1 = require("./common-types.js");
|
|
5
5
|
const getModifiersInitState = (modifierGroups, editingItemMode, editItemSelectedModifiers) => {
|
|
6
6
|
const initialSelectedModifiers = {};
|
|
@@ -42,9 +42,13 @@ const getPreSelectedModifiers = (modifiers) => modifiers.reduce((acc, modifier)
|
|
|
42
42
|
}, []);
|
|
43
43
|
exports.getPreSelectedModifiers = getPreSelectedModifiers;
|
|
44
44
|
const convertModifierToFormModifier = (modifier, index) => {
|
|
45
|
+
// Give each modifier a unique form id so duplicate-id modifiers stay
|
|
46
|
+
// distinct in the UI/selection state, while keeping the original id in
|
|
47
|
+
// `modifierId` so it can be read back without parsing the form id.
|
|
45
48
|
return {
|
|
46
49
|
...modifier,
|
|
47
50
|
_id: `${modifier._id}~${index}`,
|
|
51
|
+
modifierId: modifier._id,
|
|
48
52
|
};
|
|
49
53
|
};
|
|
50
54
|
exports.convertModifierToFormModifier = convertModifierToFormModifier;
|
|
@@ -198,6 +202,17 @@ const getAreNotEnoughModifiersOfMandatoryModifierGroupInStock = (modifierGroups)
|
|
|
198
202
|
return isModifierGroupMandatory && !areMinimumRequiredModifiersInStock;
|
|
199
203
|
});
|
|
200
204
|
exports.getAreNotEnoughModifiersOfMandatoryModifierGroupInStock = getAreNotEnoughModifiersOfMandatoryModifierGroupInStock;
|
|
205
|
+
// Resolve the selected modifier from a group. Selection state holds unique
|
|
206
|
+
// form ids (`${_id}~${index}`, see convertModifierToFormModifier), so we match
|
|
207
|
+
// the converted form modifiers by their unique `_id` — this keeps duplicate-id
|
|
208
|
+
// modifiers distinct and avoids parsing the id. Falls back to matching the
|
|
209
|
+
// original `modifierId` for edit-mode selections that are restored as base ids.
|
|
210
|
+
const findModifierByFormId = (modifierGroup, selectedModifierId) => {
|
|
211
|
+
const formModifiers = modifierGroup?.modifiers.map(exports.convertModifierToFormModifier);
|
|
212
|
+
return (formModifiers?.find((mod) => mod._id === selectedModifierId) ??
|
|
213
|
+
formModifiers?.find((mod) => mod.modifierId === selectedModifierId));
|
|
214
|
+
};
|
|
215
|
+
exports.findModifierByFormId = findModifierByFormId;
|
|
201
216
|
const getLineItemModifiers = (selectedModifiers, modifierGroups, formatCurrency) => {
|
|
202
217
|
const modifierGroupsOptions = modifierGroups
|
|
203
218
|
.map((modifierGroup) => {
|
|
@@ -207,13 +222,12 @@ const getLineItemModifiers = (selectedModifiers, modifierGroups, formatCurrency)
|
|
|
207
222
|
}
|
|
208
223
|
const modifiers = selectedModifierIds
|
|
209
224
|
.map((modifierIdWithIndex) => {
|
|
210
|
-
const
|
|
211
|
-
const modifier = modifierGroup.modifiers.find((mod) => mod._id === baseModifierId);
|
|
225
|
+
const modifier = (0, exports.findModifierByFormId)(modifierGroup, modifierIdWithIndex);
|
|
212
226
|
if (!modifier)
|
|
213
227
|
return null;
|
|
214
228
|
const price = Number(modifier?.additionalChargeInfo?.additionalCharge ?? 0);
|
|
215
229
|
return {
|
|
216
|
-
id: modifier.
|
|
230
|
+
id: modifier.modifierId ?? '',
|
|
217
231
|
price: modifier?.additionalChargeInfo?.additionalCharge,
|
|
218
232
|
formattedPrice: price > 0 ? formatCurrency(price) : undefined,
|
|
219
233
|
};
|
|
@@ -248,11 +262,9 @@ const getPriceVariantOptions = (selectedPriceVariant, formatCurrency) => {
|
|
|
248
262
|
exports.getPriceVariantOptions = getPriceVariantOptions;
|
|
249
263
|
const getSelectedModifierPrices = (selectedModifiers, modifierGroups) => {
|
|
250
264
|
return Object.entries(selectedModifiers).reduce((total, [modifierGroupId, modifierIds]) => {
|
|
265
|
+
const group = modifierGroups.find((g) => g._id === modifierGroupId);
|
|
251
266
|
const groupTotal = modifierIds.reduce((groupSum, modifierId) => {
|
|
252
|
-
const
|
|
253
|
-
const modifier = modifierGroups
|
|
254
|
-
.find((group) => group._id === modifierGroupId)
|
|
255
|
-
?.modifiers.find((mod) => mod._id === baseModifierId);
|
|
267
|
+
const modifier = (0, exports.findModifierByFormId)(group, modifierId);
|
|
256
268
|
return (groupSum +
|
|
257
269
|
Number(modifier?.additionalChargeInfo?.additionalCharge ?? 0));
|
|
258
270
|
}, 0);
|
package/dist/services/utils.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare const getFirstPreSelectedModifier: (modifiers: EnhancedModifier[]
|
|
|
11
11
|
export declare const getPreSelectedModifiers: (modifiers: EnhancedModifier[]) => string[];
|
|
12
12
|
export declare const convertModifierToFormModifier: (modifier: EnhancedModifier, index: number) => {
|
|
13
13
|
_id: string;
|
|
14
|
+
modifierId: string | null | undefined;
|
|
14
15
|
revision?: string | null;
|
|
15
16
|
_createdDate?: Date | null;
|
|
16
17
|
_updatedDate?: Date | null;
|
|
@@ -40,6 +41,22 @@ export declare const getModifierGroupErrors: (selectedModifiers: Record<string,
|
|
|
40
41
|
hasError: boolean;
|
|
41
42
|
};
|
|
42
43
|
export declare const getAreNotEnoughModifiersOfMandatoryModifierGroupInStock: (modifierGroups: EnhancedModifierGroup[]) => boolean;
|
|
44
|
+
export declare const findModifierByFormId: (modifierGroup: EnhancedModifierGroup | undefined, selectedModifierId: string) => {
|
|
45
|
+
_id: string;
|
|
46
|
+
modifierId: string | null | undefined;
|
|
47
|
+
revision?: string | null;
|
|
48
|
+
_createdDate?: Date | null;
|
|
49
|
+
_updatedDate?: Date | null;
|
|
50
|
+
name?: string | null;
|
|
51
|
+
extendedFields?: import("@wix/auto_sdk_restaurants_item-modifiers").ExtendedFields;
|
|
52
|
+
inStock?: boolean | null;
|
|
53
|
+
businessLocationIds?: string[];
|
|
54
|
+
additionalChargeInfo?: {
|
|
55
|
+
additionalCharge?: string;
|
|
56
|
+
formattedAdditionalCharge?: string;
|
|
57
|
+
};
|
|
58
|
+
preSelected?: boolean;
|
|
59
|
+
} | undefined;
|
|
43
60
|
export declare const getLineItemModifiers: (selectedModifiers: Record<string, Array<string>>, modifierGroups: EnhancedModifierGroup[], formatCurrency: (price?: number) => string) => {
|
|
44
61
|
id: string;
|
|
45
62
|
modifiers: {
|
package/dist/services/utils.js
CHANGED
|
@@ -35,9 +35,13 @@ export const getPreSelectedModifiers = (modifiers) => modifiers.reduce((acc, mod
|
|
|
35
35
|
return acc;
|
|
36
36
|
}, []);
|
|
37
37
|
export const convertModifierToFormModifier = (modifier, index) => {
|
|
38
|
+
// Give each modifier a unique form id so duplicate-id modifiers stay
|
|
39
|
+
// distinct in the UI/selection state, while keeping the original id in
|
|
40
|
+
// `modifierId` so it can be read back without parsing the form id.
|
|
38
41
|
return {
|
|
39
42
|
...modifier,
|
|
40
43
|
_id: `${modifier._id}~${index}`,
|
|
44
|
+
modifierId: modifier._id,
|
|
41
45
|
};
|
|
42
46
|
};
|
|
43
47
|
export const getModifierGroupRuleType = (modifierGroupRule) => {
|
|
@@ -177,6 +181,16 @@ export const getAreNotEnoughModifiersOfMandatoryModifierGroupInStock = (modifier
|
|
|
177
181
|
const areMinimumRequiredModifiersInStock = inStockModifiers.length >= minimumRequiredModifiers;
|
|
178
182
|
return isModifierGroupMandatory && !areMinimumRequiredModifiersInStock;
|
|
179
183
|
});
|
|
184
|
+
// Resolve the selected modifier from a group. Selection state holds unique
|
|
185
|
+
// form ids (`${_id}~${index}`, see convertModifierToFormModifier), so we match
|
|
186
|
+
// the converted form modifiers by their unique `_id` — this keeps duplicate-id
|
|
187
|
+
// modifiers distinct and avoids parsing the id. Falls back to matching the
|
|
188
|
+
// original `modifierId` for edit-mode selections that are restored as base ids.
|
|
189
|
+
export const findModifierByFormId = (modifierGroup, selectedModifierId) => {
|
|
190
|
+
const formModifiers = modifierGroup?.modifiers.map(convertModifierToFormModifier);
|
|
191
|
+
return (formModifiers?.find((mod) => mod._id === selectedModifierId) ??
|
|
192
|
+
formModifiers?.find((mod) => mod.modifierId === selectedModifierId));
|
|
193
|
+
};
|
|
180
194
|
export const getLineItemModifiers = (selectedModifiers, modifierGroups, formatCurrency) => {
|
|
181
195
|
const modifierGroupsOptions = modifierGroups
|
|
182
196
|
.map((modifierGroup) => {
|
|
@@ -186,13 +200,12 @@ export const getLineItemModifiers = (selectedModifiers, modifierGroups, formatCu
|
|
|
186
200
|
}
|
|
187
201
|
const modifiers = selectedModifierIds
|
|
188
202
|
.map((modifierIdWithIndex) => {
|
|
189
|
-
const
|
|
190
|
-
const modifier = modifierGroup.modifiers.find((mod) => mod._id === baseModifierId);
|
|
203
|
+
const modifier = findModifierByFormId(modifierGroup, modifierIdWithIndex);
|
|
191
204
|
if (!modifier)
|
|
192
205
|
return null;
|
|
193
206
|
const price = Number(modifier?.additionalChargeInfo?.additionalCharge ?? 0);
|
|
194
207
|
return {
|
|
195
|
-
id: modifier.
|
|
208
|
+
id: modifier.modifierId ?? '',
|
|
196
209
|
price: modifier?.additionalChargeInfo?.additionalCharge,
|
|
197
210
|
formattedPrice: price > 0 ? formatCurrency(price) : undefined,
|
|
198
211
|
};
|
|
@@ -225,11 +238,9 @@ export const getPriceVariantOptions = (selectedPriceVariant, formatCurrency) =>
|
|
|
225
238
|
};
|
|
226
239
|
export const getSelectedModifierPrices = (selectedModifiers, modifierGroups) => {
|
|
227
240
|
return Object.entries(selectedModifiers).reduce((total, [modifierGroupId, modifierIds]) => {
|
|
241
|
+
const group = modifierGroups.find((g) => g._id === modifierGroupId);
|
|
228
242
|
const groupTotal = modifierIds.reduce((groupSum, modifierId) => {
|
|
229
|
-
const
|
|
230
|
-
const modifier = modifierGroups
|
|
231
|
-
.find((group) => group._id === modifierGroupId)
|
|
232
|
-
?.modifiers.find((mod) => mod._id === baseModifierId);
|
|
243
|
+
const modifier = findModifierByFormId(group, modifierId);
|
|
233
244
|
return (groupSum +
|
|
234
245
|
Number(modifier?.additionalChargeInfo?.additionalCharge ?? 0));
|
|
235
246
|
}, 0);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/headless-restaurants-olo",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.63",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -81,5 +81,5 @@
|
|
|
81
81
|
"groupId": "com.wixpress.headless-components"
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
|
-
"falconPackageHash": "
|
|
84
|
+
"falconPackageHash": "7b2dc448774c9f7997e48a6683f7290b40c6ab6d0ced934655719da7"
|
|
85
85
|
}
|