ublo-lib 1.37.0 → 1.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,UAmEZ"}
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
- [skiPassDurations, durationTags] = await Promise.all([
26
- Utils.getSkiPassDurationFromCart(cart),
27
- Utils.getDurationTagsFromCart(cart),
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 [skiPassDurations, durationTags] = await Promise.all([
18
- Utils.getSkiPassDurationFromCart(cart),
19
- Utils.getDurationTagsFromCart(cart),
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,2CAuJP"}
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 { stayFrom, stayTo, stayDuration = 0, merchant, skiPassDuration, skiPassDurationOperator = ">", durationTag, } = triggers;
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
  }
@@ -15,6 +15,7 @@
15
15
  align-items: center;
16
16
  gap: 8px;
17
17
  font-size: 14px;
18
+ white-space: nowrap;
18
19
  }
19
20
 
20
21
  .subTitle::after {
@@ -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): Promise<number[]>;
59
- export declare function getDurationTagsFromCart(cart: Cart): Promise<string[]>;
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;AAqID,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,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,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,IAAI,qBAK1D;AAcD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,qBAQvD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,gBAAgB,EAAE,CAUnE;AAED,eAAO,MAAM,SAAS,yBAAyB,CAAC;AAEhD,wBAAgB,SAAS,CAAC,SAAS,EAAE,WAAW,OAI/C;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAOlE"}
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;AAgJD,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,16 +57,18 @@ 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
  const isMatching = isStayMatching ||
67
68
  isMerchantMatching ||
68
69
  isSkiPassDurationMatching ||
69
70
  isDurationTagMatching ||
71
+ isEllohaGroupMatching ||
70
72
  isEsfProductMatching;
71
73
  return isMatching ? [...acc, override.id] : acc;
72
74
  }, []);
@@ -124,6 +126,14 @@ function checkDurationTags(override, durationTags) {
124
126
  return false;
125
127
  return durationTags.includes(durationTag);
126
128
  }
129
+ function checkEllohaGroup(override, ellohaGroups) {
130
+ if (!ellohaGroups)
131
+ return false;
132
+ const { ellohaGroup } = override.triggers || {};
133
+ if (!ellohaGroup)
134
+ return false;
135
+ return ellohaGroups.includes(ellohaGroup);
136
+ }
127
137
  function checkEsfProduct(override, esfOffersContent, forcedEsfOverride) {
128
138
  if (!esfOffersContent)
129
139
  return false;
@@ -181,7 +191,7 @@ export function getStayFromCart(cart) {
181
191
  const duration = bareDuration / (1000 * 3600 * 24);
182
192
  return { from, to, duration };
183
193
  }
184
- export async function getSkiPassDurationFromCart(cart) {
194
+ export function getSkiPassDurationFromCart(cart) {
185
195
  const { LIFT: items } = cart.orders;
186
196
  if (!items?.length)
187
197
  return [];
@@ -198,7 +208,7 @@ function patchDuration(duration) {
198
208
  }
199
209
  return 1;
200
210
  }
201
- export async function getDurationTagsFromCart(cart) {
211
+ export function getDurationTagsFromCart(cart) {
202
212
  const { LIFT: items } = cart.orders;
203
213
  if (!items?.length)
204
214
  return [];
@@ -208,6 +218,14 @@ export async function getDurationTagsFromCart(cart) {
208
218
  const uniqueTags = tags?.length > 0 ? [...new Set(tags)] : [];
209
219
  return uniqueTags;
210
220
  }
221
+ export function getEllohaGroupsFromCart(cart) {
222
+ const { STAND: items } = cart.orders;
223
+ if (!items?.length)
224
+ return [];
225
+ const groups = items[0].inscriptions.map((i) => i.categoryGroupCode);
226
+ const uniqueGroups = groups?.length > 0 ? [...new Set(groups)] : [];
227
+ return uniqueGroups;
228
+ }
211
229
  export function getEsfOffersFromCart(cart) {
212
230
  const { ESF: items } = cart.orders;
213
231
  if (!items?.length)
@@ -222,6 +240,15 @@ export function getEsfOffersFromCart(cart) {
222
240
  }
223
241
  export const CONFIG_ID = "cross-selling-editor";
224
242
  export function getConfig(container) {
243
+ const allConfigs = container?.querySelectorAll(`#${CONFIG_ID}`);
244
+ if (allConfigs.length > 1) {
245
+ Array.from(allConfigs).forEach((config) => {
246
+ const isEmpty = config.textContent?.trim().length === 0 || config.textContent === "{}";
247
+ if (isEmpty) {
248
+ config.remove();
249
+ }
250
+ });
251
+ }
225
252
  const config = container?.querySelector(`#${CONFIG_ID}`);
226
253
  const json = JSON.parse(config?.textContent || "{}");
227
254
  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,2CA6HP"}
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));
@@ -7,6 +7,7 @@ type Triggers = {
7
7
  skiPassDuration?: number;
8
8
  skiPassDurationOperator?: Operator;
9
9
  durationTag?: string;
10
+ ellohaGroup?: string;
10
11
  esf?: {
11
12
  season?: string;
12
13
  rules?: {
@@ -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":"AAAA,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAE9C,KAAK,QAAQ,GAAG;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,QAAQ,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,GAAG,IAAI,CAAC;AAET,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,UAAU,EAAE,CAAC;KACxB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ublo-lib",
3
- "version": "1.37.0",
3
+ "version": "1.37.1",
4
4
  "peerDependencies": {
5
5
  "dt-design-system": "^3.9.9",
6
6
  "leaflet": "^1.9.1",