ublo-lib 1.20.11 → 1.20.13
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/editable-map/slopes-toggle.js +1 -1
- package/es/common/components/gesco-contact-form/gesco-contact-form.js +2 -1
- package/es/common/hooks/use-tunnel.d.ts +2 -1
- package/es/common/hooks/use-tunnel.d.ts.map +1 -1
- package/es/common/hooks/use-tunnel.js +2 -1
- package/es/esf/components/magic-box/booking.js +15 -5
- package/es/esf/components/magic-box/services/widgets.js +3 -2
- package/es/esf/hooks/use-booking-links.js +23 -24
- package/package.json +1 -1
|
@@ -119,13 +119,14 @@ function ContactForm({
|
|
|
119
119
|
...acc,
|
|
120
120
|
[key]: field.value
|
|
121
121
|
};
|
|
122
|
-
}
|
|
122
|
+
});
|
|
123
123
|
onSubmit?.(payload);
|
|
124
124
|
const result = await API.postMessage({
|
|
125
125
|
lang: widgetLang,
|
|
126
126
|
channel,
|
|
127
127
|
resort,
|
|
128
128
|
merchant,
|
|
129
|
+
facet,
|
|
129
130
|
...payload
|
|
130
131
|
}, integration, uat);
|
|
131
132
|
if (result.error) {
|
|
@@ -2,7 +2,8 @@ type Props = {
|
|
|
2
2
|
channel?: string;
|
|
3
3
|
multipleVillages?: boolean;
|
|
4
4
|
integration?: boolean;
|
|
5
|
+
categoryCode?: string;
|
|
5
6
|
};
|
|
6
|
-
export default function useTunnel({ channel, multipleVillages, integration, }?: Props): void;
|
|
7
|
+
export default function useTunnel({ channel, multipleVillages, integration, categoryCode, }?: Props): void;
|
|
7
8
|
export {};
|
|
8
9
|
//# sourceMappingURL=use-tunnel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tunnel.d.ts","sourceRoot":"","sources":["../../../src/common/hooks/use-tunnel.ts"],"names":[],"mappings":"AAMA,KAAK,KAAK,GAAG;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAMF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,OAAe,EACf,gBAAgB,EAChB,WAAW,
|
|
1
|
+
{"version":3,"file":"use-tunnel.d.ts","sourceRoot":"","sources":["../../../src/common/hooks/use-tunnel.ts"],"names":[],"mappings":"AAMA,KAAK,KAAK,GAAG;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAMF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,OAAe,EACf,gBAAgB,EAChB,WAAW,EACX,YAAY,GACb,GAAE,KAAU,QA2BZ"}
|
|
@@ -6,7 +6,7 @@ import { loadJS } from "../utils/load-js";
|
|
|
6
6
|
const { publicRuntimeConfig } = getConfig();
|
|
7
7
|
const { langPrefix, resort } = publicRuntimeConfig;
|
|
8
8
|
const hasLangPrefix = langPrefix.links;
|
|
9
|
-
export default function useTunnel({ channel = "ESF", multipleVillages, integration, } = {}) {
|
|
9
|
+
export default function useTunnel({ channel = "ESF", multipleVillages, integration, categoryCode, } = {}) {
|
|
10
10
|
const { lang, breadcrumb } = useUbloContext();
|
|
11
11
|
const { path: esfPath } = multipleVillages ? breadcrumb?.next : breadcrumb;
|
|
12
12
|
const widgetLang = React.useMemo(() => (lang === "fr" ? "fr" : "en"), [lang]);
|
|
@@ -22,6 +22,7 @@ export default function useTunnel({ channel = "ESF", multipleVillages, integrati
|
|
|
22
22
|
lang: widgetLang,
|
|
23
23
|
esfUrl,
|
|
24
24
|
analytics: Plausible.callback,
|
|
25
|
+
categoryCode,
|
|
25
26
|
});
|
|
26
27
|
});
|
|
27
28
|
};
|
|
@@ -3,7 +3,7 @@ import { useUbloContext } from "ublo/with-ublo";
|
|
|
3
3
|
import Button from "dt-design-system/es/button";
|
|
4
4
|
import * as Icons from "dt-design-system/es/icons";
|
|
5
5
|
import { message } from "./messages";
|
|
6
|
-
import { loadWigetMseM
|
|
6
|
+
import { loadWigetMseM } from "./services/widgets";
|
|
7
7
|
import * as Plausible from "../../../common/components/plausible";
|
|
8
8
|
import css from "./booking.module.css";
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -24,6 +24,9 @@ const Booking = ({
|
|
|
24
24
|
const {
|
|
25
25
|
resort
|
|
26
26
|
} = config;
|
|
27
|
+
const langPrefix = config.langPrefix.links ? `/${lang}` : "";
|
|
28
|
+
const cartPage = langPrefix.concat(cartUrl || "/panier");
|
|
29
|
+
const categoryCode = values?.categories;
|
|
27
30
|
const goBack = () => {
|
|
28
31
|
setCurrentStep(0);
|
|
29
32
|
};
|
|
@@ -48,6 +51,12 @@ const Booking = ({
|
|
|
48
51
|
};
|
|
49
52
|
}
|
|
50
53
|
}, [engagement, values?.activities, values?.days, values?.durations, values?.languages, values?.nbPersons, values?.startDates]);
|
|
54
|
+
const goToCart = React.useCallback(() => {
|
|
55
|
+
if (categoryCode) {
|
|
56
|
+
window.sessionStorage.setItem("categoryCode", categoryCode);
|
|
57
|
+
}
|
|
58
|
+
window.location.href = cartPage;
|
|
59
|
+
}, [cartPage, categoryCode]);
|
|
51
60
|
React.useEffect(() => {
|
|
52
61
|
const init = async () => {
|
|
53
62
|
await loadWigetMseM();
|
|
@@ -56,11 +65,12 @@ const Booking = ({
|
|
|
56
65
|
resort,
|
|
57
66
|
lang,
|
|
58
67
|
channel,
|
|
59
|
-
preview: !!cmsMode
|
|
60
|
-
|
|
68
|
+
preview: !!cmsMode,
|
|
69
|
+
cartChanged: goToCart,
|
|
61
70
|
fullWidth: true,
|
|
62
71
|
groundedTo: "#msem-magic-box",
|
|
63
|
-
analytics: Plausible.callback
|
|
72
|
+
analytics: Plausible.callback,
|
|
73
|
+
categoryCode
|
|
64
74
|
};
|
|
65
75
|
const presets = {
|
|
66
76
|
kind: "CP",
|
|
@@ -75,7 +85,7 @@ const Booking = ({
|
|
|
75
85
|
});
|
|
76
86
|
};
|
|
77
87
|
init();
|
|
78
|
-
}, [cartUrl, channel, cmsMode, engagement, engagementPresets, lang, resort, stay.from, stay.to
|
|
88
|
+
}, [cartUrl, categoryCode, channel, cmsMode, engagement, engagementPresets, goToCart, lang, resort, stay.from, stay.to]);
|
|
79
89
|
return _jsxs("div", {
|
|
80
90
|
className: css.root,
|
|
81
91
|
children: [_jsxs(Button, {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { loadJS } from "../../../../common/utils/load-js";
|
|
2
|
-
export
|
|
3
|
-
|
|
2
|
+
export async function loadWigetMseM() {
|
|
3
|
+
await loadJS("https://widget.msem.tech/static/js/widget-msem.js", "widget-msem");
|
|
4
|
+
}
|
|
@@ -2,28 +2,7 @@ import * as React from "react";
|
|
|
2
2
|
import { useUbloContext } from "ublo/with-ublo";
|
|
3
3
|
import { loadJS } from "../../common/utils/load-js";
|
|
4
4
|
import * as Plausible from "../../common/components/plausible";
|
|
5
|
-
|
|
6
|
-
const cart = e.target.closest("[onclick^='openBoutiqueESF(']");
|
|
7
|
-
if (!cart) return;
|
|
8
|
-
const dialogs = document.querySelectorAll("dialog");
|
|
9
|
-
if (dialogs.length) {
|
|
10
|
-
Array.from(dialogs).forEach(d => d.close?.());
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
const setupDialogCleanup = () => {
|
|
14
|
-
document.addEventListener("click", closeAllDialogs);
|
|
15
|
-
};
|
|
16
|
-
const setupConfig = (lang, breadcrumb, cart = [], multipleVillages, hasLangPrefix, channel) => {
|
|
17
|
-
const pageEsf = multipleVillages ? breadcrumb?.next?.path : breadcrumb?.path;
|
|
18
|
-
const langPrefix = hasLangPrefix ? `/${lang}` : "";
|
|
19
|
-
const pagePanier = langPrefix.concat(cart[0] ? cart[0].path : "/panier");
|
|
20
|
-
window.pagePanier = pagePanier;
|
|
21
|
-
window.pageEsf = pageEsf;
|
|
22
|
-
window.currentLang = lang;
|
|
23
|
-
window.analytics = Plausible.callback;
|
|
24
|
-
window.channel = channel;
|
|
25
|
-
};
|
|
26
|
-
const useBookingLinks = (cart, multipleVillages, setupCallback, channel = "ESF") => {
|
|
5
|
+
export default function useBookingLinks(cart, multipleVillages, setupCallback, channel = "ESF") {
|
|
27
6
|
const {
|
|
28
7
|
breadcrumb,
|
|
29
8
|
config,
|
|
@@ -41,5 +20,25 @@ const useBookingLinks = (cart, multipleVillages, setupCallback, channel = "ESF")
|
|
|
41
20
|
};
|
|
42
21
|
run();
|
|
43
22
|
}, [bookingLang, breadcrumb, cart, channel, hasLangPrefix, multipleVillages, path, setupCallback]);
|
|
44
|
-
}
|
|
45
|
-
|
|
23
|
+
}
|
|
24
|
+
function setupConfig(lang, breadcrumb, cart = [], multipleVillages, hasLangPrefix, channel) {
|
|
25
|
+
const pageEsf = multipleVillages ? breadcrumb?.next?.path : breadcrumb?.path;
|
|
26
|
+
const langPrefix = hasLangPrefix ? `/${lang}` : "";
|
|
27
|
+
const pagePanier = langPrefix.concat(cart[0] ? cart[0].path : "/panier");
|
|
28
|
+
window.pagePanier = pagePanier;
|
|
29
|
+
window.pageEsf = pageEsf;
|
|
30
|
+
window.currentLang = lang;
|
|
31
|
+
window.analytics = Plausible.callback;
|
|
32
|
+
window.channel = channel;
|
|
33
|
+
}
|
|
34
|
+
function closeAllDialogs(e) {
|
|
35
|
+
const cart = e.target.closest("[onclick^='openBoutiqueESF(']");
|
|
36
|
+
if (!cart) return;
|
|
37
|
+
const dialogs = document.querySelectorAll("dialog");
|
|
38
|
+
if (dialogs.length) {
|
|
39
|
+
Array.from(dialogs).forEach(d => d.close?.());
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function setupDialogCleanup() {
|
|
43
|
+
document.addEventListener("click", closeAllDialogs);
|
|
44
|
+
}
|