ublo-lib 1.16.5 → 1.17.0
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/admin-links/admin-links.d.ts +3 -4
- package/es/common/components/admin-links/admin-links.d.ts.map +1 -1
- package/es/common/components/breadcrumb.d.ts +3 -4
- package/es/common/components/breadcrumb.d.ts.map +1 -1
- package/es/common/components/editable-map/icons/esf.js +0 -5
- package/es/common/components/editable-map/icons/sata-huez.js +0 -4
- package/es/common/components/editable-map/index.js +0 -1
- package/es/common/components/editable-map/marker-list.js +0 -1
- package/es/common/components/instant-search/hooks/use-search.d.ts +1 -1
- package/es/common/components/instant-search/hooks/use-search.d.ts.map +1 -1
- package/es/common/components/instant-search/input.d.ts +3 -4
- package/es/common/components/instant-search/input.d.ts.map +1 -1
- package/es/common/components/instant-search/instant-search.d.ts +2 -3
- package/es/common/components/instant-search/instant-search.d.ts.map +1 -1
- package/es/common/components/instant-search/links.d.ts +2 -3
- package/es/common/components/instant-search/links.d.ts.map +1 -1
- package/es/common/components/instant-search/no-product.d.ts +2 -3
- package/es/common/components/instant-search/no-product.d.ts.map +1 -1
- package/es/common/components/instant-search/products.d.ts +2 -2
- package/es/common/components/instant-search/products.d.ts.map +1 -1
- package/es/common/components/instant-search/results.d.ts +10 -11
- package/es/common/components/instant-search/results.d.ts.map +1 -1
- package/es/common/components/instant-search/services/dates.js +0 -1
- package/es/common/components/msem-preset-editor/components/facet-selector.d.ts +6 -0
- package/es/common/components/msem-preset-editor/components/facet-selector.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/components/facet-selector.js +23 -0
- package/es/common/components/msem-preset-editor/components/form.d.ts +8 -0
- package/es/common/components/msem-preset-editor/components/form.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/components/form.js +8 -0
- package/es/common/components/msem-preset-editor/components/form.module.css +39 -0
- package/es/common/components/msem-preset-editor/components/stay-picker.d.ts +14 -0
- package/es/common/components/msem-preset-editor/components/stay-picker.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/components/stay-picker.js +35 -0
- package/es/common/components/msem-preset-editor/components/stay-picker.module.css +5 -0
- package/es/common/components/msem-preset-editor/components/widget-list-item.d.ts +12 -0
- package/es/common/components/msem-preset-editor/components/widget-list-item.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/components/widget-list-item.js +48 -0
- package/es/common/components/msem-preset-editor/components/widget-list-item.module.css +115 -0
- package/es/common/components/msem-preset-editor/components/widget-list.d.ts +17 -0
- package/es/common/components/msem-preset-editor/components/widget-list.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/components/widget-list.js +34 -0
- package/es/common/components/msem-preset-editor/components/widget-list.module.css +12 -0
- package/es/common/components/msem-preset-editor/editor-dialog.d.ts +29 -0
- package/es/common/components/msem-preset-editor/editor-dialog.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/editor-dialog.js +16 -0
- package/es/common/components/msem-preset-editor/editor-dialog.module.css +31 -0
- package/es/common/components/msem-preset-editor/editors/elloha.d.ts +14 -0
- package/es/common/components/msem-preset-editor/editors/elloha.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/editors/elloha.js +69 -0
- package/es/common/components/msem-preset-editor/editors/elloha.module.css +8 -0
- package/es/common/components/msem-preset-editor/editors/index.d.ts +14 -0
- package/es/common/components/msem-preset-editor/editors/index.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/editors/index.js +13 -0
- package/es/common/components/msem-preset-editor/editors/lodgings.d.ts +16 -0
- package/es/common/components/msem-preset-editor/editors/lodgings.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/editors/lodgings.js +199 -0
- package/es/common/components/msem-preset-editor/editors/lodgings.module.css +21 -0
- package/es/common/components/msem-preset-editor/editors/ski-passes.d.ts +15 -0
- package/es/common/components/msem-preset-editor/editors/ski-passes.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/editors/ski-passes.js +196 -0
- package/es/common/components/msem-preset-editor/editors/ski-passes.module.css +25 -0
- package/es/common/components/msem-preset-editor/editors/standard-products.d.ts +15 -0
- package/es/common/components/msem-preset-editor/editors/standard-products.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/editors/standard-products.js +64 -0
- package/es/common/components/msem-preset-editor/editors/vakario.d.ts +14 -0
- package/es/common/components/msem-preset-editor/editors/vakario.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/editors/vakario.js +181 -0
- package/es/common/components/msem-preset-editor/index.js +2 -0
- package/es/common/components/msem-preset-editor/msem-preset-editor.d.ts +27 -0
- package/es/common/components/msem-preset-editor/msem-preset-editor.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/msem-preset-editor.js +127 -0
- package/es/common/components/msem-preset-editor/msem-preset-editor.module.css +49 -0
- package/es/common/components/msem-preset-editor/services/api.d.ts +15 -0
- package/es/common/components/msem-preset-editor/services/api.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/services/api.js +74 -0
- package/es/common/components/msem-preset-editor/services/offers.d.ts +47 -0
- package/es/common/components/msem-preset-editor/services/offers.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/services/offers.js +39 -0
- package/es/common/components/msem-preset-editor/services/preset.d.ts +40 -0
- package/es/common/components/msem-preset-editor/services/preset.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/services/preset.js +15 -0
- package/es/common/components/msem-preset-editor/services/url-params.d.ts +3 -0
- package/es/common/components/msem-preset-editor/services/url-params.d.ts.map +1 -0
- package/es/common/components/msem-preset-editor/services/url-params.js +26 -0
- package/es/common/components/msem-preset-linker/components/actions.d.ts +11 -0
- package/es/common/components/msem-preset-linker/components/actions.d.ts.map +1 -0
- package/es/common/components/msem-preset-linker/components/actions.js +43 -0
- package/es/common/components/msem-preset-linker/components/actions.module.css +66 -0
- package/es/common/components/msem-preset-linker/components/overlays.d.ts +8 -0
- package/es/common/components/msem-preset-linker/components/overlays.d.ts.map +1 -0
- package/es/common/components/msem-preset-linker/components/overlays.js +47 -0
- package/es/common/components/msem-preset-linker/components/overlays.module.css +64 -0
- package/es/common/components/msem-preset-linker/components/resort-selector.d.ts +6 -0
- package/es/common/components/msem-preset-linker/components/resort-selector.d.ts.map +1 -0
- package/es/common/components/msem-preset-linker/components/resort-selector.js +12 -0
- package/es/common/components/msem-preset-linker/hooks/use-msem-presets.d.ts +4 -0
- package/es/common/components/msem-preset-linker/hooks/use-msem-presets.d.ts.map +1 -0
- package/es/common/components/msem-preset-linker/hooks/use-msem-presets.js +36 -0
- package/es/common/components/msem-preset-linker/index.d.ts +3 -0
- package/es/common/components/msem-preset-linker/index.d.ts.map +1 -0
- package/es/common/components/msem-preset-linker/index.js +2 -0
- package/es/common/components/msem-preset-linker/msem-preset-linker.d.ts +29 -0
- package/es/common/components/msem-preset-linker/msem-preset-linker.d.ts.map +1 -0
- package/es/common/components/msem-preset-linker/msem-preset-linker.js +54 -0
- package/es/common/components/msem-preset-linker/msem-preset-linker.module.css +23 -0
- package/es/common/components/msem-preset-linker/services/url-params.d.ts +2 -0
- package/es/common/components/msem-preset-linker/services/url-params.d.ts.map +1 -0
- package/es/common/components/msem-preset-linker/services/url-params.js +13 -0
- package/es/common/components/plausible/services/callback.js +0 -1
- package/es/common/components/scrolling-carousel/scrolling-carousel.d.ts +2 -2
- package/es/common/components/scrolling-carousel/scrolling-carousel.d.ts.map +1 -1
- package/es/common/components/tabbed-zones.d.ts +3 -4
- package/es/common/components/tabbed-zones.d.ts.map +1 -1
- package/es/common/hooks/use-in-view.d.ts +1 -1
- package/es/common/hooks/use-in-view.d.ts.map +1 -1
- package/es/common/hooks/use-scroll-direction.d.ts +2 -2
- package/es/common/hooks/use-scroll-direction.d.ts.map +1 -1
- package/es/common/hooks/use-tunnel.d.ts +1 -1
- package/es/common/hooks/use-tunnel.d.ts.map +1 -1
- package/es/common/hooks/use-window-sizes.d.ts +1 -1
- package/es/common/hooks/use-window-sizes.d.ts.map +1 -1
- package/es/common/utils/fetcher.js +0 -1
- package/es/common/utils/msem-widget.d.ts +3 -4
- package/es/common/utils/msem-widget.d.ts.map +1 -1
- package/es/esf/components/covid-link/index.js +0 -6
- package/es/esf/components/cp-form.js +0 -1
- package/es/esf/components/magic-box/magic-box.d.ts +3 -3
- package/es/esf/components/magic-box/magic-box.d.ts.map +1 -1
- package/es/esf/components/parcours-esf/parcours-esf.d.ts +2 -3
- package/es/esf/components/parcours-esf/parcours-esf.d.ts.map +1 -1
- package/es/esf/components/period-picker/services/dates.js +0 -1
- package/es/esf/components/village-maps/utils.js +0 -1
- package/es/esf/components/week-picker/index.js +1 -2
- package/es/esf/components/week-picker/utils.js +0 -1
- package/es/esf/components/week-picker-2/index.js +1 -2
- package/es/esf/components/week-picker-2/utils.js +0 -1
- package/package.json +34 -30
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
.item {
|
|
2
|
+
position: relative;
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.button {
|
|
8
|
+
width: 100%;
|
|
9
|
+
justify-content: flex-start;
|
|
10
|
+
gap: 10px;
|
|
11
|
+
font-weight: 400;
|
|
12
|
+
text-align: left;
|
|
13
|
+
padding-right: 100px;
|
|
14
|
+
background-color: var(--ublo-grey-100, #f5f5f5);
|
|
15
|
+
border-radius: var(--ublo-radius-200, 10px);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.selected .button {
|
|
19
|
+
color: var(--ublo-primary-color, #073ff8);
|
|
20
|
+
font-weight: 700;
|
|
21
|
+
background-color: var(--ublo-blue-100, #e8f0fc);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.opened .button {
|
|
25
|
+
border-bottom-right-radius: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.logo {
|
|
29
|
+
flex: 0 0 36px;
|
|
30
|
+
width: 36px;
|
|
31
|
+
height: 36px;
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
justify-content: center;
|
|
35
|
+
background-color: var(--ublo-secondary-color, #4177f6);
|
|
36
|
+
border-radius: var(--ublo-radius-200, 10px);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.logo img {
|
|
40
|
+
width: 24px;
|
|
41
|
+
height: 24px;
|
|
42
|
+
filter: brightness(0) invert(1);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.name {
|
|
46
|
+
color: var(--ublo-grey-600, #1b1b1b);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.selected .name {
|
|
50
|
+
color: var(--ublo-primary-color, #073ff8);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.actions {
|
|
54
|
+
position: absolute;
|
|
55
|
+
top: 12px;
|
|
56
|
+
right: 12px;
|
|
57
|
+
display: flex;
|
|
58
|
+
gap: 4px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.action {
|
|
62
|
+
border-radius: var(--ublo-radius-100, 3px);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.list {
|
|
66
|
+
width: calc(100% - 28px);
|
|
67
|
+
max-height: 140px;
|
|
68
|
+
display: flex;
|
|
69
|
+
flex-direction: column;
|
|
70
|
+
margin-left: auto;
|
|
71
|
+
padding: 6px;
|
|
72
|
+
border-radius: 0 0 var(--ublo-radius-200, 10px) var(--ublo-radius-200, 10px);
|
|
73
|
+
overflow: auto;
|
|
74
|
+
overscroll-behavior: contain;
|
|
75
|
+
background: linear-gradient(
|
|
76
|
+
var(--ublo-grey-100, #f5f5f5) 30%,
|
|
77
|
+
hsla(0, 0%, 100%, 0)
|
|
78
|
+
),
|
|
79
|
+
linear-gradient(hsla(0, 0%, 100%, 0), var(--ublo-grey-100, #f5f5f5) 70%) 0
|
|
80
|
+
100%,
|
|
81
|
+
radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.2), transparent),
|
|
82
|
+
radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.2), transparent)
|
|
83
|
+
0 100%;
|
|
84
|
+
background-repeat: no-repeat;
|
|
85
|
+
background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
|
|
86
|
+
background-attachment: local, local, scroll, scroll;
|
|
87
|
+
background-color: var(--ublo-grey-100, #f5f5f5);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.sub {
|
|
91
|
+
position: relative;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.subButton {
|
|
95
|
+
width: 100%;
|
|
96
|
+
justify-content: flex-start;
|
|
97
|
+
padding-right: 68px;
|
|
98
|
+
font-weight: 400;
|
|
99
|
+
text-align: left;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.subButtonSelected {
|
|
103
|
+
color: var(--ublo-primary-color, #073ff8);
|
|
104
|
+
font-weight: 700;
|
|
105
|
+
background-color: var(--ublo-blue-100, #e8f0fc);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.subActions {
|
|
109
|
+
position: absolute;
|
|
110
|
+
top: 50%;
|
|
111
|
+
right: 8px;
|
|
112
|
+
display: flex;
|
|
113
|
+
gap: 4px;
|
|
114
|
+
transform: translateY(-50%);
|
|
115
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { Offer } from "../services/offers";
|
|
3
|
+
type Props = {
|
|
4
|
+
lang: "fr" | "en";
|
|
5
|
+
channel: string;
|
|
6
|
+
resort: number | string;
|
|
7
|
+
facet: string;
|
|
8
|
+
preset: Record<string, any> | null;
|
|
9
|
+
updatePreset: (item: Offer, subPreset?: Offer) => void;
|
|
10
|
+
removePreset: () => void;
|
|
11
|
+
error: string | null;
|
|
12
|
+
setError: React.Dispatch<React.SetStateAction<string | null>>;
|
|
13
|
+
setShowPresetDialog: React.Dispatch<React.SetStateAction<boolean>>;
|
|
14
|
+
};
|
|
15
|
+
export default function WidgetList({ lang, channel, resort, facet, preset, updatePreset, removePreset, setError, setShowPresetDialog, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=widget-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-list.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-editor/components/widget-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IACvD,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9D,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CACpE,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,mBAAmB,GACpB,EAAE,KAAK,2CA8CP"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import Loader from "dt-design-system/es/loader";
|
|
4
|
+
import WidgetListItem from "./widget-list-item";
|
|
5
|
+
import * as Offers from "../services/offers";
|
|
6
|
+
import css from "./widget-list.module.css";
|
|
7
|
+
export default function WidgetList({ lang, channel, resort, facet, preset, updatePreset, removePreset, setError, setShowPresetDialog, }) {
|
|
8
|
+
const [offers, setOffers] = React.useState(null);
|
|
9
|
+
const [loading, setLoading] = React.useState(false);
|
|
10
|
+
React.useEffect(() => {
|
|
11
|
+
const runEffect = async () => {
|
|
12
|
+
setError(null);
|
|
13
|
+
setOffers(null);
|
|
14
|
+
setLoading(true);
|
|
15
|
+
try {
|
|
16
|
+
const offers = (await Offers.get(lang, channel, resort, facet));
|
|
17
|
+
const filteredOffers = offers.filter(({ kind }) => {
|
|
18
|
+
return kind !== "FFS" && kind !== "ASSU";
|
|
19
|
+
});
|
|
20
|
+
setOffers(filteredOffers);
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
setError("Une erreur est survenue lors de la récupération des offres");
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
setLoading(false);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
runEffect();
|
|
30
|
+
}, [channel, facet, lang, resort, setError]);
|
|
31
|
+
return (_jsxs("div", { className: css.list, children: [loading && _jsx(Loader, { className: css.loader }), offers?.map((offer, i) => {
|
|
32
|
+
return (_jsx(WidgetListItem, { item: offer, preset: preset, updatePreset: updatePreset, removePreset: removePreset, setShowPresetDialog: setShowPresetDialog }, i));
|
|
33
|
+
})] }));
|
|
34
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type Props = {
|
|
3
|
+
lang: "fr" | "en";
|
|
4
|
+
options: {
|
|
5
|
+
channel: string;
|
|
6
|
+
resort: string;
|
|
7
|
+
cartUrl?: string;
|
|
8
|
+
analytics?: () => void;
|
|
9
|
+
};
|
|
10
|
+
urls?: {
|
|
11
|
+
override?: string;
|
|
12
|
+
skiPasses?: {
|
|
13
|
+
winter: string;
|
|
14
|
+
summer: string;
|
|
15
|
+
};
|
|
16
|
+
lodgings?: {
|
|
17
|
+
winter: string;
|
|
18
|
+
summer: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
target: HTMLElement | null;
|
|
22
|
+
updatePreset: (preset: any) => any;
|
|
23
|
+
closeEditor: () => void;
|
|
24
|
+
removeObsoletePreset: () => void;
|
|
25
|
+
children?: React.ReactNode;
|
|
26
|
+
};
|
|
27
|
+
export default function EditorDialog({ lang, options, urls, target, updatePreset, closeEditor, removeObsoletePreset, children, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=editor-dialog.d.ts.map
|
|
@@ -0,0 +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,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,QAAQ,GACT,EAAE,KAAK,2CAqDP"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import Dialog from "dt-design-system/es/dialog";
|
|
4
|
+
import Button from "dt-design-system/es/button";
|
|
5
|
+
import * as Icons from "dt-design-system/es/icons";
|
|
6
|
+
import MseMPresetEditor from "./msem-preset-editor";
|
|
7
|
+
import css from "./editor-dialog.module.css";
|
|
8
|
+
export default function EditorDialog({ lang, options, urls, target, updatePreset, closeEditor, removeObsoletePreset, children, }) {
|
|
9
|
+
const selectedPreset = target?.getAttribute("data-msem-preset");
|
|
10
|
+
const [preset, setPreset] = React.useState(selectedPreset ? JSON.parse(selectedPreset) : null);
|
|
11
|
+
const hasObsoletePreset = target?.hasAttribute("data-config");
|
|
12
|
+
const updateNewPreset = React.useCallback(() => {
|
|
13
|
+
updatePreset(preset);
|
|
14
|
+
}, [preset, updatePreset]);
|
|
15
|
+
return (_jsxs(Dialog, { className: css.dialog, isOpened: !!target, container: null, close: closeEditor, showAsModal: false, closeOnBackdropClick: false, children: [_jsx("div", { className: css.title, children: "Choisissez un widget" }), _jsx("div", { className: css.subtitle, children: "Ce dernier s'ouvrira au clic sur la section selectionn\u00E9e." }), _jsx(MseMPresetEditor, { lang: lang, options: options, urls: urls, selectedPreset: selectedPreset, onChange: setPreset, children: children }), _jsxs("div", { className: css.buttons, children: [hasObsoletePreset && (_jsxs(Button, { variant: "danger", className: css.removeObsolete, onClick: removeObsoletePreset, children: [_jsx(Icons.MdOutlineCleaningServices, {}), "Nettoyer le preset obsol\u00E8te"] })), _jsx(Button, { variant: "secondary", onClick: closeEditor, children: "Annuler" }), _jsx(Button, { variant: "primary", onClick: updateNewPreset, children: "Valider" })] })] }));
|
|
16
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
.dialog {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
padding: 16px;
|
|
5
|
+
pointer-events: auto;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.title {
|
|
9
|
+
margin-bottom: 8px;
|
|
10
|
+
font-size: 24px;
|
|
11
|
+
font-weight: 700;
|
|
12
|
+
line-height: 1;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.subtitle {
|
|
16
|
+
margin-bottom: 16px;
|
|
17
|
+
padding-right: 48px;
|
|
18
|
+
font-size: 14px;
|
|
19
|
+
line-height: 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.buttons {
|
|
23
|
+
display: flex;
|
|
24
|
+
justify-content: flex-end;
|
|
25
|
+
gap: 8px;
|
|
26
|
+
margin-top: 22px;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.removeObsolete {
|
|
30
|
+
margin-right: auto;
|
|
31
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type Props = {
|
|
3
|
+
stay: {
|
|
4
|
+
from: string;
|
|
5
|
+
to: string;
|
|
6
|
+
};
|
|
7
|
+
preset: Record<string, any> | null;
|
|
8
|
+
setPreset: React.Dispatch<React.SetStateAction<Record<string, any> | null>>;
|
|
9
|
+
setShowPresetDialog: React.Dispatch<React.SetStateAction<boolean>>;
|
|
10
|
+
testPreset: () => void;
|
|
11
|
+
};
|
|
12
|
+
export default function Elloha({ preset, setPreset, stay, setShowPresetDialog, testPreset, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=elloha.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elloha.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-editor/editors/elloha.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5E,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAWF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,MAAM,EACN,SAAS,EACT,IAAI,EACJ,mBAAmB,EACnB,UAAU,GACX,EAAE,KAAK,2CAyFP"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import MultipleSelect from "dt-design-system/es/multiple-select";
|
|
4
|
+
import Form from "../components/form";
|
|
5
|
+
import * as API from "../services/api";
|
|
6
|
+
import css from "./elloha.module.css";
|
|
7
|
+
const DEFAULT_DATA = {
|
|
8
|
+
groupNames: [],
|
|
9
|
+
};
|
|
10
|
+
export default function Elloha({ preset, setPreset, stay, setShowPresetDialog, testPreset, }) {
|
|
11
|
+
const savedPreset = React.useRef(preset);
|
|
12
|
+
const [loading, setLoading] = React.useState(false);
|
|
13
|
+
const [groupNames, setGroupNames] = React.useState([]);
|
|
14
|
+
const [selectedGroups, setSelectedGroups] = React.useState(getDefaultData(preset));
|
|
15
|
+
const { merchant } = preset?.options || {};
|
|
16
|
+
const error = !stay?.from || !stay?.to;
|
|
17
|
+
const cancelPreset = () => {
|
|
18
|
+
setPreset(savedPreset.current);
|
|
19
|
+
setShowPresetDialog(false);
|
|
20
|
+
};
|
|
21
|
+
const confirmPreset = () => {
|
|
22
|
+
setShowPresetDialog(false);
|
|
23
|
+
};
|
|
24
|
+
React.useEffect(() => {
|
|
25
|
+
if (!error) {
|
|
26
|
+
const runEffect = async () => {
|
|
27
|
+
try {
|
|
28
|
+
setLoading(true);
|
|
29
|
+
const { kinds } = await API.getEllohaGroups(merchant, stay.from);
|
|
30
|
+
const allGroups = kinds.map((k) => k.group).filter(Boolean);
|
|
31
|
+
const groups = [...new Set(allGroups)];
|
|
32
|
+
setGroupNames(groups);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
// eslint-disable-next-line no-console
|
|
36
|
+
console.error(e);
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
setLoading(false);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
runEffect();
|
|
43
|
+
}
|
|
44
|
+
}, [error, merchant, stay.from]);
|
|
45
|
+
React.useEffect(() => {
|
|
46
|
+
setPreset((current = {}) => {
|
|
47
|
+
return {
|
|
48
|
+
...current,
|
|
49
|
+
presets: {
|
|
50
|
+
...(current?.presets || {}),
|
|
51
|
+
groupNames: selectedGroups,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
}, [selectedGroups, setPreset]);
|
|
56
|
+
return (_jsxs(Form, { title: "Presets activit\u00E9s Elloha", width: 420, preset: preset, buttonsActions: {
|
|
57
|
+
testPreset,
|
|
58
|
+
cancelPreset,
|
|
59
|
+
confirmPreset: error || groupNames.length === 0 ? undefined : confirmPreset,
|
|
60
|
+
}, children: [!error && (_jsx(MultipleSelect, { label: "Groupes", options: groupNames, values: selectedGroups, onChange: setSelectedGroups, placeholder: "S\u00E9lectionnez un ou plusieurs groupes", loading: loading, disabled: groupNames.length === 0, error: !loading &&
|
|
61
|
+
groupNames.length === 0 &&
|
|
62
|
+
"Aucun groupe disponible à ces dates" })), error && (_jsx("div", { className: css.error, children: "Vous devez renseigner des dates de s\u00E9jour pour afficher les groupes" }))] }));
|
|
63
|
+
}
|
|
64
|
+
function getDefaultData(preset) {
|
|
65
|
+
if (!preset?.presets)
|
|
66
|
+
return DEFAULT_DATA;
|
|
67
|
+
const { groupNames } = preset.presets;
|
|
68
|
+
return groupNames || DEFAULT_DATA.groupNames;
|
|
69
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import SkiPasses from "./ski-passes";
|
|
2
|
+
import Lodgings from "./lodgings";
|
|
3
|
+
import Elloha from "./elloha";
|
|
4
|
+
import Vakario from "./vakario";
|
|
5
|
+
import StandardProducts from "./standard-products";
|
|
6
|
+
declare const Editor: {
|
|
7
|
+
lodging: typeof Lodgings;
|
|
8
|
+
skiPass: typeof SkiPasses;
|
|
9
|
+
elloha: typeof Elloha;
|
|
10
|
+
vakario: typeof Vakario;
|
|
11
|
+
otherProducts: typeof StandardProducts;
|
|
12
|
+
};
|
|
13
|
+
export default Editor;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-editor/editors/index.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,QAAA,MAAM,MAAM;;;;;;CAMX,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import SkiPasses from "./ski-passes";
|
|
2
|
+
import Lodgings from "./lodgings";
|
|
3
|
+
import Elloha from "./elloha";
|
|
4
|
+
import Vakario from "./vakario";
|
|
5
|
+
import StandardProducts from "./standard-products";
|
|
6
|
+
const Editor = {
|
|
7
|
+
lodging: Lodgings,
|
|
8
|
+
skiPass: SkiPasses,
|
|
9
|
+
elloha: Elloha,
|
|
10
|
+
vakario: Vakario,
|
|
11
|
+
otherProducts: StandardProducts,
|
|
12
|
+
};
|
|
13
|
+
export default Editor;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type Props = {
|
|
3
|
+
stay: {
|
|
4
|
+
from: string;
|
|
5
|
+
to: string;
|
|
6
|
+
};
|
|
7
|
+
preset: Record<string, any> | null;
|
|
8
|
+
setPreset: React.Dispatch<React.SetStateAction<Record<string, any> | null>>;
|
|
9
|
+
setShowPresetDialog: React.Dispatch<React.SetStateAction<boolean>>;
|
|
10
|
+
testPreset: () => void;
|
|
11
|
+
onChange: (preset: Record<string, any>) => void;
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
};
|
|
14
|
+
export default function Lodgings({ preset, setPreset, setShowPresetDialog, testPreset, onChange, baseUrl, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=lodgings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lodgings.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-editor/editors/lodgings.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5E,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAsCF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,MAAM,EACN,SAAS,EACT,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,2CAmSP"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import Checkbox from "dt-design-system/es/checkbox";
|
|
4
|
+
import NumberPicker from "dt-design-system/es/number-picker";
|
|
5
|
+
import Select from "dt-design-system/es/select";
|
|
6
|
+
import MultipleSelect from "dt-design-system/es/multiple-select";
|
|
7
|
+
import Form from "../components/form";
|
|
8
|
+
import * as API from "../services/api";
|
|
9
|
+
import css from "./lodgings.module.css";
|
|
10
|
+
const DEFAULT_DATA = {
|
|
11
|
+
adults: 0,
|
|
12
|
+
children: 0,
|
|
13
|
+
lodging: "",
|
|
14
|
+
standings: [],
|
|
15
|
+
options: [],
|
|
16
|
+
districts: [],
|
|
17
|
+
nbRooms: [],
|
|
18
|
+
roomType: "",
|
|
19
|
+
type: "",
|
|
20
|
+
openPage: false,
|
|
21
|
+
};
|
|
22
|
+
export default function Lodgings({ preset, setPreset, setShowPresetDialog, testPreset, onChange, baseUrl, }) {
|
|
23
|
+
const savedPreset = React.useRef(preset);
|
|
24
|
+
const [ready, setReady] = React.useState(false);
|
|
25
|
+
const [lodgings, setLogings] = React.useState([]);
|
|
26
|
+
const [filters, setFilters] = React.useState({
|
|
27
|
+
standings: [],
|
|
28
|
+
options: [],
|
|
29
|
+
districts: [],
|
|
30
|
+
});
|
|
31
|
+
const [rooms, setRooms] = React.useState([]);
|
|
32
|
+
const [loading, setLoading] = React.useState(false);
|
|
33
|
+
const [data, setData] = React.useState(getDefaultData(preset));
|
|
34
|
+
const kinds = [...new Set(lodgings.map(({ kind }) => kind))];
|
|
35
|
+
const { channel, resort, facet } = preset?.options || {};
|
|
36
|
+
const showLodgingPageCheckbox = !!data.lodging;
|
|
37
|
+
const showFilters = !data.lodging;
|
|
38
|
+
const updateField = (field) => (value) => {
|
|
39
|
+
setData({ ...data, [field]: value });
|
|
40
|
+
};
|
|
41
|
+
const updateRoomNb = (value) => {
|
|
42
|
+
setData({ ...data, nbRooms: value ? [value] : DEFAULT_DATA.nbRooms });
|
|
43
|
+
};
|
|
44
|
+
const updateFilter = (kind) => (newValue) => {
|
|
45
|
+
setData((data) => ({ ...data, [kind]: newValue.map((v) => v.value) }));
|
|
46
|
+
};
|
|
47
|
+
const formatedLodgings = lodgings.map((lodging) => ({
|
|
48
|
+
value: lodging.slug,
|
|
49
|
+
label: lodging.name,
|
|
50
|
+
}));
|
|
51
|
+
const formatedRooms = rooms.map((room) => ({
|
|
52
|
+
label: room.title,
|
|
53
|
+
value: room.type,
|
|
54
|
+
}));
|
|
55
|
+
const selectedStandings = data.standings?.map((standing) => filters?.standings?.find((d) => d.value === standing));
|
|
56
|
+
const selectedOptions = data.options?.map((option) => filters?.options?.find((d) => d.value === option));
|
|
57
|
+
const selectedDistricts = data.districts?.map((district) => filters?.districts?.find((d) => d.value === district));
|
|
58
|
+
const cancelPreset = () => {
|
|
59
|
+
setPreset(savedPreset.current);
|
|
60
|
+
setShowPresetDialog(false);
|
|
61
|
+
};
|
|
62
|
+
const confirmPreset = () => {
|
|
63
|
+
setShowPresetDialog(false);
|
|
64
|
+
};
|
|
65
|
+
React.useEffect(() => {
|
|
66
|
+
if (!ready) {
|
|
67
|
+
const init = async () => {
|
|
68
|
+
try {
|
|
69
|
+
setLoading(true);
|
|
70
|
+
const filters = await API.getLodgingFilters(channel, resort, facet);
|
|
71
|
+
const formatedFilters = Object.keys(filters).reduce((acc, key) => {
|
|
72
|
+
if (key === "accomodations")
|
|
73
|
+
return acc;
|
|
74
|
+
const filter = filters[key];
|
|
75
|
+
if (key === "districts") {
|
|
76
|
+
const entries = filter.map((entry) => ({
|
|
77
|
+
value: entry.id,
|
|
78
|
+
label: entry.name,
|
|
79
|
+
}));
|
|
80
|
+
return { ...acc, [key]: entries };
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const entries = filter.map((entry) => ({
|
|
84
|
+
value: entry.code,
|
|
85
|
+
label: entry.label,
|
|
86
|
+
}));
|
|
87
|
+
return { ...acc, [key]: entries };
|
|
88
|
+
}
|
|
89
|
+
}, {});
|
|
90
|
+
setLogings(filters.accomodations);
|
|
91
|
+
setFilters(formatedFilters);
|
|
92
|
+
setReady(true);
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
// eslint-disable-next-line no-console
|
|
96
|
+
console.error(e);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
setLoading(false);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
init();
|
|
103
|
+
}
|
|
104
|
+
}, [channel, facet, ready, resort]);
|
|
105
|
+
React.useEffect(() => {
|
|
106
|
+
if (!data.lodging) {
|
|
107
|
+
setData((data) => ({ ...data, openPage: false }));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const getRoomTypes = async () => {
|
|
111
|
+
try {
|
|
112
|
+
setLoading(true);
|
|
113
|
+
const id = lodgings.find((lodging) => lodging.slug === data.lodging)?.id;
|
|
114
|
+
if (id) {
|
|
115
|
+
const { rooms } = await API.getLodgingRooms(id, resort, facet);
|
|
116
|
+
if (rooms) {
|
|
117
|
+
setRooms(rooms);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
// eslint-disable-next-line no-console
|
|
123
|
+
console.error(e);
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
setLoading(false);
|
|
127
|
+
}
|
|
128
|
+
setData((data) => ({
|
|
129
|
+
...data,
|
|
130
|
+
openPage: data.openPage ?? true,
|
|
131
|
+
standings: DEFAULT_DATA.standings,
|
|
132
|
+
options: DEFAULT_DATA.options,
|
|
133
|
+
districts: DEFAULT_DATA.districts,
|
|
134
|
+
type: DEFAULT_DATA.type,
|
|
135
|
+
}));
|
|
136
|
+
};
|
|
137
|
+
getRoomTypes();
|
|
138
|
+
}
|
|
139
|
+
}, [data.lodging, facet, lodgings, resort]);
|
|
140
|
+
React.useEffect(() => {
|
|
141
|
+
setPreset((current = {}) => {
|
|
142
|
+
const { lodging } = data;
|
|
143
|
+
const adults = parseInt(data.adults);
|
|
144
|
+
const children = parseInt(data.children);
|
|
145
|
+
const accomodation = lodging || undefined;
|
|
146
|
+
const openPage = lodging ? data.openPage : undefined;
|
|
147
|
+
const agesChildren = [...new Array(children)].map((_) => 12);
|
|
148
|
+
const paxPlan = adults ? { adults, children, agesChildren } : undefined;
|
|
149
|
+
const standings = data.standings?.length ? data.standings : undefined;
|
|
150
|
+
const options = data.options?.length ? data.options : undefined;
|
|
151
|
+
const districts = data.districts?.length ? data.districts : undefined;
|
|
152
|
+
const type = data.type || undefined;
|
|
153
|
+
const roomType = data.roomType || undefined;
|
|
154
|
+
const nbRooms = data.nbRooms[0] > 0 ? data.nbRooms : undefined;
|
|
155
|
+
const previewDetails = { paxPlan, roomType };
|
|
156
|
+
const presets = {
|
|
157
|
+
accomodation,
|
|
158
|
+
standings,
|
|
159
|
+
options,
|
|
160
|
+
districts,
|
|
161
|
+
nbRooms,
|
|
162
|
+
type,
|
|
163
|
+
};
|
|
164
|
+
const newPreset = {
|
|
165
|
+
...current,
|
|
166
|
+
options: { ...(current?.options || {}), previewDetails },
|
|
167
|
+
presets: { ...(current?.presets || {}), ...presets },
|
|
168
|
+
openPage,
|
|
169
|
+
url: baseUrl || undefined,
|
|
170
|
+
};
|
|
171
|
+
onChange?.(newPreset);
|
|
172
|
+
return newPreset;
|
|
173
|
+
});
|
|
174
|
+
}, [data, onChange, baseUrl, setPreset]);
|
|
175
|
+
return (_jsxs(Form, { title: "Presets h\u00E9bergements", width: 580, preset: preset, buttonsActions: {
|
|
176
|
+
testPreset,
|
|
177
|
+
cancelPreset,
|
|
178
|
+
confirmPreset,
|
|
179
|
+
}, children: [_jsx("div", { className: css.label, children: "Nombre de personnes" }), _jsxs("div", { className: css.row, children: [_jsx(NumberPicker, { className: css.peopleInput, label: "Adultes", min: 0, max: 20, value: data.adults, onChange: updateField("adults"), withInput: true }), _jsx(NumberPicker, { className: css.peopleInput, label: "Enfants", min: 0, max: 9, value: data.children, onChange: updateField("children"), withInput: true })] }), _jsx("div", { className: css.label, children: "H\u00E9bergement" }), _jsx(Select, { placeholder: "S\u00E9lectionnez un h\u00E9bergement", options: formatedLodgings, value: data.lodging, onValueChange: updateField("lodging"), loading: loading }), showLodgingPageCheckbox && (_jsx(Checkbox, { label: "Ouvrir la page du site", checked: data.openPage, disabled: !showLodgingPageCheckbox, onCheckedChange: updateField("openPage") })), !showFilters && (_jsxs(_Fragment, { children: [_jsx("div", { className: css.label, children: "Chambres" }), (formatedRooms?.length > 0 || loading) && (_jsx(Select, { label: "Type de chambre", placeholder: "S\u00E9lectionnez un type de chambre", value: data.roomType, options: formatedRooms, loading: loading, onValueChange: updateField("roomType") })), _jsx(NumberPicker, { label: "Nombre de chambres", min: 0, max: 20, value: data.nbRooms?.[0] || 0, onChange: updateRoomNb, withInput: true })] })), showFilters && (_jsxs(_Fragment, { children: [_jsx("div", { className: css.label, children: "Filtres" }), kinds.length > 1 && (_jsx(Select, { label: "Type", placeholder: "S\u00E9lectionnez un type", options: kinds, value: data.type, onValueChange: updateField("type"), loading: loading })), filters?.standings && filters?.standings?.length > 1 && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Standing", options: filters.standings, values: selectedStandings, onChange: updateFilter("standings"), loading: loading })), filters?.options && filters?.options?.length > 1 && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Options", options: filters.options, values: selectedOptions, onChange: updateFilter("options"), loading: loading })), filters?.districts && filters?.districts?.length > 1 && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Quartiers", options: filters.districts, values: selectedDistricts, onChange: updateFilter("districts"), loading: loading }))] }))] }));
|
|
180
|
+
}
|
|
181
|
+
function getDefaultData(preset) {
|
|
182
|
+
if (!preset?.presets && !preset?.options)
|
|
183
|
+
return DEFAULT_DATA;
|
|
184
|
+
const { accomodation, nbRooms, standings, options, districts, type } = preset?.presets || {};
|
|
185
|
+
const { openPage } = preset;
|
|
186
|
+
const { paxPlan, roomType } = preset?.options?.previewDetails || {};
|
|
187
|
+
return {
|
|
188
|
+
adults: paxPlan?.adults || DEFAULT_DATA.adults,
|
|
189
|
+
children: paxPlan?.children || DEFAULT_DATA.children,
|
|
190
|
+
lodging: accomodation || DEFAULT_DATA.lodging,
|
|
191
|
+
nbRooms: nbRooms || DEFAULT_DATA.nbRooms,
|
|
192
|
+
roomType: roomType || DEFAULT_DATA.roomType,
|
|
193
|
+
standings: standings || DEFAULT_DATA.standings,
|
|
194
|
+
options: options || DEFAULT_DATA.options,
|
|
195
|
+
districts: districts || DEFAULT_DATA.districts,
|
|
196
|
+
type: type || DEFAULT_DATA.type,
|
|
197
|
+
openPage: openPage ?? DEFAULT_DATA.openPage,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.row {
|
|
2
|
+
display: flex;
|
|
3
|
+
gap: 8px;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.rowWrap {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-wrap: wrap;
|
|
9
|
+
justify-content: space-between;
|
|
10
|
+
gap: 8px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.rowWrap > * {
|
|
14
|
+
flex: 0 0 auto;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.label {
|
|
18
|
+
font-size: 12px;
|
|
19
|
+
user-select: none;
|
|
20
|
+
font-weight: 700;
|
|
21
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type Props = {
|
|
3
|
+
stay: {
|
|
4
|
+
from: string;
|
|
5
|
+
to: string;
|
|
6
|
+
};
|
|
7
|
+
preset: Record<string, any> | null;
|
|
8
|
+
setPreset: React.Dispatch<React.SetStateAction<Record<string, any> | null>>;
|
|
9
|
+
setShowPresetDialog: React.Dispatch<React.SetStateAction<boolean>>;
|
|
10
|
+
testPreset: () => void;
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
};
|
|
13
|
+
export default function SkiPasses({ preset, setPreset, stay, setShowPresetDialog, testPreset, baseUrl, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=ski-passes.d.ts.map
|