ublo-lib 1.19.32 → 1.19.34
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/msem-preset-editor/editor-dialog.d.ts.map +1 -1
- package/es/common/components/msem-preset-editor/editor-dialog.js +5 -0
- package/es/common/components/msem-preset-editor/msem-preset-editor.d.ts.map +1 -1
- package/es/common/components/msem-preset-editor/msem-preset-editor.js +9 -5
- package/es/common/components/msem-preset-linker/hooks/use-msem-presets.d.ts.map +1 -1
- package/es/common/components/msem-preset-linker/hooks/use-msem-presets.js +12 -10
- package/es/esf/components/loyal-customers/components/customer-form.js +3 -2
- package/es/esf/components/loyal-customers/loyal-customers.js +4 -2
- package/es/esf/components/loyal-customers/utils.js +2 -1
- package/es/esf/components/magic-box/booking.js +4 -3
- package/es/esf/components/magic-box/magic-box.d.ts +2 -1
- package/es/esf/components/magic-box/magic-box.d.ts.map +1 -1
- package/es/esf/components/magic-box/magic-box.js +31 -11
- package/es/esf/components/magic-box/messages.js +4 -2
- package/es/esf/components/magic-box/services/api.js +29 -10
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-dialog.d.ts","sourceRoot":"","sources":["../../../../src/common/components/msem-preset-editor/editor-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IACF,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC;IACnC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,QAAQ,GACT,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"editor-dialog.d.ts","sourceRoot":"","sources":["../../../../src/common/components/msem-preset-editor/editor-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IACF,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC;IACnC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,QAAQ,GACT,EAAE,KAAK,2CA4DP"}
|
|
@@ -9,6 +9,11 @@ export default function EditorDialog({ lang, options, urls, target, updatePreset
|
|
|
9
9
|
const selectedPreset = target?.getAttribute("data-msem-preset");
|
|
10
10
|
const [preset, setPreset] = React.useState(selectedPreset ? JSON.parse(selectedPreset) : null);
|
|
11
11
|
const hasObsoletePreset = target?.hasAttribute("data-config");
|
|
12
|
+
React.useEffect(() => {
|
|
13
|
+
if (selectedPreset) {
|
|
14
|
+
setPreset(JSON.parse(selectedPreset));
|
|
15
|
+
}
|
|
16
|
+
}, [selectedPreset]);
|
|
12
17
|
const updateNewPreset = React.useCallback(() => {
|
|
13
18
|
updatePreset(preset);
|
|
14
19
|
}, [preset, updatePreset]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msem-preset-editor.d.ts","sourceRoot":"","sources":["../../../../src/common/components/msem-preset-editor/msem-preset-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,cAAc,EACd,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"msem-preset-editor.d.ts","sourceRoot":"","sources":["../../../../src/common/components/msem-preset-editor/msem-preset-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,cAAc,EACd,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,EAAE,KAAK,kDAuMP"}
|
|
@@ -89,12 +89,16 @@ export default function MseMPresetEditor({ lang, options, urls, selectedPreset,
|
|
|
89
89
|
};
|
|
90
90
|
React.useEffect(() => {
|
|
91
91
|
if (stay?.from && stay?.to) {
|
|
92
|
-
setPreset((current = {}) =>
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
setPreset((current = {}) => {
|
|
93
|
+
const newPreset = {
|
|
94
|
+
...current,
|
|
95
|
+
presets: { ...(current?.presets || {}), stay },
|
|
96
|
+
};
|
|
97
|
+
onChange?.(newPreset);
|
|
98
|
+
return newPreset;
|
|
99
|
+
});
|
|
96
100
|
}
|
|
97
|
-
}, [stay]);
|
|
101
|
+
}, [onChange, stay]);
|
|
98
102
|
React.useEffect(() => {
|
|
99
103
|
if (preset && baseUrl) {
|
|
100
104
|
const url = UrlParams.getPresetUrl(lang, preset, baseUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-msem-presets.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-linker/hooks/use-msem-presets.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE;;CAAA,
|
|
1
|
+
{"version":3,"file":"use-msem-presets.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-linker/hooks/use-msem-presets.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE;;CAAA,QAuC9C"}
|
|
@@ -9,27 +9,29 @@ export default function useMsemPresets({ mode }) {
|
|
|
9
9
|
const isEnabled = cmsMode !== "editing" && cmsMode !== "info" && mode !== MODES.EDITING;
|
|
10
10
|
const handleSectionClick = React.useCallback((e) => {
|
|
11
11
|
const target = e.target;
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const section = target.closest(`section[${PRESET_ATTRIBUTE}]`);
|
|
13
|
+
const preset = section?.getAttribute(PRESET_ATTRIBUTE);
|
|
14
|
+
const anchor = section?.querySelector("a");
|
|
15
15
|
if (!preset)
|
|
16
16
|
return;
|
|
17
17
|
const { widget, options, presets, url } = JSON.parse(preset);
|
|
18
|
-
|
|
18
|
+
const destination = anchor?.getAttribute("href") || url;
|
|
19
|
+
e.preventDefault();
|
|
20
|
+
e.stopPropagation();
|
|
21
|
+
if (destination) {
|
|
19
22
|
const params = UrlParams.build({ options, presets });
|
|
20
|
-
const endpoint =
|
|
23
|
+
const endpoint = destination.concat(params);
|
|
21
24
|
window.open(endpoint, "_blank");
|
|
22
25
|
return;
|
|
23
26
|
}
|
|
24
|
-
e.preventDefault();
|
|
25
|
-
e.stopPropagation();
|
|
26
27
|
MseM.loadWidget(widget, options, presets);
|
|
27
28
|
}, []);
|
|
28
29
|
React.useEffect(() => {
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
const container = document.getElementById("__next");
|
|
31
|
+
if (isEnabled && container) {
|
|
32
|
+
container.addEventListener("click", handleSectionClick);
|
|
31
33
|
return () => {
|
|
32
|
-
|
|
34
|
+
container.removeEventListener("click", handleSectionClick);
|
|
33
35
|
};
|
|
34
36
|
}
|
|
35
37
|
}, [lang, handleSectionClick, isEnabled, path]);
|
|
@@ -36,7 +36,8 @@ const CustomerForm = ({
|
|
|
36
36
|
channel,
|
|
37
37
|
merchant,
|
|
38
38
|
resort,
|
|
39
|
-
integration
|
|
39
|
+
integration,
|
|
40
|
+
categoryCode
|
|
40
41
|
}) => {
|
|
41
42
|
const fields = manualStay ? {
|
|
42
43
|
...Data.stayFields,
|
|
@@ -47,7 +48,7 @@ const CustomerForm = ({
|
|
|
47
48
|
const isFormValid = Object.keys(customerData).every(key => customerData[key].validator);
|
|
48
49
|
const onSubmit = async () => {
|
|
49
50
|
setResponse(RESPONSE.LOADING);
|
|
50
|
-
const payload = Utils.buildPayload(lang, channel, resort, merchant, voucher, customerData, rows, disableVoucher);
|
|
51
|
+
const payload = Utils.buildPayload(lang, channel, resort, merchant, voucher, customerData, rows, disableVoucher, categoryCode);
|
|
51
52
|
const {
|
|
52
53
|
error
|
|
53
54
|
} = await Api.sendFile(payload, integration);
|
|
@@ -25,7 +25,8 @@ export default function LoyalCustomers({
|
|
|
25
25
|
merchant,
|
|
26
26
|
resort,
|
|
27
27
|
disableVoucher,
|
|
28
|
-
integration
|
|
28
|
+
integration,
|
|
29
|
+
categoryCode
|
|
29
30
|
}) {
|
|
30
31
|
const ref = React.useRef(null);
|
|
31
32
|
const [rows, setRows] = useStoredRows([]);
|
|
@@ -124,7 +125,8 @@ export default function LoyalCustomers({
|
|
|
124
125
|
channel: channel,
|
|
125
126
|
merchant: merchant,
|
|
126
127
|
resort: resort,
|
|
127
|
-
integration: integration
|
|
128
|
+
integration: integration,
|
|
129
|
+
categoryCode: categoryCode
|
|
128
130
|
})]
|
|
129
131
|
});
|
|
130
132
|
}
|
|
@@ -12,7 +12,7 @@ export const formatDate = (lang, date) => {
|
|
|
12
12
|
year: "numeric"
|
|
13
13
|
});
|
|
14
14
|
};
|
|
15
|
-
export const buildPayload = (lang, channel, resort, merchant, voucher, customerData, rows, disableVoucher) => {
|
|
15
|
+
export const buildPayload = (lang, channel, resort, merchant, voucher, customerData, rows, disableVoucher, categoryCode) => {
|
|
16
16
|
const {
|
|
17
17
|
comment,
|
|
18
18
|
email,
|
|
@@ -64,6 +64,7 @@ Commentaire : ${comment.value}`;
|
|
|
64
64
|
from: stayFrom?.value || from,
|
|
65
65
|
to: stayTo?.value || to,
|
|
66
66
|
message,
|
|
67
|
+
category: categoryCode,
|
|
67
68
|
customer: {
|
|
68
69
|
email: email.value,
|
|
69
70
|
title: title.value,
|
|
@@ -4,7 +4,7 @@ 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
6
|
import { loadWigetMseM, preview } from "./services/widgets";
|
|
7
|
-
import * as Plausible from "
|
|
7
|
+
import * as Plausible from "ublo-lib/es/common/components/plausible";
|
|
8
8
|
import css from "./booking.module.css";
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -61,7 +61,8 @@ const Booking = ({
|
|
|
61
61
|
fullWidth: true,
|
|
62
62
|
groundedTo: "#msem-magic-box",
|
|
63
63
|
analytics: Plausible.callback,
|
|
64
|
-
show: ["vel"]
|
|
64
|
+
show: ["vel"],
|
|
65
|
+
categoryCode: values.categories
|
|
65
66
|
};
|
|
66
67
|
const presets = {
|
|
67
68
|
kind: "CP",
|
|
@@ -76,7 +77,7 @@ const Booking = ({
|
|
|
76
77
|
});
|
|
77
78
|
};
|
|
78
79
|
init();
|
|
79
|
-
}, [cartUrl, channel, cmsMode, engagement, engagementPresets, lang, resort, stay
|
|
80
|
+
}, [cartUrl, channel, cmsMode, engagement, engagementPresets, lang, resort, stay.from, stay.to, values.categories]);
|
|
80
81
|
return _jsxs("div", {
|
|
81
82
|
className: css.root,
|
|
82
83
|
children: [_jsxs(Button, {
|
|
@@ -13,9 +13,10 @@ type Props = {
|
|
|
13
13
|
minDays?: number;
|
|
14
14
|
maxDays?: number;
|
|
15
15
|
allowedActivities?: string[];
|
|
16
|
+
categories?: string[];
|
|
16
17
|
children?: React.ReactNode;
|
|
17
18
|
};
|
|
18
19
|
declare const _default: React.MemoExoticComponent<typeof MagicBox>;
|
|
19
20
|
export default _default;
|
|
20
|
-
declare function MagicBox({ stay, cartUrl, channel, className, alignContent, maxCPDuration, minDays, maxDays, allowedActivities, children, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare function MagicBox({ stay, cartUrl, channel, className, alignContent, maxCPDuration, minDays, maxDays, allowedActivities, categories, children, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
21
22
|
//# sourceMappingURL=magic-box.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magic-box.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/magic-box/magic-box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;;AAIF,wBAAoC;AAEpC,iBAAS,QAAQ,CAAC,EAChB,IAAI,EACJ,OAAO,EACP,OAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,OAAW,EACX,OAAkB,EAClB,iBAAiB,EACjB,QAAQ,GACT,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"magic-box.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/magic-box/magic-box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;;AAIF,wBAAoC;AAEpC,iBAAS,QAAQ,CAAC,EAChB,IAAI,EACJ,OAAO,EACP,OAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,OAAW,EACX,OAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,QAAQ,GACT,EAAE,KAAK,2CAkJP"}
|
|
@@ -10,12 +10,12 @@ import { message } from "./messages";
|
|
|
10
10
|
import * as API from "./services/api";
|
|
11
11
|
import css from "./magic-box.module.css";
|
|
12
12
|
export default React.memo(MagicBox);
|
|
13
|
-
function MagicBox({ stay, cartUrl, channel = "ESF", className, alignContent, maxCPDuration, minDays = 0, maxDays = Infinity, allowedActivities, children, }) {
|
|
13
|
+
function MagicBox({ stay, cartUrl, channel = "ESF", className, alignContent, maxCPDuration, minDays = 0, maxDays = Infinity, allowedActivities, categories, children, }) {
|
|
14
14
|
const [filters, setFilters] = React.useState();
|
|
15
15
|
const [values, setValues] = React.useState();
|
|
16
16
|
const [currentStep, setCurrentStep] = React.useState(0);
|
|
17
17
|
const { lang, config } = useUbloContext();
|
|
18
|
-
const { resort } = config;
|
|
18
|
+
const { resort, merchant } = config;
|
|
19
19
|
const validate = React.useCallback(() => {
|
|
20
20
|
let valid = true;
|
|
21
21
|
if (stay && filters && values) {
|
|
@@ -33,13 +33,17 @@ function MagicBox({ stay, cartUrl, channel = "ESF", className, alignContent, max
|
|
|
33
33
|
const refreshFilters = React.useCallback(async () => {
|
|
34
34
|
if (stay) {
|
|
35
35
|
const { from: stayFrom, to: stayTo } = stay;
|
|
36
|
-
const welcomeResult = await
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
const [welcomeResult, paramsResult] = await Promise.all([
|
|
37
|
+
API.fetchWelcome({
|
|
38
|
+
lang,
|
|
39
|
+
resort,
|
|
40
|
+
stayFrom,
|
|
41
|
+
stayTo,
|
|
42
|
+
}),
|
|
43
|
+
API.fetchParams(lang, resort, merchant, channel, categories),
|
|
44
|
+
]);
|
|
42
45
|
const { season: currentSeason, availableSeasons } = welcomeResult;
|
|
46
|
+
const { categories: categoryList } = paramsResult;
|
|
43
47
|
const season = currentSeason || availableSeasons[0] || "2022";
|
|
44
48
|
const filtersResult = await API.fetchFilters({
|
|
45
49
|
lang,
|
|
@@ -71,11 +75,27 @@ function MagicBox({ stay, cartUrl, channel = "ESF", className, alignContent, max
|
|
|
71
75
|
const filterWithoutRestricted = filter.filter((item) => !item.restricted);
|
|
72
76
|
return { ...acc, [key]: filterWithoutRestricted };
|
|
73
77
|
}, {});
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
const formatedCategories = categoryList?.map(({ code, label }) => {
|
|
79
|
+
return { value: code, libelle: label };
|
|
80
|
+
});
|
|
81
|
+
const allFilters = categories
|
|
82
|
+
? { ...newFilters, categories: formatedCategories }
|
|
83
|
+
: newFilters;
|
|
84
|
+
setFilters(allFilters);
|
|
85
|
+
const defaultValues = getDefaultValues(allFilters);
|
|
76
86
|
setValues(defaultValues);
|
|
77
87
|
}
|
|
78
|
-
}, [
|
|
88
|
+
}, [
|
|
89
|
+
allowedActivities,
|
|
90
|
+
categories,
|
|
91
|
+
channel,
|
|
92
|
+
lang,
|
|
93
|
+
maxDays,
|
|
94
|
+
merchant,
|
|
95
|
+
minDays,
|
|
96
|
+
resort,
|
|
97
|
+
stay,
|
|
98
|
+
]);
|
|
79
99
|
React.useEffect(() => {
|
|
80
100
|
refreshFilters();
|
|
81
101
|
setCurrentStep(0);
|
|
@@ -7,7 +7,8 @@ const locales = {
|
|
|
7
7
|
languages: " en ",
|
|
8
8
|
startDates: " J'aimerais commencer à partir du ",
|
|
9
9
|
days: " pendant ",
|
|
10
|
-
durations: " sur des cours de "
|
|
10
|
+
durations: " sur des cours de ",
|
|
11
|
+
categories: " à "
|
|
11
12
|
},
|
|
12
13
|
en: {
|
|
13
14
|
confirm: "Find an instructor",
|
|
@@ -17,7 +18,8 @@ const locales = {
|
|
|
17
18
|
languages: " in ",
|
|
18
19
|
startDates: " I'd like to start from ",
|
|
19
20
|
days: " for ",
|
|
20
|
-
durations: " with lessons of "
|
|
21
|
+
durations: " with lessons of ",
|
|
22
|
+
categories: " at "
|
|
21
23
|
}
|
|
22
24
|
};
|
|
23
25
|
export const message = (lang, id) => {
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import * as Fetcher from "../../../../common/utils/fetcher";
|
|
2
2
|
const velApi = "https://services.msem.tech/api/esf";
|
|
3
|
-
|
|
3
|
+
const msemAdminApi = "https://admin.mon-sejour-en-montagne.com/api/gesco";
|
|
4
|
+
export function fetchWelcome({
|
|
4
5
|
lang,
|
|
5
6
|
resort,
|
|
6
7
|
stayFrom,
|
|
7
8
|
stayTo
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
}) {
|
|
10
|
+
return Fetcher.post(`${velApi}/welcome`, {
|
|
11
|
+
resort,
|
|
12
|
+
lang,
|
|
13
|
+
stayFrom,
|
|
14
|
+
stayTo
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export async function fetchFilters({
|
|
15
18
|
lang,
|
|
16
19
|
resort,
|
|
17
20
|
season,
|
|
@@ -19,7 +22,7 @@ export const fetchFilters = async ({
|
|
|
19
22
|
stayTo,
|
|
20
23
|
kinds = ["CP"],
|
|
21
24
|
engagement = true
|
|
22
|
-
})
|
|
25
|
+
}) {
|
|
23
26
|
return Fetcher.post(`${velApi}/filters`, {
|
|
24
27
|
lang,
|
|
25
28
|
resort,
|
|
@@ -29,4 +32,20 @@ export const fetchFilters = async ({
|
|
|
29
32
|
kinds,
|
|
30
33
|
engagement
|
|
31
34
|
});
|
|
32
|
-
}
|
|
35
|
+
}
|
|
36
|
+
export async function fetchParams(lang, resort, merchant, channel, categories) {
|
|
37
|
+
const res = await fetch(`${msemAdminApi}/contact/parameters`, {
|
|
38
|
+
method: "POST",
|
|
39
|
+
headers: {
|
|
40
|
+
"content-type": "application/json;charset=utf-8"
|
|
41
|
+
},
|
|
42
|
+
body: JSON.stringify({
|
|
43
|
+
lang,
|
|
44
|
+
resort,
|
|
45
|
+
merchant,
|
|
46
|
+
channel,
|
|
47
|
+
categories
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
return res.json();
|
|
51
|
+
}
|