@mirai/core 0.3.59 → 0.3.61

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 (84) hide show
  1. package/build/Core.js +1 -1
  2. package/build/Core.js.map +1 -1
  3. package/build/components/Finder/helpers/getForwarderUrl.js +4 -2
  4. package/build/components/Finder/helpers/getForwarderUrl.js.map +1 -1
  5. package/build/components/Rates/Rates.Footer.js +65 -77
  6. package/build/components/Rates/Rates.Footer.js.map +1 -1
  7. package/build/components/Rates/{Rates.Filter.js → Rates.Header.js} +53 -80
  8. package/build/components/Rates/Rates.Header.js.map +1 -0
  9. package/build/components/Rates/Rates.RoomSelector.js +96 -0
  10. package/build/components/Rates/Rates.RoomSelector.js.map +1 -0
  11. package/build/components/Rates/Rates.Skeleton.js +116 -40
  12. package/build/components/Rates/Rates.Skeleton.js.map +1 -1
  13. package/build/components/Rates/Rates.constants.js +7 -1
  14. package/build/components/Rates/Rates.constants.js.map +1 -1
  15. package/build/components/Rates/Rates.js +90 -47
  16. package/build/components/Rates/Rates.js.map +1 -1
  17. package/build/components/Rates/Rates.l10n.js +16 -7
  18. package/build/components/Rates/Rates.l10n.js.map +1 -1
  19. package/build/components/Rates/Rates.module.css +149 -67
  20. package/build/components/Rates/components/Item/Item.Preview.js +46 -29
  21. package/build/components/Rates/components/Item/Item.Preview.js.map +1 -1
  22. package/build/components/Rates/components/Item/Item.Rates.js +112 -143
  23. package/build/components/Rates/components/Item/Item.Rates.js.map +1 -1
  24. package/build/components/Rates/components/Item/Item.Summary.js +141 -0
  25. package/build/components/Rates/components/Item/Item.Summary.js.map +1 -0
  26. package/build/components/Rates/components/Item/Item.js +67 -64
  27. package/build/components/Rates/components/Item/Item.js.map +1 -1
  28. package/build/components/Rates/components/Item/Item.l10n.js +22 -0
  29. package/build/components/Rates/components/Item/Item.l10n.js.map +1 -1
  30. package/build/components/Rates/components/Item/Item.module.css +80 -104
  31. package/build/components/Rates/components/Item/components/Amenities/Amenities.js +15 -9
  32. package/build/components/Rates/components/Item/components/Amenities/Amenities.js.map +1 -1
  33. package/build/components/Rates/components/Item/components/Amenities/Amenities.module.css +11 -3
  34. package/build/components/Rates/components/Item/components/Discount/Discount.js +14 -13
  35. package/build/components/Rates/components/Item/components/Discount/Discount.js.map +1 -1
  36. package/build/components/Rates/components/Item/components/Discount/Discount.module.css +4 -3
  37. package/build/components/Rates/components/Item/components/Features/Features.js +4 -10
  38. package/build/components/Rates/components/Item/components/Features/Features.js.map +1 -1
  39. package/build/components/Rates/components/Item/components/Features/Features.module.css +0 -5
  40. package/build/components/Rates/components/Item/components/ModalInfo/ModalInfo.js +34 -6
  41. package/build/components/Rates/components/Item/components/ModalInfo/ModalInfo.js.map +1 -1
  42. package/build/components/Rates/components/Item/components/ModalInfo/ModalInfo.module.css +7 -0
  43. package/build/components/Rates/components/Item/components/ModalRateInfo/ModalRateInfo.js +18 -9
  44. package/build/components/Rates/components/Item/components/ModalRateInfo/ModalRateInfo.js.map +1 -1
  45. package/build/components/Rates/components/Item/components/ModalRateInfo/ModalRateInfo.module.css +17 -1
  46. package/build/components/Rates/components/Item/components/ModalUrl/ModalUrl.module.css +1 -1
  47. package/build/components/Rates/components/Item/components/Option/Option.js +72 -0
  48. package/build/components/Rates/components/Item/components/Option/Option.js.map +1 -0
  49. package/build/components/Rates/components/Item/components/Option/Option.module.css +24 -0
  50. package/build/components/Rates/components/Item/components/Option/index.js +17 -0
  51. package/build/components/Rates/components/Item/components/Option/index.js.map +1 -0
  52. package/build/components/Rates/components/Item/components/index.js +11 -0
  53. package/build/components/Rates/components/Item/components/index.js.map +1 -1
  54. package/build/components/Rates/helpers/getForwarderUrl.js +23 -12
  55. package/build/components/Rates/helpers/getForwarderUrl.js.map +1 -1
  56. package/build/components/helpers/ICON.js +10 -2
  57. package/build/components/helpers/ICON.js.map +1 -1
  58. package/build/components/helpers/index.js +11 -0
  59. package/build/components/helpers/index.js.map +1 -1
  60. package/build/components/helpers/opacity.js +17 -0
  61. package/build/components/helpers/opacity.js.map +1 -0
  62. package/build/index.js +1 -1
  63. package/build/index.js.map +1 -1
  64. package/build/services/Rates/__tests__/__mocks__/rates-response-cancel-types.json +1662 -0
  65. package/build/services/Rates/__tests__/__mocks__/rates-response-no-taxes-no-local.json +296 -510
  66. package/build/services/Rates/__tests__/__mocks__/rates-response-no-taxes.json +895 -1795
  67. package/build/services/Rates/__tests__/__mocks__/rates-response.json +197 -369
  68. package/build/services/Rates/__tests__/__mocks__/rates-success-cancel-types.json +32481 -0
  69. package/build/services/Rates/constants.js +18 -1
  70. package/build/services/Rates/constants.js.map +1 -1
  71. package/build/services/Rates/get.js +41 -112
  72. package/build/services/Rates/get.js.map +1 -1
  73. package/build/services/Rates/helpers/getIncrements.js +69 -0
  74. package/build/services/Rates/helpers/getIncrements.js.map +1 -0
  75. package/build/services/Rates/helpers/index.js +22 -0
  76. package/build/services/Rates/helpers/index.js.map +1 -1
  77. package/build/services/Rates/helpers/parseBoards.js +156 -0
  78. package/build/services/Rates/helpers/parseBoards.js.map +1 -0
  79. package/build/services/Rates/helpers/parseExternalToken.js +24 -0
  80. package/build/services/Rates/helpers/parseExternalToken.js.map +1 -0
  81. package/package.json +1 -1
  82. package/public/App.module.css +5 -0
  83. package/public/themes/monalisa.theme.css +3 -0
  84. package/build/components/Rates/Rates.Filter.js.map +0 -1
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RoomSelector = void 0;
7
+ var _dataSources = require("@mirai/data-sources");
8
+ var _locale = require("@mirai/locale");
9
+ var _ui = require("@mirai/ui");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _react = _interopRequireDefault(require("react"));
12
+ var _Rates = require("./Rates.l10n");
13
+ var style = _interopRequireWildcard(require("./Rates.module.css"));
14
+ var _helpers = require("../helpers");
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
+ const RoomSelector = _ref => {
20
+ let {
21
+ cart = [],
22
+ occupation = [],
23
+ room: roomIndex,
24
+ onPress = () => {}
25
+ } = _ref;
26
+ const {
27
+ isMobile
28
+ } = (0, _ui.useDevice)();
29
+ const {
30
+ translate
31
+ } = (0, _locale.useLocale)();
32
+ const {
33
+ value: {
34
+ hotel: {
35
+ accommodationType
36
+ } = {}
37
+ }
38
+ } = (0, _dataSources.useStore)();
39
+
40
+ // const lastRoomIndex = cart.findIndex((item) => )
41
+
42
+ return occupation.length >= 2 ? /*#__PURE__*/_react.default.createElement(_ui.ScrollView, {
43
+ horizontal: true,
44
+ snap: false,
45
+ className: style.roomSelector
46
+ }, occupation.map(function () {
47
+ let items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
48
+ let index = arguments.length > 1 ? arguments[1] : undefined;
49
+ const guests = items.reduce(function (total) {
50
+ let {
51
+ amount
52
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
53
+ return total + amount;
54
+ }, 0);
55
+ const textProps = {
56
+ bold: index <= roomIndex,
57
+ action: !isMobile,
58
+ small: isMobile
59
+ };
60
+ const hasCart = index <= roomIndex || cart[index] !== undefined;
61
+ return /*#__PURE__*/_react.default.createElement(_ui.Pressable, {
62
+ disabled: !hasCart,
63
+ key: index,
64
+ onPress: () => onPress(index),
65
+ className: [style.tag, style.room, index === roomIndex ? style.active : hasCart ? style.highlight : undefined]
66
+ }, index === roomIndex && !cart[index] && /*#__PURE__*/_react.default.createElement(_ui.Text, _extends({}, textProps, {
67
+ bold: false
68
+ }), translate(_Rates.L10N.LABEL_SELECT)), /*#__PURE__*/_react.default.createElement(_ui.Text, _extends({}, textProps, {
69
+ capitalize: true
70
+ }), "".concat(translate(_Rates.L10N.LABEL_ACCOMMODATION_TYPE, {
71
+ type: accommodationType
72
+ }), " ").concat(index + 1)), /*#__PURE__*/_react.default.createElement(_ui.Text, {
73
+ headline: true,
74
+ className: style.separator
75
+ }, "|"), /*#__PURE__*/_react.default.createElement(_ui.Icon, {
76
+ headline: true,
77
+ level: isMobile ? 3 : 2,
78
+ value: guests === 1 || guests > 3 ? _helpers.ICON.PERSON : guests === 2 ? _helpers.ICON.GROUP : _helpers.ICON.GROUPS
79
+ }), /*#__PURE__*/_react.default.createElement(_ui.Text, _extends({}, textProps, {
80
+ bold: true
81
+ }), guests));
82
+ })) : null;
83
+ };
84
+ exports.RoomSelector = RoomSelector;
85
+ RoomSelector.displayName = 'Mirai:Core:Rates.RoomSelector';
86
+ RoomSelector.propTypes = {
87
+ cart: _propTypes.default.arrayOf(_propTypes.default.shape({})),
88
+ occupation: _propTypes.default.arrayOf(_propTypes.default.arrayOf(_propTypes.default.shape({
89
+ ages: _propTypes.default.arrayOf(_propTypes.default.number),
90
+ amount: _propTypes.default.number,
91
+ type: _propTypes.default.number
92
+ }))),
93
+ room: _propTypes.default.number,
94
+ onPress: _propTypes.default.func
95
+ };
96
+ //# sourceMappingURL=Rates.RoomSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rates.RoomSelector.js","names":["_dataSources","require","_locale","_ui","_propTypes","_interopRequireDefault","_react","_Rates","style","_interopRequireWildcard","_helpers","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_extends","assign","bind","target","arguments","length","source","key","apply","RoomSelector","_ref","cart","occupation","room","roomIndex","onPress","isMobile","useDevice","translate","useLocale","value","hotel","accommodationType","useStore","createElement","ScrollView","horizontal","snap","className","roomSelector","map","items","undefined","index","guests","reduce","total","amount","textProps","bold","action","small","hasCart","Pressable","disabled","tag","active","highlight","Text","L10N","LABEL_SELECT","capitalize","concat","LABEL_ACCOMMODATION_TYPE","type","headline","separator","Icon","level","ICON","PERSON","GROUP","GROUPS","exports","displayName","propTypes","PropTypes","arrayOf","shape","ages","number","func"],"sources":["../../../src/components/Rates/Rates.RoomSelector.jsx"],"sourcesContent":["import { useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Icon, Pressable, ScrollView, Text, useDevice } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { L10N } from './Rates.l10n';\nimport * as style from './Rates.module.css';\nimport { ICON } from '../helpers';\n\nconst RoomSelector = ({ cart = [], occupation = [], room: roomIndex, onPress = () => {} }) => {\n const { isMobile } = useDevice();\n const { translate } = useLocale();\n const {\n value: { hotel: { accommodationType } = {} },\n } = useStore();\n\n // const lastRoomIndex = cart.findIndex((item) => )\n\n return occupation.length >= 2 ? (\n <ScrollView horizontal snap={false} className={style.roomSelector}>\n {occupation.map((items = [], index) => {\n const guests = items.reduce((total, { amount } = {}) => total + amount, 0);\n const textProps = { bold: index <= roomIndex, action: !isMobile, small: isMobile };\n const hasCart = index <= roomIndex || cart[index] !== undefined;\n\n return (\n <Pressable\n disabled={!hasCart}\n key={index}\n onPress={() => onPress(index)}\n className={[\n style.tag,\n style.room,\n index === roomIndex ? style.active : hasCart ? style.highlight : undefined,\n ]}\n >\n {index === roomIndex && !cart[index] && (\n <Text {...textProps} bold={false}>\n {translate(L10N.LABEL_SELECT)}\n </Text>\n )}\n <Text {...textProps} capitalize>{`${translate(L10N.LABEL_ACCOMMODATION_TYPE, {\n type: accommodationType,\n })} ${index + 1}`}</Text>\n\n <Text headline className={style.separator}>\n |\n </Text>\n <Icon\n headline\n level={isMobile ? 3 : 2}\n value={guests === 1 || guests > 3 ? ICON.PERSON : guests === 2 ? ICON.GROUP : ICON.GROUPS}\n />\n <Text {...textProps} bold>\n {guests}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n ) : null;\n};\n\nRoomSelector.displayName = 'Mirai:Core:Rates.RoomSelector';\n\nRoomSelector.propTypes = {\n cart: PropTypes.arrayOf(PropTypes.shape({})),\n occupation: PropTypes.arrayOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n ages: PropTypes.arrayOf(PropTypes.number),\n amount: PropTypes.number,\n type: PropTypes.number,\n }),\n ),\n ),\n room: PropTypes.number,\n onPress: PropTypes.func,\n};\n\nexport { RoomSelector };\n"],"mappings":"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"}
@@ -16,6 +16,11 @@ var _default = () => {
16
16
  const props = {
17
17
  color: 'base'
18
18
  };
19
+ const section = {
20
+ borderBottom: 'solid 1px var(--mirai-ui-content-background)',
21
+ gap: '0.5rem',
22
+ padding: '1rem'
23
+ };
19
24
  const field = {
20
25
  wide: true,
21
26
  style: {
@@ -28,79 +33,150 @@ var _default = () => {
28
33
  row: !isMobile,
29
34
  style: {
30
35
  gap: '1rem',
31
- justifyContent: 'space-between'
36
+ justifyContent: 'space-between',
37
+ padding: '1rem 0'
32
38
  }
33
- }, /*#__PURE__*/_react.default.createElement(_ui.View, {
39
+ }, /*#__PURE__*/_react.default.createElement(_ui.View, null), /*#__PURE__*/_react.default.createElement(_ui.View, {
34
40
  row: true,
35
41
  style: {
36
42
  gap: '1rem'
37
43
  }
38
- }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, _extends({}, props, field), !isMobile ? 'Room Only' : null), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, _extends({}, props, field), !isMobile ? 'Breakfast included' : 'Euro')), /*#__PURE__*/_react.default.createElement(_ui.View, {
44
+ }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, _extends({}, props, field), !isMobile ? 'Club discount (info)' : null), !isMobile && /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, _extends({}, props, field), "Euro"))), /*#__PURE__*/_react.default.createElement(_ui.View, {
39
45
  row: true,
40
46
  style: {
41
- gap: '1rem'
47
+ alignItems: 'stretch',
48
+ flexWrap: 'wrap',
49
+ gap: '1rem',
50
+ justifyContent: 'space-between'
42
51
  }
43
- }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, _extends({}, props, field), !isMobile ? 'Club discount (info)' : null), !isMobile && /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, _extends({}, props, field), "Euro"))), Array.from({
44
- length: 2
45
- }).map((_, index) => /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, _extends({}, props, {
46
- key: index,
47
- wide: true,
52
+ }, Array.from({
53
+ length: isMobile ? 1 : 3
54
+ }).map((_, index) => /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, _extends({
55
+ key: index
56
+ }, props, {
48
57
  style: {
49
- height: !isMobile ? '40rem' : 'auto',
50
- gap: '1rem',
51
- overflow: 'hidden',
52
- padding: '1rem'
58
+ boxSizing: 'border-box',
59
+ flex: 1,
60
+ flexBasis: "calc(33.33% - calc(calc(var(--mirai-ui-space-M) * 2) / 3))",
61
+ overflow: 'hidden'
53
62
  }
54
- }), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.View, {
55
- row: true,
63
+ }), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
64
+ color: "border",
56
65
  style: {
57
- justifyContent: 'space-between'
66
+ borderRadius: 0,
67
+ height: '13rem'
68
+ }
69
+ }), /*#__PURE__*/_react.default.createElement(_ui.View, {
70
+ style: {
71
+ height: '42rem'
72
+ }
73
+ }, /*#__PURE__*/_react.default.createElement(_ui.View, {
74
+ style: {
75
+ ...section
58
76
  }
59
77
  }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
60
- bold: true,
78
+ style: {
79
+ height: '3rem'
80
+ }
81
+ }), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
61
82
  headline: true,
62
83
  level: 2
63
- }, !isMobile ? 'Room className' : 'Room'), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
64
- small: !isMobile,
65
- tiny: isMobile
66
- }, "Included taxes and fees")), /*#__PURE__*/_react.default.createElement(_ui.View, {
67
- row: !isMobile,
68
- wide: true,
84
+ }, "Room name"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
85
+ action: true
86
+ }, "Free wifi internet"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
87
+ action: true
88
+ }, "Television"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
89
+ action: true
90
+ }, "Mini-bar"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
91
+ action: true
92
+ }, "Heating"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
93
+ action: true
94
+ }, "More Info +")), /*#__PURE__*/_react.default.createElement(_ui.View, {
69
95
  style: {
70
- alignItems: 'flex-start',
71
- gap: '1rem'
96
+ ...section
72
97
  }
73
- }, /*#__PURE__*/_react.default.createElement(_ui.View, {
98
+ }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
99
+ action: true
100
+ }, "Cancellation type"), /*#__PURE__*/_react.default.createElement(_ui.View, {
101
+ row: true,
74
102
  style: {
75
- gap: '1rem',
76
- minWidth: !isMobile ? '23rem' : '100%'
103
+ justifyContent: 'space-between'
77
104
  }
78
105
  }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
106
+ action: true
107
+ }, "Free cancelation"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
108
+ action: true
109
+ }, "$0.00")), /*#__PURE__*/_react.default.createElement(_ui.View, {
110
+ row: true,
79
111
  style: {
80
- height: '14rem'
112
+ justifyContent: 'space-between'
81
113
  }
82
- }), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
114
+ }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
115
+ action: true
116
+ }, "Free cancelation until apr 10"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
117
+ action: true
118
+ }, "$19.95"))), /*#__PURE__*/_react.default.createElement(_ui.View, {
83
119
  style: {
84
- height: '3rem'
120
+ ...section
85
121
  }
86
- })), /*#__PURE__*/_react.default.createElement(_ui.View, {
87
- wide: true,
122
+ }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
123
+ action: true
124
+ }, "Extras"), /*#__PURE__*/_react.default.createElement(_ui.View, {
125
+ row: true,
88
126
  style: {
89
- gap: '1rem'
127
+ justifyContent: 'space-between'
90
128
  }
91
129
  }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
130
+ action: true
131
+ }, "Only room"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
132
+ action: true
133
+ }, "$0.00")), /*#__PURE__*/_react.default.createElement(_ui.View, {
134
+ row: true,
92
135
  style: {
93
- height: '10rem'
136
+ justifyContent: 'space-between'
94
137
  }
95
- }), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
138
+ }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
139
+ action: true
140
+ }, "Breakfast included"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
141
+ action: true
142
+ }, "$19.95")), /*#__PURE__*/_react.default.createElement(_ui.View, {
143
+ row: true,
96
144
  style: {
97
- height: '10rem'
145
+ justifyContent: 'space-between'
98
146
  }
99
- }), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
147
+ }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
148
+ action: true
149
+ }, "All included"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
150
+ action: true
151
+ }, "$39.95"))), /*#__PURE__*/_react.default.createElement(_ui.View, {
152
+ row: true,
153
+ style: {
154
+ alignItems: 'flex-end',
155
+ justifyContent: 'space-between',
156
+ padding: '1rem'
157
+ }
158
+ }, /*#__PURE__*/_react.default.createElement(_ui.View, {
159
+ style: {
160
+ gap: '0.5rem'
161
+ }
162
+ }, /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
163
+ small: true
164
+ }, "5% off"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
165
+ headline: true,
166
+ level: 2
167
+ }, "$199.50"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
168
+ small: true
169
+ }, "$19.95 per unit & night"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
170
+ small: true
171
+ }, "Includes taxes and fees"), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
172
+ small: true
173
+ }, "Price details +")), /*#__PURE__*/_react.default.createElement(_shared__.Skeleton, {
174
+ action: true,
100
175
  style: {
101
- height: '10rem'
176
+ height: '3rem',
177
+ width: '8rem'
102
178
  }
103
- })))))));
179
+ }, "Select")))))));
104
180
  };
105
181
  exports.default = _default;
106
182
  //# sourceMappingURL=Rates.Skeleton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Rates.Skeleton.js","names":["_ui","require","_react","_interopRequireDefault","_shared__","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_default","isMobile","useDevice","props","color","field","wide","style","action","height","padding","createElement","Fragment","View","row","gap","justifyContent","Skeleton","Array","from","map","_","index","overflow","bold","headline","level","small","tiny","alignItems","minWidth","exports"],"sources":["../../../src/components/Rates/Rates.Skeleton.jsx"],"sourcesContent":["import { useDevice, View } from '@mirai/ui';\nimport React from 'react';\n\nimport { Skeleton } from '../__shared__';\n\nexport default () => {\n const { isMobile } = useDevice();\n\n const props = { color: 'base' };\n const field = { wide: true, style: { action: true, height: '3.5rem', padding: '0 0.5rem' } };\n\n return (\n <>\n <View row={!isMobile} style={{ gap: '1rem', justifyContent: 'space-between' }}>\n <View row style={{ gap: '1rem' }}>\n <Skeleton {...props} {...field}>\n {!isMobile ? 'Room Only' : null}\n </Skeleton>\n <Skeleton {...props} {...field}>\n {!isMobile ? 'Breakfast included' : 'Euro'}\n </Skeleton>\n </View>\n\n <View row style={{ gap: '1rem' }}>\n <Skeleton {...props} {...field}>\n {!isMobile ? 'Club discount (info)' : null}\n </Skeleton>\n {!isMobile && (\n <Skeleton {...props} {...field}>\n Euro\n </Skeleton>\n )}\n </View>\n </View>\n\n {Array.from({ length: 2 }).map((_, index) => (\n <Skeleton\n {...props}\n key={index}\n wide\n style={{ height: !isMobile ? '40rem' : 'auto', gap: '1rem', overflow: 'hidden', padding: '1rem' }}\n >\n <>\n <View row style={{ justifyContent: 'space-between' }}>\n <Skeleton bold headline level={2}>\n {!isMobile ? 'Room className' : 'Room'}\n </Skeleton>\n <Skeleton small={!isMobile} tiny={isMobile}>\n Included taxes and fees\n </Skeleton>\n </View>\n <View row={!isMobile} wide style={{ alignItems: 'flex-start', gap: '1rem' }}>\n <View style={{ gap: '1rem', minWidth: !isMobile ? '23rem' : '100%' }}>\n <Skeleton style={{ height: '14rem' }} />\n <Skeleton style={{ height: '3rem' }} />\n </View>\n\n <View wide style={{ gap: '1rem' }}>\n <Skeleton style={{ height: '10rem' }} />\n <Skeleton style={{ height: '10rem' }} />\n <Skeleton style={{ height: '10rem' }} />\n </View>\n </View>\n </>\n </Skeleton>\n ))}\n </>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,GAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,SAAA,GAAAH,OAAA;AAAyC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAAA,IAAAQ,QAAA,GAE1BA,CAAA,KAAM;EACnB,MAAM;IAAEC;EAAS,CAAC,GAAG,IAAAC,aAAS,EAAC,CAAC;EAEhC,MAAMC,KAAK,GAAG;IAAEC,KAAK,EAAE;EAAO,CAAC;EAC/B,MAAMC,KAAK,GAAG;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE;MAAEC,MAAM,EAAE,IAAI;MAAEC,MAAM,EAAE,QAAQ;MAAEC,OAAO,EAAE;IAAW;EAAE,CAAC;EAE5F,oBACE9B,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAA/B,MAAA,CAAAK,OAAA,CAAA2B,QAAA,qBACEhC,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAACjC,GAAA,CAAAmC,IAAI;IAACC,GAAG,EAAE,CAACb,QAAS;IAACM,KAAK,EAAE;MAAEQ,GAAG,EAAE,MAAM;MAAEC,cAAc,EAAE;IAAgB;EAAE,gBAC5EpC,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAACjC,GAAA,CAAAmC,IAAI;IAACC,GAAG;IAACP,KAAK,EAAE;MAAEQ,GAAG,EAAE;IAAO;EAAE,gBAC/BnC,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ,EAAA/B,QAAA,KAAKiB,KAAK,EAAME,KAAK,GAC3B,CAACJ,QAAQ,GAAG,WAAW,GAAG,IACnB,CAAC,eACXrB,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ,EAAA/B,QAAA,KAAKiB,KAAK,EAAME,KAAK,GAC3B,CAACJ,QAAQ,GAAG,oBAAoB,GAAG,MAC5B,CACN,CAAC,eAEPrB,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAACjC,GAAA,CAAAmC,IAAI;IAACC,GAAG;IAACP,KAAK,EAAE;MAAEQ,GAAG,EAAE;IAAO;EAAE,gBAC/BnC,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ,EAAA/B,QAAA,KAAKiB,KAAK,EAAME,KAAK,GAC3B,CAACJ,QAAQ,GAAG,sBAAsB,GAAG,IAC9B,CAAC,EACV,CAACA,QAAQ,iBACRrB,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ,EAAA/B,QAAA,KAAKiB,KAAK,EAAME,KAAK,GAAE,MAEtB,CAER,CACF,CAAC,EAENa,KAAK,CAACC,IAAI,CAAC;IAAE1B,MAAM,EAAE;EAAE,CAAC,CAAC,CAAC2B,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,kBACtC1C,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ,EAAA/B,QAAA,KACHiB,KAAK;IACTR,GAAG,EAAE2B,KAAM;IACXhB,IAAI;IACJC,KAAK,EAAE;MAAEE,MAAM,EAAE,CAACR,QAAQ,GAAG,OAAO,GAAG,MAAM;MAAEc,GAAG,EAAE,MAAM;MAAEQ,QAAQ,EAAE,QAAQ;MAAEb,OAAO,EAAE;IAAO;EAAE,iBAElG9B,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAA/B,MAAA,CAAAK,OAAA,CAAA2B,QAAA,qBACEhC,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAACjC,GAAA,CAAAmC,IAAI;IAACC,GAAG;IAACP,KAAK,EAAE;MAAES,cAAc,EAAE;IAAgB;EAAE,gBACnDpC,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ;IAACO,IAAI;IAACC,QAAQ;IAACC,KAAK,EAAE;EAAE,GAC9B,CAACzB,QAAQ,GAAG,gBAAgB,GAAG,MACxB,CAAC,eACXrB,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ;IAACU,KAAK,EAAE,CAAC1B,QAAS;IAAC2B,IAAI,EAAE3B;EAAS,GAAC,yBAElC,CACN,CAAC,eACPrB,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAACjC,GAAA,CAAAmC,IAAI;IAACC,GAAG,EAAE,CAACb,QAAS;IAACK,IAAI;IAACC,KAAK,EAAE;MAAEsB,UAAU,EAAE,YAAY;MAAEd,GAAG,EAAE;IAAO;EAAE,gBAC1EnC,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAACjC,GAAA,CAAAmC,IAAI;IAACN,KAAK,EAAE;MAAEQ,GAAG,EAAE,MAAM;MAAEe,QAAQ,EAAE,CAAC7B,QAAQ,GAAG,OAAO,GAAG;IAAO;EAAE,gBACnErB,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ;IAACV,KAAK,EAAE;MAAEE,MAAM,EAAE;IAAQ;EAAE,CAAE,CAAC,eACxC7B,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ;IAACV,KAAK,EAAE;MAAEE,MAAM,EAAE;IAAO;EAAE,CAAE,CAClC,CAAC,eAEP7B,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAACjC,GAAA,CAAAmC,IAAI;IAACP,IAAI;IAACC,KAAK,EAAE;MAAEQ,GAAG,EAAE;IAAO;EAAE,gBAChCnC,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ;IAACV,KAAK,EAAE;MAAEE,MAAM,EAAE;IAAQ;EAAE,CAAE,CAAC,eACxC7B,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ;IAACV,KAAK,EAAE;MAAEE,MAAM,EAAE;IAAQ;EAAE,CAAE,CAAC,eACxC7B,MAAA,CAAAK,OAAA,CAAA0B,aAAA,CAAC7B,SAAA,CAAAmC,QAAQ;IAACV,KAAK,EAAE;MAAEE,MAAM,EAAE;IAAQ;EAAE,CAAE,CACnC,CACF,CACN,CACM,CACX,CACD,CAAC;AAEP,CAAC;AAAAsB,OAAA,CAAA9C,OAAA,GAAAe,QAAA"}
1
+ {"version":3,"file":"Rates.Skeleton.js","names":["_ui","require","_react","_interopRequireDefault","_shared__","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_default","isMobile","useDevice","props","color","section","borderBottom","gap","padding","field","wide","style","action","height","createElement","Fragment","View","row","justifyContent","Skeleton","alignItems","flexWrap","Array","from","map","_","index","boxSizing","flex","flexBasis","overflow","borderRadius","headline","level","small","width","exports"],"sources":["../../../src/components/Rates/Rates.Skeleton.jsx"],"sourcesContent":["import { useDevice, View } from '@mirai/ui';\nimport React from 'react';\n\nimport { Skeleton } from '../__shared__';\n\nexport default () => {\n const { isMobile } = useDevice();\n\n const props = { color: 'base' };\n const section = { borderBottom: 'solid 1px var(--mirai-ui-content-background)', gap: '0.5rem', padding: '1rem' };\n const field = { wide: true, style: { action: true, height: '3.5rem', padding: '0 0.5rem' } };\n\n return (\n <>\n <View row={!isMobile} style={{ gap: '1rem', justifyContent: 'space-between', padding: '1rem 0' }}>\n <View />\n\n <View row style={{ gap: '1rem' }}>\n <Skeleton {...props} {...field}>\n {!isMobile ? 'Club discount (info)' : null}\n </Skeleton>\n {!isMobile && (\n <Skeleton {...props} {...field}>\n Euro\n </Skeleton>\n )}\n </View>\n </View>\n\n <View row style={{ alignItems: 'stretch', flexWrap: 'wrap', gap: '1rem', justifyContent: 'space-between' }}>\n {Array.from({ length: isMobile ? 1 : 3 }).map((_, index) => (\n <Skeleton\n key={index}\n {...props}\n style={{\n boxSizing: 'border-box',\n flex: 1,\n flexBasis: `calc(33.33% - calc(calc(var(--mirai-ui-space-M) * 2) / 3))`,\n overflow: 'hidden',\n }}\n >\n <Skeleton color=\"border\" style={{ borderRadius: 0, height: '13rem' }} />\n\n <View style={{ height: '42rem' }}>\n <View style={{ ...section }}>\n <Skeleton style={{ height: '3rem' }} />\n <Skeleton headline level={2}>\n Room name\n </Skeleton>\n <Skeleton action>Free wifi internet</Skeleton>\n <Skeleton action>Television</Skeleton>\n <Skeleton action>Mini-bar</Skeleton>\n <Skeleton action>Heating</Skeleton>\n <Skeleton action>More Info +</Skeleton>\n </View>\n\n <View style={{ ...section }}>\n <Skeleton action>Cancellation type</Skeleton>\n <View row style={{ justifyContent: 'space-between' }}>\n <Skeleton action>Free cancelation</Skeleton>\n <Skeleton action>$0.00</Skeleton>\n </View>\n <View row style={{ justifyContent: 'space-between' }}>\n <Skeleton action>Free cancelation until apr 10</Skeleton>\n <Skeleton action>$19.95</Skeleton>\n </View>\n </View>\n\n <View style={{ ...section }}>\n <Skeleton action>Extras</Skeleton>\n <View row style={{ justifyContent: 'space-between' }}>\n <Skeleton action>Only room</Skeleton>\n <Skeleton action>$0.00</Skeleton>\n </View>\n <View row style={{ justifyContent: 'space-between' }}>\n <Skeleton action>Breakfast included</Skeleton>\n <Skeleton action>$19.95</Skeleton>\n </View>\n <View row style={{ justifyContent: 'space-between' }}>\n <Skeleton action>All included</Skeleton>\n <Skeleton action>$39.95</Skeleton>\n </View>\n </View>\n\n <View row style={{ alignItems: 'flex-end', justifyContent: 'space-between', padding: '1rem' }}>\n <View style={{ gap: '0.5rem' }}>\n <Skeleton small>5% off</Skeleton>\n <Skeleton headline level={2}>\n $199.50\n </Skeleton>\n <Skeleton small>$19.95 per unit & night</Skeleton>\n <Skeleton small>Includes taxes and fees</Skeleton>\n <Skeleton small>Price details +</Skeleton>\n </View>\n\n <Skeleton action style={{ height: '3rem', width: '8rem' }}>\n Select\n </Skeleton>\n </View>\n </View>\n </Skeleton>\n ))}\n </View>\n </>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,GAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,SAAA,GAAAH,OAAA;AAAyC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAAA,IAAAQ,QAAA,GAE1BA,CAAA,KAAM;EACnB,MAAM;IAAEC;EAAS,CAAC,GAAG,IAAAC,aAAS,EAAC,CAAC;EAEhC,MAAMC,KAAK,GAAG;IAAEC,KAAK,EAAE;EAAO,CAAC;EAC/B,MAAMC,OAAO,GAAG;IAAEC,YAAY,EAAE,8CAA8C;IAAEC,GAAG,EAAE,QAAQ;IAAEC,OAAO,EAAE;EAAO,CAAC;EAChH,MAAMC,KAAK,GAAG;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE;MAAEC,MAAM,EAAE,IAAI;MAAEC,MAAM,EAAE,QAAQ;MAAEL,OAAO,EAAE;IAAW;EAAE,CAAC;EAE5F,oBACE5B,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAAlC,MAAA,CAAAK,OAAA,CAAA8B,QAAA,qBACEnC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG,EAAE,CAAChB,QAAS;IAACU,KAAK,EAAE;MAAEJ,GAAG,EAAE,MAAM;MAAEW,cAAc,EAAE,eAAe;MAAEV,OAAO,EAAE;IAAS;EAAE,gBAC/F5B,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI,MAAE,CAAC,eAERpC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG;IAACN,KAAK,EAAE;MAAEJ,GAAG,EAAE;IAAO;EAAE,gBAC/B3B,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ,EAAAjC,QAAA,KAAKiB,KAAK,EAAMM,KAAK,GAC3B,CAACR,QAAQ,GAAG,sBAAsB,GAAG,IAC9B,CAAC,EACV,CAACA,QAAQ,iBACRrB,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ,EAAAjC,QAAA,KAAKiB,KAAK,EAAMM,KAAK,GAAE,MAEtB,CAER,CACF,CAAC,eAEP7B,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG;IAACN,KAAK,EAAE;MAAES,UAAU,EAAE,SAAS;MAAEC,QAAQ,EAAE,MAAM;MAAEd,GAAG,EAAE,MAAM;MAAEW,cAAc,EAAE;IAAgB;EAAE,GACxGI,KAAK,CAACC,IAAI,CAAC;IAAE9B,MAAM,EAAEQ,QAAQ,GAAG,CAAC,GAAG;EAAE,CAAC,CAAC,CAACuB,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,kBACrD9C,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ,EAAAjC,QAAA;IACPS,GAAG,EAAE+B;EAAM,GACPvB,KAAK;IACTQ,KAAK,EAAE;MACLgB,SAAS,EAAE,YAAY;MACvBC,IAAI,EAAE,CAAC;MACPC,SAAS,8DAA8D;MACvEC,QAAQ,EAAE;IACZ;EAAE,iBAEFlD,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACf,KAAK,EAAC,QAAQ;IAACO,KAAK,EAAE;MAAEoB,YAAY,EAAE,CAAC;MAAElB,MAAM,EAAE;IAAQ;EAAE,CAAE,CAAC,eAExEjC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACL,KAAK,EAAE;MAAEE,MAAM,EAAE;IAAQ;EAAE,gBAC/BjC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACL,KAAK,EAAE;MAAE,GAAGN;IAAQ;EAAE,gBAC1BzB,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACR,KAAK,EAAE;MAAEE,MAAM,EAAE;IAAO;EAAE,CAAE,CAAC,eACvCjC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACa,QAAQ;IAACC,KAAK,EAAE;EAAE,GAAC,WAEnB,CAAC,eACXrD,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,oBAA4B,CAAC,eAC9ChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,YAAoB,CAAC,eACtChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,UAAkB,CAAC,eACpChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,SAAiB,CAAC,eACnChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,aAAqB,CAClC,CAAC,eAEPhC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACL,KAAK,EAAE;MAAE,GAAGN;IAAQ;EAAE,gBAC1BzB,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,mBAA2B,CAAC,eAC7ChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG;IAACN,KAAK,EAAE;MAAEO,cAAc,EAAE;IAAgB;EAAE,gBACnDtC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,kBAA0B,CAAC,eAC5ChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,OAAe,CAC5B,CAAC,eACPhC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG;IAACN,KAAK,EAAE;MAAEO,cAAc,EAAE;IAAgB;EAAE,gBACnDtC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,+BAAuC,CAAC,eACzDhC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,QAAgB,CAC7B,CACF,CAAC,eAEPhC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACL,KAAK,EAAE;MAAE,GAAGN;IAAQ;EAAE,gBAC1BzB,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,QAAgB,CAAC,eAClChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG;IAACN,KAAK,EAAE;MAAEO,cAAc,EAAE;IAAgB;EAAE,gBACnDtC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,WAAmB,CAAC,eACrChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,OAAe,CAC5B,CAAC,eACPhC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG;IAACN,KAAK,EAAE;MAAEO,cAAc,EAAE;IAAgB;EAAE,gBACnDtC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,oBAA4B,CAAC,eAC9ChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,QAAgB,CAC7B,CAAC,eACPhC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG;IAACN,KAAK,EAAE;MAAEO,cAAc,EAAE;IAAgB;EAAE,gBACnDtC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,cAAsB,CAAC,eACxChC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;EAAA,GAAC,QAAgB,CAC7B,CACF,CAAC,eAEPhC,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACC,GAAG;IAACN,KAAK,EAAE;MAAES,UAAU,EAAE,UAAU;MAAEF,cAAc,EAAE,eAAe;MAAEV,OAAO,EAAE;IAAO;EAAE,gBAC5F5B,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAACpC,GAAA,CAAAsC,IAAI;IAACL,KAAK,EAAE;MAAEJ,GAAG,EAAE;IAAS;EAAE,gBAC7B3B,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACe,KAAK;EAAA,GAAC,QAAgB,CAAC,eACjCtD,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACa,QAAQ;IAACC,KAAK,EAAE;EAAE,GAAC,SAEnB,CAAC,eACXrD,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACe,KAAK;EAAA,GAAC,yBAAiC,CAAC,eAClDtD,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACe,KAAK;EAAA,GAAC,yBAAiC,CAAC,eAClDtD,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACe,KAAK;EAAA,GAAC,iBAAyB,CACrC,CAAC,eAEPtD,MAAA,CAAAK,OAAA,CAAA6B,aAAA,CAAChC,SAAA,CAAAqC,QAAQ;IAACP,MAAM;IAACD,KAAK,EAAE;MAAEE,MAAM,EAAE,MAAM;MAAEsB,KAAK,EAAE;IAAO;EAAE,GAAC,QAEjD,CACN,CACF,CACE,CACX,CACG,CACN,CAAC;AAEP,CAAC;AAAAC,OAAA,CAAAnD,OAAA,GAAAe,QAAA"}
@@ -3,7 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.RATES_STORAGE_KEY = exports.RATES_STORAGE_CACHE = void 0;
6
+ exports.RATES_STORAGE_KEY = exports.RATES_STORAGE_CACHE = exports.EXPIRATION_ENDPOINT = exports.DISCOUNT_TYPE = void 0;
7
+ const DISCOUNT_TYPE = exports.DISCOUNT_TYPE = {
8
+ CLUB: 0,
9
+ DEAL: 1,
10
+ PROMOTION: 2
11
+ };
12
+ const EXPIRATION_ENDPOINT = exports.EXPIRATION_ENDPOINT = 'club/v1/forwarder/expiration';
7
13
  const RATES_STORAGE_CACHE = exports.RATES_STORAGE_CACHE = 1000 * 60 * 5; // 5 minutes
8
14
 
9
15
  const RATES_STORAGE_KEY = exports.RATES_STORAGE_KEY = 'MIRAI:RATES';
@@ -1 +1 @@
1
- {"version":3,"file":"Rates.constants.js","names":["RATES_STORAGE_CACHE","exports","RATES_STORAGE_KEY"],"sources":["../../../src/components/Rates/Rates.constants.js"],"sourcesContent":["const RATES_STORAGE_CACHE = 1000 * 60 * 5; // 5 minutes\n\nconst RATES_STORAGE_KEY = 'MIRAI:RATES';\n\nexport { RATES_STORAGE_CACHE, RATES_STORAGE_KEY };\n"],"mappings":";;;;;;AAAA,MAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;AAE3C,MAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,aAAa"}
1
+ {"version":3,"file":"Rates.constants.js","names":["DISCOUNT_TYPE","exports","CLUB","DEAL","PROMOTION","EXPIRATION_ENDPOINT","RATES_STORAGE_CACHE","RATES_STORAGE_KEY"],"sources":["../../../src/components/Rates/Rates.constants.js"],"sourcesContent":["const DISCOUNT_TYPE = {\n CLUB: 0,\n DEAL: 1,\n PROMOTION: 2,\n};\n\nconst EXPIRATION_ENDPOINT = 'club/v1/forwarder/expiration';\n\nconst RATES_STORAGE_CACHE = 1000 * 60 * 5; // 5 minutes\n\nconst RATES_STORAGE_KEY = 'MIRAI:RATES';\n\nexport { DISCOUNT_TYPE, EXPIRATION_ENDPOINT, RATES_STORAGE_CACHE, RATES_STORAGE_KEY };\n"],"mappings":";;;;;;AAAA,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EACpBE,IAAI,EAAE,CAAC;EACPC,IAAI,EAAE,CAAC;EACPC,SAAS,EAAE;AACb,CAAC;AAED,MAAMC,mBAAmB,GAAAJ,OAAA,CAAAI,mBAAA,GAAG,8BAA8B;AAE1D,MAAMC,mBAAmB,GAAAL,OAAA,CAAAK,mBAAA,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;AAE3C,MAAMC,iBAAiB,GAAAN,OAAA,CAAAM,iBAAA,GAAG,aAAa"}
@@ -12,11 +12,12 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var _components = require("./components");
13
13
  var _helpers = require("./helpers");
14
14
  var _Rates = require("./Rates.constants");
15
- var _Rates2 = require("./Rates.Filter");
16
- var _Rates3 = require("./Rates.Footer");
15
+ var _Rates2 = require("./Rates.Footer");
16
+ var _Rates3 = require("./Rates.Header");
17
17
  var _Rates4 = require("./Rates.l10n");
18
18
  var style = _interopRequireWildcard(require("./Rates.module.css"));
19
- var _Rates5 = _interopRequireDefault(require("./Rates.Skeleton"));
19
+ var _Rates5 = require("./Rates.RoomSelector");
20
+ var _Rates6 = _interopRequireDefault(require("./Rates.Skeleton"));
20
21
  var _services = require("../../services");
21
22
  var _Finder = require("../Finder/Finder");
22
23
  var _helpers2 = require("../helpers");
@@ -29,25 +30,32 @@ const Rates = _ref => {
29
30
  skeleton,
30
31
  ...others
31
32
  } = _ref;
33
+ const {
34
+ isMobile
35
+ } = (0, _ui.useDevice)();
32
36
  const {
33
37
  translate
34
38
  } = (0, _locale.useLocale)();
39
+ const refRoomSelector = (0, _react.useRef)();
35
40
  const {
36
41
  set,
37
42
  value: {
38
43
  club: {
39
- discount
44
+ discount,
45
+ ...club
40
46
  } = {},
41
47
  currency,
42
48
  finder: {
43
- occupation
49
+ occupation = []
44
50
  } = {},
45
51
  hotel = {},
52
+ language,
46
53
  locale,
47
54
  session,
48
55
  urlParams
49
56
  }
50
57
  } = (0, _dataSources.useStore)();
58
+ const [cart, setCart] = (0, _react.useState)([]);
51
59
  const [compact, setCompact] = (0, _react.useState)(true);
52
60
  const [dataSource, setDataSource] = (0, _react.useState)();
53
61
  const [fetching, setFetching] = (0, _react.useState)(undefined);
@@ -58,68 +66,82 @@ const Rates = _ref => {
58
66
  const [itemRateInfo, setItemRateInfo] = (0, _react.useState)();
59
67
  const [itemUrl, setItemUrl] = (0, _react.useState)();
60
68
  const [responseError, setResponseError] = (0, _react.useState)();
61
- const [selected, setSelected] = (0, _react.useState)({});
69
+ const [room, setRoom] = (0, _react.useState)();
62
70
  const storage = new _dataSources.Storage({
63
71
  adapter: _dataSources.LocalAdapter,
64
72
  cache: _Rates.RATES_STORAGE_CACHE
65
73
  });
66
74
  (0, _react.useEffect)(() => {
67
75
  if (skeleton) return setFetching(true);
68
- if (urlParams) {
69
- const nextSelected = storage.get(key(urlParams));
70
- if (nextSelected) setSelected(nextSelected);
71
- }
72
76
  const handleScroll = () => setCompact(true);
73
77
  window.addEventListener('scroll', handleScroll);
74
78
  return () => window.removeEventListener('scroll', handleScroll);
75
79
  // eslint-disable-next-line react-hooks/exhaustive-deps
76
80
  }, []);
77
81
  (0, _react.useEffect)(() => {
78
- fetch(currency);
82
+ if (!urlParams || !dataSource) return;
83
+
84
+ // ! Should know if didnt expire the storage
85
+ // const storedCart = storage.get(key(urlParams));
86
+ // if (storedCart) setCart(storedCart.map((item) => (item !== null ? item : undefined)));
87
+ if (dataSource !== null && dataSource !== void 0 && dataSource.externalLogoff && club !== null && club !== void 0 && club.id) document.location.href = "".concat(process.env.SERVICE_USER, "/").concat(_Rates.EXPIRATION_ENDPOINT, "?idClub=").concat(club.id, "&lang=").concat(language);
88
+ if (room == undefined && occupation.length > 1) setRoom(0);
89
+ // eslint-disable-next-line react-hooks/exhaustive-deps
90
+ }, [dataSource]);
91
+ (0, _react.useEffect)(() => {
92
+ if (multiRoom && room > 0) {
93
+ const {
94
+ current: {
95
+ offsetHeight = 0,
96
+ offsetTop = 0
97
+ } = {}
98
+ } = refRoomSelector || {};
99
+ document.documentElement.scrollTo({
100
+ top: offsetTop + (isMobile ? offsetHeight : 0),
101
+ behavior: 'smooth'
102
+ });
103
+ setDataSource();
104
+ }
105
+ fetch(currency, undefined, undefined, room);
79
106
  // eslint-disable-next-line react-hooks/exhaustive-deps
80
- }, [currency, locale, session]);
107
+ }, [locale, room, session]);
81
108
  const fetch = async function (currency) {
82
109
  let clubDiscount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : filter.clubDiscount;
83
110
  let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : urlParams;
111
+ let room = arguments.length > 3 ? arguments[3] : undefined;
84
112
  if (skeleton) return;
85
113
  setFetching(true);
114
+ setResponseError();
86
115
  const nextParams = {
87
116
  ...params,
117
+ club,
118
+ clubDiscount,
88
119
  currency,
89
120
  locale,
90
- session,
91
- clubDiscount
121
+ session
92
122
  };
123
+ if (room !== undefined) nextParams.parties = (0, _helpers2.parseToParties)([occupation[room]]);
93
124
  setDataSource(await _services.ServiceRates.get(nextParams).catch(setResponseError));
94
125
  setFetching(false);
95
126
  };
96
127
  const key = dataSource => "".concat(_Rates.RATES_STORAGE_KEY, ":").concat((0, _helpers2.generateId)(JSON.stringify(dataSource)));
97
- const handleChange = function () {
98
- let {
99
- amount = 0,
100
- id,
101
- standalone = false,
102
- ...others
103
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
104
- const next = standalone ? {} : {
105
- ...selected
106
- };
107
- if (amount === 0) delete next[id];else next[id] = {
108
- amount,
109
- ...others
110
- };
111
- setSelected(next);
112
- storage.set(key(urlParams), next);
128
+ const handleChange = board => {
129
+ const nextCart = [...cart];
130
+ nextCart[room || 0] = board;
131
+ setCart(nextCart);
132
+ storage.set(key(urlParams), nextCart);
133
+ if (multiRoom && board && room < occupation.length - 1) return setRoom(room + 1);
113
134
  };
114
135
  const handleChangeCurrency = async nextCurrency => {
115
- await fetch(nextCurrency);
136
+ await fetch(nextCurrency, undefined, undefined, room);
137
+ setCart([]);
116
138
  set({
117
139
  currency: nextCurrency
118
140
  });
119
141
  };
120
142
  const handleChangeFilter = async nextFilter => {
121
143
  setFilter(nextFilter);
122
- if (nextFilter.clubDiscount !== filter.clubDiscount) await fetch(currency, nextFilter.clubDiscount);
144
+ if (nextFilter.clubDiscount !== filter.clubDiscount) await fetch(currency, nextFilter.clubDiscount, undefined, room);
123
145
  };
124
146
  const handleFinderSubmit = values => {
125
147
  setCompact(true);
@@ -132,32 +154,48 @@ const Rates = _ref => {
132
154
  hotel
133
155
  });
134
156
  history.replaceState({}, '', (0, _helpers2.toUrlParams)(params));
157
+ // ! TODO: Restart the process?
158
+ setCart([]);
159
+ setRoom(undefined);
135
160
  fetch(currency, filter.clubDiscount, params);
136
161
  };
162
+ const multiRoom = (occupation === null || occupation === void 0 ? void 0 : occupation.length) > 1;
137
163
  const response = dataSource !== undefined;
164
+ const roomSelectorProps = {
165
+ cart,
166
+ occupation,
167
+ room,
168
+ onPress: setRoom
169
+ };
138
170
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.View, {
139
- className: style.finder
171
+ ref: refRoomSelector,
172
+ className: (0, _ui.styles)(style.finder, !multiRoom && style.sticky)
140
173
  }, /*#__PURE__*/_react.default.createElement(_Finder.Finder, {
141
174
  assisted: false,
142
175
  compact: compact,
143
176
  text: translate(_Rates4.L10N.ACTION_SEARCH),
144
177
  onExpand: () => setCompact(false),
145
178
  onSubmit: handleFinderSubmit
146
- })), /*#__PURE__*/_react.default.createElement(_ui.View, _extends({}, others, {
147
- role: "rates",
148
- className: (0, _ui.styles)(style.container, others.className)
149
- }), /*#__PURE__*/_react.default.createElement(_ui.Progress, {
179
+ })), /*#__PURE__*/_react.default.createElement(_ui.Progress, {
150
180
  indeterminate: true,
151
181
  visible: fetching && !responseError,
152
182
  className: style.progress
183
+ }), isMobile && /*#__PURE__*/_react.default.createElement(_Rates5.RoomSelector, roomSelectorProps), /*#__PURE__*/_react.default.createElement(_ui.View, _extends({}, others, {
184
+ role: "rates",
185
+ className: (0, _ui.styles)(style.container, others.className)
153
186
  }), /*#__PURE__*/_react.default.createElement(_ui.View, {
154
187
  className: [style.wrapper, style.content]
155
- }, response ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Rates2.Filter, {
156
- dataSource: dataSource,
188
+ }, response && /*#__PURE__*/_react.default.createElement(_Rates3.Header, {
189
+ dataSource,
190
+ occupation,
157
191
  value: filter,
158
192
  onChange: handleChangeFilter,
159
- onCurrency: handleChangeCurrency
160
- }), dataSource.items.map((_ref2, index) => {
193
+ onCurrency: handleChangeCurrency,
194
+ className: multiRoom ? style.sticky : undefined
195
+ }, !isMobile && /*#__PURE__*/_react.default.createElement(_Rates5.RoomSelector, roomSelectorProps)), response ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.View, {
196
+ row: !isMobile,
197
+ className: style.items
198
+ }, dataSource.items.map((_ref2, index) => {
161
199
  let {
162
200
  id,
163
201
  ...item
@@ -167,20 +205,26 @@ const Rates = _ref => {
167
205
  id
168
206
  }, item, {
169
207
  filter,
170
- occupation,
171
- selected,
208
+ multiRoom,
172
209
  taxes: dataSource.taxes,
210
+ cart: cart[room || 0],
173
211
  onChange: handleChange,
174
212
  onMoreInfo: () => setItemInfo(item),
175
213
  onRateInfo: rate => setItemRateInfo(rate),
176
214
  onViewUrl: info => setItemUrl(info)
177
215
  }));
178
- })) : /*#__PURE__*/_react.default.createElement(_Rates5.default, null)), response && /*#__PURE__*/_react.default.createElement(_Rates3.Footer, {
216
+ }))) : responseError ? /*#__PURE__*/_react.default.createElement(_ui.Notification, {
217
+ error: true,
218
+ large: true
219
+ }, /*#__PURE__*/_react.default.createElement(_ui.Text, {
220
+ align: "center",
221
+ markdown: false
222
+ }, JSON.stringify(responseError))) : /*#__PURE__*/_react.default.createElement(_Rates6.default, null)), /*#__PURE__*/_react.default.createElement(_Rates2.Footer, {
223
+ cart,
179
224
  dataSource,
180
225
  filter,
226
+ multiRoom,
181
227
  occupation,
182
- selected,
183
- taxes: dataSource === null || dataSource === void 0 ? void 0 : dataSource.taxes,
184
228
  onChange: handleChange
185
229
  })), /*#__PURE__*/_react.default.createElement(_components.ModalItemInfo, _extends({}, itemInfo, {
186
230
  visible: !!itemInfo,
@@ -194,7 +238,6 @@ const Rates = _ref => {
194
238
  })));
195
239
  };
196
240
  exports.Rates = Rates;
197
- Rates.displayName = 'Mirai:User:Rates';
198
241
  Rates.propTypes = {
199
242
  skeleton: _propTypes.default.bool
200
243
  };