ublo-lib 1.37.0 → 1.37.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/es/common/components/cross-selling-editor/hooks/use-custom-offers.d.ts.map +1 -1
- package/es/common/components/cross-selling-editor/hooks/use-custom-offers.js +5 -4
- package/es/common/components/cross-selling-editor/hooks/use-tunnel-offers.js +4 -4
- package/es/common/components/cross-selling-editor/override-trigger-form.d.ts.map +1 -1
- package/es/common/components/cross-selling-editor/override-trigger-form.js +4 -2
- package/es/common/components/cross-selling-editor/override-trigger-form.module.css +1 -0
- package/es/common/components/cross-selling-editor/services/utils.d.ts +5 -2
- package/es/common/components/cross-selling-editor/services/utils.d.ts.map +1 -1
- package/es/common/components/cross-selling-editor/services/utils.js +48 -8
- package/es/common/components/cross-selling-editor/tester/tunnel-offer.d.ts.map +1 -1
- package/es/common/components/cross-selling-editor/tester/tunnel-offer.js +1 -1
- package/es/common/components/cross-selling-editor/types.d.ts +1 -0
- package/es/common/components/cross-selling-editor/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-custom-offers.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/cross-selling-editor/hooks/use-custom-offers.ts"],"names":[],"mappings":"AAKA,KAAK,KAAK,GAAG;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,aAAa,EACb,eAAe,GAChB,GAAE,KAAU,
|
|
1
|
+
{"version":3,"file":"use-custom-offers.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/cross-selling-editor/hooks/use-custom-offers.ts"],"names":[],"mappings":"AAKA,KAAK,KAAK,GAAG;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,aAAa,EACb,eAAe,GAChB,GAAE,KAAU,UAoEZ"}
|
|
@@ -15,6 +15,7 @@ export default function useCustomOffers({ titleSelector, contentSelector, } = {}
|
|
|
15
15
|
let stay = {};
|
|
16
16
|
let skiPassDurations = [];
|
|
17
17
|
let durationTags = [];
|
|
18
|
+
let ellohaGroups = [];
|
|
18
19
|
let esfOffersContent = [];
|
|
19
20
|
if (cartId) {
|
|
20
21
|
try {
|
|
@@ -22,10 +23,9 @@ export default function useCustomOffers({ titleSelector, contentSelector, } = {}
|
|
|
22
23
|
items = Utils.formatCartContent(cart);
|
|
23
24
|
merchants = Utils.getMerchantsFromCart(cart);
|
|
24
25
|
stay = Utils.getStayFromCart(cart);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
]);
|
|
26
|
+
skiPassDurations = Utils.getSkiPassDurationFromCart(cart);
|
|
27
|
+
durationTags = Utils.getDurationTagsFromCart(cart);
|
|
28
|
+
ellohaGroups = Utils.getEllohaGroupsFromCart(cart);
|
|
29
29
|
esfOffersContent = Utils.getEsfOffersFromCart(cart);
|
|
30
30
|
}
|
|
31
31
|
catch (e) { }
|
|
@@ -36,6 +36,7 @@ export default function useCustomOffers({ titleSelector, contentSelector, } = {}
|
|
|
36
36
|
stay,
|
|
37
37
|
skiPassDurations,
|
|
38
38
|
durationTags,
|
|
39
|
+
ellohaGroups,
|
|
39
40
|
esfOffersContent,
|
|
40
41
|
};
|
|
41
42
|
const storedConfig = Utils.getConfig(contentZone);
|
|
@@ -14,10 +14,9 @@ export default function useTunnelOffers(zone, path, cart) {
|
|
|
14
14
|
const items = Utils.formatCartContent(cart);
|
|
15
15
|
const merchants = Utils.getMerchantsFromCart(cart);
|
|
16
16
|
const stay = Utils.getStayFromCart(cart);
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
]);
|
|
17
|
+
const skiPassDurations = Utils.getSkiPassDurationFromCart(cart);
|
|
18
|
+
const durationTags = Utils.getDurationTagsFromCart(cart);
|
|
19
|
+
const ellohaGroups = Utils.getEllohaGroupsFromCart(cart);
|
|
21
20
|
const esfOffersContent = Utils.getEsfOffersFromCart(cart);
|
|
22
21
|
const content = {
|
|
23
22
|
items,
|
|
@@ -25,6 +24,7 @@ export default function useTunnelOffers(zone, path, cart) {
|
|
|
25
24
|
stay,
|
|
26
25
|
skiPassDurations,
|
|
27
26
|
durationTags,
|
|
27
|
+
ellohaGroups,
|
|
28
28
|
esfOffersContent,
|
|
29
29
|
};
|
|
30
30
|
const storedConfig = Utils.getConfig(container);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"override-trigger-form.d.ts","sourceRoot":"","sources":["../../../../src/common/components/cross-selling-editor/override-trigger-form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEtE,KAAK,KAAK,GAAG;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,SAAS,GACV,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"override-trigger-form.d.ts","sourceRoot":"","sources":["../../../../src/common/components/cross-selling-editor/override-trigger-form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEtE,KAAK,KAAK,GAAG;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,SAAS,GACV,EAAE,KAAK,2CA6KP"}
|
|
@@ -7,7 +7,9 @@ import Tooltip from "dt-design-system/es/tooltip";
|
|
|
7
7
|
import NumberPicker from "dt-design-system/es/number-picker";
|
|
8
8
|
export default function OverrideTriggerForm({ currentOffer, override, setConfig, durations, }) {
|
|
9
9
|
const triggers = override?.triggers || {};
|
|
10
|
-
const
|
|
10
|
+
const isOtherProducts = currentOffer === "STAND";
|
|
11
|
+
const isSkiPasses = currentOffer === "LIFT";
|
|
12
|
+
const { stayFrom, stayTo, stayDuration = 0, merchant, skiPassDuration, skiPassDurationOperator = ">", durationTag, ellohaGroup, } = triggers;
|
|
11
13
|
const updateEntry = (key, value) => {
|
|
12
14
|
setConfig((config = {}) => {
|
|
13
15
|
const itemConfig = (config[currentOffer] || {});
|
|
@@ -50,5 +52,5 @@ export default function OverrideTriggerForm({ currentOffer, override, setConfig,
|
|
|
50
52
|
{ value: "<=", label: "Inférieur ou égal à" },
|
|
51
53
|
{ value: "=", label: "Égal à" },
|
|
52
54
|
];
|
|
53
|
-
return (_jsxs("form", { className: styles.form, onSubmit: submitForm, onClick: stopPropagation, children: [_jsx("div", { className: styles.title, children: "D\u00E9clencheur(s)" }), _jsx("div", { className: styles.subTitle, children: "S\u00E9jour" }), _jsx(Input, { className: styles.input, type: "date", label: "Inclu entre", value: stayFrom || "", onValueChange: (value) => updateEntry("stayFrom", value), compact: true }), _jsx(Input, { className: styles.input, type: "date", label: "et", value: stayTo || "", onValueChange: (value) => updateEntry("stayTo", value), compact: true }), _jsx(NumberPicker, { label: _jsxs(_Fragment, { children: ["Nombre de jour(s)", _jsx(Tooltip, { content: "S\u00E9jour d'une dur\u00E9e sup\u00E9rieur ou \u00E9gal \u00E0...", children: _jsx("span", { className: styles.labelIconContainer, children: _jsx(Icons.Info, { className: styles.labelIcon }) }) })] }), min: 0, max: 40, value: stayDuration || 0, onChange: (value) => updateEntry("stayDuration", value), withInput: true, compact: true }), _jsx("div", { className: styles.subTitle, children: "G\u00E9n\u00E9ral" }), _jsx(Input, { className: styles.input, label: _jsxs(_Fragment, { children: ["Code(s) marchand(s)", _jsx(Tooltip, { content: "Si plusieurs codes marchands, les s\u00E9parer par une virgule", children: _jsx("span", { className: styles.labelIconContainer, children: _jsx(Icons.Info, { className: styles.labelIcon }) }) })] }), value: merchant || "", onValueChange: (value) => updateEntry("merchant", value), compact: true }), _jsx("div", { className: styles.subTitle, children: "Forfaits" }), _jsx(NumberPicker, { className: styles.input, label: "Dur\u00E9e", min: 0, max: 40, value: skiPassDuration || 0, onChange: (value) => updateEntry("skiPassDuration", value), withInput: true, compact: true }), _jsx(Select, { className: styles.input, label: "Op\u00E9rateur de comparaison", options: operatorOptions, value: skiPassDurationOperator || ">", onValueChange: (value) => updateEntry("skiPassDurationOperator", value), compact: true }), durations && (_jsx(Select, { className: styles.input, label: durations?.title, placeholder: " ", options: durations?.tags, value: durationTag || "", onValueChange: (value) => updateEntry("durationTag", value), compact: true }))] }));
|
|
55
|
+
return (_jsxs("form", { className: styles.form, onSubmit: submitForm, onClick: stopPropagation, children: [_jsx("div", { className: styles.title, children: "D\u00E9clencheur(s)" }), _jsx("div", { className: styles.subTitle, children: "S\u00E9jour" }), _jsx(Input, { className: styles.input, type: "date", label: "Inclu entre", value: stayFrom || "", onValueChange: (value) => updateEntry("stayFrom", value), compact: true }), _jsx(Input, { className: styles.input, type: "date", label: "et", value: stayTo || "", onValueChange: (value) => updateEntry("stayTo", value), compact: true }), _jsx(NumberPicker, { label: _jsxs(_Fragment, { children: ["Nombre de jour(s)", _jsx(Tooltip, { content: "S\u00E9jour d'une dur\u00E9e sup\u00E9rieur ou \u00E9gal \u00E0...", children: _jsx("span", { className: styles.labelIconContainer, children: _jsx(Icons.Info, { className: styles.labelIcon }) }) })] }), min: 0, max: 40, value: stayDuration || 0, onChange: (value) => updateEntry("stayDuration", value), withInput: true, compact: true }), _jsx("div", { className: styles.subTitle, children: "G\u00E9n\u00E9ral" }), _jsx(Input, { className: styles.input, label: _jsxs(_Fragment, { children: ["Code(s) marchand(s)", _jsx(Tooltip, { content: "Si plusieurs codes marchands, les s\u00E9parer par une virgule", children: _jsx("span", { className: styles.labelIconContainer, children: _jsx(Icons.Info, { className: styles.labelIcon }) }) })] }), value: merchant || "", onValueChange: (value) => updateEntry("merchant", value), compact: true }), isSkiPasses && (_jsxs(_Fragment, { children: [_jsx("div", { className: styles.subTitle, children: "Forfaits" }), _jsx(NumberPicker, { className: styles.input, label: "Dur\u00E9e", min: 0, max: 40, value: skiPassDuration || 0, onChange: (value) => updateEntry("skiPassDuration", value), withInput: true, compact: true }), _jsx(Select, { className: styles.input, label: "Op\u00E9rateur de comparaison", options: operatorOptions, value: skiPassDurationOperator || ">", onValueChange: (value) => updateEntry("skiPassDurationOperator", value), compact: true }), durations && (_jsx(Select, { className: styles.input, label: durations?.title, placeholder: " ", options: durations?.tags, value: durationTag || "", onValueChange: (value) => updateEntry("durationTag", value), compact: true }))] })), isOtherProducts && (_jsxs(_Fragment, { children: [_jsx("div", { className: styles.subTitle, children: "Activit\u00E9s Elloha" }), _jsx(Input, { className: styles.input, label: "Groupe", value: ellohaGroup || "", onValueChange: (value) => updateEntry("ellohaGroup", value), compact: true })] }))] }));
|
|
54
56
|
}
|
|
@@ -10,6 +10,7 @@ type CartContent = {
|
|
|
10
10
|
stay?: Stay;
|
|
11
11
|
skiPassDurations?: number[];
|
|
12
12
|
durationTags?: string[];
|
|
13
|
+
ellohaGroups?: string[];
|
|
13
14
|
esfOffersContent?: EsfOffersContent[];
|
|
14
15
|
};
|
|
15
16
|
export declare const tunnelOffers: {
|
|
@@ -33,6 +34,7 @@ export declare function hasAllowedOverrides(kind: string): boolean;
|
|
|
33
34
|
type Inscription = {
|
|
34
35
|
duration: string;
|
|
35
36
|
durationTags?: string[];
|
|
37
|
+
categoryGroupCode?: string;
|
|
36
38
|
codes: EsfOffersContent;
|
|
37
39
|
};
|
|
38
40
|
type Order = {
|
|
@@ -55,8 +57,9 @@ export declare function getStayFromCart(cart: Cart): {
|
|
|
55
57
|
to: string;
|
|
56
58
|
duration: number;
|
|
57
59
|
};
|
|
58
|
-
export declare function getSkiPassDurationFromCart(cart: Cart):
|
|
59
|
-
export declare function getDurationTagsFromCart(cart: Cart):
|
|
60
|
+
export declare function getSkiPassDurationFromCart(cart: Cart): number[];
|
|
61
|
+
export declare function getDurationTagsFromCart(cart: Cart): string[];
|
|
62
|
+
export declare function getEllohaGroupsFromCart(cart: Cart): string[];
|
|
60
63
|
export declare function getEsfOffersFromCart(cart: Cart): EsfOffersContent[];
|
|
61
64
|
export declare const CONFIG_ID = "cross-selling-editor";
|
|
62
65
|
export declare function getConfig(container: HTMLElement): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/cross-selling-editor/services/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAa,MAAM,UAAU,CAAC;AAE9E,KAAK,IAAI,GAAG;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;CAOxB,CAAC;AAEF,KAAK,QAAQ,GAAG,MAAM,OAAO,YAAY,CAAC;AAE1C,wBAAgB,eAAe,CAC7B,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM;;;;;IA6D3B;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,GAAG,QAAQ,EACtB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM,YAoB3B;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/cross-selling-editor/services/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAa,MAAM,UAAU,CAAC;AAE9E,KAAK,IAAI,GAAG;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;CAOxB,CAAC;AAEF,KAAK,QAAQ,GAAG,MAAM,OAAO,YAAY,CAAC;AAE1C,wBAAgB,eAAe,CAC7B,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM;;;;;IA6D3B;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,GAAG,QAAQ,EACtB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM,YAoB3B;AAkKD,eAAO,MAAM,gBAAgB,UAAgD,CAAC;AAE9E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,WAE/C;AAED,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,KAAK,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AAE/D,KAAK,IAAI,GAAG;IACV,MAAM,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,MAY3C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,YAS9C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI;;;;;;;;EAMzC;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,YAKpD;AAcD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,YAQjD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,YAMjD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,gBAAgB,EAAE,CAUnE;AAED,eAAO,MAAM,SAAS,yBAAyB,CAAC;AAEhD,wBAAgB,SAAS,CAAC,SAAS,EAAE,WAAW,OAc/C;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAOlE"}
|
|
@@ -57,17 +57,32 @@ function getMatchingOverrides(item, cartContent, forcedEsfOverride) {
|
|
|
57
57
|
return [];
|
|
58
58
|
const { overrides = [] } = item;
|
|
59
59
|
const matchs = overrides.reduce((acc, override) => {
|
|
60
|
-
const { stay, merchants, skiPassDurations = [], durationTags, esfOffersContent, } = cartContent;
|
|
60
|
+
const { stay, merchants, skiPassDurations = [], durationTags, ellohaGroups, esfOffersContent, } = cartContent;
|
|
61
61
|
const isStayMatching = checkStay(override, stay);
|
|
62
62
|
const isMerchantMatching = checkMerchants(override, merchants);
|
|
63
63
|
const isSkiPassDurationMatching = checkSkiPassDurations(override, skiPassDurations);
|
|
64
64
|
const isDurationTagMatching = checkDurationTags(override, durationTags);
|
|
65
|
+
const isEllohaGroupMatching = checkEllohaGroup(override, ellohaGroups);
|
|
65
66
|
const isEsfProductMatching = checkEsfProduct(override, esfOffersContent, forcedEsfOverride);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
let isMatching = false;
|
|
68
|
+
if (merchants?.length > 0) {
|
|
69
|
+
isMatching = isMerchantMatching;
|
|
70
|
+
}
|
|
71
|
+
if (isMatching && durationTags?.length > 0) {
|
|
72
|
+
isMatching = isDurationTagMatching;
|
|
73
|
+
}
|
|
74
|
+
if (isMatching && ellohaGroups?.length > 0) {
|
|
75
|
+
isMatching = isEllohaGroupMatching;
|
|
76
|
+
}
|
|
77
|
+
if (isMatching && skiPassDurations?.length > 0) {
|
|
78
|
+
isMatching = isSkiPassDurationMatching;
|
|
79
|
+
}
|
|
80
|
+
if (isMatching && esfOffersContent?.length > 0) {
|
|
81
|
+
isMatching = isEsfProductMatching;
|
|
82
|
+
}
|
|
83
|
+
if (isMatching && stay) {
|
|
84
|
+
isMatching = isStayMatching;
|
|
85
|
+
}
|
|
71
86
|
return isMatching ? [...acc, override.id] : acc;
|
|
72
87
|
}, []);
|
|
73
88
|
return matchs;
|
|
@@ -124,6 +139,14 @@ function checkDurationTags(override, durationTags) {
|
|
|
124
139
|
return false;
|
|
125
140
|
return durationTags.includes(durationTag);
|
|
126
141
|
}
|
|
142
|
+
function checkEllohaGroup(override, ellohaGroups) {
|
|
143
|
+
if (!ellohaGroups)
|
|
144
|
+
return false;
|
|
145
|
+
const { ellohaGroup } = override.triggers || {};
|
|
146
|
+
if (!ellohaGroup)
|
|
147
|
+
return false;
|
|
148
|
+
return ellohaGroups.includes(ellohaGroup);
|
|
149
|
+
}
|
|
127
150
|
function checkEsfProduct(override, esfOffersContent, forcedEsfOverride) {
|
|
128
151
|
if (!esfOffersContent)
|
|
129
152
|
return false;
|
|
@@ -181,7 +204,7 @@ export function getStayFromCart(cart) {
|
|
|
181
204
|
const duration = bareDuration / (1000 * 3600 * 24);
|
|
182
205
|
return { from, to, duration };
|
|
183
206
|
}
|
|
184
|
-
export
|
|
207
|
+
export function getSkiPassDurationFromCart(cart) {
|
|
185
208
|
const { LIFT: items } = cart.orders;
|
|
186
209
|
if (!items?.length)
|
|
187
210
|
return [];
|
|
@@ -198,7 +221,7 @@ function patchDuration(duration) {
|
|
|
198
221
|
}
|
|
199
222
|
return 1;
|
|
200
223
|
}
|
|
201
|
-
export
|
|
224
|
+
export function getDurationTagsFromCart(cart) {
|
|
202
225
|
const { LIFT: items } = cart.orders;
|
|
203
226
|
if (!items?.length)
|
|
204
227
|
return [];
|
|
@@ -208,6 +231,14 @@ export async function getDurationTagsFromCart(cart) {
|
|
|
208
231
|
const uniqueTags = tags?.length > 0 ? [...new Set(tags)] : [];
|
|
209
232
|
return uniqueTags;
|
|
210
233
|
}
|
|
234
|
+
export function getEllohaGroupsFromCart(cart) {
|
|
235
|
+
const { STAND: items } = cart.orders;
|
|
236
|
+
if (!items?.length)
|
|
237
|
+
return [];
|
|
238
|
+
const groups = items[0].inscriptions.map((i) => i.categoryGroupCode);
|
|
239
|
+
const uniqueGroups = groups?.length > 0 ? [...new Set(groups)] : [];
|
|
240
|
+
return uniqueGroups;
|
|
241
|
+
}
|
|
211
242
|
export function getEsfOffersFromCart(cart) {
|
|
212
243
|
const { ESF: items } = cart.orders;
|
|
213
244
|
if (!items?.length)
|
|
@@ -222,6 +253,15 @@ export function getEsfOffersFromCart(cart) {
|
|
|
222
253
|
}
|
|
223
254
|
export const CONFIG_ID = "cross-selling-editor";
|
|
224
255
|
export function getConfig(container) {
|
|
256
|
+
const allConfigs = container?.querySelectorAll(`#${CONFIG_ID}`);
|
|
257
|
+
if (allConfigs.length > 1) {
|
|
258
|
+
Array.from(allConfigs).forEach((config) => {
|
|
259
|
+
const isEmpty = config.textContent?.trim().length === 0 || config.textContent === "{}";
|
|
260
|
+
if (isEmpty) {
|
|
261
|
+
config.remove();
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
225
265
|
const config = container?.querySelector(`#${CONFIG_ID}`);
|
|
226
266
|
const json = JSON.parse(config?.textContent || "{}");
|
|
227
267
|
return json;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-offer.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/cross-selling-editor/tester/tunnel-offer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIlD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,IAAI,EACJ,KAAK,EACL,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,MAAM,GACP,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"tunnel-offer.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/cross-selling-editor/tester/tunnel-offer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIlD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,IAAI,EACJ,KAAK,EACL,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,MAAM,GACP,EAAE,KAAK,2CAsIP"}
|
|
@@ -47,7 +47,7 @@ export default function TesterTunnelOffer({ kind, value, label, cartOffers, upda
|
|
|
47
47
|
return null;
|
|
48
48
|
}
|
|
49
49
|
if (isSkiPasses) {
|
|
50
|
-
return (_jsxs(React.Fragment, { children: [_jsx(Input, { type: "number", className: styles.input, label: `Durée du forfait n°${number}`, placeholder: "En jour(s) (Optionnel)", min: 0, max: 40, value: state.skiPassDurations?.[index] || 0, onValueChange: updateState("skiPassDurations"), compact: true }), durations && (_jsx(Select, { className: styles.input, label: durations?.title + ` n°${number}`, placeholder: " ", options: durations?.tags, value: state.durationTags?.[index] || "", onValueChange: updateState("durationTags"), compact: true }))] }, index));
|
|
50
|
+
return (_jsxs(React.Fragment, { children: [_jsx(Input, { className: styles.input, label: `Marchand n°${number}`, placeholder: "Code (Optionnel)", value: state.merchants?.[index] || "", onValueChange: updateState("merchants"), compact: true }, index), _jsx(Input, { type: "number", className: styles.input, label: `Durée du forfait n°${number}`, placeholder: "En jour(s) (Optionnel)", min: 0, max: 40, value: state.skiPassDurations?.[index] || 0, onValueChange: updateState("skiPassDurations"), compact: true }), durations && (_jsx(Select, { className: styles.input, label: durations?.title + ` n°${number}`, placeholder: " ", options: durations?.tags, value: state.durationTags?.[index] || "", onValueChange: updateState("durationTags"), compact: true }))] }, index));
|
|
51
51
|
}
|
|
52
52
|
return (_jsx(Input, { className: styles.input, label: `Marchand n°${number}`, placeholder: "Code (Optionnel)", value: state.merchants?.[index] || "", onValueChange: updateState("merchants"), compact: true }, index));
|
|
53
53
|
})] })), _jsx(NumberPicker, { label: label, value: itemValue, onChange: updateCartOffers(value), min: 0, max: 10 })] }, label));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/common/components/cross-selling-editor/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/common/components/cross-selling-editor/types.ts"],"names":[],"mappings":"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"}
|