ublo-lib 1.38.15 → 1.38.17

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.
Files changed (27) hide show
  1. package/es/future/components/msem-preset-editor/components/stay-picker.d.ts.map +1 -1
  2. package/es/future/components/msem-preset-editor/components/stay-picker.js +1 -1
  3. package/es/future/components/msem-preset-editor/components/stay-picker.module.css +4 -0
  4. package/es/future/components/msem-preset-editor/components/widget-list-item.d.ts.map +1 -1
  5. package/es/future/components/msem-preset-editor/components/widget-list-item.js +34 -26
  6. package/es/future/components/msem-preset-editor/components/widget-list-item.module.css +43 -28
  7. package/es/future/components/msem-preset-editor/components/widget-list.js +1 -1
  8. package/es/future/components/msem-preset-editor/components/widget-list.module.css +5 -4
  9. package/es/future/components/msem-preset-editor/editors/esf.d.ts +16 -0
  10. package/es/future/components/msem-preset-editor/editors/esf.d.ts.map +1 -0
  11. package/es/future/components/msem-preset-editor/editors/esf.js +120 -0
  12. package/es/future/components/msem-preset-editor/editors/index.d.ts +2 -0
  13. package/es/future/components/msem-preset-editor/editors/index.d.ts.map +1 -1
  14. package/es/future/components/msem-preset-editor/editors/index.js +2 -0
  15. package/es/future/components/msem-preset-editor/editors/lodgings.js +1 -1
  16. package/es/future/components/msem-preset-editor/msem-preset-editor.d.ts +2 -1
  17. package/es/future/components/msem-preset-editor/msem-preset-editor.d.ts.map +1 -1
  18. package/es/future/components/msem-preset-editor/msem-preset-editor.js +2 -3
  19. package/es/future/components/msem-preset-editor/msem-preset-editor.module.css +0 -1
  20. package/es/future/components/msem-preset-editor/services/api.d.ts +1 -0
  21. package/es/future/components/msem-preset-editor/services/api.d.ts.map +1 -1
  22. package/es/future/components/msem-preset-editor/services/api.js +12 -0
  23. package/es/future/components/msem-preset-linker/msem-preset-linker.d.ts +2 -1
  24. package/es/future/components/msem-preset-linker/msem-preset-linker.d.ts.map +1 -1
  25. package/es/future/components/msem-preset-linker/msem-preset-linker.js +2 -2
  26. package/es/future/components/msem-preset-linker/msem-preset-linker.module.css +1 -0
  27. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"stay-picker.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/components/stay-picker.tsx"],"names":[],"mappings":"AAIA,KAAK,KAAK,GAAG;IACX,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CAClD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,2CAiD1D"}
1
+ {"version":3,"file":"stay-picker.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/components/stay-picker.tsx"],"names":[],"mappings":"AAIA,KAAK,KAAK,GAAG;IACX,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CAClD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,2CAmD1D"}
@@ -31,5 +31,5 @@ export default function StayPicker({ stay, setStay }) {
31
31
  }
32
32
  setStay({ ...stay, [key]: value });
33
33
  };
34
- return (_jsxs("div", { className: css.picker, children: [_jsx(Input, { type: "date", label: "Date de d\u00E9but", value: stay.from, onValueChange: updateStay("from") }), _jsx(Input, { type: "date", label: "Date de fin", value: stay.to, onValueChange: updateStay("to") })] }));
34
+ return (_jsxs("div", { className: css.picker, children: [_jsx(Input, { className: css.input, type: "date", label: "Date de d\u00E9but", value: stay.from, onValueChange: updateStay("from") }), _jsx(Input, { className: css.input, type: "date", label: "Date de fin", value: stay.to, onValueChange: updateStay("to") })] }));
35
35
  }
@@ -3,3 +3,7 @@
3
3
  gap: 12px;
4
4
  margin-bottom: 4px;
5
5
  }
6
+
7
+ .input {
8
+ flex: 1 1 100%;
9
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"widget-list-item.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/components/widget-list-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,KAAK,CAAC;IACZ,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,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CACpE,CAAC;AAWF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACpB,EAAE,KAAK,2CAoJP"}
1
+ {"version":3,"file":"widget-list-item.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/components/widget-list-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,KAAK,CAAC;IACZ,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,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CACpE,CAAC;AAYF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACpB,EAAE,KAAK,2CAqKP"}
@@ -3,6 +3,7 @@ import * as React from "react";
3
3
  import classNames from "classnames";
4
4
  import Button from "dt-design-system/es/button";
5
5
  import Tooltip from "dt-design-system/es/tooltip";
6
+ import Dropdown from "dt-design-system/es/dropdown";
6
7
  import * as Icons from "dt-design-system/es/icons";
7
8
  import css from "./widget-list-item.module.css";
8
9
  const ALLOW_PRESETS_ON_WIDGETS = [
@@ -12,46 +13,53 @@ const ALLOW_PRESETS_ON_WIDGETS = [
12
13
  "elloha",
13
14
  "vakario",
14
15
  "skiRental",
16
+ "esf",
15
17
  ];
16
18
  export default function WidgetListItem({ item, preset, updatePreset, removePreset, setShowPresetDialog, }) {
17
- const [opened, setOpened] = React.useState(false);
18
19
  const { widget, logo, name, items: subs } = item;
19
- const toggleItem = () => {
20
- setOpened(!opened);
21
- };
22
- const ToggleIcon = opened ? Icons.ChevronUp : Icons.ChevronDown;
23
20
  const isSelected = preset?.name === name && preset?.widget === widget;
21
+ const hasSubsSelected = subs?.some((sub) => preset?.name === sub.name && preset?.widget === sub.widget) || false;
22
+ const [opened, setOpened] = React.useState(isSelected || hasSubsSelected);
23
+ const ToggleIcon = opened ? Icons.ChevronUp : Icons.ChevronDown;
24
24
  const hasSubs = subs && subs.length > 0;
25
25
  const allowAdvancedPresets = ALLOW_PRESETS_ON_WIDGETS.includes(widget);
26
26
  const showEditButton = isSelected && allowAdvancedPresets;
27
27
  const showRemoveButton = isSelected;
28
+ const openDropdown = () => {
29
+ if (opened)
30
+ return;
31
+ setOpened(true);
32
+ };
33
+ const closeDropdown = () => {
34
+ setOpened(false);
35
+ };
28
36
  const classes = classNames(css.item, {
29
37
  [css.selected]: isSelected,
30
38
  [css.opened]: opened,
31
39
  });
32
40
  const handleItemClick = () => {
33
- if (!isSelected) {
41
+ if (widget && !isSelected) {
34
42
  updatePreset(item);
35
43
  }
36
44
  };
37
- return (_jsxs("div", { className: classes, children: [_jsxs(Button, { variant: "transparent", className: css.button, onClick: handleItemClick, children: [_jsx("div", { className: css.logo, children: _jsx("img", { src: logo, alt: name }) }), _jsx("div", { className: css.name, children: name })] }), (hasSubs || showEditButton || showRemoveButton) && (_jsxs("div", { className: css.actions, children: [showEditButton && (_jsx(Tooltip, { content: "Modifier", children: _jsx(Button, { variant: "primary", className: css.action, onClick: () => setShowPresetDialog(true), compact: true, children: _jsx(Icons.Edit, {}) }) })), showRemoveButton && (_jsx(Tooltip, { content: "Supprimer", children: _jsx(Button, { variant: "danger", className: css.action, onClick: removePreset, compact: true, children: _jsx(Icons.Trash, {}) }) })), hasSubs && (_jsx(Tooltip, { content: "Afficher les marchands", children: _jsx(Button, { variant: "secondary", className: css.action, onClick: toggleItem, compact: true, children: _jsx(ToggleIcon, {}) }) }))] })), opened && subs && (_jsx("div", { className: css.list, children: subs.map((sub) => {
38
- const isSelected = preset?.name === sub.name;
39
- const allowedWidgets = [
40
- "otherProducts",
41
- ...ALLOW_PRESETS_ON_WIDGETS,
42
- ];
43
- const isSkiRental = widget === "skiRental";
44
- const allowAdvancedPresets = !isSkiRental && allowedWidgets.includes(sub.widget);
45
- const showEditButton = isSelected && allowAdvancedPresets;
46
- const showButtons = showEditButton || isSelected;
47
- const classes = classNames(css.sub, {
48
- [css.subSelected]: isSelected,
49
- });
50
- const handleSubClick = () => {
51
- if (!isSelected) {
52
- updatePreset(item, sub);
53
- }
54
- };
55
- return (_jsxs("div", { className: classes, children: [_jsx(Button, { variant: "transparent", className: css.subButton, onClick: handleSubClick, children: sub.name }), showButtons && (_jsxs("div", { className: css.subActions, children: [showEditButton && (_jsx(Tooltip, { content: "Affiner le preset", children: _jsx(Button, { variant: "primary", className: css.action, onClick: () => setShowPresetDialog(true), compact: true, children: _jsx(Icons.Edit, {}) }) })), isSelected && (_jsx(Tooltip, { content: "Supprimer le preset", children: _jsx(Button, { variant: "danger", className: css.action, onClick: removePreset, compact: true, children: _jsx(Icons.Trash, {}) }) }))] }))] }, sub.name));
56
- }) }))] }));
45
+ return (_jsxs("div", { className: classes, children: [_jsxs(Button, { variant: "transparent", className: css.button, onClick: handleItemClick, disabled: !widget, children: [_jsx("div", { className: css.logo, children: _jsx("img", { src: logo, alt: name }) }), _jsx("div", { className: css.name, children: name })] }), (hasSubs || showEditButton || showRemoveButton) && (_jsxs("div", { className: css.actions, children: [showEditButton && (_jsx(Tooltip, { content: "Affiner le preset", children: _jsx(Button, { variant: "primary", className: css.action, onClick: () => setShowPresetDialog(true), compact: true, children: _jsx(Icons.Edit, {}) }) })), showRemoveButton && (_jsx(Tooltip, { content: "Supprimer le preset", children: _jsx(Button, { variant: "danger", className: css.action, onClick: removePreset, compact: true, children: _jsx(Icons.Trash, {}) }) })), hasSubs && (_jsx(Dropdown, { breakpoint: 600, onClose: closeDropdown, open: opened, className: css.dropdown, title: "Marchands", content: _jsx("div", { className: css.list, children: subs.map((sub) => {
46
+ const isSelected = preset?.name === sub.name;
47
+ const allowedWidgets = [
48
+ "otherProducts",
49
+ ...ALLOW_PRESETS_ON_WIDGETS,
50
+ ];
51
+ const isSkiRental = widget === "skiRental";
52
+ const allowAdvancedPresets = !isSkiRental && allowedWidgets.includes(sub.widget);
53
+ const showEditButton = isSelected && allowAdvancedPresets;
54
+ const showButtons = showEditButton || isSelected;
55
+ const classes = classNames(css.sub, {
56
+ [css.subSelected]: isSelected,
57
+ });
58
+ const handleSubClick = () => {
59
+ if (!isSelected) {
60
+ updatePreset(item, sub);
61
+ }
62
+ };
63
+ return (_jsxs("div", { className: classes, children: [_jsx(Button, { variant: "transparent", className: css.subButton, onClick: handleSubClick, autoFocus: isSelected ? true : undefined, children: sub.name }), showButtons && (_jsxs("div", { className: css.subActions, children: [showEditButton && (_jsx(Tooltip, { content: "Affiner le preset", children: _jsx(Button, { variant: "primary", className: css.action, onClick: () => setShowPresetDialog(true), compact: true, children: _jsx(Icons.Edit, {}) }) })), isSelected && (_jsx(Tooltip, { content: "Supprimer le preset", children: _jsx(Button, { variant: "danger", className: css.action, onClick: removePreset, compact: true, children: _jsx(Icons.Trash, {}) }) }))] }))] }, sub.name));
64
+ }) }), children: _jsx(Button, { variant: "secondary", className: css.action, onClick: openDropdown, compact: true, children: _jsx(ToggleIcon, {}) }) }))] }))] }));
57
65
  }
@@ -1,29 +1,41 @@
1
1
  .item {
2
2
  position: relative;
3
3
  display: flex;
4
- flex-direction: column;
4
+ justify-content: center;
5
5
  }
6
6
 
7
7
  .button {
8
8
  width: 100%;
9
- justify-content: flex-start;
9
+ display: flex;
10
+ flex-direction: column;
11
+ align-items: center;
12
+ justify-content: center;
10
13
  gap: 10px;
11
- font-weight: 400;
12
- text-align: left;
13
- padding-right: 100px;
14
+ padding-bottom: 35px;
14
15
  background-color: var(--ublo-grey-000, #ffffff);
16
+ border: 1px solid var(--ublo-grey-200, #ededed);
15
17
  border-radius: var(--ublo-radius-200, 8px);
16
18
  transition: 160ms background-color
17
19
  var(--ublo-transition-easing, cubic-bezier(0.4, 0, 0.2, 1));
18
20
  }
19
21
 
22
+ .button:disabled {
23
+ filter: none;
24
+ }
25
+
20
26
  .selected .button,
21
27
  .selected .button:hover {
22
- color: var(--ublo-secondary-color, #4177f6);
23
- background-color: var(--ublo-grey-200, #ededed);
28
+ background: var(
29
+ --ublo-blue-gradient,
30
+ linear-gradient(
31
+ 175deg,
32
+ var(--ublo-blue-400, #4177f6),
33
+ var(--ublo-blue-500, #004cc2)
34
+ )
35
+ );
24
36
  }
25
37
 
26
- .item:not(.selected) .button:hover {
38
+ .item:not(.selected) .button:not(:disabled):hover {
27
39
  background-color: var(--ublo-grey-100, #f5f5f5);
28
40
  }
29
41
 
@@ -38,21 +50,13 @@
38
50
  display: flex;
39
51
  align-items: center;
40
52
  justify-content: center;
41
- background: var(
42
- --ublo-blue-gradient,
43
- linear-gradient(
44
- 175deg,
45
- var(--ublo-blue-400, #4177f6),
46
- var(--ublo-blue-500, #004cc2)
47
- )
48
- );
53
+ background-color: var(--ublo-grey-200, #ededed);
49
54
  border-radius: var(--ublo-radius-200, 8px);
50
55
  }
51
56
 
52
57
  .logo img {
53
58
  width: 24px;
54
59
  height: 24px;
55
- filter: brightness(0) invert(1);
56
60
  }
57
61
 
58
62
  .name {
@@ -60,29 +64,32 @@
60
64
  }
61
65
 
62
66
  .selected .name {
63
- color: var(--ublo-secondary-color, #4177f6);
67
+ color: var(--ublo-grey-000, #ffffff);
64
68
  }
65
69
 
66
70
  .actions {
67
71
  position: absolute;
68
- top: 16px;
69
- right: 12px;
72
+ bottom: 10px;
73
+ left: 50%;
70
74
  display: flex;
71
75
  gap: 4px;
76
+ transform: translateX(-50%);
72
77
  }
73
78
 
74
79
  .action {
75
80
  border-radius: var(--ublo-radius-100, 3px);
76
81
  }
77
82
 
83
+ .dropdown {
84
+ padding: 0;
85
+ }
86
+
78
87
  .list {
79
- width: calc(100% - 26px);
80
- max-height: 140px;
88
+ max-height: 40vh;
81
89
  display: flex;
82
90
  flex-direction: column;
83
- margin-left: auto;
84
- padding: 0 6px;
85
- border-left: 3px solid var(--ublo-grey-200, #ededed);
91
+ gap: 4px;
92
+ padding: 6px;
86
93
  overflow: auto;
87
94
  overscroll-behavior: contain;
88
95
  scrollbar-width: thin;
@@ -115,13 +122,21 @@
115
122
 
116
123
  .subSelected .subButton,
117
124
  .subSelected .subButton:hover {
118
- color: var(--ublo-secondary-color, #4177f6);
119
- background-color: var(--ublo-grey-200, #ededed);
125
+ color: var(--ublo-grey-000, #ffffff);
126
+ background: var(
127
+ --ublo-blue-gradient,
128
+ linear-gradient(
129
+ 175deg,
130
+ var(--ublo-blue-400, #4177f6),
131
+ var(--ublo-blue-500, #004cc2)
132
+ )
133
+ );
120
134
  }
121
135
 
122
- .item:not(.subSelected) .subButton:hover {
136
+ .sub:not(.subSelected) .subButton:hover {
123
137
  background-color: var(--ublo-grey-100, #f5f5f5);
124
138
  }
139
+
125
140
  .subActions {
126
141
  position: absolute;
127
142
  top: 50%;
@@ -29,7 +29,7 @@ export default function WidgetList({ lang, msemServicesUrl, channel, resort, fac
29
29
  runEffect();
30
30
  }, [channel, facet, lang, msemServicesUrl, resort, setError]);
31
31
  return (_jsxs("div", { className: css.list, children: [loading &&
32
- [...new Array(3)].map((_, i) => {
32
+ [...new Array(5)].map((_, i) => {
33
33
  return _jsx(Loader, { className: css.loader, variant: "overlay" }, i);
34
34
  }), offers?.length === 0 && !loading && (_jsx("div", { className: css.empty, children: "Aucun widget disponible" })), offers?.map((offer, i) => {
35
35
  return (_jsx(WidgetListItem, { item: offer, preset: preset, updatePreset: updatePreset, removePreset: removePreset, setShowPresetDialog: setShowPresetDialog }, i));
@@ -1,13 +1,14 @@
1
1
  .list {
2
- display: flex;
3
- flex-direction: column;
4
- gap: 4px;
2
+ display: grid;
3
+ grid-template-columns: repeat(auto-fit, 160px);
4
+ justify-content: center;
5
+ gap: 12px;
5
6
  }
6
7
 
7
8
  div.loader {
8
9
  position: relative;
9
10
  width: 100%;
10
- height: 56px;
11
+ height: 120px;
11
12
  border-radius: var(--ublo-radius-200, 8px);
12
13
  }
13
14
 
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ type Props = {
3
+ msemServicesUrl: string;
4
+ stay: {
5
+ from: string;
6
+ to: string;
7
+ };
8
+ preset: Record<string, any> | null;
9
+ setPreset: React.Dispatch<React.SetStateAction<Record<string, any> | null>>;
10
+ setShowPresetDialog: React.Dispatch<React.SetStateAction<boolean>>;
11
+ onChange?: (preset: Record<string, any> | null) => void;
12
+ testPreset: () => void;
13
+ };
14
+ export default function Esf({ msemServicesUrl, preset, setPreset, setShowPresetDialog, onChange, testPreset, }: Props): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=esf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esf.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/editors/esf.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,KAAK,KAAK,GAAG;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,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,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAeF,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAC1B,eAAe,EACf,MAAM,EACN,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,UAAU,GACX,EAAE,KAAK,2CA0HP"}
@@ -0,0 +1,120 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import Input from "dt-design-system/es/input";
4
+ import Select from "dt-design-system/es/select";
5
+ import Form from "../components/form";
6
+ import * as API from "../services/api";
7
+ const DEFAULT_DATA = {
8
+ intermediary: "",
9
+ kind: "",
10
+ };
11
+ export default function Esf({ msemServicesUrl, preset, setPreset, setShowPresetDialog, onChange, testPreset, }) {
12
+ const savedPreset = React.useRef(preset);
13
+ const [loading, setLoading] = React.useState(false);
14
+ const [data, setData] = React.useState(getDefaultData(preset));
15
+ const [kindList, setKindList] = React.useState([]);
16
+ const formattedKindList = kindList.map((k) => {
17
+ const isEngagement = k.engagement;
18
+ const label = isEngagement
19
+ ? `${k.normalizedCode} - ${k.name} (engagement)`
20
+ : `${k.normalizedCode} - ${k.name}`;
21
+ const value = `${k.code}|${k.engagement}`;
22
+ return { label, value };
23
+ });
24
+ const selectedKind = kindList.find((k) => {
25
+ const [code, engagement] = data.kind.split("|");
26
+ if (engagement === "true") {
27
+ return k.engagement && k.code === code;
28
+ }
29
+ return !k.engagement && k.code === code;
30
+ });
31
+ const { channel, resort, lang } = preset?.options || {};
32
+ const year = getYear();
33
+ const stay = buildStay(year);
34
+ const season = getSeason(year);
35
+ const updateField = (field) => (value) => {
36
+ setData((current) => ({ ...current, [field]: value }));
37
+ };
38
+ const cancelPreset = () => {
39
+ setPreset(savedPreset.current);
40
+ setShowPresetDialog(false);
41
+ };
42
+ const confirmPreset = () => {
43
+ setShowPresetDialog(false);
44
+ };
45
+ React.useEffect(() => {
46
+ if (year && stay) {
47
+ const runEffect = async () => {
48
+ try {
49
+ setLoading(true);
50
+ const result = await API.getEsfKinds(msemServicesUrl, channel, resort, stay.from, stay.to, season, lang);
51
+ if (result.choices) {
52
+ setKindList(result.choices);
53
+ }
54
+ else {
55
+ throw new Error("Erreur lors de la récupération des types de cours");
56
+ }
57
+ }
58
+ catch (e) {
59
+ console.error(e);
60
+ }
61
+ finally {
62
+ setLoading(false);
63
+ }
64
+ };
65
+ runEffect();
66
+ }
67
+ }, []);
68
+ React.useEffect(() => {
69
+ setPreset((current = {}) => {
70
+ const kind = selectedKind?.code;
71
+ const engagement = selectedKind?.engagement ? true : undefined;
72
+ const newPreset = {
73
+ ...current,
74
+ presets: {
75
+ ...(current?.presets || {}),
76
+ intermediary: data.intermediary || undefined,
77
+ kind,
78
+ engagement,
79
+ },
80
+ };
81
+ onChange?.(newPreset);
82
+ return newPreset;
83
+ });
84
+ }, [data, onChange, setPreset]);
85
+ return (_jsxs(Form, { title: "Presets cours de ski esf", width: 420, preset: preset, buttonsActions: {
86
+ testPreset,
87
+ cancelPreset,
88
+ confirmPreset: data.intermediary || data.kind ? confirmPreset : undefined,
89
+ }, children: [_jsx(Input, { label: "Code interm\u00E9diaire", value: data.intermediary, onValueChange: updateField("intermediary") }), (loading || formattedKindList.length > 0) && (_jsx(Select, { label: "Type de cours", placeholder: "S\u00E9lectionnez un type de cours", value: data.kind, options: formattedKindList, onValueChange: updateField("kind"), loading: loading }))] }));
90
+ }
91
+ function getDefaultData(preset) {
92
+ if (!preset?.presets)
93
+ return DEFAULT_DATA;
94
+ const { intermediary, kind, engagement } = preset.presets;
95
+ return {
96
+ intermediary: intermediary || DEFAULT_DATA.intermediary,
97
+ kind: kind ? `${kind}|${engagement}` : DEFAULT_DATA.kind,
98
+ };
99
+ }
100
+ function getYear() {
101
+ const now = new Date();
102
+ const isAfterMay = now.getMonth() > 4;
103
+ const currentYear = now.getFullYear();
104
+ return isAfterMay ? currentYear : currentYear - 1;
105
+ }
106
+ function getSeason(year) {
107
+ const now = new Date();
108
+ const isAfterMay = now.getMonth() > 4;
109
+ return `${isAfterMay ? year + 1 : year}`;
110
+ }
111
+ function buildStay(year) {
112
+ const christmas = new Date(`${year}-12-25`);
113
+ const closerSaturday = new Date(`${year}-12-${25 - (christmas.getDay() + 1)}`);
114
+ const nextSaturday = new Date(closerSaturday);
115
+ nextSaturday.setDate(closerSaturday.getDate() + 7);
116
+ return {
117
+ from: closerSaturday.toISOString().split("T")[0],
118
+ to: nextSaturday.toISOString().split("T")[0],
119
+ };
120
+ }
@@ -5,6 +5,7 @@ import Elloha from "./elloha";
5
5
  import Vakario from "./vakario";
6
6
  import StandardProducts from "./standard-products";
7
7
  import SkiRental from "./ski-rental";
8
+ import Esf from "./esf";
8
9
  declare const Editor: {
9
10
  lodging: typeof Lodgings;
10
11
  skiPass: typeof SkiPasses;
@@ -13,6 +14,7 @@ declare const Editor: {
13
14
  vakario: typeof Vakario;
14
15
  otherProducts: typeof StandardProducts;
15
16
  skiRental: typeof SkiRental;
17
+ esf: typeof Esf;
16
18
  };
17
19
  export default Editor;
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/editors/index.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,QAAA,MAAM,MAAM;;;;;;;;CAQX,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/editors/index.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,QAAA,MAAM,MAAM;;;;;;;;;CASX,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -5,6 +5,7 @@ import Elloha from "./elloha";
5
5
  import Vakario from "./vakario";
6
6
  import StandardProducts from "./standard-products";
7
7
  import SkiRental from "./ski-rental";
8
+ import Esf from "./esf";
8
9
  const Editor = {
9
10
  lodging: Lodgings,
10
11
  skiPass: SkiPasses,
@@ -13,5 +14,6 @@ const Editor = {
13
14
  vakario: Vakario,
14
15
  otherProducts: StandardProducts,
15
16
  skiRental: SkiRental,
17
+ esf: Esf,
16
18
  };
17
19
  export default Editor;
@@ -171,7 +171,7 @@ export default function Lodgings({ msemServicesUrl, preset, setPreset, setShowPr
171
171
  return newPreset;
172
172
  });
173
173
  }, [data, onChange, urlOverride, setPreset]);
174
- return (_jsxs(Form, { title: "Presets h\u00E9bergements", width: 580, preset: preset, buttonsActions: { testPreset, cancelPreset, confirmPreset }, 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: formattedLodgings, value: data.lodging, onValueChange: updateField("lodging"), loading: loading }), !showFilters && (_jsxs(_Fragment, { children: [_jsx("div", { className: css.label, children: "Chambres" }), (formattedRooms?.length > 0 || loading) && (_jsx(Select, { label: "Type de bien", placeholder: "S\u00E9lectionnez un type de bien", value: data.roomType, options: formattedRooms, onValueChange: updateField("roomType"), loading: loading })), _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" }), lodgings && (_jsx(MultipleSelect, { label: "Liste de marchands", options: formattedMerchants, values: selectedMerchants, onChange: updateFilter("merchants"), loading: loading, withSearch: true })), (loading || kinds.length > 1) && (_jsx(Select, { label: "Type", placeholder: "S\u00E9lectionnez un type", options: kinds, value: data.type, onValueChange: updateField("type"), loading: loading })), (loading || filters.standings.length >= 1) && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Standing", options: filters.standings, values: selectedStandings, onChange: updateFilter("standings"), loading: loading, withSearch: true })), (loading || filters.options.length >= 1) && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Options", options: filters.options, values: selectedOptions, onChange: updateFilter("options"), loading: loading, withSearch: true })), (loading || filters.districts.length >= 1) && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Quartiers", options: filters.districts, values: selectedDistricts, onChange: updateFilter("districts"), loading: loading, withSearch: true }))] })), _jsx("div", { className: css.label, children: "Avanc\u00E9" }), _jsx(Input, { className: css.input, label: "Filtre", value: data.filter, placeholder: "('10', '22') in options", onValueChange: updateField("filter") })] }));
174
+ return (_jsxs(Form, { title: "Presets h\u00E9bergements", width: 580, preset: preset, buttonsActions: { testPreset, cancelPreset, confirmPreset }, 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: formattedLodgings, value: data.lodging, onValueChange: updateField("lodging"), loading: loading }), !showFilters && (_jsxs(_Fragment, { children: [_jsx("div", { className: css.label, children: "Chambres" }), (formattedRooms?.length > 0 || loading) && (_jsx(Select, { label: "Type de bien", placeholder: "S\u00E9lectionnez un type de bien", value: data.roomType, options: formattedRooms, onValueChange: updateField("roomType"), loading: loading })), _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" }), lodgings && (_jsx(MultipleSelect, { label: "Liste de marchands", options: formattedMerchants, values: selectedMerchants, onChange: updateFilter("merchants"), loading: loading, withSearch: true })), (loading || kinds.length > 1) && (_jsx(Select, { label: "Type", placeholder: "S\u00E9lectionnez un type", options: kinds, value: data.type, onValueChange: updateField("type"), loading: loading })), (loading || filters.standings.length >= 1) && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Standing", options: filters.standings, values: selectedStandings, onChange: updateFilter("standings"), loading: loading, withSearch: true })), (loading || filters.options.length >= 1) && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Options", options: filters.options, values: selectedOptions, onChange: updateFilter("options"), loading: loading, withSearch: true })), (loading || filters.districts.length >= 1) && (_jsx(MultipleSelect, { placeholder: "Selectionnez une ou plusieurs options", label: "Quartiers", options: filters.districts, values: selectedDistricts, onChange: updateFilter("districts"), loading: loading, withSearch: true })), _jsx("div", { className: css.label, children: "Avanc\u00E9" }), _jsx(Input, { className: css.input, label: "Filtre", value: data.filter, placeholder: "('10', '22') in options", onValueChange: updateField("filter") })] }))] }));
175
175
  }
176
176
  function getDefaultData(preset) {
177
177
  if (!preset?.presets && !preset?.options)
@@ -11,7 +11,8 @@ type Props = {
11
11
  resorts?: Resort[];
12
12
  currentPreset?: Record<string, any> | null;
13
13
  onChange?: (preset: Record<string, any> | null) => void;
14
+ showUrl?: boolean;
14
15
  };
15
- export default function MseMPresetEditor({ lang, channel, resort, msemServicesUrl, urlOverride, resorts, currentPreset, onChange, }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export default function MseMPresetEditor({ lang, channel, resort, msemServicesUrl, urlOverride, resorts, currentPreset, onChange, showUrl, }: Props): import("react/jsx-runtime").JSX.Element;
16
17
  export {};
17
18
  //# sourceMappingURL=msem-preset-editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"msem-preset-editor.d.ts","sourceRoot":"","sources":["../../../../src/future/components/msem-preset-editor/msem-preset-editor.tsx"],"names":[],"mappings":"AAmBA,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;CACzD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,eAAe,EACf,WAAW,EACX,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,KAAK,2CAiNP"}
1
+ {"version":3,"file":"msem-preset-editor.d.ts","sourceRoot":"","sources":["../../../../src/future/components/msem-preset-editor/msem-preset-editor.tsx"],"names":[],"mappings":"AAmBA,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,eAAe,EACf,WAAW,EACX,OAAO,EACP,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,2CA8MP"}
@@ -15,7 +15,7 @@ import Editors from "./editors";
15
15
  import * as UrlParams from "./services/url-params";
16
16
  import * as Preset from "./services/preset";
17
17
  import css from "./msem-preset-editor.module.css";
18
- export default function MseMPresetEditor({ lang, channel, resort, msemServicesUrl, urlOverride, resorts, currentPreset, onChange, }) {
18
+ export default function MseMPresetEditor({ lang, channel, resort, msemServicesUrl, urlOverride, resorts, currentPreset, onChange, showUrl, }) {
19
19
  const defaultResort = Number(currentPreset ? currentPreset.options.resort : resort);
20
20
  const [selectedResort, setSelectedResort] = React.useState(defaultResort);
21
21
  const [facet, setFacet] = React.useState(currentPreset?.options?.facet?.toString() || "");
@@ -79,7 +79,6 @@ export default function MseMPresetEditor({ lang, channel, resort, msemServicesUr
79
79
  const url = field.value;
80
80
  field.select();
81
81
  navigator.clipboard.writeText(url);
82
- window.ubloSnackbar("URL copiée dans le presse papier", "success");
83
82
  };
84
83
  React.useEffect(() => {
85
84
  if (stay?.from && stay?.to) {
@@ -105,7 +104,7 @@ export default function MseMPresetEditor({ lang, channel, resort, msemServicesUr
105
104
  if (!selectedResort)
106
105
  return null;
107
106
  const CurrentEditor = preset?.widget && Editors[preset.widget];
108
- const showPresetUrl = Boolean(preset?.widget && presetUrl !== "");
107
+ const showPresetUrl = showUrl && Boolean(preset?.widget && presetUrl !== "");
109
108
  const footerClasses = classNames(css.footer, {
110
109
  [css.footerButtonOnly]: !showPresetUrl,
111
110
  });
@@ -1,5 +1,4 @@
1
1
  .editor {
2
- width: 420px;
3
2
  display: flex;
4
3
  flex-direction: column;
5
4
  gap: 12px;
@@ -13,4 +13,5 @@ export declare function getVakarioCategories(msemServicesUrl: string, channel: s
13
13
  export declare function getVakarioLevels(msemServicesUrl: string, channel: string, merchant: string, kind: string, age: string, category: string, language?: string): Promise<any>;
14
14
  export declare function getOtherProductsCategories(msemServicesUrl: string, facet: string, merchant: string, lang?: string): Promise<any>;
15
15
  export declare function getRenterList(msemServicesUrl: string, channel: string, resort: number | string, date?: string): Promise<any>;
16
+ export declare function getEsfKinds(msemServicesUrl: string, channel: string, resort: string, stayFrom: string, stayTo: string, season: string, lang?: string): Promise<any>;
16
17
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/services/api.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CACvB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,gBAId;AAWD,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,gBAMb;AAED,wBAAsB,UAAU,CAC9B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,gBAIxB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,gBAIjB;AAED,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,gBAIhB;AAGD,wBAAsB,WAAW,CAC/B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,gBAIf;AAED,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,SAAO,EACf,OAAO,UAAQ,gBAIhB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,0BAA0B,CAC9C,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAO,gBAIZ;AAED,wBAAsB,aAAa,CACjC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,IAAI,CAAC,EAAE,MAAM,gBAId"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/services/api.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CACvB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,gBAId;AAWD,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,gBAMb;AAED,wBAAsB,UAAU,CAC9B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,gBAIxB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,gBAIjB;AAED,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,gBAIhB;AAGD,wBAAsB,WAAW,CAC/B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,gBAIf;AAED,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,SAAO,EACf,OAAO,UAAQ,gBAIhB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,0BAA0B,CAC9C,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAO,gBAIZ;AAED,wBAAsB,aAAa,CACjC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,IAAI,CAAC,EAAE,MAAM,gBAId;AAED,wBAAsB,WAAW,CAC/B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,SAAO,gBAYZ"}
@@ -70,3 +70,15 @@ export async function getRenterList(msemServicesUrl, channel, resort, date) {
70
70
  const endpoint = `${msemServicesUrl}/api/ski-rental/${resort}/renters`;
71
71
  return Fetcher.post(endpoint, { channel, date });
72
72
  }
73
+ export async function getEsfKinds(msemServicesUrl, channel, resort, stayFrom, stayTo, season, lang = "fr") {
74
+ const endpoint = `${msemServicesUrl}/api/esf/kinds`;
75
+ return Fetcher.post(endpoint, {
76
+ channel,
77
+ resort,
78
+ lang,
79
+ stayFrom,
80
+ stayTo,
81
+ season,
82
+ period: 6,
83
+ });
84
+ }
@@ -9,8 +9,9 @@ type Props = {
9
9
  msemServicesUrl: string;
10
10
  target: HTMLElement | null;
11
11
  resorts?: Resort[];
12
+ showUrl?: boolean;
12
13
  close: () => void;
13
14
  };
14
- export default function MseMPresetLinker({ lang, channel, resort, msemServicesUrl, target, resorts, close, }: Props): import("react/jsx-runtime").JSX.Element;
15
+ export default function MseMPresetLinker({ lang, channel, resort, msemServicesUrl, target, resorts, close, showUrl, }: Props): import("react/jsx-runtime").JSX.Element;
15
16
  export {};
16
17
  //# sourceMappingURL=msem-preset-linker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"msem-preset-linker.d.ts","sourceRoot":"","sources":["../../../../src/future/components/msem-preset-linker/msem-preset-linker.tsx"],"names":[],"mappings":"AAOA,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAIF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,eAAe,EACf,MAAM,EACN,OAAO,EACP,KAAK,GACN,EAAE,KAAK,2CA8DP"}
1
+ {"version":3,"file":"msem-preset-linker.d.ts","sourceRoot":"","sources":["../../../../src/future/components/msem-preset-linker/msem-preset-linker.tsx"],"names":[],"mappings":"AAOA,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAIF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,eAAe,EACf,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,GACR,EAAE,KAAK,2CA+DP"}
@@ -6,7 +6,7 @@ import MseMPresetEditor from "../msem-preset-editor";
6
6
  import css from "./msem-preset-linker.module.css";
7
7
  import MseMLogo from "./msem-logo";
8
8
  const PRESET_ATTRIBUTE = "data-msem-preset";
9
- export default function MseMPresetLinker({ lang, channel, resort, msemServicesUrl, target, resorts, close, }) {
9
+ export default function MseMPresetLinker({ lang, channel, resort, msemServicesUrl, target, resorts, close, showUrl, }) {
10
10
  const link = target?.querySelector(":scope > a");
11
11
  const currentPreset = target?.getAttribute("data-msem-preset") || undefined;
12
12
  const urlOverride = link?.getAttribute("href") || undefined;
@@ -29,5 +29,5 @@ export default function MseMPresetLinker({ lang, channel, resort, msemServicesUr
29
29
  }
30
30
  closeEditor();
31
31
  }, [preset]);
32
- return (_jsxs(Dialog, { className: css.dialog, isOpened: true, close: closeEditor, closeButtonVariant: "transparent", closeOnBackdropClick: false, showAsModal: false, children: [_jsxs("div", { className: css.title, children: [_jsx(MseMLogo, { className: css.logo }), " \u00C9diteur de presets"] }), _jsx("div", { className: css.content, children: _jsx(MseMPresetEditor, { lang: lang, channel: channel, resort: resort, msemServicesUrl: msemServicesUrl, urlOverride: urlOverride, resorts: resorts, currentPreset: preset, onChange: setPreset }) }), _jsxs("div", { className: css.buttons, children: [_jsx(Button, { variant: "secondary", onClick: closeEditor, children: "Annuler" }), _jsx(Button, { variant: "primary", onClick: updatePreset, children: "Valider" })] })] }));
32
+ return (_jsxs(Dialog, { className: css.dialog, isOpened: true, close: closeEditor, closeButtonVariant: "transparent", closeOnBackdropClick: false, showAsModal: false, children: [_jsxs("div", { className: css.title, children: [_jsx(MseMLogo, { className: css.logo }), " \u00C9diteur de presets"] }), _jsx("div", { className: css.content, children: _jsx(MseMPresetEditor, { lang: lang, channel: channel, resort: resort, msemServicesUrl: msemServicesUrl, urlOverride: urlOverride, resorts: resorts, currentPreset: preset, onChange: setPreset, showUrl: showUrl }) }), _jsxs("div", { className: css.buttons, children: [_jsx(Button, { variant: "secondary", onClick: closeEditor, children: "Annuler" }), _jsx(Button, { variant: "primary", onClick: updatePreset, children: "Valider" })] })] }));
33
33
  }
@@ -82,6 +82,7 @@
82
82
  --ds-button-hover-background: var(--ublo-primary-color, #073ff8);
83
83
  --ds-button-padding: 10px;
84
84
 
85
+ width: 720px;
85
86
  display: flex;
86
87
  flex-direction: column;
87
88
  font-family: var(--ds-sans-serif-font);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ublo-lib",
3
- "version": "1.38.15",
3
+ "version": "1.38.17",
4
4
  "peerDependencies": {
5
5
  "dt-design-system": "^3.10.8",
6
6
  "leaflet": "^1.9.1",