willba-component-library 0.3.13 → 0.3.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -12
- package/lib/assets/IconsSvg.d.ts +2 -1
- package/lib/components/Button/Button.d.ts +2 -2
- package/lib/components/FilterBar/FilterBar.d.ts +3 -2
- package/lib/components/FilterBar/components/FilterControls/FilterControls.d.ts +3 -0
- package/lib/components/FilterBar/components/FilterPanels/Categories/Categories.d.ts +11 -0
- package/lib/components/FilterBar/components/FilterPanels/Dates/Dates.d.ts +16 -0
- package/lib/components/FilterBar/components/FilterPanels/FilterPanels.d.ts +3 -0
- package/lib/components/FilterBar/components/FilterPanels/Guests/GuestCount/GuestCount.d.ts +4 -0
- package/lib/components/FilterBar/components/FilterPanels/Guests/Guests.d.ts +12 -0
- package/lib/components/FilterBar/components/FilterPanels/Locations/Locations.d.ts +14 -0
- package/lib/components/FilterBar/components/FilterPanels/SectionHeader/SectionHeader.d.ts +8 -0
- package/lib/components/FilterBar/components/FilterTabs/FilterTabs.d.ts +3 -0
- package/lib/components/FilterBar/components/ImageCard/ImageCard.d.ts +11 -0
- package/lib/components/FilterBar/components/SelectButton/SelectButton.d.ts +13 -0
- package/lib/components/FilterBar/components/TabButton/TabButton.d.ts +10 -0
- package/lib/components/FilterBar/components/buttons/select-button/SelectButton.d.ts +2 -1
- package/lib/components/FilterBar/components/buttons/tab-button/TabButton.d.ts +2 -1
- package/lib/components/FilterBar/components/cards/image-card/ImageCard.d.ts +2 -1
- package/lib/components/FilterBar/components/categories/Categories.d.ts +2 -1
- package/lib/components/FilterBar/components/common/FilterSectionHeader.d.ts +2 -2
- package/lib/components/FilterBar/components/dates/Dates.d.ts +2 -2
- package/lib/components/FilterBar/components/divider/Divider.d.ts +2 -1
- package/lib/components/FilterBar/components/guests/Guests.d.ts +2 -1
- package/lib/components/FilterBar/components/index.d.ts +6 -5
- package/lib/components/FilterBar/components/locations/Locations.d.ts +2 -1
- package/lib/components/FilterBar/hooks/index.d.ts +4 -1
- package/lib/components/FilterBar/hooks/useFilterActions.d.ts +25 -0
- package/lib/components/FilterBar/hooks/useFilterState.d.ts +22 -0
- package/lib/components/FilterBar/hooks/useFilterUi.d.ts +7 -0
- package/lib/components/FilterBar/hooks/usePanelPosition.d.ts +12 -0
- package/lib/components/FilterBar/index.d.ts +1 -1
- package/lib/components/FilterBar/providers/FilterBarProvider.d.ts +31 -0
- package/lib/components/FilterBar/providers/index.d.ts +1 -0
- package/lib/components/FilterBar/utils/ageCategoriesRules.d.ts +7 -0
- package/lib/components/FilterBar/utils/index.d.ts +1 -1
- package/lib/components/FilterBar/utils/parseGuests.d.ts +5 -1
- package/lib/components/FilterCalendar/FilterCalendar.d.ts +3 -2
- package/lib/components/FilterCalendar/components/Footer.d.ts +2 -1
- package/lib/core/components/buttons/CloseButton/CloseButton.d.ts +7 -0
- package/lib/core/components/buttons/SubmitButton/SubmitButton.d.ts +14 -0
- package/lib/core/components/buttons/close-button/CloseButton.d.ts +2 -1
- package/lib/core/components/buttons/submit-button/SubmitButton.d.ts +2 -1
- package/lib/core/components/calendar/Calendar.d.ts +2 -1
- package/lib/core/components/index.d.ts +4 -2
- package/lib/index.d.ts +4 -5
- package/lib/index.esm.js +1593 -1480
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +2156 -2043
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +2159 -2045
- package/lib/index.umd.js.map +1 -1
- package/lib/themes/useTheme.d.ts +1 -1
- package/package.json +1 -1
- package/rollup.config.mjs +1 -1
- package/src/components/FilterBar/FilterBar.css +4 -70
- package/src/components/FilterBar/FilterBar.stories.tsx +1 -1
- package/src/components/FilterBar/FilterBar.tsx +28 -283
- package/src/components/FilterBar/components/FilterControls/FilterControls.css +18 -0
- package/src/components/FilterBar/components/FilterControls/FilterControls.tsx +135 -0
- package/src/components/FilterBar/components/{categories → FilterPanels/Categories}/Categories.css +1 -1
- package/src/components/FilterBar/components/{categories → FilterPanels/Categories}/Categories.tsx +3 -1
- package/src/components/FilterBar/components/{dates → FilterPanels/Dates}/Dates.tsx +11 -11
- package/src/components/FilterBar/components/FilterPanels/FilterPanels.css +24 -0
- package/src/components/FilterBar/components/FilterPanels/FilterPanels.tsx +115 -0
- package/src/components/FilterBar/components/{guests → FilterPanels/Guests}/GuestCount/GuestCount.tsx +1 -1
- package/src/components/FilterBar/components/{guests → FilterPanels/Guests}/Guests.css +5 -6
- package/src/components/FilterBar/components/{guests → FilterPanels/Guests}/Guests.tsx +7 -7
- package/src/components/FilterBar/components/{locations → FilterPanels/Locations}/Locations.css +1 -1
- package/src/components/FilterBar/components/{locations → FilterPanels/Locations}/Locations.tsx +7 -6
- package/src/components/FilterBar/components/{common/FilterSectionHeader.tsx → FilterPanels/SectionHeader/SectionHeader.tsx} +2 -2
- package/src/components/FilterBar/components/FilterTabs/FilterTabs.css +10 -0
- package/src/components/FilterBar/components/FilterTabs/FilterTabs.tsx +47 -0
- package/src/components/FilterBar/components/{buttons/select-button → SelectButton}/SelectButton.css +1 -0
- package/src/components/FilterBar/components/{buttons/select-button → SelectButton}/SelectButton.tsx +7 -6
- package/src/components/FilterBar/components/index.ts +6 -6
- package/src/components/FilterBar/hooks/index.ts +4 -1
- package/src/components/FilterBar/hooks/useFilterActions.tsx +126 -0
- package/src/components/FilterBar/hooks/useFilterState.tsx +86 -0
- package/src/components/FilterBar/hooks/useFilterUi.tsx +19 -0
- package/src/components/FilterBar/hooks/usePanelPosition.tsx +66 -0
- package/src/components/FilterBar/index.ts +1 -1
- package/src/components/FilterBar/providers/FilterBarProvider.tsx +169 -0
- package/src/components/FilterBar/providers/index.ts +1 -0
- package/src/components/FilterBar/utils/ageCategoriesRules.ts +27 -0
- package/src/components/FilterBar/utils/index.tsx +1 -1
- package/src/components/FilterBar/utils/parseGuests.tsx +20 -9
- package/src/components/FilterBar/utils/{parseLocations.tsx → parseLocations.ts} +3 -4
- package/src/components/FilterCalendar/FilterCalendar.tsx +2 -2
- package/src/core/components/index.ts +5 -2
- package/src/index.ts +1 -1
- package/src/themes/useTheme.tsx +1 -1
- package/src/components/FilterBar/components/buttons/index.ts +0 -5
- package/src/components/FilterBar/components/cards/index.ts +0 -1
- package/src/components/FilterBar/components/dates/index.ts +0 -1
- package/src/components/FilterBar/hooks/useFilterBar.tsx +0 -208
- package/src/components/FilterBar/utils/calculateDropdownPosition.tsx +0 -96
- /package/src/components/FilterBar/components/{divider → Divider}/Divider.css +0 -0
- /package/src/components/FilterBar/components/{divider → Divider}/Divider.tsx +0 -0
- /package/src/components/FilterBar/components/{dates → FilterPanels/Dates}/Dates.css +0 -0
- /package/src/components/FilterBar/components/{guests → FilterPanels/Guests}/GuestCount/GuestCount.css +0 -0
- /package/src/components/FilterBar/components/{common/FilterSectionHeader.css → FilterPanels/SectionHeader/SectionHeader.css} +0 -0
- /package/src/components/FilterBar/components/{cards/image-card → ImageCard}/ImageCard.css +0 -0
- /package/src/components/FilterBar/components/{cards/image-card → ImageCard}/ImageCard.tsx +0 -0
- /package/src/components/FilterBar/components/{buttons/tab-button → TabButton}/TabButton.css +0 -0
- /package/src/components/FilterBar/components/{buttons/tab-button → TabButton}/TabButton.tsx +0 -0
- /package/src/core/components/buttons/{close-button → CloseButton}/CloseButton.css +0 -0
- /package/src/core/components/buttons/{close-button → CloseButton}/CloseButton.tsx +0 -0
- /package/src/core/components/buttons/{submit-button → SubmitButton}/SubmitButton.css +0 -0
- /package/src/core/components/buttons/{submit-button → SubmitButton}/SubmitButton.tsx +0 -0
package/lib/index.esm.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import React__default__default, { useState, createContext, useContext, useRef, useEffect, forwardRef, useMemo } from 'react';
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import React__default, { useState, useEffect, createContext, useContext, useRef, forwardRef, useMemo } from 'react';
|
|
4
3
|
|
|
5
4
|
/******************************************************************************
|
|
6
5
|
Copyright (c) Microsoft Corporation.
|
|
@@ -192,8 +191,8 @@ function styleInject(css, ref) {
|
|
|
192
191
|
}
|
|
193
192
|
}
|
|
194
193
|
|
|
195
|
-
var css_248z$
|
|
196
|
-
styleInject(css_248z$
|
|
194
|
+
var css_248z$k = ".storybook-button {\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-weight: 700;\n border: 0;\n border-radius: 3em;\n cursor: pointer;\n display: inline-block;\n line-height: 1;\n}\n.storybook-button--primary {\n color: white;\n background-color: #1ea7fd;\n}\n.storybook-button--secondary {\n color: #333;\n background-color: transparent;\n box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;\n}\n.storybook-button--small {\n font-size: 12px;\n padding: 10px 16px;\n}\n.storybook-button--medium {\n font-size: 14px;\n padding: 11px 20px;\n}\n.storybook-button--large {\n font-size: 16px;\n padding: 12px 24px;\n}";
|
|
195
|
+
styleInject(css_248z$k);
|
|
197
196
|
|
|
198
197
|
/**
|
|
199
198
|
* Primary UI component for user interaction
|
|
@@ -201,443 +200,103 @@ styleInject(css_248z$h);
|
|
|
201
200
|
var Button$1 = function (_a) {
|
|
202
201
|
var _b = _a.type, type = _b === void 0 ? 'primary' : _b, textColor = _a.textColor, _c = _a.size, size = _c === void 0 ? 'medium' : _c, onClick = _a.onClick, label = _a.label;
|
|
203
202
|
var _d = __read(useState(4), 2), theState = _d[0]; _d[1];
|
|
204
|
-
return (
|
|
203
|
+
return (React__default.createElement("button", { type: "button", className: classNames('storybook-button', "storybook-button--".concat(size), "storybook-button--".concat(type)), style: textColor ? { color: textColor } : {}, onClick: onClick }, "".concat(label, " ").concat(theState)));
|
|
205
204
|
};
|
|
206
205
|
|
|
207
|
-
function
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
console.warn(...args);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
const alreadyWarned = {};
|
|
217
|
-
function warnOnce() {
|
|
218
|
-
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
219
|
-
args[_key2] = arguments[_key2];
|
|
220
|
-
}
|
|
221
|
-
if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;
|
|
222
|
-
if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();
|
|
223
|
-
warn(...args);
|
|
224
|
-
}
|
|
225
|
-
const loadedClb = (i18n, cb) => () => {
|
|
226
|
-
if (i18n.isInitialized) {
|
|
227
|
-
cb();
|
|
228
|
-
} else {
|
|
229
|
-
const initialized = () => {
|
|
230
|
-
setTimeout(() => {
|
|
231
|
-
i18n.off('initialized', initialized);
|
|
232
|
-
}, 0);
|
|
233
|
-
cb();
|
|
206
|
+
var useTheme = function (_a) {
|
|
207
|
+
var palette = _a.palette;
|
|
208
|
+
var themePalette = {
|
|
209
|
+
'--will-primary': palette === null || palette === void 0 ? void 0 : palette.primary,
|
|
210
|
+
'--will-secondary': palette === null || palette === void 0 ? void 0 : palette.secondary,
|
|
211
|
+
'--will-error': palette === null || palette === void 0 ? void 0 : palette.error,
|
|
234
212
|
};
|
|
235
|
-
|
|
236
|
-
}
|
|
213
|
+
return themePalette;
|
|
237
214
|
};
|
|
238
|
-
function loadNamespaces(i18n, ns, cb) {
|
|
239
|
-
i18n.loadNamespaces(ns, loadedClb(i18n, cb));
|
|
240
|
-
}
|
|
241
|
-
function loadLanguages(i18n, lng, ns, cb) {
|
|
242
|
-
if (typeof ns === 'string') ns = [ns];
|
|
243
|
-
ns.forEach(n => {
|
|
244
|
-
if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);
|
|
245
|
-
});
|
|
246
|
-
i18n.loadLanguages(lng, loadedClb(i18n, cb));
|
|
247
|
-
}
|
|
248
|
-
function oldI18nextHasLoadedNamespace(ns, i18n) {
|
|
249
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
250
|
-
const lng = i18n.languages[0];
|
|
251
|
-
const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;
|
|
252
|
-
const lastLng = i18n.languages[i18n.languages.length - 1];
|
|
253
|
-
if (lng.toLowerCase() === 'cimode') return true;
|
|
254
|
-
const loadNotPending = (l, n) => {
|
|
255
|
-
const loadState = i18n.services.backendConnector.state[`${l}|${n}`];
|
|
256
|
-
return loadState === -1 || loadState === 2;
|
|
257
|
-
};
|
|
258
|
-
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;
|
|
259
|
-
if (i18n.hasResourceBundle(lng, ns)) return true;
|
|
260
|
-
if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;
|
|
261
|
-
if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
|
|
262
|
-
return false;
|
|
263
|
-
}
|
|
264
|
-
function hasLoadedNamespace(ns, i18n) {
|
|
265
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
266
|
-
if (!i18n.languages || !i18n.languages.length) {
|
|
267
|
-
warnOnce('i18n.languages were undefined or empty', i18n.languages);
|
|
268
|
-
return true;
|
|
269
|
-
}
|
|
270
|
-
const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;
|
|
271
|
-
if (!isNewerI18next) {
|
|
272
|
-
return oldI18nextHasLoadedNamespace(ns, i18n, options);
|
|
273
|
-
}
|
|
274
|
-
return i18n.hasLoadedNamespace(ns, {
|
|
275
|
-
lng: options.lng,
|
|
276
|
-
precheck: (i18nInstance, loadNotPending) => {
|
|
277
|
-
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;
|
|
278
|
-
}
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
215
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
'>': '>',
|
|
290
|
-
''': "'",
|
|
291
|
-
''': "'",
|
|
292
|
-
'"': '"',
|
|
293
|
-
'"': '"',
|
|
294
|
-
' ': ' ',
|
|
295
|
-
' ': ' ',
|
|
296
|
-
'©': '©',
|
|
297
|
-
'©': '©',
|
|
298
|
-
'®': '®',
|
|
299
|
-
'®': '®',
|
|
300
|
-
'…': '…',
|
|
301
|
-
'…': '…',
|
|
302
|
-
'/': '/',
|
|
303
|
-
'/': '/'
|
|
216
|
+
var useAwaitRender = function () {
|
|
217
|
+
var _a = __read(useState(false), 2), initialRenderComplete = _a[0], setInitialRenderComplete = _a[1];
|
|
218
|
+
useEffect(function () {
|
|
219
|
+
setInitialRenderComplete(true);
|
|
220
|
+
}, []);
|
|
221
|
+
if (!initialRenderComplete)
|
|
222
|
+
return null;
|
|
304
223
|
};
|
|
305
|
-
const unescapeHtmlEntity = m => htmlEntities[m];
|
|
306
|
-
const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);
|
|
307
224
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
225
|
+
const isString = obj => typeof obj === 'string';
|
|
226
|
+
const defer = () => {
|
|
227
|
+
let res;
|
|
228
|
+
let rej;
|
|
229
|
+
const promise = new Promise((resolve, reject) => {
|
|
230
|
+
res = resolve;
|
|
231
|
+
rej = reject;
|
|
232
|
+
});
|
|
233
|
+
promise.resolve = res;
|
|
234
|
+
promise.reject = rej;
|
|
235
|
+
return promise;
|
|
317
236
|
};
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
...defaultOptions$1,
|
|
322
|
-
...options
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
function getDefaults() {
|
|
326
|
-
return defaultOptions$1;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
let i18nInstance;
|
|
330
|
-
function setI18n(instance) {
|
|
331
|
-
i18nInstance = instance;
|
|
332
|
-
}
|
|
333
|
-
function getI18n() {
|
|
334
|
-
return i18nInstance;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
const initReactI18next = {
|
|
338
|
-
type: '3rdParty',
|
|
339
|
-
init(instance) {
|
|
340
|
-
setDefaults(instance.options.react);
|
|
341
|
-
setI18n(instance);
|
|
342
|
-
}
|
|
237
|
+
const makeString = object => {
|
|
238
|
+
if (object == null) return '';
|
|
239
|
+
return '' + object;
|
|
343
240
|
};
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
241
|
+
const copy = (a, s, t) => {
|
|
242
|
+
a.forEach(m => {
|
|
243
|
+
if (s[m]) t[m] = s[m];
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
const lastOfPathSeparatorRegExp = /###/g;
|
|
247
|
+
const cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;
|
|
248
|
+
const canNotTraverseDeeper = object => !object || isString(object);
|
|
249
|
+
const getLastOfPath = (object, path, Empty) => {
|
|
250
|
+
const stack = !isString(path) ? path : path.split('.');
|
|
251
|
+
let stackIndex = 0;
|
|
252
|
+
while (stackIndex < stack.length - 1) {
|
|
253
|
+
if (canNotTraverseDeeper(object)) return {};
|
|
254
|
+
const key = cleanKey(stack[stackIndex]);
|
|
255
|
+
if (!object[key] && Empty) object[key] = new Empty();
|
|
256
|
+
if (Object.prototype.hasOwnProperty.call(object, key)) {
|
|
257
|
+
object = object[key];
|
|
258
|
+
} else {
|
|
259
|
+
object = {};
|
|
260
|
+
}
|
|
261
|
+
++stackIndex;
|
|
349
262
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
263
|
+
if (canNotTraverseDeeper(object)) return {};
|
|
264
|
+
return {
|
|
265
|
+
obj: object,
|
|
266
|
+
k: cleanKey(stack[stackIndex])
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
const setPath = (object, path, newValue) => {
|
|
270
|
+
const {
|
|
271
|
+
obj,
|
|
272
|
+
k
|
|
273
|
+
} = getLastOfPath(object, path, Object);
|
|
274
|
+
if (obj !== undefined || path.length === 1) {
|
|
275
|
+
obj[k] = newValue;
|
|
276
|
+
return;
|
|
354
277
|
}
|
|
355
|
-
|
|
356
|
-
|
|
278
|
+
let e = path[path.length - 1];
|
|
279
|
+
let p = path.slice(0, path.length - 1);
|
|
280
|
+
let last = getLastOfPath(object, p, Object);
|
|
281
|
+
while (last.obj === undefined && p.length) {
|
|
282
|
+
e = `${p[p.length - 1]}.${e}`;
|
|
283
|
+
p = p.slice(0, p.length - 1);
|
|
284
|
+
last = getLastOfPath(object, p, Object);
|
|
285
|
+
if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {
|
|
286
|
+
last.obj = undefined;
|
|
287
|
+
}
|
|
357
288
|
}
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
const usePrevious = (value, ignore) => {
|
|
361
|
-
const ref = useRef();
|
|
362
|
-
useEffect(() => {
|
|
363
|
-
ref.current = ignore ? ref.current : value;
|
|
364
|
-
}, [value, ignore]);
|
|
365
|
-
return ref.current;
|
|
289
|
+
last.obj[`${last.k}.${e}`] = newValue;
|
|
366
290
|
};
|
|
367
|
-
|
|
368
|
-
let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
291
|
+
const pushPath = (object, path, newValue, concat) => {
|
|
369
292
|
const {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
|
|
378
|
-
if (!i18n) {
|
|
379
|
-
warnOnce('You will need to pass in an i18next instance by using initReactI18next');
|
|
380
|
-
const notReadyT = (k, optsOrDefaultValue) => {
|
|
381
|
-
if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;
|
|
382
|
-
if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;
|
|
383
|
-
return Array.isArray(k) ? k[k.length - 1] : k;
|
|
384
|
-
};
|
|
385
|
-
const retNotReady = [notReadyT, {}, false];
|
|
386
|
-
retNotReady.t = notReadyT;
|
|
387
|
-
retNotReady.i18n = {};
|
|
388
|
-
retNotReady.ready = false;
|
|
389
|
-
return retNotReady;
|
|
390
|
-
}
|
|
391
|
-
if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');
|
|
392
|
-
const i18nOptions = {
|
|
393
|
-
...getDefaults(),
|
|
394
|
-
...i18n.options.react,
|
|
395
|
-
...props
|
|
396
|
-
};
|
|
397
|
-
const {
|
|
398
|
-
useSuspense,
|
|
399
|
-
keyPrefix
|
|
400
|
-
} = i18nOptions;
|
|
401
|
-
let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
|
|
402
|
-
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];
|
|
403
|
-
if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);
|
|
404
|
-
const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));
|
|
405
|
-
function getT() {
|
|
406
|
-
return i18n.getFixedT(props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);
|
|
407
|
-
}
|
|
408
|
-
const [t, setT] = useState(getT);
|
|
409
|
-
let joinedNS = namespaces.join();
|
|
410
|
-
if (props.lng) joinedNS = `${props.lng}${joinedNS}`;
|
|
411
|
-
const previousJoinedNS = usePrevious(joinedNS);
|
|
412
|
-
const isMounted = useRef(true);
|
|
413
|
-
useEffect(() => {
|
|
414
|
-
const {
|
|
415
|
-
bindI18n,
|
|
416
|
-
bindI18nStore
|
|
417
|
-
} = i18nOptions;
|
|
418
|
-
isMounted.current = true;
|
|
419
|
-
if (!ready && !useSuspense) {
|
|
420
|
-
if (props.lng) {
|
|
421
|
-
loadLanguages(i18n, props.lng, namespaces, () => {
|
|
422
|
-
if (isMounted.current) setT(getT);
|
|
423
|
-
});
|
|
424
|
-
} else {
|
|
425
|
-
loadNamespaces(i18n, namespaces, () => {
|
|
426
|
-
if (isMounted.current) setT(getT);
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
|
|
431
|
-
setT(getT);
|
|
432
|
-
}
|
|
433
|
-
function boundReset() {
|
|
434
|
-
if (isMounted.current) setT(getT);
|
|
435
|
-
}
|
|
436
|
-
if (bindI18n && i18n) i18n.on(bindI18n, boundReset);
|
|
437
|
-
if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);
|
|
438
|
-
return () => {
|
|
439
|
-
isMounted.current = false;
|
|
440
|
-
if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));
|
|
441
|
-
if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));
|
|
442
|
-
};
|
|
443
|
-
}, [i18n, joinedNS]);
|
|
444
|
-
const isInitial = useRef(true);
|
|
445
|
-
useEffect(() => {
|
|
446
|
-
if (isMounted.current && !isInitial.current) {
|
|
447
|
-
setT(getT);
|
|
448
|
-
}
|
|
449
|
-
isInitial.current = false;
|
|
450
|
-
}, [i18n, keyPrefix]);
|
|
451
|
-
const ret = [t, i18n, ready];
|
|
452
|
-
ret.t = t;
|
|
453
|
-
ret.i18n = i18n;
|
|
454
|
-
ret.ready = ready;
|
|
455
|
-
if (ready) return ret;
|
|
456
|
-
if (!ready && !useSuspense) return ret;
|
|
457
|
-
throw new Promise(resolve => {
|
|
458
|
-
if (props.lng) {
|
|
459
|
-
loadLanguages(i18n, props.lng, namespaces, () => resolve());
|
|
460
|
-
} else {
|
|
461
|
-
loadNamespaces(i18n, namespaces, () => resolve());
|
|
462
|
-
}
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
var DefaultContext = {
|
|
467
|
-
color: undefined,
|
|
468
|
-
size: undefined,
|
|
469
|
-
className: undefined,
|
|
470
|
-
style: undefined,
|
|
471
|
-
attr: undefined
|
|
472
|
-
};
|
|
473
|
-
var IconContext = React__default__default.createContext && React__default__default.createContext(DefaultContext);
|
|
474
|
-
|
|
475
|
-
var __assign$1 = undefined && undefined.__assign || function () {
|
|
476
|
-
__assign$1 = Object.assign || function (t) {
|
|
477
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
478
|
-
s = arguments[i];
|
|
479
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
480
|
-
}
|
|
481
|
-
return t;
|
|
482
|
-
};
|
|
483
|
-
return __assign$1.apply(this, arguments);
|
|
484
|
-
};
|
|
485
|
-
var __rest$1 = undefined && undefined.__rest || function (s, e) {
|
|
486
|
-
var t = {};
|
|
487
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
488
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
489
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
490
|
-
}
|
|
491
|
-
return t;
|
|
492
|
-
};
|
|
493
|
-
function Tree2Element(tree) {
|
|
494
|
-
return tree && tree.map(function (node, i) {
|
|
495
|
-
return React__default__default.createElement(node.tag, __assign$1({
|
|
496
|
-
key: i
|
|
497
|
-
}, node.attr), Tree2Element(node.child));
|
|
498
|
-
});
|
|
499
|
-
}
|
|
500
|
-
function GenIcon(data) {
|
|
501
|
-
// eslint-disable-next-line react/display-name
|
|
502
|
-
return function (props) {
|
|
503
|
-
return React__default__default.createElement(IconBase, __assign$1({
|
|
504
|
-
attr: __assign$1({}, data.attr)
|
|
505
|
-
}, props), Tree2Element(data.child));
|
|
506
|
-
};
|
|
507
|
-
}
|
|
508
|
-
function IconBase(props) {
|
|
509
|
-
var elem = function (conf) {
|
|
510
|
-
var attr = props.attr,
|
|
511
|
-
size = props.size,
|
|
512
|
-
title = props.title,
|
|
513
|
-
svgProps = __rest$1(props, ["attr", "size", "title"]);
|
|
514
|
-
var computedSize = size || conf.size || "1em";
|
|
515
|
-
var className;
|
|
516
|
-
if (conf.className) className = conf.className;
|
|
517
|
-
if (props.className) className = (className ? className + " " : "") + props.className;
|
|
518
|
-
return React__default__default.createElement("svg", __assign$1({
|
|
519
|
-
stroke: "currentColor",
|
|
520
|
-
fill: "currentColor",
|
|
521
|
-
strokeWidth: "0"
|
|
522
|
-
}, conf.attr, attr, svgProps, {
|
|
523
|
-
className: className,
|
|
524
|
-
style: __assign$1(__assign$1({
|
|
525
|
-
color: props.color || conf.color
|
|
526
|
-
}, conf.style), props.style),
|
|
527
|
-
height: computedSize,
|
|
528
|
-
width: computedSize,
|
|
529
|
-
xmlns: "http://www.w3.org/2000/svg"
|
|
530
|
-
}), title && React__default__default.createElement("title", null, title), props.children);
|
|
531
|
-
};
|
|
532
|
-
return IconContext !== undefined ? React__default__default.createElement(IconContext.Consumer, null, function (conf) {
|
|
533
|
-
return elem(conf);
|
|
534
|
-
}) : elem(DefaultContext);
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
// THIS FILE IS AUTO GENERATED
|
|
538
|
-
function FaSearch (props) {
|
|
539
|
-
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"}}]})(props);
|
|
540
|
-
}function FaSpinner (props) {
|
|
541
|
-
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"}}]})(props);
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
function useTheme(_a) {
|
|
545
|
-
var palette = _a.palette;
|
|
546
|
-
var themePalette = {
|
|
547
|
-
'--will-primary': palette === null || palette === void 0 ? void 0 : palette.primary,
|
|
548
|
-
'--will-secondary': palette === null || palette === void 0 ? void 0 : palette.secondary,
|
|
549
|
-
'--will-error': palette === null || palette === void 0 ? void 0 : palette.error,
|
|
550
|
-
};
|
|
551
|
-
return themePalette;
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
var css_248z$g = "@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');\n\n.will-root * {\n font-family: 'Montserrat', sans-serif;\n}\n\n.will-root {\n \n box-sizing: border-box;\n font-size: 14px;\n \n color: #1E1E1E;\n \n /* Palette */\n --will-primary: #374269;\n --will-secondary: #374269;\n --will-grey: #ABA7AF;\n --will-light-grey: #C8C8C8;\n --will-white: #fff;\n --will-white-transparent: #ffffffcf;\n --will-black: #000;\n --will-onahau: #CDEEFF;\n --will-text: #5A5959;\n --will-charcoal-blue: #384265;\n --will-error: #d32f2f;\n\n /* Transparent */\n --will-transparent-black: rgba(0, 0, 0, 0.5);\n --will-transparent-white: rgba(255, 255, 255, 0.30);\n --will-transparent-lavender: rgba(171, 167, 175, 0.30);\n\n /* Color mix */\n --will-primary-lighter: color-mix(in srgb, var(--will-primary), white 50%);\n --will-primary-lightest: color-mix(in srgb, var(--will-primary), white 80%);\n\n\n /* Shadows */\n --will-box-shadow-dark: 0px 2px 12px 2px #a1a1a180;\n --will-box-shadow-light: 0px 2px 12px 2px #bcb9b980;\n\n /* Breakpoints */\n --will-lg: 1140px;\n --will-md: 960px;\n --will-sm: 600px;\n --will-xl: 1280px;\n --will-xs: 0px;\n}\n\n/* Typography */\n\n.will-root h1, h2, h3, h4, h5, h6 {\n font-weight: 700;\n} \n\n.will-root p, h1, h2, h3, h4, h5, h6, span {\n margin: 0;\n padding: 0;\n}\n\n\n/* Integration fixes */\n\n.will-root p {\n margin: 0 !important;\n}\n\n.will-root button {\n line-height: normal !important;\n}\n";
|
|
555
|
-
styleInject(css_248z$g);
|
|
556
|
-
|
|
557
|
-
var useAwaitRender = function () {
|
|
558
|
-
var _a = __read(useState(false), 2), initialRenderComplete = _a[0], setInitialRenderComplete = _a[1];
|
|
559
|
-
useEffect(function () {
|
|
560
|
-
setInitialRenderComplete(true);
|
|
561
|
-
}, []);
|
|
562
|
-
if (!initialRenderComplete)
|
|
563
|
-
return null;
|
|
564
|
-
};
|
|
565
|
-
|
|
566
|
-
const isString = obj => typeof obj === 'string';
|
|
567
|
-
const defer = () => {
|
|
568
|
-
let res;
|
|
569
|
-
let rej;
|
|
570
|
-
const promise = new Promise((resolve, reject) => {
|
|
571
|
-
res = resolve;
|
|
572
|
-
rej = reject;
|
|
573
|
-
});
|
|
574
|
-
promise.resolve = res;
|
|
575
|
-
promise.reject = rej;
|
|
576
|
-
return promise;
|
|
577
|
-
};
|
|
578
|
-
const makeString = object => {
|
|
579
|
-
if (object == null) return '';
|
|
580
|
-
return '' + object;
|
|
581
|
-
};
|
|
582
|
-
const copy = (a, s, t) => {
|
|
583
|
-
a.forEach(m => {
|
|
584
|
-
if (s[m]) t[m] = s[m];
|
|
585
|
-
});
|
|
586
|
-
};
|
|
587
|
-
const lastOfPathSeparatorRegExp = /###/g;
|
|
588
|
-
const cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;
|
|
589
|
-
const canNotTraverseDeeper = object => !object || isString(object);
|
|
590
|
-
const getLastOfPath = (object, path, Empty) => {
|
|
591
|
-
const stack = !isString(path) ? path : path.split('.');
|
|
592
|
-
let stackIndex = 0;
|
|
593
|
-
while (stackIndex < stack.length - 1) {
|
|
594
|
-
if (canNotTraverseDeeper(object)) return {};
|
|
595
|
-
const key = cleanKey(stack[stackIndex]);
|
|
596
|
-
if (!object[key] && Empty) object[key] = new Empty();
|
|
597
|
-
if (Object.prototype.hasOwnProperty.call(object, key)) {
|
|
598
|
-
object = object[key];
|
|
599
|
-
} else {
|
|
600
|
-
object = {};
|
|
601
|
-
}
|
|
602
|
-
++stackIndex;
|
|
603
|
-
}
|
|
604
|
-
if (canNotTraverseDeeper(object)) return {};
|
|
605
|
-
return {
|
|
606
|
-
obj: object,
|
|
607
|
-
k: cleanKey(stack[stackIndex])
|
|
608
|
-
};
|
|
609
|
-
};
|
|
610
|
-
const setPath = (object, path, newValue) => {
|
|
611
|
-
const {
|
|
612
|
-
obj,
|
|
613
|
-
k
|
|
614
|
-
} = getLastOfPath(object, path, Object);
|
|
615
|
-
if (obj !== undefined || path.length === 1) {
|
|
616
|
-
obj[k] = newValue;
|
|
617
|
-
return;
|
|
618
|
-
}
|
|
619
|
-
let e = path[path.length - 1];
|
|
620
|
-
let p = path.slice(0, path.length - 1);
|
|
621
|
-
let last = getLastOfPath(object, p, Object);
|
|
622
|
-
while (last.obj === undefined && p.length) {
|
|
623
|
-
e = `${p[p.length - 1]}.${e}`;
|
|
624
|
-
p = p.slice(0, p.length - 1);
|
|
625
|
-
last = getLastOfPath(object, p, Object);
|
|
626
|
-
if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {
|
|
627
|
-
last.obj = undefined;
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
last.obj[`${last.k}.${e}`] = newValue;
|
|
631
|
-
};
|
|
632
|
-
const pushPath = (object, path, newValue, concat) => {
|
|
633
|
-
const {
|
|
634
|
-
obj,
|
|
635
|
-
k
|
|
636
|
-
} = getLastOfPath(object, path, Object);
|
|
637
|
-
obj[k] = obj[k] || [];
|
|
638
|
-
obj[k].push(newValue);
|
|
639
|
-
};
|
|
640
|
-
const getPath = (object, path) => {
|
|
293
|
+
obj,
|
|
294
|
+
k
|
|
295
|
+
} = getLastOfPath(object, path, Object);
|
|
296
|
+
obj[k] = obj[k] || [];
|
|
297
|
+
obj[k].push(newValue);
|
|
298
|
+
};
|
|
299
|
+
const getPath = (object, path) => {
|
|
641
300
|
const {
|
|
642
301
|
obj,
|
|
643
302
|
k
|
|
@@ -2793,22 +2452,281 @@ instance.hasLoadedNamespace;
|
|
|
2793
2452
|
instance.loadNamespaces;
|
|
2794
2453
|
instance.loadLanguages;
|
|
2795
2454
|
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
}
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
}
|
|
2810
|
-
|
|
2811
|
-
|
|
2455
|
+
function warn() {
|
|
2456
|
+
if (console && console.warn) {
|
|
2457
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
2458
|
+
args[_key] = arguments[_key];
|
|
2459
|
+
}
|
|
2460
|
+
if (typeof args[0] === 'string') args[0] = `react-i18next:: ${args[0]}`;
|
|
2461
|
+
console.warn(...args);
|
|
2462
|
+
}
|
|
2463
|
+
}
|
|
2464
|
+
const alreadyWarned = {};
|
|
2465
|
+
function warnOnce() {
|
|
2466
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
2467
|
+
args[_key2] = arguments[_key2];
|
|
2468
|
+
}
|
|
2469
|
+
if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;
|
|
2470
|
+
if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();
|
|
2471
|
+
warn(...args);
|
|
2472
|
+
}
|
|
2473
|
+
const loadedClb = (i18n, cb) => () => {
|
|
2474
|
+
if (i18n.isInitialized) {
|
|
2475
|
+
cb();
|
|
2476
|
+
} else {
|
|
2477
|
+
const initialized = () => {
|
|
2478
|
+
setTimeout(() => {
|
|
2479
|
+
i18n.off('initialized', initialized);
|
|
2480
|
+
}, 0);
|
|
2481
|
+
cb();
|
|
2482
|
+
};
|
|
2483
|
+
i18n.on('initialized', initialized);
|
|
2484
|
+
}
|
|
2485
|
+
};
|
|
2486
|
+
function loadNamespaces(i18n, ns, cb) {
|
|
2487
|
+
i18n.loadNamespaces(ns, loadedClb(i18n, cb));
|
|
2488
|
+
}
|
|
2489
|
+
function loadLanguages(i18n, lng, ns, cb) {
|
|
2490
|
+
if (typeof ns === 'string') ns = [ns];
|
|
2491
|
+
ns.forEach(n => {
|
|
2492
|
+
if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);
|
|
2493
|
+
});
|
|
2494
|
+
i18n.loadLanguages(lng, loadedClb(i18n, cb));
|
|
2495
|
+
}
|
|
2496
|
+
function oldI18nextHasLoadedNamespace(ns, i18n) {
|
|
2497
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
2498
|
+
const lng = i18n.languages[0];
|
|
2499
|
+
const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;
|
|
2500
|
+
const lastLng = i18n.languages[i18n.languages.length - 1];
|
|
2501
|
+
if (lng.toLowerCase() === 'cimode') return true;
|
|
2502
|
+
const loadNotPending = (l, n) => {
|
|
2503
|
+
const loadState = i18n.services.backendConnector.state[`${l}|${n}`];
|
|
2504
|
+
return loadState === -1 || loadState === 2;
|
|
2505
|
+
};
|
|
2506
|
+
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;
|
|
2507
|
+
if (i18n.hasResourceBundle(lng, ns)) return true;
|
|
2508
|
+
if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;
|
|
2509
|
+
if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
|
|
2510
|
+
return false;
|
|
2511
|
+
}
|
|
2512
|
+
function hasLoadedNamespace(ns, i18n) {
|
|
2513
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
2514
|
+
if (!i18n.languages || !i18n.languages.length) {
|
|
2515
|
+
warnOnce('i18n.languages were undefined or empty', i18n.languages);
|
|
2516
|
+
return true;
|
|
2517
|
+
}
|
|
2518
|
+
const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;
|
|
2519
|
+
if (!isNewerI18next) {
|
|
2520
|
+
return oldI18nextHasLoadedNamespace(ns, i18n, options);
|
|
2521
|
+
}
|
|
2522
|
+
return i18n.hasLoadedNamespace(ns, {
|
|
2523
|
+
lng: options.lng,
|
|
2524
|
+
precheck: (i18nInstance, loadNotPending) => {
|
|
2525
|
+
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;
|
|
2526
|
+
}
|
|
2527
|
+
});
|
|
2528
|
+
}
|
|
2529
|
+
|
|
2530
|
+
const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;
|
|
2531
|
+
const htmlEntities = {
|
|
2532
|
+
'&': '&',
|
|
2533
|
+
'&': '&',
|
|
2534
|
+
'<': '<',
|
|
2535
|
+
'<': '<',
|
|
2536
|
+
'>': '>',
|
|
2537
|
+
'>': '>',
|
|
2538
|
+
''': "'",
|
|
2539
|
+
''': "'",
|
|
2540
|
+
'"': '"',
|
|
2541
|
+
'"': '"',
|
|
2542
|
+
' ': ' ',
|
|
2543
|
+
' ': ' ',
|
|
2544
|
+
'©': '©',
|
|
2545
|
+
'©': '©',
|
|
2546
|
+
'®': '®',
|
|
2547
|
+
'®': '®',
|
|
2548
|
+
'…': '…',
|
|
2549
|
+
'…': '…',
|
|
2550
|
+
'/': '/',
|
|
2551
|
+
'/': '/'
|
|
2552
|
+
};
|
|
2553
|
+
const unescapeHtmlEntity = m => htmlEntities[m];
|
|
2554
|
+
const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);
|
|
2555
|
+
|
|
2556
|
+
let defaultOptions$1 = {
|
|
2557
|
+
bindI18n: 'languageChanged',
|
|
2558
|
+
bindI18nStore: '',
|
|
2559
|
+
transEmptyNodeValue: '',
|
|
2560
|
+
transSupportBasicHtmlNodes: true,
|
|
2561
|
+
transWrapTextNodes: '',
|
|
2562
|
+
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],
|
|
2563
|
+
useSuspense: true,
|
|
2564
|
+
unescape
|
|
2565
|
+
};
|
|
2566
|
+
function setDefaults() {
|
|
2567
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
2568
|
+
defaultOptions$1 = {
|
|
2569
|
+
...defaultOptions$1,
|
|
2570
|
+
...options
|
|
2571
|
+
};
|
|
2572
|
+
}
|
|
2573
|
+
function getDefaults() {
|
|
2574
|
+
return defaultOptions$1;
|
|
2575
|
+
}
|
|
2576
|
+
|
|
2577
|
+
let i18nInstance;
|
|
2578
|
+
function setI18n(instance) {
|
|
2579
|
+
i18nInstance = instance;
|
|
2580
|
+
}
|
|
2581
|
+
function getI18n() {
|
|
2582
|
+
return i18nInstance;
|
|
2583
|
+
}
|
|
2584
|
+
|
|
2585
|
+
const initReactI18next = {
|
|
2586
|
+
type: '3rdParty',
|
|
2587
|
+
init(instance) {
|
|
2588
|
+
setDefaults(instance.options.react);
|
|
2589
|
+
setI18n(instance);
|
|
2590
|
+
}
|
|
2591
|
+
};
|
|
2592
|
+
|
|
2593
|
+
const I18nContext = createContext();
|
|
2594
|
+
class ReportNamespaces {
|
|
2595
|
+
constructor() {
|
|
2596
|
+
this.usedNamespaces = {};
|
|
2597
|
+
}
|
|
2598
|
+
addUsedNamespaces(namespaces) {
|
|
2599
|
+
namespaces.forEach(ns => {
|
|
2600
|
+
if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;
|
|
2601
|
+
});
|
|
2602
|
+
}
|
|
2603
|
+
getUsedNamespaces() {
|
|
2604
|
+
return Object.keys(this.usedNamespaces);
|
|
2605
|
+
}
|
|
2606
|
+
}
|
|
2607
|
+
|
|
2608
|
+
const usePrevious = (value, ignore) => {
|
|
2609
|
+
const ref = useRef();
|
|
2610
|
+
useEffect(() => {
|
|
2611
|
+
ref.current = ignore ? ref.current : value;
|
|
2612
|
+
}, [value, ignore]);
|
|
2613
|
+
return ref.current;
|
|
2614
|
+
};
|
|
2615
|
+
function useTranslation(ns) {
|
|
2616
|
+
let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2617
|
+
const {
|
|
2618
|
+
i18n: i18nFromProps
|
|
2619
|
+
} = props;
|
|
2620
|
+
const {
|
|
2621
|
+
i18n: i18nFromContext,
|
|
2622
|
+
defaultNS: defaultNSFromContext
|
|
2623
|
+
} = useContext(I18nContext) || {};
|
|
2624
|
+
const i18n = i18nFromProps || i18nFromContext || getI18n();
|
|
2625
|
+
if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
|
|
2626
|
+
if (!i18n) {
|
|
2627
|
+
warnOnce('You will need to pass in an i18next instance by using initReactI18next');
|
|
2628
|
+
const notReadyT = (k, optsOrDefaultValue) => {
|
|
2629
|
+
if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;
|
|
2630
|
+
if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;
|
|
2631
|
+
return Array.isArray(k) ? k[k.length - 1] : k;
|
|
2632
|
+
};
|
|
2633
|
+
const retNotReady = [notReadyT, {}, false];
|
|
2634
|
+
retNotReady.t = notReadyT;
|
|
2635
|
+
retNotReady.i18n = {};
|
|
2636
|
+
retNotReady.ready = false;
|
|
2637
|
+
return retNotReady;
|
|
2638
|
+
}
|
|
2639
|
+
if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');
|
|
2640
|
+
const i18nOptions = {
|
|
2641
|
+
...getDefaults(),
|
|
2642
|
+
...i18n.options.react,
|
|
2643
|
+
...props
|
|
2644
|
+
};
|
|
2645
|
+
const {
|
|
2646
|
+
useSuspense,
|
|
2647
|
+
keyPrefix
|
|
2648
|
+
} = i18nOptions;
|
|
2649
|
+
let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
|
|
2650
|
+
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];
|
|
2651
|
+
if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);
|
|
2652
|
+
const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));
|
|
2653
|
+
function getT() {
|
|
2654
|
+
return i18n.getFixedT(props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);
|
|
2655
|
+
}
|
|
2656
|
+
const [t, setT] = useState(getT);
|
|
2657
|
+
let joinedNS = namespaces.join();
|
|
2658
|
+
if (props.lng) joinedNS = `${props.lng}${joinedNS}`;
|
|
2659
|
+
const previousJoinedNS = usePrevious(joinedNS);
|
|
2660
|
+
const isMounted = useRef(true);
|
|
2661
|
+
useEffect(() => {
|
|
2662
|
+
const {
|
|
2663
|
+
bindI18n,
|
|
2664
|
+
bindI18nStore
|
|
2665
|
+
} = i18nOptions;
|
|
2666
|
+
isMounted.current = true;
|
|
2667
|
+
if (!ready && !useSuspense) {
|
|
2668
|
+
if (props.lng) {
|
|
2669
|
+
loadLanguages(i18n, props.lng, namespaces, () => {
|
|
2670
|
+
if (isMounted.current) setT(getT);
|
|
2671
|
+
});
|
|
2672
|
+
} else {
|
|
2673
|
+
loadNamespaces(i18n, namespaces, () => {
|
|
2674
|
+
if (isMounted.current) setT(getT);
|
|
2675
|
+
});
|
|
2676
|
+
}
|
|
2677
|
+
}
|
|
2678
|
+
if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
|
|
2679
|
+
setT(getT);
|
|
2680
|
+
}
|
|
2681
|
+
function boundReset() {
|
|
2682
|
+
if (isMounted.current) setT(getT);
|
|
2683
|
+
}
|
|
2684
|
+
if (bindI18n && i18n) i18n.on(bindI18n, boundReset);
|
|
2685
|
+
if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);
|
|
2686
|
+
return () => {
|
|
2687
|
+
isMounted.current = false;
|
|
2688
|
+
if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));
|
|
2689
|
+
if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));
|
|
2690
|
+
};
|
|
2691
|
+
}, [i18n, joinedNS]);
|
|
2692
|
+
const isInitial = useRef(true);
|
|
2693
|
+
useEffect(() => {
|
|
2694
|
+
if (isMounted.current && !isInitial.current) {
|
|
2695
|
+
setT(getT);
|
|
2696
|
+
}
|
|
2697
|
+
isInitial.current = false;
|
|
2698
|
+
}, [i18n, keyPrefix]);
|
|
2699
|
+
const ret = [t, i18n, ready];
|
|
2700
|
+
ret.t = t;
|
|
2701
|
+
ret.i18n = i18n;
|
|
2702
|
+
ret.ready = ready;
|
|
2703
|
+
if (ready) return ret;
|
|
2704
|
+
if (!ready && !useSuspense) return ret;
|
|
2705
|
+
throw new Promise(resolve => {
|
|
2706
|
+
if (props.lng) {
|
|
2707
|
+
loadLanguages(i18n, props.lng, namespaces, () => resolve());
|
|
2708
|
+
} else {
|
|
2709
|
+
loadNamespaces(i18n, namespaces, () => resolve());
|
|
2710
|
+
}
|
|
2711
|
+
});
|
|
2712
|
+
}
|
|
2713
|
+
|
|
2714
|
+
var locations$1 = {
|
|
2715
|
+
label: "Location",
|
|
2716
|
+
title: "Select location",
|
|
2717
|
+
placeholder: "Add location",
|
|
2718
|
+
selected: "locations"
|
|
2719
|
+
};
|
|
2720
|
+
var calendar$1 = {
|
|
2721
|
+
label: "Dates",
|
|
2722
|
+
roomsLabelPlaceholder: "Add check-in and check-out",
|
|
2723
|
+
eventsLabelPlaceholder: "Add search dates",
|
|
2724
|
+
startDate: "Start date",
|
|
2725
|
+
endDate: "End date",
|
|
2726
|
+
title: "Calendar"
|
|
2727
|
+
};
|
|
2728
|
+
var guests$1 = {
|
|
2729
|
+
label: "Number of guests",
|
|
2812
2730
|
labelPlaceholder: "Add guests",
|
|
2813
2731
|
title: "Who's coming?",
|
|
2814
2732
|
adultsLabel: "Adults",
|
|
@@ -2999,25 +2917,134 @@ var useAutoFocus = function (autoFocus) {
|
|
|
2999
2917
|
return ref;
|
|
3000
2918
|
};
|
|
3001
2919
|
|
|
3002
|
-
var css_248z$
|
|
3003
|
-
styleInject(css_248z$
|
|
2920
|
+
var css_248z$j = ".will-filter-bar-select-button {\n width: 100%;\n height: auto;\n background-color: transparent;\n border: none;\n padding: 0 20px;\n border-radius: 20px;\n cursor: pointer;\n font-size: 14px;\n text-align: initial;\n user-select: none;\n}\n\n.will-filter-bar-select-button.disabled {\n cursor: not-allowed;\n}\n\n.will-filter-bar-select-button .select-button-wrapper {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n}\n\n.will-filter-bar-select-button .select-button-wrapper > div {\n display: grid;\n}\n\n.will-filter-bar-select-button .select-button-label {\n color: var(--will-black);\n font-weight: 600;\n}\n\n.will-filter-bar-select-button .select-button-description {\n color: var(--will-black);\n font-weight: 400;\n opacity: 0.5;\n white-space: nowrap;\n min-height: 19px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.will-filter-bar-select-button .select-button-description span {\n font: inherit;\n}\n\n.will-filter-bar-select-button .select-button-label.active,\n.will-filter-bar-select-button .select-button-description.active {\n font-weight: 700;\n font-size: 15px;\n opacity: 1;\n}\n\n@media (max-width: 960px) {\n .will-filter-bar-select-button {\n padding: 15px 0;\n }\n\n .will-filter-bar-select-button:first-child {\n padding: 0 0 15px 0;\n }\n\n .will-filter-bar-select-button .select-button-wrapper {\n justify-content: center;\n text-align: center;\n }\n\n .will-filter-bar-select-button .select-button-description {\n white-space: wrap;\n }\n\n .will-filter-bar-select-button .select-button-divider {\n display: none;\n }\n}\n";
|
|
2921
|
+
styleInject(css_248z$j);
|
|
3004
2922
|
|
|
3005
|
-
var
|
|
3006
|
-
var
|
|
3007
|
-
return (
|
|
2923
|
+
var SelectButton = forwardRef(function (_a, ref) {
|
|
2924
|
+
var active = _a.active, label = _a.label, onClick = _a.onClick, description = _a.description, disabled = _a.disabled, ariaExpanded = _a.ariaExpanded, ariaControls = _a.ariaControls;
|
|
2925
|
+
return (React__default.createElement("button", { ref: ref, className: "will-filter-bar-select-button ".concat(disabled ? 'disabled' : ''), onClick: function (e) { return (disabled ? undefined : onClick(e)); }, disabled: disabled, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, "aria-haspopup": "true", "aria-disabled": disabled },
|
|
2926
|
+
React__default.createElement("span", { className: "select-button-wrapper" },
|
|
2927
|
+
React__default.createElement("div", null,
|
|
2928
|
+
React__default.createElement("p", { className: "select-button-label" }, label),
|
|
2929
|
+
React__default.createElement("p", { className: "select-button-description ".concat(active ? 'active' : '') }, description)))));
|
|
2930
|
+
});
|
|
2931
|
+
SelectButton.displayName = 'SelectButton';
|
|
2932
|
+
|
|
2933
|
+
var css_248z$i = ".will-filter-bar-tab-button {\n width: auto;\n height: auto;\n padding: 10px 20px;\n cursor: pointer;\n border: none;\n white-space: nowrap;\n font-size: 16px;\n display: flex;\n align-items: center;\n background-color: transparent;\n user-select: none;\n font-weight: 600;\n border-radius: 50px;\n }\n\n .will-filter-bar-tab-button.light {\n color: var(--will-white)\n }\n\n .will-filter-bar-tab-button.dark {\n color: var(--will-black)\n }\n\n .will-filter-bar-tab-button.light.active,\n .will-filter-bar-tab-button:hover {\n background-color: var(--will-transparent-white);\n }\n\n .will-filter-bar-tab-button.dark.active,\n .will-filter-bar-tab-button:hover {\n background-color: var(--will-transparent-lavender);\n }\n\n \n\n";
|
|
2934
|
+
styleInject(css_248z$i);
|
|
2935
|
+
|
|
2936
|
+
var TabButton = function (_a) {
|
|
2937
|
+
var onClick = _a.onClick, label = _a.label, active = _a.active, mode = _a.mode;
|
|
2938
|
+
return (React__default.createElement("button", { className: "will-filter-bar-tab-button ".concat(mode || 'light', " ").concat(active && 'active', " "), onClick: onClick }, label));
|
|
3008
2939
|
};
|
|
3009
2940
|
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M331.3 308.7L278.6 256l52.7-52.7c6.2-6.2 6.2-16.4 0-22.6-6.2-6.2-16.4-6.2-22.6 0L256 233.4l-52.7-52.7c-6.2-6.2-15.6-7.1-22.6 0-7.1 7.1-6 16.6 0 22.6l52.7 52.7-52.7 52.7c-6.7 6.7-6.4 16.3 0 22.6 6.4 6.4 16.4 6.2 22.6 0l52.7-52.7 52.7 52.7c6.2 6.2 16.4 6.2 22.6 0 6.3-6.2 6.3-16.4 0-22.6z"}},{"tag":"path","attr":{"d":"M256 76c48.1 0 93.3 18.7 127.3 52.7S436 207.9 436 256s-18.7 93.3-52.7 127.3S304.1 436 256 436c-48.1 0-93.3-18.7-127.3-52.7S76 304.1 76 256s18.7-93.3 52.7-127.3S207.9 76 256 76m0-28C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48z"}}]})(props);
|
|
3013
|
-
}
|
|
2941
|
+
var css_248z$h = ".will-filter-bar-divider {\n width: 1px;\n margin: 0 10px;\n background-color: var(--will-charcoal-blue);\n}\n\n@media (max-width: 960px) {\n .will-filter-bar-divider {\n width: auto;\n margin: 0 10px;\n height: 1px;\n background-color: var(--will-charcoal-blue);\n }\n}";
|
|
2942
|
+
styleInject(css_248z$h);
|
|
3014
2943
|
|
|
3015
|
-
var
|
|
3016
|
-
|
|
2944
|
+
var Divider = function () {
|
|
2945
|
+
return React__default.createElement("div", { className: "will-filter-bar-divider" });
|
|
2946
|
+
};
|
|
3017
2947
|
|
|
3018
|
-
var
|
|
3019
|
-
|
|
3020
|
-
|
|
2948
|
+
var FilterSections;
|
|
2949
|
+
(function (FilterSections) {
|
|
2950
|
+
FilterSections["CALENDAR"] = "calendar";
|
|
2951
|
+
FilterSections["GUESTS"] = "guests";
|
|
2952
|
+
FilterSections["CATEGORIES"] = "categories";
|
|
2953
|
+
FilterSections["LOCATIONS"] = "locations";
|
|
2954
|
+
})(FilterSections || (FilterSections = {}));
|
|
2955
|
+
var Pages;
|
|
2956
|
+
(function (Pages) {
|
|
2957
|
+
Pages["ROOMS"] = "/rooms";
|
|
2958
|
+
Pages["EVENTS"] = "/events";
|
|
2959
|
+
Pages["SALES"] = "/sales";
|
|
2960
|
+
})(Pages || (Pages = {}));
|
|
2961
|
+
|
|
2962
|
+
var useScrollInToView = function (_a) {
|
|
2963
|
+
var selectedFilter = _a.selectedFilter;
|
|
2964
|
+
var _b = __read(useState(true), 2), isMobile = _b[0], setIsMobile = _b[1];
|
|
2965
|
+
var targetFilterBarRef = useRef(null);
|
|
2966
|
+
useEffect(function () {
|
|
2967
|
+
if (typeof window !== 'undefined' && window.innerWidth > 960) {
|
|
2968
|
+
setIsMobile(false);
|
|
2969
|
+
return;
|
|
2970
|
+
}
|
|
2971
|
+
if (targetFilterBarRef.current && selectedFilter) {
|
|
2972
|
+
window.scrollTo({
|
|
2973
|
+
behavior: 'smooth',
|
|
2974
|
+
top: targetFilterBarRef.current.getBoundingClientRect().top -
|
|
2975
|
+
document.body.getBoundingClientRect().top -
|
|
2976
|
+
30,
|
|
2977
|
+
});
|
|
2978
|
+
}
|
|
2979
|
+
}, [selectedFilter]);
|
|
2980
|
+
return { isMobile: isMobile, targetFilterBarRef: targetFilterBarRef };
|
|
2981
|
+
};
|
|
2982
|
+
|
|
2983
|
+
var useFilterState = function (_a) {
|
|
2984
|
+
var locations = _a.locations;
|
|
2985
|
+
var _b = __read(useState(Pages.EVENTS), 2), selectedPath = _b[0], setSelectedPath = _b[1];
|
|
2986
|
+
var _c = __read(useState(false), 2), selectedFilter = _c[0], setSelectedFilter = _c[1];
|
|
2987
|
+
var _d = __read(useState(), 2), calendarRange = _d[0], setCalendarRange = _d[1];
|
|
2988
|
+
var _e = __read(useState(false), 2), innerLoading = _e[0], setInnerLoading = _e[1];
|
|
2989
|
+
var _f = __read(useState(0), 2), categories = _f[0], setCategories = _f[1];
|
|
2990
|
+
var _g = __read(useState({}), 2), ageCategoryCounts = _g[0], setAgeCategoryCounts = _g[1];
|
|
2991
|
+
var _h = __read(useState([]), 2), selectedLocations = _h[0], setSelectedLocations = _h[1];
|
|
2992
|
+
useEffect(function () {
|
|
2993
|
+
var _a;
|
|
2994
|
+
if (typeof window === 'undefined')
|
|
2995
|
+
return;
|
|
2996
|
+
var urlSearchParams = new URLSearchParams(window.location.search);
|
|
2997
|
+
var startDateParam = urlSearchParams.get('startDate');
|
|
2998
|
+
var endDateParam = urlSearchParams.get('endDate');
|
|
2999
|
+
var locationIdParams = urlSearchParams.getAll('locationId');
|
|
3000
|
+
var ageCategoryCountsParam = {};
|
|
3001
|
+
var ageCategoryCountsQuery = urlSearchParams.get('ageCategoryCounts');
|
|
3002
|
+
if (ageCategoryCountsQuery) {
|
|
3003
|
+
try {
|
|
3004
|
+
ageCategoryCountsParam = JSON.parse(ageCategoryCountsQuery);
|
|
3005
|
+
}
|
|
3006
|
+
catch (error) {
|
|
3007
|
+
console.warn('Invalid ageCategoryCounts query param, ignoring', error);
|
|
3008
|
+
ageCategoryCountsParam = {};
|
|
3009
|
+
}
|
|
3010
|
+
}
|
|
3011
|
+
var categoriesParam = urlSearchParams.get('categories');
|
|
3012
|
+
var parsedCategories = 0;
|
|
3013
|
+
if (categoriesParam) {
|
|
3014
|
+
var parsed = parseInt(categoriesParam, 10);
|
|
3015
|
+
parsedCategories = Number.isNaN(parsed) ? 0 : parsed;
|
|
3016
|
+
}
|
|
3017
|
+
if (startDateParam && endDateParam) {
|
|
3018
|
+
setCalendarRange({
|
|
3019
|
+
from: new Date(startDateParam),
|
|
3020
|
+
to: new Date(endDateParam),
|
|
3021
|
+
});
|
|
3022
|
+
}
|
|
3023
|
+
setAgeCategoryCounts(ageCategoryCountsParam);
|
|
3024
|
+
setCategories(parsedCategories);
|
|
3025
|
+
if (((_a = locations === null || locations === void 0 ? void 0 : locations.data) === null || _a === void 0 ? void 0 : _a.length) && locationIdParams.length) {
|
|
3026
|
+
var matchedLocations = locations.data.filter(function (location) {
|
|
3027
|
+
return locationIdParams.includes(location.id.toString());
|
|
3028
|
+
});
|
|
3029
|
+
setSelectedLocations(matchedLocations);
|
|
3030
|
+
}
|
|
3031
|
+
}, [locations]);
|
|
3032
|
+
return {
|
|
3033
|
+
selectedPath: selectedPath,
|
|
3034
|
+
selectedFilter: selectedFilter,
|
|
3035
|
+
calendarRange: calendarRange,
|
|
3036
|
+
innerLoading: innerLoading,
|
|
3037
|
+
categories: categories,
|
|
3038
|
+
ageCategoryCounts: ageCategoryCounts,
|
|
3039
|
+
selectedLocations: selectedLocations,
|
|
3040
|
+
setSelectedLocations: setSelectedLocations,
|
|
3041
|
+
setCalendarRange: setCalendarRange,
|
|
3042
|
+
setAgeCategoryCounts: setAgeCategoryCounts,
|
|
3043
|
+
setCategories: setCategories,
|
|
3044
|
+
setSelectedPath: setSelectedPath,
|
|
3045
|
+
setSelectedFilter: setSelectedFilter,
|
|
3046
|
+
setInnerLoading: setInnerLoading,
|
|
3047
|
+
};
|
|
3021
3048
|
};
|
|
3022
3049
|
|
|
3023
3050
|
function _typeof(o) {
|
|
@@ -6538,100 +6565,454 @@ function isSameMonth(dirtyDateLeft, dirtyDateRight) {
|
|
|
6538
6565
|
*/
|
|
6539
6566
|
function isSameYear(dirtyDateLeft, dirtyDateRight) {
|
|
6540
6567
|
requiredArgs(2, arguments);
|
|
6541
|
-
var dateLeft = toDate(dirtyDateLeft);
|
|
6542
|
-
var dateRight = toDate(dirtyDateRight);
|
|
6543
|
-
return dateLeft.getFullYear() === dateRight.getFullYear();
|
|
6568
|
+
var dateLeft = toDate(dirtyDateLeft);
|
|
6569
|
+
var dateRight = toDate(dirtyDateRight);
|
|
6570
|
+
return dateLeft.getFullYear() === dateRight.getFullYear();
|
|
6571
|
+
}
|
|
6572
|
+
|
|
6573
|
+
/**
|
|
6574
|
+
* @name subDays
|
|
6575
|
+
* @category Day Helpers
|
|
6576
|
+
* @summary Subtract the specified number of days from the given date.
|
|
6577
|
+
*
|
|
6578
|
+
* @description
|
|
6579
|
+
* Subtract the specified number of days from the given date.
|
|
6580
|
+
*
|
|
6581
|
+
* @param {Date|Number} date - the date to be changed
|
|
6582
|
+
* @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
|
6583
|
+
* @returns {Date} the new date with the days subtracted
|
|
6584
|
+
* @throws {TypeError} 2 arguments required
|
|
6585
|
+
*
|
|
6586
|
+
* @example
|
|
6587
|
+
* // Subtract 10 days from 1 September 2014:
|
|
6588
|
+
* const result = subDays(new Date(2014, 8, 1), 10)
|
|
6589
|
+
* //=> Fri Aug 22 2014 00:00:00
|
|
6590
|
+
*/
|
|
6591
|
+
function subDays(dirtyDate, dirtyAmount) {
|
|
6592
|
+
requiredArgs(2, arguments);
|
|
6593
|
+
var amount = toInteger(dirtyAmount);
|
|
6594
|
+
return addDays(dirtyDate, -amount);
|
|
6595
|
+
}
|
|
6596
|
+
|
|
6597
|
+
/**
|
|
6598
|
+
* @name setMonth
|
|
6599
|
+
* @category Month Helpers
|
|
6600
|
+
* @summary Set the month to the given date.
|
|
6601
|
+
*
|
|
6602
|
+
* @description
|
|
6603
|
+
* Set the month to the given date.
|
|
6604
|
+
*
|
|
6605
|
+
* @param {Date|Number} date - the date to be changed
|
|
6606
|
+
* @param {Number} month - the month of the new date
|
|
6607
|
+
* @returns {Date} the new date with the month set
|
|
6608
|
+
* @throws {TypeError} 2 arguments required
|
|
6609
|
+
*
|
|
6610
|
+
* @example
|
|
6611
|
+
* // Set February to 1 September 2014:
|
|
6612
|
+
* const result = setMonth(new Date(2014, 8, 1), 1)
|
|
6613
|
+
* //=> Sat Feb 01 2014 00:00:00
|
|
6614
|
+
*/
|
|
6615
|
+
function setMonth(dirtyDate, dirtyMonth) {
|
|
6616
|
+
requiredArgs(2, arguments);
|
|
6617
|
+
var date = toDate(dirtyDate);
|
|
6618
|
+
var month = toInteger(dirtyMonth);
|
|
6619
|
+
var year = date.getFullYear();
|
|
6620
|
+
var day = date.getDate();
|
|
6621
|
+
var dateWithDesiredMonth = new Date(0);
|
|
6622
|
+
dateWithDesiredMonth.setFullYear(year, month, 15);
|
|
6623
|
+
dateWithDesiredMonth.setHours(0, 0, 0, 0);
|
|
6624
|
+
var daysInMonth = getDaysInMonth(dateWithDesiredMonth);
|
|
6625
|
+
// Set the last day of the new month
|
|
6626
|
+
// if the original date was the last day of the longer month
|
|
6627
|
+
date.setMonth(month, Math.min(day, daysInMonth));
|
|
6628
|
+
return date;
|
|
6544
6629
|
}
|
|
6545
6630
|
|
|
6546
6631
|
/**
|
|
6547
|
-
* @name
|
|
6548
|
-
* @category
|
|
6549
|
-
* @summary
|
|
6632
|
+
* @name setYear
|
|
6633
|
+
* @category Year Helpers
|
|
6634
|
+
* @summary Set the year to the given date.
|
|
6550
6635
|
*
|
|
6551
6636
|
* @description
|
|
6552
|
-
*
|
|
6637
|
+
* Set the year to the given date.
|
|
6553
6638
|
*
|
|
6554
6639
|
* @param {Date|Number} date - the date to be changed
|
|
6555
|
-
* @param {Number}
|
|
6556
|
-
* @returns {Date} the new date with the
|
|
6640
|
+
* @param {Number} year - the year of the new date
|
|
6641
|
+
* @returns {Date} the new date with the year set
|
|
6557
6642
|
* @throws {TypeError} 2 arguments required
|
|
6558
6643
|
*
|
|
6559
6644
|
* @example
|
|
6560
|
-
* //
|
|
6561
|
-
* const result =
|
|
6562
|
-
* //=>
|
|
6645
|
+
* // Set year 2013 to 1 September 2014:
|
|
6646
|
+
* const result = setYear(new Date(2014, 8, 1), 2013)
|
|
6647
|
+
* //=> Sun Sep 01 2013 00:00:00
|
|
6563
6648
|
*/
|
|
6564
|
-
function
|
|
6649
|
+
function setYear(dirtyDate, dirtyYear) {
|
|
6565
6650
|
requiredArgs(2, arguments);
|
|
6566
|
-
var
|
|
6567
|
-
|
|
6651
|
+
var date = toDate(dirtyDate);
|
|
6652
|
+
var year = toInteger(dirtyYear);
|
|
6653
|
+
|
|
6654
|
+
// Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date
|
|
6655
|
+
if (isNaN(date.getTime())) {
|
|
6656
|
+
return new Date(NaN);
|
|
6657
|
+
}
|
|
6658
|
+
date.setFullYear(year);
|
|
6659
|
+
return date;
|
|
6660
|
+
}
|
|
6661
|
+
|
|
6662
|
+
var parseGuests = function (_a) {
|
|
6663
|
+
var guestLabel = _a.guestLabel, guestsLabel = _a.guestsLabel, guestsPlaceholder = _a.guestsPlaceholder, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
|
|
6664
|
+
var parsedData = Object.entries(ageCategoryCounts).reduce(function (acc, _a) {
|
|
6665
|
+
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
6666
|
+
var parts = key.split('-');
|
|
6667
|
+
if (parts.length < 2)
|
|
6668
|
+
return acc;
|
|
6669
|
+
var ageCategoryId = parts[1];
|
|
6670
|
+
var ageCategory = ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.find(function (c) { return c.id === ageCategoryId; });
|
|
6671
|
+
if (ageCategory && value) {
|
|
6672
|
+
return {
|
|
6673
|
+
total: acc.total + value,
|
|
6674
|
+
html: __spreadArray$1(__spreadArray$1([], __read(acc.html), false), ["".concat(value)], false),
|
|
6675
|
+
};
|
|
6676
|
+
}
|
|
6677
|
+
return acc;
|
|
6678
|
+
}, { total: 0, html: [] });
|
|
6679
|
+
if (!parsedData.total) {
|
|
6680
|
+
return {
|
|
6681
|
+
content: guestsPlaceholder,
|
|
6682
|
+
data: parsedData,
|
|
6683
|
+
};
|
|
6684
|
+
}
|
|
6685
|
+
var breakdown = parsedData.html.length > 1 ? parsedData.html.join(' + ') : null;
|
|
6686
|
+
return {
|
|
6687
|
+
content: (React__default.createElement(React__default.Fragment, null,
|
|
6688
|
+
React__default.createElement("span", { className: "will-guest-count" }, parsedData.total),
|
|
6689
|
+
' ',
|
|
6690
|
+
parsedData.total > 1 ? guestsLabel : guestLabel,
|
|
6691
|
+
breakdown && React__default.createElement(React__default.Fragment, null,
|
|
6692
|
+
" \u00A0 ( ",
|
|
6693
|
+
breakdown,
|
|
6694
|
+
" )"))),
|
|
6695
|
+
data: parsedData,
|
|
6696
|
+
};
|
|
6697
|
+
};
|
|
6698
|
+
|
|
6699
|
+
var parseLocations = function (_a) {
|
|
6700
|
+
var selectedLocations = _a.selectedLocations, locationsPlaceholder = _a.locationsPlaceholder, _b = _a.locationsSelectedLabel, locationsSelectedLabel = _b === void 0 ? 'locations' : _b;
|
|
6701
|
+
if (!selectedLocations.length) {
|
|
6702
|
+
return locationsPlaceholder;
|
|
6703
|
+
}
|
|
6704
|
+
if (selectedLocations.length === 1) {
|
|
6705
|
+
var singleSelection = selectedLocations[0].label;
|
|
6706
|
+
if (!singleSelection) {
|
|
6707
|
+
return locationsPlaceholder;
|
|
6708
|
+
}
|
|
6709
|
+
return singleSelection;
|
|
6710
|
+
}
|
|
6711
|
+
return "".concat(selectedLocations.length, " ").concat(locationsSelectedLabel);
|
|
6712
|
+
};
|
|
6713
|
+
|
|
6714
|
+
var ageCategoryRules = function (_a) {
|
|
6715
|
+
var ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
|
|
6716
|
+
if (ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.length) {
|
|
6717
|
+
ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.map(function (a) {
|
|
6718
|
+
if (a.minVal) {
|
|
6719
|
+
var ageCategory = ageCategoryCounts["guests-".concat(a.id)];
|
|
6720
|
+
if (!ageCategory) {
|
|
6721
|
+
ageCategoryCounts["guests-".concat(a.id)] = a.minVal;
|
|
6722
|
+
}
|
|
6723
|
+
}
|
|
6724
|
+
});
|
|
6725
|
+
}
|
|
6726
|
+
return Object.entries(ageCategoryCounts).length
|
|
6727
|
+
? JSON.stringify(ageCategoryCounts)
|
|
6728
|
+
: '';
|
|
6729
|
+
};
|
|
6730
|
+
|
|
6731
|
+
var useFilterActions = function (_a) {
|
|
6732
|
+
var tabs = _a.tabs, calendarRange = _a.calendarRange, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories, selectedLocations = _a.selectedLocations, selectedPath = _a.selectedPath, redirectUrl = _a.redirectUrl, setSelectedPath = _a.setSelectedPath, setAgeCategoryCounts = _a.setAgeCategoryCounts, setSelectedFilter = _a.setSelectedFilter, setCalendarRange = _a.setCalendarRange, onSubmit = _a.onSubmit, setInnerLoading = _a.setInnerLoading;
|
|
6733
|
+
useEffect(function () {
|
|
6734
|
+
if (typeof window === 'undefined')
|
|
6735
|
+
return;
|
|
6736
|
+
var defaultTab = (tabs === null || tabs === void 0 ? void 0 : tabs.length) === 1 ? tabs[0] : tabs === null || tabs === void 0 ? void 0 : tabs.find(function (tab) { return tab.default; });
|
|
6737
|
+
var paths = [Pages.EVENTS, Pages.ROOMS, Pages.SALES];
|
|
6738
|
+
var currentPath = paths.find(function (path) { return window.location.pathname.includes(path); }) ||
|
|
6739
|
+
(defaultTab === null || defaultTab === void 0 ? void 0 : defaultTab.path) ||
|
|
6740
|
+
Pages.EVENTS;
|
|
6741
|
+
setSelectedPath(currentPath);
|
|
6742
|
+
}, [tabs]);
|
|
6743
|
+
var updateGuestsCount = function (id, newCount) {
|
|
6744
|
+
setAgeCategoryCounts(function (prev) {
|
|
6745
|
+
var _a;
|
|
6746
|
+
return (__assign$2(__assign$2({}, prev), (_a = {}, _a[id] = newCount, _a)));
|
|
6747
|
+
});
|
|
6748
|
+
};
|
|
6749
|
+
var handleSelectedFilter = function (id) {
|
|
6750
|
+
setSelectedFilter(id);
|
|
6751
|
+
};
|
|
6752
|
+
var handleSubmit = function () {
|
|
6753
|
+
var e_1, _a;
|
|
6754
|
+
if (typeof window === 'undefined')
|
|
6755
|
+
return;
|
|
6756
|
+
var newParams = {
|
|
6757
|
+
startDate: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
6758
|
+
? format(calendarRange.from, 'yyyy-MM-dd')
|
|
6759
|
+
: '',
|
|
6760
|
+
endDate: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? format(calendarRange.to, 'yyyy-MM-dd') : '',
|
|
6761
|
+
ageCategoryCounts: ageCategoryRules({
|
|
6762
|
+
ageCategoryCounts: ageCategoryCounts,
|
|
6763
|
+
ageCategories: ageCategories,
|
|
6764
|
+
}),
|
|
6765
|
+
selectedLocations: selectedLocations
|
|
6766
|
+
.map(function (l) { return l.id.toString(); })
|
|
6767
|
+
.join(','),
|
|
6768
|
+
};
|
|
6769
|
+
var querySearchParams = new URLSearchParams();
|
|
6770
|
+
try {
|
|
6771
|
+
for (var _b = __values(Object.entries(newParams)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
6772
|
+
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
6773
|
+
if (!value)
|
|
6774
|
+
continue;
|
|
6775
|
+
if (key === 'selectedLocations' && selectedLocations.length) {
|
|
6776
|
+
selectedLocations.forEach(function (location) {
|
|
6777
|
+
return querySearchParams.append('locationId', location.id.toString());
|
|
6778
|
+
});
|
|
6779
|
+
}
|
|
6780
|
+
else {
|
|
6781
|
+
querySearchParams.append(key, value.toString());
|
|
6782
|
+
}
|
|
6783
|
+
}
|
|
6784
|
+
}
|
|
6785
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
6786
|
+
finally {
|
|
6787
|
+
try {
|
|
6788
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
6789
|
+
}
|
|
6790
|
+
finally { if (e_1) throw e_1.error; }
|
|
6791
|
+
}
|
|
6792
|
+
setSelectedFilter(false);
|
|
6793
|
+
if (onSubmit && window.location.href.includes(selectedPath)) {
|
|
6794
|
+
onSubmit(newParams);
|
|
6795
|
+
return;
|
|
6796
|
+
}
|
|
6797
|
+
var paramString = querySearchParams.toString();
|
|
6798
|
+
var path = "".concat(redirectUrl).concat(selectedPath);
|
|
6799
|
+
setInnerLoading(true);
|
|
6800
|
+
window.location.href = paramString ? "".concat(path, "?").concat(paramString) : path;
|
|
6801
|
+
};
|
|
6802
|
+
var handleResetFilters = function () {
|
|
6803
|
+
setAgeCategoryCounts({});
|
|
6804
|
+
setCalendarRange(undefined);
|
|
6805
|
+
};
|
|
6806
|
+
return {
|
|
6807
|
+
updateGuestsCount: updateGuestsCount,
|
|
6808
|
+
handleSelectedFilter: handleSelectedFilter,
|
|
6809
|
+
handleSubmit: handleSubmit,
|
|
6810
|
+
handleResetFilters: handleResetFilters,
|
|
6811
|
+
};
|
|
6812
|
+
};
|
|
6813
|
+
|
|
6814
|
+
var useFilterUi = function (selectedFilter) {
|
|
6815
|
+
var buttonRefs = useRef({});
|
|
6816
|
+
var panelRef = useRef(null);
|
|
6817
|
+
var previouslyFocusedButtonRef = useRef(null);
|
|
6818
|
+
var _a = useScrollInToView({ selectedFilter: selectedFilter }), isMobile = _a.isMobile, targetFilterBarRef = _a.targetFilterBarRef;
|
|
6819
|
+
return {
|
|
6820
|
+
previouslyFocusedButtonRef: previouslyFocusedButtonRef,
|
|
6821
|
+
isMobile: isMobile,
|
|
6822
|
+
targetFilterBarRef: targetFilterBarRef,
|
|
6823
|
+
panelRef: panelRef,
|
|
6824
|
+
buttonRefs: buttonRefs,
|
|
6825
|
+
};
|
|
6826
|
+
};
|
|
6827
|
+
|
|
6828
|
+
var usePanelPosition = function (_a) {
|
|
6829
|
+
var selectedFilter = _a.selectedFilter, panelRef = _a.panelRef, targetFilterBarRef = _a.targetFilterBarRef, buttonRefs = _a.buttonRefs, isMobile = _a.isMobile;
|
|
6830
|
+
var _b = __read(useState({}), 2), localStyles = _b[0], setLocalStyles = _b[1];
|
|
6831
|
+
useEffect(function () {
|
|
6832
|
+
if (!selectedFilter || typeof selectedFilter !== 'string' || isMobile) {
|
|
6833
|
+
setLocalStyles({});
|
|
6834
|
+
return;
|
|
6835
|
+
}
|
|
6836
|
+
var timeoutId = null;
|
|
6837
|
+
var calculate = function () {
|
|
6838
|
+
var panel = panelRef.current;
|
|
6839
|
+
var container = targetFilterBarRef.current;
|
|
6840
|
+
var button = buttonRefs.current[selectedFilter];
|
|
6841
|
+
if (!panel || !container || !button)
|
|
6842
|
+
return;
|
|
6843
|
+
var panelRect = panel.getBoundingClientRect();
|
|
6844
|
+
if (panelRect.width === 0) {
|
|
6845
|
+
timeoutId = window.setTimeout(calculate, 10);
|
|
6846
|
+
return;
|
|
6847
|
+
}
|
|
6848
|
+
var containerRect = container.getBoundingClientRect();
|
|
6849
|
+
var buttonRect = button.getBoundingClientRect();
|
|
6850
|
+
var buttonLeft = buttonRect.left - containerRect.left;
|
|
6851
|
+
var left = Math.min(buttonLeft, Math.max(containerRect.width - panelRect.width, 0));
|
|
6852
|
+
setLocalStyles({ left: left });
|
|
6853
|
+
};
|
|
6854
|
+
calculate();
|
|
6855
|
+
return function () {
|
|
6856
|
+
if (timeoutId)
|
|
6857
|
+
clearTimeout(timeoutId);
|
|
6858
|
+
};
|
|
6859
|
+
}, [selectedFilter, panelRef, targetFilterBarRef, buttonRefs, isMobile]);
|
|
6860
|
+
return { localStyles: localStyles };
|
|
6861
|
+
};
|
|
6862
|
+
|
|
6863
|
+
var FilterBarContext = createContext(undefined);
|
|
6864
|
+
var FilterBarProvider = function (_a) {
|
|
6865
|
+
var children = _a.children, language = _a.language, ageCategories = _a.ageCategories, redirectUrl = _a.redirectUrl, palette = _a.palette, onSubmit = _a.onSubmit, fullWidth = _a.fullWidth, disableCalendarDates = _a.disableCalendarDates, mode = _a.mode, tabs = _a.tabs, outerLoading = _a.outerLoading, locations = _a.locations;
|
|
6866
|
+
var _b = useFilterState({ locations: locations }), selectedPath = _b.selectedPath, selectedFilter = _b.selectedFilter, calendarRange = _b.calendarRange, innerLoading = _b.innerLoading, categories = _b.categories, ageCategoryCounts = _b.ageCategoryCounts, selectedLocations = _b.selectedLocations, setSelectedLocations = _b.setSelectedLocations, setCalendarRange = _b.setCalendarRange, setAgeCategoryCounts = _b.setAgeCategoryCounts, setCategories = _b.setCategories, setSelectedPath = _b.setSelectedPath, setSelectedFilter = _b.setSelectedFilter, setInnerLoading = _b.setInnerLoading;
|
|
6867
|
+
var filterActions = useFilterActions({
|
|
6868
|
+
tabs: tabs,
|
|
6869
|
+
ageCategoryCounts: ageCategoryCounts,
|
|
6870
|
+
ageCategories: ageCategories,
|
|
6871
|
+
selectedLocations: selectedLocations,
|
|
6872
|
+
selectedPath: selectedPath,
|
|
6873
|
+
redirectUrl: redirectUrl,
|
|
6874
|
+
setSelectedPath: setSelectedPath,
|
|
6875
|
+
setAgeCategoryCounts: setAgeCategoryCounts,
|
|
6876
|
+
setSelectedFilter: setSelectedFilter,
|
|
6877
|
+
setCalendarRange: setCalendarRange,
|
|
6878
|
+
onSubmit: onSubmit,
|
|
6879
|
+
setInnerLoading: setInnerLoading,
|
|
6880
|
+
});
|
|
6881
|
+
var filterUi = useFilterUi(selectedFilter);
|
|
6882
|
+
var contextValue = useMemo(function () { return (__assign$2(__assign$2(__assign$2({ selectedFilter: selectedFilter, ageCategoryCounts: ageCategoryCounts, categories: categories, calendarRange: calendarRange, selectedPath: selectedPath, innerLoading: innerLoading, selectedLocations: selectedLocations, setSelectedLocations: setSelectedLocations, setCalendarRange: setCalendarRange, setSelectedFilter: setSelectedFilter, setAgeCategoryCounts: setAgeCategoryCounts, setCategories: setCategories, setSelectedPath: setSelectedPath }, filterActions), { language: language, ageCategories: ageCategories, redirectUrl: redirectUrl, palette: palette, onSubmit: onSubmit, fullWidth: fullWidth, disableCalendarDates: disableCalendarDates, mode: mode, tabs: tabs, outerLoading: outerLoading, locations: locations }), filterUi)); }, [
|
|
6883
|
+
selectedFilter,
|
|
6884
|
+
ageCategoryCounts,
|
|
6885
|
+
categories,
|
|
6886
|
+
calendarRange,
|
|
6887
|
+
selectedPath,
|
|
6888
|
+
innerLoading,
|
|
6889
|
+
selectedLocations,
|
|
6890
|
+
language,
|
|
6891
|
+
ageCategories,
|
|
6892
|
+
redirectUrl,
|
|
6893
|
+
palette,
|
|
6894
|
+
onSubmit,
|
|
6895
|
+
fullWidth,
|
|
6896
|
+
disableCalendarDates,
|
|
6897
|
+
mode,
|
|
6898
|
+
tabs,
|
|
6899
|
+
outerLoading,
|
|
6900
|
+
locations,
|
|
6901
|
+
filterUi.isMobile,
|
|
6902
|
+
filterUi.targetFilterBarRef,
|
|
6903
|
+
]);
|
|
6904
|
+
return (React__default.createElement(FilterBarContext.Provider, { value: contextValue }, children));
|
|
6905
|
+
};
|
|
6906
|
+
var useFilterBar = function () {
|
|
6907
|
+
var context = useContext(FilterBarContext);
|
|
6908
|
+
if (!context) {
|
|
6909
|
+
throw new Error('useFilterBar must be used within FilterBarProvider');
|
|
6910
|
+
}
|
|
6911
|
+
return context;
|
|
6912
|
+
};
|
|
6913
|
+
|
|
6914
|
+
var DefaultContext = {
|
|
6915
|
+
color: undefined,
|
|
6916
|
+
size: undefined,
|
|
6917
|
+
className: undefined,
|
|
6918
|
+
style: undefined,
|
|
6919
|
+
attr: undefined
|
|
6920
|
+
};
|
|
6921
|
+
var IconContext = React__default.createContext && React__default.createContext(DefaultContext);
|
|
6922
|
+
|
|
6923
|
+
var __assign$1 = undefined && undefined.__assign || function () {
|
|
6924
|
+
__assign$1 = Object.assign || function (t) {
|
|
6925
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6926
|
+
s = arguments[i];
|
|
6927
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
6928
|
+
}
|
|
6929
|
+
return t;
|
|
6930
|
+
};
|
|
6931
|
+
return __assign$1.apply(this, arguments);
|
|
6932
|
+
};
|
|
6933
|
+
var __rest$1 = undefined && undefined.__rest || function (s, e) {
|
|
6934
|
+
var t = {};
|
|
6935
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6936
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
6937
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
6938
|
+
}
|
|
6939
|
+
return t;
|
|
6940
|
+
};
|
|
6941
|
+
function Tree2Element(tree) {
|
|
6942
|
+
return tree && tree.map(function (node, i) {
|
|
6943
|
+
return React__default.createElement(node.tag, __assign$1({
|
|
6944
|
+
key: i
|
|
6945
|
+
}, node.attr), Tree2Element(node.child));
|
|
6946
|
+
});
|
|
6947
|
+
}
|
|
6948
|
+
function GenIcon(data) {
|
|
6949
|
+
// eslint-disable-next-line react/display-name
|
|
6950
|
+
return function (props) {
|
|
6951
|
+
return React__default.createElement(IconBase, __assign$1({
|
|
6952
|
+
attr: __assign$1({}, data.attr)
|
|
6953
|
+
}, props), Tree2Element(data.child));
|
|
6954
|
+
};
|
|
6955
|
+
}
|
|
6956
|
+
function IconBase(props) {
|
|
6957
|
+
var elem = function (conf) {
|
|
6958
|
+
var attr = props.attr,
|
|
6959
|
+
size = props.size,
|
|
6960
|
+
title = props.title,
|
|
6961
|
+
svgProps = __rest$1(props, ["attr", "size", "title"]);
|
|
6962
|
+
var computedSize = size || conf.size || "1em";
|
|
6963
|
+
var className;
|
|
6964
|
+
if (conf.className) className = conf.className;
|
|
6965
|
+
if (props.className) className = (className ? className + " " : "") + props.className;
|
|
6966
|
+
return React__default.createElement("svg", __assign$1({
|
|
6967
|
+
stroke: "currentColor",
|
|
6968
|
+
fill: "currentColor",
|
|
6969
|
+
strokeWidth: "0"
|
|
6970
|
+
}, conf.attr, attr, svgProps, {
|
|
6971
|
+
className: className,
|
|
6972
|
+
style: __assign$1(__assign$1({
|
|
6973
|
+
color: props.color || conf.color
|
|
6974
|
+
}, conf.style), props.style),
|
|
6975
|
+
height: computedSize,
|
|
6976
|
+
width: computedSize,
|
|
6977
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
6978
|
+
}), title && React__default.createElement("title", null, title), props.children);
|
|
6979
|
+
};
|
|
6980
|
+
return IconContext !== undefined ? React__default.createElement(IconContext.Consumer, null, function (conf) {
|
|
6981
|
+
return elem(conf);
|
|
6982
|
+
}) : elem(DefaultContext);
|
|
6568
6983
|
}
|
|
6569
6984
|
|
|
6570
|
-
|
|
6571
|
-
|
|
6572
|
-
|
|
6573
|
-
|
|
6574
|
-
|
|
6575
|
-
* @description
|
|
6576
|
-
* Set the month to the given date.
|
|
6577
|
-
*
|
|
6578
|
-
* @param {Date|Number} date - the date to be changed
|
|
6579
|
-
* @param {Number} month - the month of the new date
|
|
6580
|
-
* @returns {Date} the new date with the month set
|
|
6581
|
-
* @throws {TypeError} 2 arguments required
|
|
6582
|
-
*
|
|
6583
|
-
* @example
|
|
6584
|
-
* // Set February to 1 September 2014:
|
|
6585
|
-
* const result = setMonth(new Date(2014, 8, 1), 1)
|
|
6586
|
-
* //=> Sat Feb 01 2014 00:00:00
|
|
6587
|
-
*/
|
|
6588
|
-
function setMonth(dirtyDate, dirtyMonth) {
|
|
6589
|
-
requiredArgs(2, arguments);
|
|
6590
|
-
var date = toDate(dirtyDate);
|
|
6591
|
-
var month = toInteger(dirtyMonth);
|
|
6592
|
-
var year = date.getFullYear();
|
|
6593
|
-
var day = date.getDate();
|
|
6594
|
-
var dateWithDesiredMonth = new Date(0);
|
|
6595
|
-
dateWithDesiredMonth.setFullYear(year, month, 15);
|
|
6596
|
-
dateWithDesiredMonth.setHours(0, 0, 0, 0);
|
|
6597
|
-
var daysInMonth = getDaysInMonth(dateWithDesiredMonth);
|
|
6598
|
-
// Set the last day of the new month
|
|
6599
|
-
// if the original date was the last day of the longer month
|
|
6600
|
-
date.setMonth(month, Math.min(day, daysInMonth));
|
|
6601
|
-
return date;
|
|
6985
|
+
// THIS FILE IS AUTO GENERATED
|
|
6986
|
+
function FaSearch (props) {
|
|
6987
|
+
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"}}]})(props);
|
|
6988
|
+
}function FaSpinner (props) {
|
|
6989
|
+
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"}}]})(props);
|
|
6602
6990
|
}
|
|
6603
6991
|
|
|
6604
|
-
|
|
6605
|
-
|
|
6606
|
-
* @category Year Helpers
|
|
6607
|
-
* @summary Set the year to the given date.
|
|
6608
|
-
*
|
|
6609
|
-
* @description
|
|
6610
|
-
* Set the year to the given date.
|
|
6611
|
-
*
|
|
6612
|
-
* @param {Date|Number} date - the date to be changed
|
|
6613
|
-
* @param {Number} year - the year of the new date
|
|
6614
|
-
* @returns {Date} the new date with the year set
|
|
6615
|
-
* @throws {TypeError} 2 arguments required
|
|
6616
|
-
*
|
|
6617
|
-
* @example
|
|
6618
|
-
* // Set year 2013 to 1 September 2014:
|
|
6619
|
-
* const result = setYear(new Date(2014, 8, 1), 2013)
|
|
6620
|
-
* //=> Sun Sep 01 2013 00:00:00
|
|
6621
|
-
*/
|
|
6622
|
-
function setYear(dirtyDate, dirtyYear) {
|
|
6623
|
-
requiredArgs(2, arguments);
|
|
6624
|
-
var date = toDate(dirtyDate);
|
|
6625
|
-
var year = toInteger(dirtyYear);
|
|
6992
|
+
var css_248z$g = ".will-filter-bar-submit-button {\n width: auto;\n height: auto;\n padding: 10px 20px;\n border-radius: 20px;\n cursor: pointer;\n border: none;\n white-space: nowrap;\n text-transform: uppercase;\n font-size: 12px;\n display: flex;\n align-items: center;\n user-select: none;\n}\n\n/* Submit button variants */\n.will-filter-bar-submit-button.default {\n background-color: var(--will-primary);\n color: var(--will-white);\n}\n\n.will-filter-bar-submit-button.text {\n background-color: transparent;\n color: var(--will-black);\n text-decoration: underline;\n font-weight: 500;\n font-size: 15px;\n padding: 0 10px;\n}\n\n.will-filter-bar-submit-button span {\n margin-right: 10px;\n display: flex;\n}\n\nbutton.will-filter-bar-submit-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n@media (max-width: 960px) {\n .will-filter-bar-submit-button {\n justify-content: center;\n \n }\n}\n\n/* --- */\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n";
|
|
6993
|
+
styleInject(css_248z$g);
|
|
6626
6994
|
|
|
6627
|
-
|
|
6628
|
-
|
|
6629
|
-
return
|
|
6630
|
-
|
|
6631
|
-
|
|
6632
|
-
|
|
6995
|
+
var SubmitButton = function (_a) {
|
|
6996
|
+
var onClick = _a.onClick, startIcon = _a.startIcon, label = _a.label, disabled = _a.disabled, isLoading = _a.isLoading, variant = _a.variant;
|
|
6997
|
+
return (React__default.createElement("button", { className: "will-filter-bar-submit-button ".concat(variant || 'default'), onClick: onClick, disabled: disabled || isLoading },
|
|
6998
|
+
isLoading ? (React__default.createElement("span", null, React__default.createElement(FaSpinner, { style: { animation: 'spin 1s linear infinite' } }))) : (startIcon && React__default.createElement("span", null, startIcon)),
|
|
6999
|
+
label || 'Label'));
|
|
7000
|
+
};
|
|
7001
|
+
|
|
7002
|
+
// THIS FILE IS AUTO GENERATED
|
|
7003
|
+
function IoIosCloseCircleOutline (props) {
|
|
7004
|
+
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M331.3 308.7L278.6 256l52.7-52.7c6.2-6.2 6.2-16.4 0-22.6-6.2-6.2-16.4-6.2-22.6 0L256 233.4l-52.7-52.7c-6.2-6.2-15.6-7.1-22.6 0-7.1 7.1-6 16.6 0 22.6l52.7 52.7-52.7 52.7c-6.7 6.7-6.4 16.3 0 22.6 6.4 6.4 16.4 6.2 22.6 0l52.7-52.7 52.7 52.7c6.2 6.2 16.4 6.2 22.6 0 6.3-6.2 6.3-16.4 0-22.6z"}},{"tag":"path","attr":{"d":"M256 76c48.1 0 93.3 18.7 127.3 52.7S436 207.9 436 256s-18.7 93.3-52.7 127.3S304.1 436 256 436c-48.1 0-93.3-18.7-127.3-52.7S76 304.1 76 256s18.7-93.3 52.7-127.3S207.9 76 256 76m0-28C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48z"}}]})(props);
|
|
6633
7005
|
}
|
|
6634
7006
|
|
|
7007
|
+
var css_248z$f = ".will-filter-bar-close-button {\n width: auto;\n height: auto;\n /* background-color: var(--will-grey); */\n color: var(--will-grey);\n padding: 2px 7px;\n border-radius: 50%;\n cursor: pointer;\n border: none;\n display: flex;\n align-items: center;\n font-size: 23px;\n /* display: none; */\n\n position: absolute;\n top: 10px;\n right: 10px;\n\n min-height: 35px;\n}\n\n@media (max-width: 960px) {\n .will-filter-bar-close-button {\n top: 10px;\n right: 10px;\n\n border-radius: 25px;\n margin-left:0;\n \n display: flex;\n justify-content: center;\n }\n}\n";
|
|
7008
|
+
styleInject(css_248z$f);
|
|
7009
|
+
|
|
7010
|
+
var CloseButton = function (_a) {
|
|
7011
|
+
var handleClose = _a.handleClose;
|
|
7012
|
+
return (React__default.createElement("button", { className: "will-filter-bar-close-button", onClick: handleClose },
|
|
7013
|
+
React__default.createElement(IoIosCloseCircleOutline, null)));
|
|
7014
|
+
};
|
|
7015
|
+
|
|
6635
7016
|
function futureSeconds(text) {
|
|
6636
7017
|
return text.replace(/sekuntia?/, 'sekunnin');
|
|
6637
7018
|
}
|
|
@@ -7320,7 +7701,7 @@ function DayPickerProvider(props) {
|
|
|
7320
7701
|
onSelect = initialProps.onSelect;
|
|
7321
7702
|
}
|
|
7322
7703
|
var value = __assign(__assign(__assign({}, defaultContextValues), initialProps), { captionLayout: captionLayout, classNames: __assign(__assign({}, defaultContextValues.classNames), initialProps.classNames), components: __assign({}, initialProps.components), formatters: __assign(__assign({}, defaultContextValues.formatters), initialProps.formatters), fromDate: fromDate, labels: __assign(__assign({}, defaultContextValues.labels), initialProps.labels), mode: initialProps.mode || defaultContextValues.mode, modifiers: __assign(__assign({}, defaultContextValues.modifiers), initialProps.modifiers), modifiersClassNames: __assign(__assign({}, defaultContextValues.modifiersClassNames), initialProps.modifiersClassNames), onSelect: onSelect, styles: __assign(__assign({}, defaultContextValues.styles), initialProps.styles), toDate: toDate });
|
|
7323
|
-
return (
|
|
7704
|
+
return (React__default.createElement(DayPickerContext.Provider, { value: value }, props.children));
|
|
7324
7705
|
}
|
|
7325
7706
|
/**
|
|
7326
7707
|
* Hook to access the {@link DayPickerContextValue}.
|
|
@@ -7339,15 +7720,15 @@ function useDayPicker() {
|
|
|
7339
7720
|
/** Render the caption for the displayed month. This component is used when `captionLayout="buttons"`. */
|
|
7340
7721
|
function CaptionLabel(props) {
|
|
7341
7722
|
var _a = useDayPicker(), locale = _a.locale, classNames = _a.classNames, styles = _a.styles, formatCaption = _a.formatters.formatCaption;
|
|
7342
|
-
return (
|
|
7723
|
+
return (React__default.createElement("div", { className: classNames.caption_label, style: styles.caption_label, "aria-live": "polite", role: "presentation", id: props.id }, formatCaption(props.displayMonth, { locale: locale })));
|
|
7343
7724
|
}
|
|
7344
7725
|
|
|
7345
7726
|
/**
|
|
7346
7727
|
* Render the icon in the styled drop-down.
|
|
7347
7728
|
*/
|
|
7348
7729
|
function IconDropdown(props) {
|
|
7349
|
-
return (
|
|
7350
|
-
|
|
7730
|
+
return (React__default.createElement("svg", __assign({ width: "8px", height: "8px", viewBox: "0 0 120 120", "data-testid": "iconDropdown" }, props),
|
|
7731
|
+
React__default.createElement("path", { d: "M4.22182541,48.2218254 C8.44222828,44.0014225 15.2388494,43.9273804 19.5496459,47.9996989 L19.7781746,48.2218254 L60,88.443 L100.221825,48.2218254 C104.442228,44.0014225 111.238849,43.9273804 115.549646,47.9996989 L115.778175,48.2218254 C119.998577,52.4422283 120.07262,59.2388494 116.000301,63.5496459 L115.778175,63.7781746 L67.7781746,111.778175 C63.5577717,115.998577 56.7611506,116.07262 52.4503541,112.000301 L52.2218254,111.778175 L4.22182541,63.7781746 C-0.0739418023,59.4824074 -0.0739418023,52.5175926 4.22182541,48.2218254 Z", fill: "currentColor", fillRule: "nonzero" })));
|
|
7351
7732
|
}
|
|
7352
7733
|
|
|
7353
7734
|
/**
|
|
@@ -7359,12 +7740,12 @@ function Dropdown(props) {
|
|
|
7359
7740
|
var onChange = props.onChange, value = props.value, children = props.children, caption = props.caption, className = props.className, style = props.style;
|
|
7360
7741
|
var dayPicker = useDayPicker();
|
|
7361
7742
|
var IconDropdownComponent = (_b = (_a = dayPicker.components) === null || _a === void 0 ? void 0 : _a.IconDropdown) !== null && _b !== void 0 ? _b : IconDropdown;
|
|
7362
|
-
return (
|
|
7363
|
-
|
|
7364
|
-
|
|
7365
|
-
|
|
7743
|
+
return (React__default.createElement("div", { className: className, style: style },
|
|
7744
|
+
React__default.createElement("span", { className: dayPicker.classNames.vhidden }, props['aria-label']),
|
|
7745
|
+
React__default.createElement("select", { name: props.name, "aria-label": props['aria-label'], className: dayPicker.classNames.dropdown, style: dayPicker.styles.dropdown, value: value, onChange: onChange }, children),
|
|
7746
|
+
React__default.createElement("div", { className: dayPicker.classNames.caption_label, style: dayPicker.styles.caption_label, "aria-hidden": "true" },
|
|
7366
7747
|
caption,
|
|
7367
|
-
|
|
7748
|
+
React__default.createElement(IconDropdownComponent, { className: dayPicker.classNames.dropdown_icon, style: dayPicker.styles.dropdown_icon }))));
|
|
7368
7749
|
}
|
|
7369
7750
|
|
|
7370
7751
|
/** Render the dropdown to navigate between months. */
|
|
@@ -7373,9 +7754,9 @@ function MonthsDropdown(props) {
|
|
|
7373
7754
|
var _b = useDayPicker(), fromDate = _b.fromDate, toDate = _b.toDate, styles = _b.styles, locale = _b.locale, formatMonthCaption = _b.formatters.formatMonthCaption, classNames = _b.classNames, components = _b.components, labelMonthDropdown = _b.labels.labelMonthDropdown;
|
|
7374
7755
|
// Dropdown should appear only when both from/toDate is set
|
|
7375
7756
|
if (!fromDate)
|
|
7376
|
-
return
|
|
7757
|
+
return React__default.createElement(React__default.Fragment, null);
|
|
7377
7758
|
if (!toDate)
|
|
7378
|
-
return
|
|
7759
|
+
return React__default.createElement(React__default.Fragment, null);
|
|
7379
7760
|
var dropdownMonths = [];
|
|
7380
7761
|
if (isSameYear(fromDate, toDate)) {
|
|
7381
7762
|
// only display the months included in the range
|
|
@@ -7397,7 +7778,7 @@ function MonthsDropdown(props) {
|
|
|
7397
7778
|
props.onChange(newMonth);
|
|
7398
7779
|
};
|
|
7399
7780
|
var DropdownComponent = (_a = components === null || components === void 0 ? void 0 : components.Dropdown) !== null && _a !== void 0 ? _a : Dropdown;
|
|
7400
|
-
return (
|
|
7781
|
+
return (React__default.createElement(DropdownComponent, { name: "months", "aria-label": labelMonthDropdown(), className: classNames.dropdown_month, style: styles.dropdown_month, onChange: handleChange, value: props.displayMonth.getMonth(), caption: formatMonthCaption(props.displayMonth, { locale: locale }) }, dropdownMonths.map(function (m) { return (React__default.createElement("option", { key: m.getMonth(), value: m.getMonth() }, formatMonthCaption(m, { locale: locale }))); })));
|
|
7401
7782
|
}
|
|
7402
7783
|
|
|
7403
7784
|
/**
|
|
@@ -7411,9 +7792,9 @@ function YearsDropdown(props) {
|
|
|
7411
7792
|
var years = [];
|
|
7412
7793
|
// Dropdown should appear only when both from/toDate is set
|
|
7413
7794
|
if (!fromDate)
|
|
7414
|
-
return
|
|
7795
|
+
return React__default.createElement(React__default.Fragment, null);
|
|
7415
7796
|
if (!toDate)
|
|
7416
|
-
return
|
|
7797
|
+
return React__default.createElement(React__default.Fragment, null);
|
|
7417
7798
|
var fromYear = fromDate.getFullYear();
|
|
7418
7799
|
var toYear = toDate.getFullYear();
|
|
7419
7800
|
for (var year = fromYear; year <= toYear; year++) {
|
|
@@ -7424,7 +7805,7 @@ function YearsDropdown(props) {
|
|
|
7424
7805
|
props.onChange(newMonth);
|
|
7425
7806
|
};
|
|
7426
7807
|
var DropdownComponent = (_a = components === null || components === void 0 ? void 0 : components.Dropdown) !== null && _a !== void 0 ? _a : Dropdown;
|
|
7427
|
-
return (
|
|
7808
|
+
return (React__default.createElement(DropdownComponent, { name: "years", "aria-label": labelYearDropdown(), className: classNames.dropdown_year, style: styles.dropdown_year, onChange: handleChange, value: displayMonth.getFullYear(), caption: formatYearCaption(displayMonth, { locale: locale }) }, years.map(function (year) { return (React__default.createElement("option", { key: year.getFullYear(), value: year.getFullYear() }, formatYearCaption(year, { locale: locale }))); })));
|
|
7428
7809
|
}
|
|
7429
7810
|
|
|
7430
7811
|
/**
|
|
@@ -7588,7 +7969,7 @@ function NavigationProvider(props) {
|
|
|
7588
7969
|
nextMonth: nextMonth,
|
|
7589
7970
|
isDateDisplayed: isDateDisplayed
|
|
7590
7971
|
};
|
|
7591
|
-
return (
|
|
7972
|
+
return (React__default.createElement(NavigationContext.Provider, { value: value }, props.children));
|
|
7592
7973
|
}
|
|
7593
7974
|
/**
|
|
7594
7975
|
* Hook to access the {@link NavigationContextValue}. Use this hook to navigate
|
|
@@ -7615,27 +7996,27 @@ function CaptionDropdowns(props) {
|
|
|
7615
7996
|
goToMonth(newMonth);
|
|
7616
7997
|
};
|
|
7617
7998
|
var CaptionLabelComponent = (_a = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _a !== void 0 ? _a : CaptionLabel;
|
|
7618
|
-
var captionLabel = (
|
|
7619
|
-
return (
|
|
7620
|
-
|
|
7621
|
-
|
|
7622
|
-
|
|
7999
|
+
var captionLabel = (React__default.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }));
|
|
8000
|
+
return (React__default.createElement("div", { className: classNames.caption_dropdowns, style: styles.caption_dropdowns },
|
|
8001
|
+
React__default.createElement("div", { className: classNames.vhidden }, captionLabel),
|
|
8002
|
+
React__default.createElement(MonthsDropdown, { onChange: handleMonthChange, displayMonth: props.displayMonth }),
|
|
8003
|
+
React__default.createElement(YearsDropdown, { onChange: handleMonthChange, displayMonth: props.displayMonth })));
|
|
7623
8004
|
}
|
|
7624
8005
|
|
|
7625
8006
|
/**
|
|
7626
8007
|
* Render the "previous month" button in the navigation.
|
|
7627
8008
|
*/
|
|
7628
8009
|
function IconLeft(props) {
|
|
7629
|
-
return (
|
|
7630
|
-
|
|
8010
|
+
return (React__default.createElement("svg", __assign({ width: "16px", height: "16px", viewBox: "0 0 120 120" }, props),
|
|
8011
|
+
React__default.createElement("path", { d: "M69.490332,3.34314575 C72.6145263,0.218951416 77.6798462,0.218951416 80.8040405,3.34314575 C83.8617626,6.40086786 83.9268205,11.3179931 80.9992143,14.4548388 L80.8040405,14.6568542 L35.461,60 L80.8040405,105.343146 C83.8617626,108.400868 83.9268205,113.317993 80.9992143,116.454839 L80.8040405,116.656854 C77.7463184,119.714576 72.8291931,119.779634 69.6923475,116.852028 L69.490332,116.656854 L18.490332,65.6568542 C15.4326099,62.5991321 15.367552,57.6820069 18.2951583,54.5451612 L18.490332,54.3431458 L69.490332,3.34314575 Z", fill: "currentColor", fillRule: "nonzero" })));
|
|
7631
8012
|
}
|
|
7632
8013
|
|
|
7633
8014
|
/**
|
|
7634
8015
|
* Render the "next month" button in the navigation.
|
|
7635
8016
|
*/
|
|
7636
8017
|
function IconRight(props) {
|
|
7637
|
-
return (
|
|
7638
|
-
|
|
8018
|
+
return (React__default.createElement("svg", __assign({ width: "16px", height: "16px", viewBox: "0 0 120 120" }, props),
|
|
8019
|
+
React__default.createElement("path", { d: "M49.8040405,3.34314575 C46.6798462,0.218951416 41.6145263,0.218951416 38.490332,3.34314575 C35.4326099,6.40086786 35.367552,11.3179931 38.2951583,14.4548388 L38.490332,14.6568542 L83.8333725,60 L38.490332,105.343146 C35.4326099,108.400868 35.367552,113.317993 38.2951583,116.454839 L38.490332,116.656854 C41.5480541,119.714576 46.4651794,119.779634 49.602025,116.852028 L49.8040405,116.656854 L100.804041,65.6568542 C103.861763,62.5991321 103.926821,57.6820069 100.999214,54.5451612 L100.804041,54.3431458 L49.8040405,3.34314575 Z", fill: "currentColor" })));
|
|
7639
8020
|
}
|
|
7640
8021
|
|
|
7641
8022
|
/** Render a button HTML element applying the reset class name. */
|
|
@@ -7650,7 +8031,7 @@ var Button = forwardRef(function (props, ref) {
|
|
|
7650
8031
|
if (props.style) {
|
|
7651
8032
|
Object.assign(style, props.style);
|
|
7652
8033
|
}
|
|
7653
|
-
return (
|
|
8034
|
+
return (React__default.createElement("button", __assign({}, props, { ref: ref, type: "button", className: className, style: style })));
|
|
7654
8035
|
});
|
|
7655
8036
|
|
|
7656
8037
|
/** A component rendering the navigation buttons or the drop-downs. */
|
|
@@ -7658,7 +8039,7 @@ function Navigation(props) {
|
|
|
7658
8039
|
var _a, _b;
|
|
7659
8040
|
var _c = useDayPicker(), dir = _c.dir, locale = _c.locale, classNames = _c.classNames, styles = _c.styles, _d = _c.labels, labelPrevious = _d.labelPrevious, labelNext = _d.labelNext, components = _c.components;
|
|
7660
8041
|
if (!props.nextMonth && !props.previousMonth) {
|
|
7661
|
-
return
|
|
8042
|
+
return React__default.createElement(React__default.Fragment, null);
|
|
7662
8043
|
}
|
|
7663
8044
|
var previousLabel = labelPrevious(props.previousMonth, { locale: locale });
|
|
7664
8045
|
var previousClassName = [
|
|
@@ -7672,9 +8053,9 @@ function Navigation(props) {
|
|
|
7672
8053
|
].join(' ');
|
|
7673
8054
|
var IconRightComponent = (_a = components === null || components === void 0 ? void 0 : components.IconRight) !== null && _a !== void 0 ? _a : IconRight;
|
|
7674
8055
|
var IconLeftComponent = (_b = components === null || components === void 0 ? void 0 : components.IconLeft) !== null && _b !== void 0 ? _b : IconLeft;
|
|
7675
|
-
return (
|
|
7676
|
-
!props.hidePrevious && (
|
|
7677
|
-
!props.hideNext && (
|
|
8056
|
+
return (React__default.createElement("div", { className: classNames.nav, style: styles.nav },
|
|
8057
|
+
!props.hidePrevious && (React__default.createElement(Button, { name: "previous-month", "aria-label": previousLabel, className: previousClassName, style: styles.nav_button_previous, disabled: !props.previousMonth, onClick: props.onPreviousClick }, dir === 'rtl' ? (React__default.createElement(IconRightComponent, { className: classNames.nav_icon, style: styles.nav_icon })) : (React__default.createElement(IconLeftComponent, { className: classNames.nav_icon, style: styles.nav_icon })))),
|
|
8058
|
+
!props.hideNext && (React__default.createElement(Button, { name: "next-month", "aria-label": nextLabel, className: nextClassName, style: styles.nav_button_next, disabled: !props.nextMonth, onClick: props.onNextClick }, dir === 'rtl' ? (React__default.createElement(IconLeftComponent, { className: classNames.nav_icon, style: styles.nav_icon })) : (React__default.createElement(IconRightComponent, { className: classNames.nav_icon, style: styles.nav_icon }))))));
|
|
7678
8059
|
}
|
|
7679
8060
|
|
|
7680
8061
|
/**
|
|
@@ -7700,7 +8081,7 @@ function CaptionNavigation(props) {
|
|
|
7700
8081
|
return;
|
|
7701
8082
|
goToMonth(nextMonth);
|
|
7702
8083
|
};
|
|
7703
|
-
return (
|
|
8084
|
+
return (React__default.createElement(Navigation, { displayMonth: props.displayMonth, hideNext: hideNext, hidePrevious: hidePrevious, nextMonth: nextMonth, previousMonth: previousMonth, onPreviousClick: handlePreviousClick, onNextClick: handleNextClick }));
|
|
7704
8085
|
}
|
|
7705
8086
|
|
|
7706
8087
|
/**
|
|
@@ -7713,22 +8094,22 @@ function Caption(props) {
|
|
|
7713
8094
|
var CaptionLabelComponent = (_a = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _a !== void 0 ? _a : CaptionLabel;
|
|
7714
8095
|
var caption;
|
|
7715
8096
|
if (disableNavigation) {
|
|
7716
|
-
caption = (
|
|
8097
|
+
caption = (React__default.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }));
|
|
7717
8098
|
}
|
|
7718
8099
|
else if (captionLayout === 'dropdown') {
|
|
7719
|
-
caption = (
|
|
8100
|
+
caption = (React__default.createElement(CaptionDropdowns, { displayMonth: props.displayMonth, id: props.id }));
|
|
7720
8101
|
}
|
|
7721
8102
|
else if (captionLayout === 'dropdown-buttons') {
|
|
7722
|
-
caption = (
|
|
7723
|
-
|
|
7724
|
-
|
|
8103
|
+
caption = (React__default.createElement(React__default.Fragment, null,
|
|
8104
|
+
React__default.createElement(CaptionDropdowns, { displayMonth: props.displayMonth, id: props.id }),
|
|
8105
|
+
React__default.createElement(CaptionNavigation, { displayMonth: props.displayMonth, id: props.id })));
|
|
7725
8106
|
}
|
|
7726
8107
|
else {
|
|
7727
|
-
caption = (
|
|
7728
|
-
|
|
7729
|
-
|
|
8108
|
+
caption = (React__default.createElement(React__default.Fragment, null,
|
|
8109
|
+
React__default.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }),
|
|
8110
|
+
React__default.createElement(CaptionNavigation, { displayMonth: props.displayMonth, id: props.id })));
|
|
7730
8111
|
}
|
|
7731
|
-
return (
|
|
8112
|
+
return (React__default.createElement("div", { className: classNames.caption, style: styles.caption }, caption));
|
|
7732
8113
|
}
|
|
7733
8114
|
|
|
7734
8115
|
/** Render the Footer component (empty as default).*/
|
|
@@ -7736,10 +8117,10 @@ function Caption(props) {
|
|
|
7736
8117
|
function Footer$1(props) {
|
|
7737
8118
|
var _a = useDayPicker(), footer = _a.footer, styles = _a.styles, tfoot = _a.classNames.tfoot;
|
|
7738
8119
|
if (!footer)
|
|
7739
|
-
return
|
|
7740
|
-
return (
|
|
7741
|
-
|
|
7742
|
-
|
|
8120
|
+
return React__default.createElement(React__default.Fragment, null);
|
|
8121
|
+
return (React__default.createElement("tfoot", { className: tfoot, style: styles.tfoot },
|
|
8122
|
+
React__default.createElement("tr", null,
|
|
8123
|
+
React__default.createElement("td", { colSpan: 8 }, footer))));
|
|
7743
8124
|
}
|
|
7744
8125
|
|
|
7745
8126
|
/**
|
|
@@ -7768,9 +8149,9 @@ ISOWeek) {
|
|
|
7768
8149
|
function HeadRow() {
|
|
7769
8150
|
var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles, showWeekNumber = _a.showWeekNumber, locale = _a.locale, weekStartsOn = _a.weekStartsOn, ISOWeek = _a.ISOWeek, formatWeekdayName = _a.formatters.formatWeekdayName, labelWeekday = _a.labels.labelWeekday;
|
|
7770
8151
|
var weekdays = getWeekdays(locale, weekStartsOn, ISOWeek);
|
|
7771
|
-
return (
|
|
7772
|
-
showWeekNumber && (
|
|
7773
|
-
weekdays.map(function (weekday, i) { return (
|
|
8152
|
+
return (React__default.createElement("tr", { style: styles.head_row, className: classNames.head_row },
|
|
8153
|
+
showWeekNumber && (React__default.createElement("td", { style: styles.head_cell, className: classNames.head_cell })),
|
|
8154
|
+
weekdays.map(function (weekday, i) { return (React__default.createElement("th", { key: i, scope: "col", className: classNames.head_cell, style: styles.head_cell, "aria-label": labelWeekday(weekday, { locale: locale }) }, formatWeekdayName(weekday, { locale: locale }))); })));
|
|
7774
8155
|
}
|
|
7775
8156
|
|
|
7776
8157
|
/** Render the table head. */
|
|
@@ -7778,14 +8159,14 @@ function Head() {
|
|
|
7778
8159
|
var _a;
|
|
7779
8160
|
var _b = useDayPicker(), classNames = _b.classNames, styles = _b.styles, components = _b.components;
|
|
7780
8161
|
var HeadRowComponent = (_a = components === null || components === void 0 ? void 0 : components.HeadRow) !== null && _a !== void 0 ? _a : HeadRow;
|
|
7781
|
-
return (
|
|
7782
|
-
|
|
8162
|
+
return (React__default.createElement("thead", { style: styles.head, className: classNames.head },
|
|
8163
|
+
React__default.createElement(HeadRowComponent, null)));
|
|
7783
8164
|
}
|
|
7784
8165
|
|
|
7785
8166
|
/** Render the content of the day cell. */
|
|
7786
8167
|
function DayContent(props) {
|
|
7787
8168
|
var _a = useDayPicker(), locale = _a.locale, formatDay = _a.formatters.formatDay;
|
|
7788
|
-
return
|
|
8169
|
+
return React__default.createElement(React__default.Fragment, null, formatDay(props.date, { locale: locale }));
|
|
7789
8170
|
}
|
|
7790
8171
|
|
|
7791
8172
|
/**
|
|
@@ -7804,9 +8185,9 @@ function SelectMultipleProvider(props) {
|
|
|
7804
8185
|
disabled: []
|
|
7805
8186
|
}
|
|
7806
8187
|
};
|
|
7807
|
-
return (
|
|
8188
|
+
return (React__default.createElement(SelectMultipleContext.Provider, { value: emptyContextValue }, props.children));
|
|
7808
8189
|
}
|
|
7809
|
-
return (
|
|
8190
|
+
return (React__default.createElement(SelectMultipleProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
7810
8191
|
}
|
|
7811
8192
|
function SelectMultipleProviderInternal(_a) {
|
|
7812
8193
|
var initialProps = _a.initialProps, children = _a.children;
|
|
@@ -7851,7 +8232,7 @@ function SelectMultipleProviderInternal(_a) {
|
|
|
7851
8232
|
onDayClick: onDayClick,
|
|
7852
8233
|
modifiers: modifiers
|
|
7853
8234
|
};
|
|
7854
|
-
return (
|
|
8235
|
+
return (React__default.createElement(SelectMultipleContext.Provider, { value: contextValue }, children));
|
|
7855
8236
|
}
|
|
7856
8237
|
/**
|
|
7857
8238
|
* Hook to access the {@link SelectMultipleContextValue}.
|
|
@@ -7920,9 +8301,9 @@ function SelectRangeProvider(props) {
|
|
|
7920
8301
|
disabled: []
|
|
7921
8302
|
}
|
|
7922
8303
|
};
|
|
7923
|
-
return (
|
|
8304
|
+
return (React__default.createElement(SelectRangeContext.Provider, { value: emptyContextValue }, props.children));
|
|
7924
8305
|
}
|
|
7925
|
-
return (
|
|
8306
|
+
return (React__default.createElement(SelectRangeProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
7926
8307
|
}
|
|
7927
8308
|
function SelectRangeProviderInternal(_a) {
|
|
7928
8309
|
var initialProps = _a.initialProps, children = _a.children;
|
|
@@ -7993,7 +8374,7 @@ function SelectRangeProviderInternal(_a) {
|
|
|
7993
8374
|
});
|
|
7994
8375
|
}
|
|
7995
8376
|
}
|
|
7996
|
-
return (
|
|
8377
|
+
return (React__default.createElement(SelectRangeContext.Provider, { value: { selected: selected, onDayClick: onDayClick, modifiers: modifiers } }, children));
|
|
7997
8378
|
}
|
|
7998
8379
|
/**
|
|
7999
8380
|
* Hook to access the {@link SelectRangeContextValue}.
|
|
@@ -8093,7 +8474,7 @@ function ModifiersProvider(props) {
|
|
|
8093
8474
|
var internalModifiers = getInternalModifiers(dayPicker, selectMultiple, selectRange);
|
|
8094
8475
|
var customModifiers = getCustomModifiers(dayPicker.modifiers);
|
|
8095
8476
|
var modifiers = __assign(__assign({}, internalModifiers), customModifiers);
|
|
8096
|
-
return (
|
|
8477
|
+
return (React__default.createElement(ModifiersContext.Provider, { value: modifiers }, props.children));
|
|
8097
8478
|
}
|
|
8098
8479
|
/**
|
|
8099
8480
|
* Return the modifiers used by DayPicker.
|
|
@@ -8391,7 +8772,7 @@ function FocusProvider(props) {
|
|
|
8391
8772
|
focusStartOfWeek: function () { return moveFocus('startOfWeek', 'before'); },
|
|
8392
8773
|
focusEndOfWeek: function () { return moveFocus('endOfWeek', 'after'); }
|
|
8393
8774
|
};
|
|
8394
|
-
return (
|
|
8775
|
+
return (React__default.createElement(FocusContext.Provider, { value: value }, props.children));
|
|
8395
8776
|
}
|
|
8396
8777
|
/**
|
|
8397
8778
|
* Hook to access the {@link FocusContextValue}. Use this hook to handle the
|
|
@@ -8439,9 +8820,9 @@ function SelectSingleProvider(props) {
|
|
|
8439
8820
|
var emptyContextValue = {
|
|
8440
8821
|
selected: undefined
|
|
8441
8822
|
};
|
|
8442
|
-
return (
|
|
8823
|
+
return (React__default.createElement(SelectSingleContext.Provider, { value: emptyContextValue }, props.children));
|
|
8443
8824
|
}
|
|
8444
|
-
return (
|
|
8825
|
+
return (React__default.createElement(SelectSingleProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
8445
8826
|
}
|
|
8446
8827
|
function SelectSingleProviderInternal(_a) {
|
|
8447
8828
|
var initialProps = _a.initialProps, children = _a.children;
|
|
@@ -8458,7 +8839,7 @@ function SelectSingleProviderInternal(_a) {
|
|
|
8458
8839
|
selected: initialProps.selected,
|
|
8459
8840
|
onDayClick: onDayClick
|
|
8460
8841
|
};
|
|
8461
|
-
return (
|
|
8842
|
+
return (React__default.createElement(SelectSingleContext.Provider, { value: contextValue }, children));
|
|
8462
8843
|
}
|
|
8463
8844
|
/**
|
|
8464
8845
|
* Hook to access the {@link SelectSingleContextValue}.
|
|
@@ -8728,7 +9109,7 @@ buttonRef) {
|
|
|
8728
9109
|
var isHidden = Boolean((activeModifiers.outside && !dayPicker.showOutsideDays) ||
|
|
8729
9110
|
activeModifiers.hidden);
|
|
8730
9111
|
var DayContentComponent = (_c = (_b = dayPicker.components) === null || _b === void 0 ? void 0 : _b.DayContent) !== null && _c !== void 0 ? _c : DayContent;
|
|
8731
|
-
var children = (
|
|
9112
|
+
var children = (React__default.createElement(DayContentComponent, { date: day, displayMonth: displayMonth, activeModifiers: activeModifiers }));
|
|
8732
9113
|
var divProps = {
|
|
8733
9114
|
style: style,
|
|
8734
9115
|
className: className,
|
|
@@ -8759,12 +9140,12 @@ function Day(props) {
|
|
|
8759
9140
|
var buttonRef = useRef(null);
|
|
8760
9141
|
var dayRender = useDayRender(props.date, props.displayMonth, buttonRef);
|
|
8761
9142
|
if (dayRender.isHidden) {
|
|
8762
|
-
return
|
|
9143
|
+
return React__default.createElement("div", { role: "gridcell" });
|
|
8763
9144
|
}
|
|
8764
9145
|
if (!dayRender.isButton) {
|
|
8765
|
-
return
|
|
9146
|
+
return React__default.createElement("div", __assign({}, dayRender.divProps));
|
|
8766
9147
|
}
|
|
8767
|
-
return
|
|
9148
|
+
return React__default.createElement(Button, __assign({ name: "day", ref: buttonRef }, dayRender.buttonProps));
|
|
8768
9149
|
}
|
|
8769
9150
|
|
|
8770
9151
|
/**
|
|
@@ -8776,13 +9157,13 @@ function WeekNumber(props) {
|
|
|
8776
9157
|
var _a = useDayPicker(), onWeekNumberClick = _a.onWeekNumberClick, styles = _a.styles, classNames = _a.classNames, locale = _a.locale, labelWeekNumber = _a.labels.labelWeekNumber, formatWeekNumber = _a.formatters.formatWeekNumber;
|
|
8777
9158
|
var content = formatWeekNumber(Number(weekNumber), { locale: locale });
|
|
8778
9159
|
if (!onWeekNumberClick) {
|
|
8779
|
-
return (
|
|
9160
|
+
return (React__default.createElement("span", { className: classNames.weeknumber, style: styles.weeknumber }, content));
|
|
8780
9161
|
}
|
|
8781
9162
|
var label = labelWeekNumber(Number(weekNumber), { locale: locale });
|
|
8782
9163
|
var handleClick = function (e) {
|
|
8783
9164
|
onWeekNumberClick(weekNumber, dates, e);
|
|
8784
9165
|
};
|
|
8785
|
-
return (
|
|
9166
|
+
return (React__default.createElement(Button, { name: "week-number", "aria-label": label, className: classNames.weeknumber, style: styles.weeknumber, onClick: handleClick }, content));
|
|
8786
9167
|
}
|
|
8787
9168
|
|
|
8788
9169
|
/** Render a row in the calendar, with the days and the week number. */
|
|
@@ -8793,13 +9174,13 @@ function Row(props) {
|
|
|
8793
9174
|
var WeeknumberComponent = (_b = components === null || components === void 0 ? void 0 : components.WeekNumber) !== null && _b !== void 0 ? _b : WeekNumber;
|
|
8794
9175
|
var weekNumberCell;
|
|
8795
9176
|
if (showWeekNumber) {
|
|
8796
|
-
weekNumberCell = (
|
|
8797
|
-
|
|
9177
|
+
weekNumberCell = (React__default.createElement("td", { className: classNames.cell, style: styles.cell },
|
|
9178
|
+
React__default.createElement(WeeknumberComponent, { number: props.weekNumber, dates: props.dates })));
|
|
8798
9179
|
}
|
|
8799
|
-
return (
|
|
9180
|
+
return (React__default.createElement("tr", { className: classNames.row, style: styles.row },
|
|
8800
9181
|
weekNumberCell,
|
|
8801
|
-
props.dates.map(function (date) { return (
|
|
8802
|
-
|
|
9182
|
+
props.dates.map(function (date) { return (React__default.createElement("td", { className: classNames.cell, style: styles.cell, key: getUnixTime(date), role: "presentation" },
|
|
9183
|
+
React__default.createElement(DayComponent, { displayMonth: props.displayMonth, date: date }))); })));
|
|
8803
9184
|
}
|
|
8804
9185
|
|
|
8805
9186
|
/** Return the weeks between two dates. */
|
|
@@ -8867,10 +9248,10 @@ function Table(props) {
|
|
|
8867
9248
|
var HeadComponent = (_a = components === null || components === void 0 ? void 0 : components.Head) !== null && _a !== void 0 ? _a : Head;
|
|
8868
9249
|
var RowComponent = (_b = components === null || components === void 0 ? void 0 : components.Row) !== null && _b !== void 0 ? _b : Row;
|
|
8869
9250
|
var FooterComponent = (_c = components === null || components === void 0 ? void 0 : components.Footer) !== null && _c !== void 0 ? _c : Footer$1;
|
|
8870
|
-
return (
|
|
8871
|
-
!hideHead &&
|
|
8872
|
-
|
|
8873
|
-
|
|
9251
|
+
return (React__default.createElement("table", { id: props.id, className: classNames.table, style: styles.table, role: "grid", "aria-labelledby": props['aria-labelledby'] },
|
|
9252
|
+
!hideHead && React__default.createElement(HeadComponent, null),
|
|
9253
|
+
React__default.createElement("tbody", { className: classNames.tbody, style: styles.tbody, role: "rowgroup" }, weeks.map(function (week) { return (React__default.createElement(RowComponent, { displayMonth: props.displayMonth, key: week.weekNumber, dates: week.dates, weekNumber: week.weekNumber })); })),
|
|
9254
|
+
React__default.createElement(FooterComponent, { displayMonth: props.displayMonth })));
|
|
8874
9255
|
}
|
|
8875
9256
|
|
|
8876
9257
|
/*
|
|
@@ -8914,8 +9295,8 @@ function canUseDOM() {
|
|
|
8914
9295
|
* @param deps
|
|
8915
9296
|
*/
|
|
8916
9297
|
var useIsomorphicLayoutEffect = canUseDOM()
|
|
8917
|
-
?
|
|
8918
|
-
:
|
|
9298
|
+
? React.useLayoutEffect
|
|
9299
|
+
: React.useEffect;
|
|
8919
9300
|
var serverHandoffComplete = false;
|
|
8920
9301
|
var id = 0;
|
|
8921
9302
|
function genId() {
|
|
@@ -8928,7 +9309,7 @@ function useId(providedId) {
|
|
|
8928
9309
|
// If this instance isn't part of the initial render, we don't have to do the
|
|
8929
9310
|
// double render/patch-up dance. We can just generate the ID and return it.
|
|
8930
9311
|
var initialId = providedId !== null && providedId !== void 0 ? providedId : (serverHandoffComplete ? genId() : null);
|
|
8931
|
-
var _b =
|
|
9312
|
+
var _b = React.useState(initialId), id = _b[0], setId = _b[1];
|
|
8932
9313
|
useIsomorphicLayoutEffect(function () {
|
|
8933
9314
|
if (id === null) {
|
|
8934
9315
|
// Patch the ID after render. We do this in `useLayoutEffect` to avoid any
|
|
@@ -8939,7 +9320,7 @@ function useId(providedId) {
|
|
|
8939
9320
|
}
|
|
8940
9321
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
8941
9322
|
}, []);
|
|
8942
|
-
|
|
9323
|
+
React.useEffect(function () {
|
|
8943
9324
|
if (serverHandoffComplete === false) {
|
|
8944
9325
|
// Flag all future uses of `useId` to skip the update dance. This is in
|
|
8945
9326
|
// `useEffect` because it goes after `useLayoutEffect`, ensuring we don't
|
|
@@ -8982,9 +9363,9 @@ function Month(props) {
|
|
|
8982
9363
|
style = __assign(__assign({}, style), styles.caption_between);
|
|
8983
9364
|
}
|
|
8984
9365
|
var CaptionComponent = (_b = components === null || components === void 0 ? void 0 : components.Caption) !== null && _b !== void 0 ? _b : Caption;
|
|
8985
|
-
return (
|
|
8986
|
-
|
|
8987
|
-
|
|
9366
|
+
return (React__default.createElement("div", { key: props.displayIndex, className: className.join(' '), style: style },
|
|
9367
|
+
React__default.createElement(CaptionComponent, { id: captionId, displayMonth: props.displayMonth }),
|
|
9368
|
+
React__default.createElement(Table, { id: tableId, "aria-labelledby": captionId, displayMonth: props.displayMonth })));
|
|
8988
9369
|
}
|
|
8989
9370
|
|
|
8990
9371
|
/** Render the container with the months according to the number of months to display. */
|
|
@@ -9026,20 +9407,20 @@ function Root(_a) {
|
|
|
9026
9407
|
var _a;
|
|
9027
9408
|
return __assign(__assign({}, attrs), (_a = {}, _a[key] = initialProps[key], _a));
|
|
9028
9409
|
}, {});
|
|
9029
|
-
return (
|
|
9030
|
-
|
|
9410
|
+
return (React__default.createElement("div", __assign({ className: classNames.join(' '), style: style, dir: dayPicker.dir, id: dayPicker.id }, dataAttributes),
|
|
9411
|
+
React__default.createElement("div", { className: dayPicker.classNames.months, style: dayPicker.styles.months }, navigation.displayMonths.map(function (month, i) { return (React__default.createElement(Month, { key: i, displayIndex: i, displayMonth: month })); }))));
|
|
9031
9412
|
}
|
|
9032
9413
|
|
|
9033
9414
|
/** Provide the value for all the context providers. */
|
|
9034
9415
|
function RootProvider(props) {
|
|
9035
9416
|
var children = props.children, initialProps = __rest(props, ["children"]);
|
|
9036
|
-
return (
|
|
9037
|
-
|
|
9038
|
-
|
|
9039
|
-
|
|
9040
|
-
|
|
9041
|
-
|
|
9042
|
-
|
|
9417
|
+
return (React__default.createElement(DayPickerProvider, { initialProps: initialProps },
|
|
9418
|
+
React__default.createElement(NavigationProvider, null,
|
|
9419
|
+
React__default.createElement(SelectSingleProvider, { initialProps: initialProps },
|
|
9420
|
+
React__default.createElement(SelectMultipleProvider, { initialProps: initialProps },
|
|
9421
|
+
React__default.createElement(SelectRangeProvider, { initialProps: initialProps },
|
|
9422
|
+
React__default.createElement(ModifiersProvider, null,
|
|
9423
|
+
React__default.createElement(FocusProvider, null, children))))))));
|
|
9043
9424
|
}
|
|
9044
9425
|
|
|
9045
9426
|
/**
|
|
@@ -9130,8 +9511,8 @@ function RootProvider(props) {
|
|
|
9130
9511
|
* ```
|
|
9131
9512
|
*/
|
|
9132
9513
|
function DayPicker(props) {
|
|
9133
|
-
return (
|
|
9134
|
-
|
|
9514
|
+
return (React__default.createElement(RootProvider, __assign({}, props),
|
|
9515
|
+
React__default.createElement(Root, { initialProps: props })));
|
|
9135
9516
|
}
|
|
9136
9517
|
|
|
9137
9518
|
var reactResponsive$1 = {exports: {}};
|
|
@@ -9145,7 +9526,7 @@ function requireReactResponsive () {
|
|
|
9145
9526
|
hasRequiredReactResponsive = 1;
|
|
9146
9527
|
(function (module, exports) {
|
|
9147
9528
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
9148
|
-
module.exports = factory(
|
|
9529
|
+
module.exports = factory(React__default);
|
|
9149
9530
|
})(reactResponsive, (__WEBPACK_EXTERNAL_MODULE_react__) => {
|
|
9150
9531
|
return /******/ (() => { // webpackBootstrap
|
|
9151
9532
|
/******/ var __webpack_modules__ = ({
|
|
@@ -10974,15 +11355,19 @@ var IconsSvg = function (_a) {
|
|
|
10974
11355
|
var fill = _a.fill, size = _a.size, icon = _a.icon;
|
|
10975
11356
|
switch (icon) {
|
|
10976
11357
|
case 'spinner':
|
|
10977
|
-
return (
|
|
11358
|
+
return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), viewBox: "0 0 24 24" },
|
|
11359
|
+
React__default.createElement("style", null, "\n .spinner_z9k8 {\n transform-origin: center;\n animation: spinner_StKS .75s infinite linear;\n }\n @keyframes spinner_StKS {\n 100% {\n transform: rotate(360deg);\n }\n }\n "),
|
|
11360
|
+
React__default.createElement("path", { d: "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z", opacity: ".25", fill: fill }),
|
|
11361
|
+
React__default.createElement("path", { d: "M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z", className: "spinner_z9k8", fill: fill })));
|
|
10978
11362
|
case 'warning':
|
|
10979
|
-
return (
|
|
11363
|
+
return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), className: "svg-icon", style: {
|
|
10980
11364
|
verticalAlign: 'middle',
|
|
10981
11365
|
fill: fill,
|
|
10982
11366
|
overflow: 'hidden',
|
|
10983
11367
|
minWidth: '25px',
|
|
10984
11368
|
minHeight: '25px',
|
|
10985
|
-
}, viewBox: "0 0 1024 1024", version: "1.1"
|
|
11369
|
+
}, viewBox: "0 0 1024 1024", version: "1.1" },
|
|
11370
|
+
React__default.createElement("path", { d: "M42.666667 896h938.666666L512 85.333333 42.666667 896z m512-128h-85.333334v-85.333333h85.333334v85.333333z m0-170.666667h-85.333334v-170.666666h85.333334v170.666666z" })));
|
|
10986
11371
|
default:
|
|
10987
11372
|
return null;
|
|
10988
11373
|
}
|
|
@@ -11221,728 +11606,423 @@ var handleCalendarModifiers = function (_a) {
|
|
|
11221
11606
|
: [])), false),
|
|
11222
11607
|
checkOutOnly: __spreadArray$1([], __read(((findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) &&
|
|
11223
11608
|
findLastPossibleRangeContextCheckOut.lastCheckOut
|
|
11224
|
-
? [
|
|
11225
|
-
{
|
|
11226
|
-
from: addDays(findLastPossibleRangeContextCheckOut.checkIn, 1),
|
|
11227
|
-
to: findLastPossibleRangeContextCheckOut.lastCheckOut,
|
|
11228
|
-
},
|
|
11229
|
-
]
|
|
11230
|
-
: [])), false),
|
|
11231
|
-
};
|
|
11232
|
-
};
|
|
11233
|
-
|
|
11234
|
-
var handleRangeContextDisabledDates = function (_a) {
|
|
11235
|
-
var rangeContext = _a.rangeContext, availableDates = _a.availableDates, calendarRange = _a.calendarRange;
|
|
11236
|
-
var findFirstPossibleRangeContextCheckIn;
|
|
11237
|
-
var findLastPossibleRangeContextCheckOut;
|
|
11238
|
-
var firstPossibleRangeContextCheckIn = [];
|
|
11239
|
-
var lastPossibleRangeContextCheckOut = [];
|
|
11240
|
-
// Parse data
|
|
11241
|
-
var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && endOfDay(rangeContext.from);
|
|
11242
|
-
var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) && endOfDay(rangeContext.to);
|
|
11243
|
-
var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
|
|
11244
|
-
if (rangeContext && (availableDates === null || availableDates === void 0 ? void 0 : availableDates.length)) {
|
|
11245
|
-
// Find the first possible check-in after the last date gap till the range context
|
|
11246
|
-
findFirstPossibleRangeContextCheckIn = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11247
|
-
return rangeContextFrom &&
|
|
11248
|
-
endOfDay(date.checkIn) < rangeContextFrom &&
|
|
11249
|
-
endOfDay(date.lastCheckOut) >= rangeContextFrom;
|
|
11250
|
-
});
|
|
11251
|
-
if (findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) {
|
|
11252
|
-
firstPossibleRangeContextCheckIn.push({
|
|
11253
|
-
before: findFirstPossibleRangeContextCheckIn.checkIn,
|
|
11254
|
-
});
|
|
11255
|
-
}
|
|
11256
|
-
// Find the last possible checkout before the first date gap till the range context
|
|
11257
|
-
findLastPossibleRangeContextCheckOut = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11258
|
-
return rangeContextTo && isEqual(rangeContextTo, endOfDay(date.checkIn));
|
|
11259
|
-
});
|
|
11260
|
-
if (findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) {
|
|
11261
|
-
lastPossibleRangeContextCheckOut.push({
|
|
11262
|
-
after: findLastPossibleRangeContextCheckOut.lastCheckOut,
|
|
11263
|
-
});
|
|
11264
|
-
}
|
|
11265
|
-
}
|
|
11266
|
-
// Get possible check-out dates for current check-in
|
|
11267
|
-
var currentSelectionAvailability = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11268
|
-
return calendarRangeFrom
|
|
11269
|
-
? isEqual(endOfDay(date.checkIn), calendarRangeFrom)
|
|
11270
|
-
: false;
|
|
11271
|
-
});
|
|
11272
|
-
return {
|
|
11273
|
-
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11274
|
-
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11275
|
-
firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
|
|
11276
|
-
lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
|
|
11277
|
-
currentSelectionAvailability: currentSelectionAvailability,
|
|
11278
|
-
};
|
|
11279
|
-
};
|
|
11280
|
-
|
|
11281
|
-
// Case: If the selected dates do not overlap with the rangeContext during continuous selection,
|
|
11282
|
-
// set setCalendarHasError to true. This will display an error message and
|
|
11283
|
-
// prevent the submission of the selected dates.
|
|
11284
|
-
var checkForContinuousSelection = function (_a) {
|
|
11285
|
-
var setCalendarHasError = _a.setCalendarHasError, rangeContext = _a.rangeContext, calendarRange = _a.calendarRange, calendarHasError = _a.calendarHasError, disabledDates = _a.disabledDates;
|
|
11286
|
-
var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
|
|
11287
|
-
var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && endOfDay(calendarRange.to);
|
|
11288
|
-
var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && endOfDay(rangeContext.from);
|
|
11289
|
-
var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) && endOfDay(rangeContext.to);
|
|
11290
|
-
// Checking if rangeFrom is equal to or before rangeContextTo
|
|
11291
|
-
var startIsEqualOrBeforeRangeContextEnd = calendarRangeFrom && rangeContextTo
|
|
11292
|
-
? isBefore(calendarRangeFrom, rangeContextTo) ||
|
|
11293
|
-
isEqual(calendarRangeFrom, rangeContextTo)
|
|
11294
|
-
: null;
|
|
11295
|
-
// Checking if rangeTo is equal to or after rangeContextFrom
|
|
11296
|
-
var endIsEqualOrAfterRangeContextStart = calendarRangeTo && rangeContextFrom && rangeContextTo
|
|
11297
|
-
? isAfter(calendarRangeTo, rangeContextFrom) ||
|
|
11298
|
-
isEqual(calendarRangeTo, rangeContextFrom)
|
|
11299
|
-
: null;
|
|
11300
|
-
// Check if selection overlapping unavailable dates
|
|
11301
|
-
var selectionOverlappingUnavailableDate = disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.find(function (range) {
|
|
11302
|
-
var rangeFrom = endOfDay(range.from);
|
|
11303
|
-
var rangeTo = endOfDay(range.to);
|
|
11304
|
-
return (rangeContextFrom &&
|
|
11305
|
-
rangeContextTo &&
|
|
11306
|
-
areIntervalsOverlapping({ start: rangeContextFrom, end: rangeContextTo }, { start: rangeFrom, end: rangeTo }) &&
|
|
11307
|
-
calendarRangeFrom &&
|
|
11308
|
-
calendarRangeTo &&
|
|
11309
|
-
areIntervalsOverlapping({ start: calendarRangeFrom, end: calendarRangeTo }, { start: rangeFrom, end: rangeTo }));
|
|
11310
|
-
});
|
|
11311
|
-
useEffect(function () {
|
|
11312
|
-
if ((rangeContext &&
|
|
11313
|
-
calendarRangeFrom &&
|
|
11314
|
-
!startIsEqualOrBeforeRangeContextEnd) ||
|
|
11315
|
-
(rangeContext &&
|
|
11316
|
-
calendarRangeTo &&
|
|
11317
|
-
!endIsEqualOrAfterRangeContextStart) ||
|
|
11318
|
-
selectionOverlappingUnavailableDate) {
|
|
11319
|
-
!!(setCalendarHasError && !calendarHasError) && setCalendarHasError(true);
|
|
11320
|
-
}
|
|
11321
|
-
});
|
|
11322
|
-
};
|
|
11323
|
-
|
|
11324
|
-
var useCalendarTooltips = function (_a) {
|
|
11325
|
-
var showFeedback = _a.showFeedback;
|
|
11326
|
-
return useEffect(function () {
|
|
11327
|
-
if (typeof document === 'undefined' || !showFeedback)
|
|
11328
|
-
return;
|
|
11329
|
-
// Children
|
|
11330
|
-
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
11331
|
-
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
11332
|
-
var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
11333
|
-
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
11334
|
-
var calendarTooltipCheckInOnly = document.querySelector('.will-calendar-tooltip-check-in-only');
|
|
11335
|
-
var calendarTooltipCheckOutOnly = document.querySelector('.will-calendar-tooltip-check-out-only');
|
|
11336
|
-
// Parents
|
|
11337
|
-
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
11338
|
-
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
11339
|
-
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
11340
|
-
var calendarOverlappingDate = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
11341
|
-
var calendarCheckInOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-in-only)');
|
|
11342
|
-
var calendarCheckOutOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-out-only)');
|
|
11343
|
-
// Append children to parents
|
|
11344
|
-
var tooltipClonesCheckIn = [];
|
|
11345
|
-
var tooltipClonesCheckOut = [];
|
|
11346
|
-
var tooltipClonesCheckInOnly = [];
|
|
11347
|
-
var tooltipClonesCheckOutOnly = [];
|
|
11348
|
-
var tooltipClonesSpinner = [];
|
|
11349
|
-
var tooltipClonesOverlappingDates = [];
|
|
11350
|
-
if (calendarTooltip && calendarButtons.length > 0) {
|
|
11351
|
-
calendarButtons.forEach(function (element) {
|
|
11352
|
-
var tooltipClone = calendarTooltip.cloneNode(true);
|
|
11353
|
-
element.appendChild(tooltipClone);
|
|
11354
|
-
tooltipClonesCheckIn.push(tooltipClone);
|
|
11355
|
-
});
|
|
11356
|
-
}
|
|
11357
|
-
if (calendarTooltipCheckOut && calendarButtonsCheckOut.length > 0) {
|
|
11358
|
-
calendarButtonsCheckOut.forEach(function (element) {
|
|
11359
|
-
var tooltipClone = calendarTooltipCheckOut.cloneNode(true);
|
|
11360
|
-
element.appendChild(tooltipClone);
|
|
11361
|
-
tooltipClonesCheckOut.push(tooltipClone);
|
|
11362
|
-
});
|
|
11363
|
-
}
|
|
11364
|
-
if (calendarTooltipCheckOutOnly && calendarCheckOutOnly.length > 0) {
|
|
11365
|
-
calendarCheckOutOnly.forEach(function (element) {
|
|
11366
|
-
var tooltipClone = calendarTooltipCheckOutOnly.cloneNode(true);
|
|
11367
|
-
element.appendChild(tooltipClone);
|
|
11368
|
-
tooltipClonesCheckOutOnly.push(tooltipClone);
|
|
11369
|
-
});
|
|
11370
|
-
}
|
|
11371
|
-
if (calendarTooltipCheckInOnly && calendarCheckInOnly.length > 0) {
|
|
11372
|
-
calendarCheckInOnly.forEach(function (element) {
|
|
11373
|
-
var tooltipClone = calendarTooltipCheckInOnly.cloneNode(true);
|
|
11374
|
-
element.appendChild(tooltipClone);
|
|
11375
|
-
tooltipClonesCheckInOnly.push(tooltipClone);
|
|
11376
|
-
});
|
|
11377
|
-
}
|
|
11378
|
-
if (loadingSpinner && calendarMonthContainer) {
|
|
11379
|
-
var tooltipClone = loadingSpinner.cloneNode(true);
|
|
11380
|
-
calendarMonthContainer.appendChild(tooltipClone);
|
|
11381
|
-
tooltipClonesSpinner.push(tooltipClone);
|
|
11382
|
-
}
|
|
11383
|
-
if (calendarTooltipOverlappingDate && calendarOverlappingDate.length > 0) {
|
|
11384
|
-
calendarOverlappingDate.forEach(function (element) {
|
|
11385
|
-
var tooltipClone = calendarTooltipOverlappingDate.cloneNode(true);
|
|
11386
|
-
element.appendChild(tooltipClone);
|
|
11387
|
-
tooltipClonesOverlappingDates.push(tooltipClone);
|
|
11388
|
-
});
|
|
11389
|
-
}
|
|
11390
|
-
return function () {
|
|
11391
|
-
tooltipClonesCheckIn.forEach(function (clone) { return clone.remove(); });
|
|
11392
|
-
tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
|
|
11393
|
-
tooltipClonesSpinner.forEach(function (clone) { return clone.remove(); });
|
|
11394
|
-
tooltipClonesOverlappingDates.forEach(function (clone) { return clone.remove(); });
|
|
11395
|
-
tooltipClonesCheckInOnly.forEach(function (clone) { return clone.remove(); });
|
|
11396
|
-
tooltipClonesCheckOutOnly.forEach(function (clone) { return clone.remove(); });
|
|
11397
|
-
};
|
|
11398
|
-
});
|
|
11609
|
+
? [
|
|
11610
|
+
{
|
|
11611
|
+
from: addDays(findLastPossibleRangeContextCheckOut.checkIn, 1),
|
|
11612
|
+
to: findLastPossibleRangeContextCheckOut.lastCheckOut,
|
|
11613
|
+
},
|
|
11614
|
+
]
|
|
11615
|
+
: [])), false),
|
|
11616
|
+
};
|
|
11399
11617
|
};
|
|
11400
11618
|
|
|
11401
|
-
var
|
|
11402
|
-
var
|
|
11403
|
-
|
|
11404
|
-
|
|
11405
|
-
|
|
11406
|
-
|
|
11407
|
-
|
|
11408
|
-
|
|
11409
|
-
|
|
11619
|
+
var handleRangeContextDisabledDates = function (_a) {
|
|
11620
|
+
var rangeContext = _a.rangeContext, availableDates = _a.availableDates, calendarRange = _a.calendarRange;
|
|
11621
|
+
var findFirstPossibleRangeContextCheckIn;
|
|
11622
|
+
var findLastPossibleRangeContextCheckOut;
|
|
11623
|
+
var firstPossibleRangeContextCheckIn = [];
|
|
11624
|
+
var lastPossibleRangeContextCheckOut = [];
|
|
11625
|
+
// Parse data
|
|
11626
|
+
var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && endOfDay(rangeContext.from);
|
|
11627
|
+
var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) && endOfDay(rangeContext.to);
|
|
11628
|
+
var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
|
|
11629
|
+
if (rangeContext && (availableDates === null || availableDates === void 0 ? void 0 : availableDates.length)) {
|
|
11630
|
+
// Find the first possible check-in after the last date gap till the range context
|
|
11631
|
+
findFirstPossibleRangeContextCheckIn = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11632
|
+
return rangeContextFrom &&
|
|
11633
|
+
endOfDay(date.checkIn) < rangeContextFrom &&
|
|
11634
|
+
endOfDay(date.lastCheckOut) >= rangeContextFrom;
|
|
11635
|
+
});
|
|
11636
|
+
if (findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) {
|
|
11637
|
+
firstPossibleRangeContextCheckIn.push({
|
|
11638
|
+
before: findFirstPossibleRangeContextCheckIn.checkIn,
|
|
11639
|
+
});
|
|
11410
11640
|
}
|
|
11411
|
-
|
|
11412
|
-
|
|
11413
|
-
|
|
11641
|
+
// Find the last possible checkout before the first date gap till the range context
|
|
11642
|
+
findLastPossibleRangeContextCheckOut = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11643
|
+
return rangeContextTo && isEqual(rangeContextTo, endOfDay(date.checkIn));
|
|
11644
|
+
});
|
|
11645
|
+
if (findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) {
|
|
11646
|
+
lastPossibleRangeContextCheckOut.push({
|
|
11647
|
+
after: findLastPossibleRangeContextCheckOut.lastCheckOut,
|
|
11648
|
+
});
|
|
11414
11649
|
}
|
|
11650
|
+
}
|
|
11651
|
+
// Get possible check-out dates for current check-in
|
|
11652
|
+
var currentSelectionAvailability = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11653
|
+
return calendarRangeFrom
|
|
11654
|
+
? isEqual(endOfDay(date.checkIn), calendarRangeFrom)
|
|
11655
|
+
: false;
|
|
11415
11656
|
});
|
|
11657
|
+
return {
|
|
11658
|
+
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11659
|
+
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11660
|
+
firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
|
|
11661
|
+
lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
|
|
11662
|
+
currentSelectionAvailability: currentSelectionAvailability,
|
|
11663
|
+
};
|
|
11416
11664
|
};
|
|
11417
11665
|
|
|
11418
|
-
|
|
11419
|
-
|
|
11420
|
-
|
|
11421
|
-
|
|
11422
|
-
var
|
|
11423
|
-
|
|
11424
|
-
|
|
11425
|
-
|
|
11426
|
-
|
|
11427
|
-
|
|
11428
|
-
|
|
11429
|
-
|
|
11430
|
-
|
|
11431
|
-
|
|
11432
|
-
|
|
11433
|
-
|
|
11434
|
-
|
|
11435
|
-
|
|
11436
|
-
|
|
11437
|
-
|
|
11438
|
-
|
|
11439
|
-
|
|
11440
|
-
|
|
11441
|
-
|
|
11442
|
-
|
|
11443
|
-
|
|
11444
|
-
|
|
11445
|
-
|
|
11446
|
-
|
|
11447
|
-
acc.updatedDisabledDates.push(dateRange);
|
|
11448
|
-
}
|
|
11449
|
-
return acc;
|
|
11450
|
-
}, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _b.updatedDisabledDates, newOverlappingDates = _b.newOverlappingDates;
|
|
11451
|
-
// Find last possible checkout ( disable all dates after the last possible checkout )
|
|
11452
|
-
var lastPossibleCheckoutDate = (_a = disableCalendarDates.availableDates.at(-1)) === null || _a === void 0 ? void 0 : _a.lastCheckOut;
|
|
11453
|
-
if (lastPossibleCheckoutDate) {
|
|
11454
|
-
setLatsPossibleCheckout({ after: lastPossibleCheckoutDate });
|
|
11455
|
-
}
|
|
11456
|
-
// Extract overlapping dates ( dates that are only available for checkout )
|
|
11457
|
-
if (newOverlappingDates.length) {
|
|
11458
|
-
setOverlappingDate(__spreadArray$1([], __read(newOverlappingDates), false));
|
|
11459
|
-
}
|
|
11460
|
-
var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
|
|
11461
|
-
return newDisableCalendarDates_1;
|
|
11462
|
-
}
|
|
11463
|
-
return disableCalendarDates;
|
|
11464
|
-
}, [
|
|
11465
|
-
disableCalendarDates,
|
|
11466
|
-
calendarRange,
|
|
11467
|
-
updateCalendarMonthNavigation,
|
|
11468
|
-
updateCalendarDefaultMonth,
|
|
11469
|
-
]);
|
|
11470
|
-
return { newDisableCalendarDates: newDisableCalendarDates, overlappingDate: overlappingDate, lastPossibleCheckout: lastPossibleCheckout };
|
|
11471
|
-
};
|
|
11472
|
-
|
|
11473
|
-
var css_248z$d = ".rdp {\n --rdp-cell-size: 40px;\n --rdp-caption-font-size: 18px;\n --rdp-accent-color: #0000ff;\n --rdp-background-color: #e7edff;\n --rdp-accent-color-dark: #3003e1;\n --rdp-background-color-dark: #180270;\n --rdp-outline: 2px solid var(--rdp-accent-color); /* Outline border for focused elements */\n --rdp-outline-selected: 3px solid var(--rdp-accent-color); /* Outline border for focused _and_ selected elements */\n\n margin: 1em;\n}\n\n/* Hide elements for devices that are not screen readers */\n.rdp-vhidden {\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n background: transparent;\n border: 0;\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n position: absolute !important;\n top: 0;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n overflow: hidden !important;\n clip: rect(1px, 1px, 1px, 1px) !important;\n border: 0 !important;\n}\n\n/* Buttons */\n.rdp-button_reset {\n appearance: none;\n position: relative;\n margin: 0;\n padding: 0;\n cursor: default;\n color: inherit;\n background: none;\n font: inherit;\n\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.rdp-button_reset:focus-visible {\n /* Make sure to reset outline only when :focus-visible is supported */\n outline: none;\n}\n\n.rdp-button {\n border: 2px solid transparent;\n}\n\n.rdp-button[disabled]:not(.rdp-day_selected) {\n opacity: 0.25;\n}\n\n.rdp-button:not([disabled]) {\n cursor: pointer;\n}\n\n.rdp-button:focus-visible:not([disabled]) {\n color: inherit;\n background-color: var(--rdp-background-color);\n border: var(--rdp-outline);\n}\n\n.rdp-button:hover:not([disabled]):not(.rdp-day_selected) {\n background-color: var(--rdp-background-color);\n}\n\n.rdp-months {\n display: flex;\n}\n\n.rdp-month {\n margin: 0 1em;\n}\n\n.rdp-month:first-child {\n margin-left: 0;\n}\n\n.rdp-month:last-child {\n margin-right: 0;\n}\n\n.rdp-table {\n margin: 0;\n max-width: calc(var(--rdp-cell-size) * 7);\n border-collapse: collapse;\n}\n\n.rdp-with_weeknumber .rdp-table {\n max-width: calc(var(--rdp-cell-size) * 8);\n border-collapse: collapse;\n}\n\n.rdp-caption {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0;\n text-align: left;\n}\n\n.rdp-multiple_months .rdp-caption {\n position: relative;\n display: block;\n text-align: center;\n}\n\n.rdp-caption_dropdowns {\n position: relative;\n display: inline-flex;\n}\n\n.rdp-caption_label {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n margin: 0;\n padding: 0 0.25em;\n white-space: nowrap;\n color: currentColor;\n border: 0;\n border: 2px solid transparent;\n font-family: inherit;\n font-size: var(--rdp-caption-font-size);\n font-weight: bold;\n}\n\n.rdp-nav {\n white-space: nowrap;\n}\n\n.rdp-multiple_months .rdp-caption_start .rdp-nav {\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n}\n\n.rdp-multiple_months .rdp-caption_end .rdp-nav {\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n}\n\n.rdp-nav_button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--rdp-cell-size);\n height: var(--rdp-cell-size);\n padding: 0.25em;\n border-radius: 100%;\n}\n\n/* ---------- */\n/* Dropdowns */\n/* ---------- */\n\n.rdp-dropdown_year,\n.rdp-dropdown_month {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.rdp-dropdown {\n appearance: none;\n position: absolute;\n z-index: 2;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n cursor: inherit;\n opacity: 0;\n border: none;\n background-color: transparent;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n.rdp-dropdown[disabled] {\n opacity: unset;\n color: unset;\n}\n\n.rdp-dropdown:focus-visible:not([disabled]) + .rdp-caption_label {\n background-color: var(--rdp-background-color);\n border: var(--rdp-outline);\n border-radius: 6px;\n}\n\n.rdp-dropdown_icon {\n margin: 0 0 0 5px;\n}\n\n.rdp-head {\n border: 0;\n}\n\n.rdp-head_row,\n.rdp-row {\n height: 100%;\n}\n\n.rdp-head_cell {\n vertical-align: middle;\n font-size: 0.75em;\n font-weight: 700;\n text-align: center;\n height: 100%;\n height: var(--rdp-cell-size);\n padding: 0;\n text-transform: uppercase;\n}\n\n.rdp-tbody {\n border: 0;\n}\n\n.rdp-tfoot {\n margin: 0.5em;\n}\n\n.rdp-cell {\n width: var(--rdp-cell-size);\n height: 100%;\n height: var(--rdp-cell-size);\n padding: 0;\n text-align: center;\n}\n\n.rdp-weeknumber {\n font-size: 0.75em;\n}\n\n.rdp-weeknumber,\n.rdp-day {\n display: flex;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--rdp-cell-size);\n max-width: var(--rdp-cell-size);\n height: var(--rdp-cell-size);\n margin: 0;\n border: 2px solid transparent;\n border-radius: 100%;\n}\n\n.rdp-day_today:not(.rdp-day_outside) {\n font-weight: bold;\n}\n\n.rdp-day_selected,\n.rdp-day_selected:focus-visible,\n.rdp-day_selected:hover {\n color: white;\n opacity: 1;\n background-color: var(--rdp-accent-color);\n}\n\n.rdp-day_outside {\n opacity: 0.5;\n}\n\n.rdp-day_selected:focus-visible {\n /* Since the background is the same use again the outline */\n outline: var(--rdp-outline);\n outline-offset: 2px;\n z-index: 1;\n}\n\n.rdp:not([dir='rtl']) .rdp-day_range_start:not(.rdp-day_range_end) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rdp:not([dir='rtl']) .rdp-day_range_end:not(.rdp-day_range_start) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.rdp[dir='rtl'] .rdp-day_range_start:not(.rdp-day_range_end) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.rdp[dir='rtl'] .rdp-day_range_end:not(.rdp-day_range_start) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rdp-day_range_end.rdp-day_range_start {\n border-radius: 100%;\n}\n\n.rdp-day_range_middle {\n border-radius: 0;\n}";
|
|
11474
|
-
styleInject(css_248z$d);
|
|
11475
|
-
|
|
11476
|
-
var css_248z$c = ".will-calendar-filter-container {\n display: flex;\n justify-content: center;\n user-select: none;\n}\n\n/* Calendar overrides */\n.will-calendar-filter-container .rdp {\n margin: 0;\n}\n\n.will-calendar-filter-container .DayPicker {\n font-size: 25px;\n}\n\n.will-calendar-filter-container .rdp-month {\n position: relative;\n}\n\n.will-calendar-filter-container .rdp-month.rdp-caption_start {\n padding-left: 70px;\n}\n\n.will-calendar-filter-container .rdp-month.rdp-caption_end {\n padding-right: 70px;\n}\n\n.will-calendar-filter-container .rdp-month .rdp-nav {\n border: 1px solid var(--will-primary);\n border-radius: 50%;\n}\n\n.will-calendar-filter-container .rdp-month .rdp-nav svg {\n color: var(--will-primary);\n}\n\n.will-calendar-filter-container .rdp-month .rdp-caption {\n position: initial;\n}\n\n.will-calendar-filter-container .rdp-month .rdp-caption > .rdp-caption_label,\n.will-calendar-filter-container .rdp-table .rdp-head {\n opacity: 0.6;\n}\n\n.will-calendar-filter-container .rdp-table {\n border-collapse: separate;\n border-spacing: 0px 2px;\n}\n\n.will-calendar-filter-container\n .rdp-button_reset.rdp-button.rdp-day.rdp-day_selected {\n background-color: var(--will-primary);\n opacity: 1;\n color: var(--will-white);\n}\n\n.will-calendar-filter-container .my-today:not(.rdp-day_selected) {\n font-weight: 700;\n opacity: 1;\n color: var(--will-primary);\n}\n\n.will-calendar-filter-container .rdp-cell {\n position: relative;\n}\n\n.will-calendar-filter-container .rdp-cell button {\n font-weight: 500;\n}\n\n.will-calendar-filter-container .rdp-cell button.booked {\n font-weight: 400;\n cursor: not-allowed;\n}\n\n.will-calendar-filter-container .rdp-cell .rdp-button[disabled] {\n color: var(--will-transparent-black);\n opacity: 1;\n}\n\n@media (max-width: 960px) {\n .will-calendar-filter-container .rdp-month .rdp-nav {\n border: none;\n border-radius: initial;\n }\n\n .will-calendar-filter-container .rdp-month.rdp-caption_start {\n padding-left: 10px;\n }\n\n .will-calendar-filter-container .rdp-month.rdp-caption_end {\n padding-right: 10px;\n }\n}\n\n/* Tooltips */\n.will-root .will-calendar-filter-container .will-calendar-tooltip,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-overlapping-date,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out-only,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-in-only {\n position: absolute;\n top: -42px;\n transform: translateX(calc(-50% + 20px));\n display: none;\n white-space: nowrap;\n z-index: 2;\n}\n\n.will-root .will-calendar-filter-container .will-calendar-tooltip > div,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out\n > div,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-overlapping-date\n > div,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out-only\n > div,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-in-only\n > div {\n background-color: white;\n position: relative;\n padding: 5px 10px;\n border: 1px solid var(--will-primary);\n border-radius: 5px;\n}\n\n.will-root .will-calendar-filter-container .will-calendar-tooltip::before,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out::before,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-overlapping-date::before,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out-only::before,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-in-only::before {\n content: '';\n width: 10px;\n height: 10px;\n border: 1px solid var(--will-primary);\n position: absolute;\n bottom: -4px;\n left: calc(50% - 5.555px);\n rotate: 45deg;\n z-index: 0;\n background-color: var(--will-white);\n}\n\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip,\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip-check-out,\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip-overlapping-date,\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip-check-out-only,\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip-check-in-only {\n display: block;\n}\n\n/* Loading spinner */\n\n.will-root .will-calendar-filter-container .rdp-months {\n position: relative;\n}\n\n.will-root .will-calendar-filter-container .will-calendar-spinner {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: var(--will-white-transparent);\n z-index: 3;\n display: none;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n}\n\n/* No active selection */\n\n.will-root .will-calendar-filter-container .no-active-selection-start,\n.will-root .will-calendar-filter-container .no-active-selection-mid,\n.will-root .will-calendar-filter-container .no-active-selection-end {\n position: initial;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-start::before,\n.will-root .will-calendar-filter-container .no-active-selection-mid::before,\n.will-root .will-calendar-filter-container .no-active-selection-end::before {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n border: 2px solid var(--will-light-grey);\n box-sizing: border-box;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-start::before {\n border-right: none;\n border-top-left-radius: 50%;\n border-bottom-left-radius: 50%;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-mid::before {\n border-right: none;\n border-left: none;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-end::before {\n border-left: none;\n border-top-right-radius: 50%;\n border-bottom-right-radius: 50%;\n}\n\n.will-root\n .will-calendar-filter-container\n .rdp-day_selected.rdp-day_range_middle.checkout-option {\n background-color: var(--will-primary-lightest);\n color: inherit;\n}\n\n/* Overlapping date */\n\n.will-root .will-calendar-filter-container .overlapping-date {\n user-select: none;\n pointer-events: none;\n}\n\n.will-root .will-calendar-filter-container .overlapping-date:hover {\n cursor: not-allowed;\n}\n\n@media (max-width: 600px) {\n /* Tooltips */\n .will-root .will-calendar-filter-container .will-calendar-tooltip,\n .will-root .will-calendar-filter-container .will-calendar-tooltip-check-out,\n .will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-overlapping-date,\n .will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out-only,\n .will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-in-only {\n top: -70px;\n white-space: wrap;\n max-width: 120px;\n }\n}\n";
|
|
11477
|
-
styleInject(css_248z$c);
|
|
11478
|
-
|
|
11479
|
-
var Calendar = forwardRef(function (_a, ref) {
|
|
11480
|
-
var _b;
|
|
11481
|
-
var selectedPath = _a.selectedPath, calendarRange = _a.calendarRange, setCalendarRange = _a.setCalendarRange, language = _a.language, disableCalendarDates = _a.disableCalendarDates, requestDates = _a.requestDates, disabledDates = _a.disabledDates, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation = _a.setUpdateCalendarMonthNavigation, updateCalendarDefaultMonth = _a.updateCalendarDefaultMonth, loadingData = _a.loadingData, showFeedback = _a.showFeedback, palette = _a.palette, setCalendarHasError = _a.setCalendarHasError, setUpdatedForSubmit = _a.setUpdatedForSubmit, rangeContext = _a.rangeContext, calendarHasError = _a.calendarHasError, autoFocus = _a.autoFocus;
|
|
11482
|
-
// Translations
|
|
11483
|
-
var t = useTranslation('common').t;
|
|
11484
|
-
var calendarContainerRef = useAutoFocus(autoFocus);
|
|
11485
|
-
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
11486
|
-
var today = startOfDay(new Date());
|
|
11487
|
-
var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
|
|
11488
|
-
var rangeContextStartDate = rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from;
|
|
11489
|
-
// Handle initial disable dates including overlapping availableDates.lastCheckOut and disabledDates.start
|
|
11490
|
-
var _c = useUpdateDisabledDates({
|
|
11491
|
-
disableCalendarDates: disableCalendarDates,
|
|
11492
|
-
calendarRange: calendarRange,
|
|
11493
|
-
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11494
|
-
updateCalendarDefaultMonth: updateCalendarDefaultMonth,
|
|
11495
|
-
}), newDisableCalendarDates = _c.newDisableCalendarDates, overlappingDate = _c.overlappingDate, lastPossibleCheckout = _c.lastPossibleCheckout;
|
|
11496
|
-
// Handle disable dates by page
|
|
11497
|
-
var disabledDatesByPage$1 = disabledDatesByPage({
|
|
11498
|
-
today: today,
|
|
11499
|
-
selectedPath: selectedPath,
|
|
11500
|
-
newDisableCalendarDates: newDisableCalendarDates,
|
|
11501
|
-
});
|
|
11502
|
-
// Handle tooltip
|
|
11503
|
-
useCalendarTooltips({
|
|
11504
|
-
showFeedback: showFeedback,
|
|
11505
|
-
});
|
|
11506
|
-
// Handle loading spinner
|
|
11507
|
-
useCalendarLoadingSpinner({
|
|
11508
|
-
loadingData: loadingData,
|
|
11509
|
-
});
|
|
11510
|
-
// Handle the date selection and availability for selection logic.
|
|
11511
|
-
var handleOnSelect = function (range) {
|
|
11512
|
-
setCalendarHasError && calendarHasError && setCalendarHasError(false);
|
|
11513
|
-
calendarSelectionRules({
|
|
11514
|
-
range: range,
|
|
11515
|
-
newDisableCalendarDates: newDisableCalendarDates,
|
|
11516
|
-
setCalendarRange: setCalendarRange,
|
|
11517
|
-
calendarRange: calendarRange,
|
|
11518
|
-
overlappingDate: overlappingDate,
|
|
11519
|
-
setCalendarHasError: setCalendarHasError,
|
|
11520
|
-
rangeContext: rangeContext,
|
|
11521
|
-
});
|
|
11522
|
-
setUpdatedForSubmit && setUpdatedForSubmit(true);
|
|
11523
|
-
};
|
|
11524
|
-
// Handle disabled dates for range context
|
|
11525
|
-
var _d = handleRangeContextDisabledDates({
|
|
11526
|
-
rangeContext: rangeContext,
|
|
11527
|
-
availableDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates,
|
|
11528
|
-
calendarRange: calendarRange,
|
|
11529
|
-
}), findFirstPossibleRangeContextCheckIn = _d.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _d.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _d.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _d.lastPossibleRangeContextCheckOut, currentSelectionAvailability = _d.currentSelectionAvailability;
|
|
11530
|
-
// Handle check for continuous selection in the range context
|
|
11531
|
-
checkForContinuousSelection({
|
|
11532
|
-
setCalendarHasError: setCalendarHasError,
|
|
11533
|
-
rangeContext: rangeContext,
|
|
11534
|
-
calendarRange: calendarRange,
|
|
11535
|
-
calendarHasError: calendarHasError,
|
|
11536
|
-
disabledDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates,
|
|
11666
|
+
// Case: If the selected dates do not overlap with the rangeContext during continuous selection,
|
|
11667
|
+
// set setCalendarHasError to true. This will display an error message and
|
|
11668
|
+
// prevent the submission of the selected dates.
|
|
11669
|
+
var checkForContinuousSelection = function (_a) {
|
|
11670
|
+
var setCalendarHasError = _a.setCalendarHasError, rangeContext = _a.rangeContext, calendarRange = _a.calendarRange, calendarHasError = _a.calendarHasError, disabledDates = _a.disabledDates;
|
|
11671
|
+
var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
|
|
11672
|
+
var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && endOfDay(calendarRange.to);
|
|
11673
|
+
var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && endOfDay(rangeContext.from);
|
|
11674
|
+
var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) && endOfDay(rangeContext.to);
|
|
11675
|
+
// Checking if rangeFrom is equal to or before rangeContextTo
|
|
11676
|
+
var startIsEqualOrBeforeRangeContextEnd = calendarRangeFrom && rangeContextTo
|
|
11677
|
+
? isBefore(calendarRangeFrom, rangeContextTo) ||
|
|
11678
|
+
isEqual(calendarRangeFrom, rangeContextTo)
|
|
11679
|
+
: null;
|
|
11680
|
+
// Checking if rangeTo is equal to or after rangeContextFrom
|
|
11681
|
+
var endIsEqualOrAfterRangeContextStart = calendarRangeTo && rangeContextFrom && rangeContextTo
|
|
11682
|
+
? isAfter(calendarRangeTo, rangeContextFrom) ||
|
|
11683
|
+
isEqual(calendarRangeTo, rangeContextFrom)
|
|
11684
|
+
: null;
|
|
11685
|
+
// Check if selection overlapping unavailable dates
|
|
11686
|
+
var selectionOverlappingUnavailableDate = disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.find(function (range) {
|
|
11687
|
+
var rangeFrom = endOfDay(range.from);
|
|
11688
|
+
var rangeTo = endOfDay(range.to);
|
|
11689
|
+
return (rangeContextFrom &&
|
|
11690
|
+
rangeContextTo &&
|
|
11691
|
+
areIntervalsOverlapping({ start: rangeContextFrom, end: rangeContextTo }, { start: rangeFrom, end: rangeTo }) &&
|
|
11692
|
+
calendarRangeFrom &&
|
|
11693
|
+
calendarRangeTo &&
|
|
11694
|
+
areIntervalsOverlapping({ start: calendarRangeFrom, end: calendarRangeTo }, { start: rangeFrom, end: rangeTo }));
|
|
11537
11695
|
});
|
|
11538
|
-
|
|
11539
|
-
if (
|
|
11540
|
-
|
|
11541
|
-
|
|
11542
|
-
|
|
11543
|
-
|
|
11544
|
-
|
|
11545
|
-
|
|
11546
|
-
|
|
11547
|
-
return [];
|
|
11548
|
-
}
|
|
11549
|
-
// Disable dates between current check-in and first possible check-out
|
|
11550
|
-
return [
|
|
11551
|
-
{
|
|
11552
|
-
from: addDays(currentSelectionAvailability.checkIn, 1),
|
|
11553
|
-
to: addDays(currentSelectionAvailability.firstCheckOut, -1),
|
|
11554
|
-
},
|
|
11555
|
-
];
|
|
11556
|
-
};
|
|
11557
|
-
var base = disabledDatesByPage$1.length
|
|
11558
|
-
? disabledDatesByPage$1
|
|
11559
|
-
: (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
|
|
11560
|
-
? disabledDates
|
|
11561
|
-
: (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [];
|
|
11562
|
-
var disabled = disabledDatesByPage$1.length
|
|
11563
|
-
? base
|
|
11564
|
-
: __spreadArray$1(__spreadArray$1(__spreadArray$1(__spreadArray$1([
|
|
11565
|
-
lastPossibleCheckout
|
|
11566
|
-
], __read(base), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false), __read(disabledInsideSelectableRange()), false);
|
|
11567
|
-
return (jsx("div", { className: "will-filter-bar-calendar", ref: ref, children: jsxs("div", { className: "will-calendar-filter-container", ref: calendarContainerRef, children: [jsx(DayPicker, { id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) { return handleOnSelect(range); }, captionLayout: "dropdown-buttons", defaultMonth: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ||
|
|
11568
|
-
selectedStartDate ||
|
|
11569
|
-
rangeContextStartDate ||
|
|
11570
|
-
(((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11571
|
-
? newDisableCalendarDates.disabledDates[0].from
|
|
11572
|
-
: today), disabled: disabled, fromMonth: today, onMonthChange: function (val) {
|
|
11573
|
-
requestDates === null || requestDates === void 0 ? void 0 : requestDates(val);
|
|
11574
|
-
setUpdateCalendarMonthNavigation === null || setUpdateCalendarMonthNavigation === void 0 ? void 0 : setUpdateCalendarMonthNavigation(function (prev) { return !prev; });
|
|
11575
|
-
}, classNames: {
|
|
11576
|
-
day_range_start: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ? 'rdp-day_range_start' : '',
|
|
11577
|
-
day_range_end: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? 'rdp-day_range_end' : '',
|
|
11578
|
-
}, modifiersClassNames: {
|
|
11579
|
-
today: 'my-today',
|
|
11580
|
-
booked: 'booked',
|
|
11581
|
-
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
11582
|
-
overlappingDate: 'overlapping-date',
|
|
11583
|
-
noActiveSelectionStart: 'no-active-selection-start',
|
|
11584
|
-
noActiveSelectionMid: 'no-active-selection-mid',
|
|
11585
|
-
noActiveSelectionEnd: 'no-active-selection-end',
|
|
11586
|
-
checkoutOptionsMid: 'rdp-day_selected rdp-day_range_middle checkout-option',
|
|
11587
|
-
checkInOnly: 'check-in-only',
|
|
11588
|
-
checkOutOnly: 'check-out-only',
|
|
11589
|
-
}, modifiers:
|
|
11590
|
-
// This function handles conditions for applying the modifiersClassNames
|
|
11591
|
-
handleCalendarModifiers({
|
|
11592
|
-
calendarRange: calendarRange,
|
|
11593
|
-
disabledDates: disabled,
|
|
11594
|
-
overlappingDate: overlappingDate,
|
|
11595
|
-
rangeContext: rangeContext,
|
|
11596
|
-
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11597
|
-
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11598
|
-
currentSelectionLastCheckoutDate: currentSelectionAvailability,
|
|
11599
|
-
}) }, updateCalendarDefaultMonth), jsx("div", { className: 'will-calendar-tooltip', children: jsx("div", { children: t('noCheckIn') }) }), jsx("div", { className: 'will-calendar-tooltip-check-out', children: jsx("div", { children: t('noCheckOut') }) }), jsx("div", { className: 'will-calendar-tooltip-overlapping-date', children: jsx("div", { children: t('checkOutOnly') }) }), jsx("div", { className: 'will-calendar-tooltip-check-in-only', children: jsx("div", { children: t('checkInOnly') }) }), jsx("div", { className: 'will-calendar-tooltip-check-out-only', children: jsx("div", { children: t('checkOutOnly') }) }), jsx("div", { className: 'will-calendar-spinner', children: jsx(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50, icon: "spinner" }) })] }) }));
|
|
11600
|
-
});
|
|
11601
|
-
|
|
11602
|
-
var parseGuests = function (_a) {
|
|
11603
|
-
var guestLabel = _a.guestLabel, guestsLabel = _a.guestsLabel, guestsPlaceholder = _a.guestsPlaceholder, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
|
|
11604
|
-
var parsedData = Object.entries(ageCategoryCounts).reduce(function (acc, _a) {
|
|
11605
|
-
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
11606
|
-
var parts = key.split('-');
|
|
11607
|
-
if (parts.length < 2)
|
|
11608
|
-
return acc;
|
|
11609
|
-
var ageCategoryId = parts[1];
|
|
11610
|
-
var ageCategory = ageCategories.find(function (c) { return c.id === ageCategoryId; });
|
|
11611
|
-
if (ageCategory && value) {
|
|
11612
|
-
return {
|
|
11613
|
-
total: acc.total + value,
|
|
11614
|
-
html: __spreadArray$1(__spreadArray$1([], __read(acc.html), false), ["".concat(value)], false),
|
|
11615
|
-
};
|
|
11696
|
+
useEffect(function () {
|
|
11697
|
+
if ((rangeContext &&
|
|
11698
|
+
calendarRangeFrom &&
|
|
11699
|
+
!startIsEqualOrBeforeRangeContextEnd) ||
|
|
11700
|
+
(rangeContext &&
|
|
11701
|
+
calendarRangeTo &&
|
|
11702
|
+
!endIsEqualOrAfterRangeContextStart) ||
|
|
11703
|
+
selectionOverlappingUnavailableDate) {
|
|
11704
|
+
!!(setCalendarHasError && !calendarHasError) && setCalendarHasError(true);
|
|
11616
11705
|
}
|
|
11617
|
-
|
|
11618
|
-
}, { total: 0, html: [] });
|
|
11619
|
-
var htmlString = parsedData.html.length > 1 ? parsedData.html.join(' + ') : '';
|
|
11620
|
-
return {
|
|
11621
|
-
content: parsedData.total
|
|
11622
|
-
? "<span class=\"will-guest-count\">".concat(parsedData.total, "</span> ").concat(parsedData.total > 1 ? guestsLabel : guestLabel).concat(htmlString ? " ( ".concat(htmlString, " )") : '')
|
|
11623
|
-
: guestsPlaceholder,
|
|
11624
|
-
data: parsedData,
|
|
11625
|
-
};
|
|
11706
|
+
});
|
|
11626
11707
|
};
|
|
11627
11708
|
|
|
11628
|
-
var
|
|
11629
|
-
var
|
|
11630
|
-
|
|
11631
|
-
|
|
11632
|
-
|
|
11633
|
-
|
|
11634
|
-
var
|
|
11635
|
-
|
|
11636
|
-
|
|
11709
|
+
var useCalendarTooltips = function (_a) {
|
|
11710
|
+
var showFeedback = _a.showFeedback;
|
|
11711
|
+
return useEffect(function () {
|
|
11712
|
+
if (typeof document === 'undefined' || !showFeedback)
|
|
11713
|
+
return;
|
|
11714
|
+
// Children
|
|
11715
|
+
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
11716
|
+
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
11717
|
+
var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
11718
|
+
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
11719
|
+
var calendarTooltipCheckInOnly = document.querySelector('.will-calendar-tooltip-check-in-only');
|
|
11720
|
+
var calendarTooltipCheckOutOnly = document.querySelector('.will-calendar-tooltip-check-out-only');
|
|
11721
|
+
// Parents
|
|
11722
|
+
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
11723
|
+
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
11724
|
+
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
11725
|
+
var calendarOverlappingDate = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
11726
|
+
var calendarCheckInOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-in-only)');
|
|
11727
|
+
var calendarCheckOutOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-out-only)');
|
|
11728
|
+
// Append children to parents
|
|
11729
|
+
var tooltipClonesCheckIn = [];
|
|
11730
|
+
var tooltipClonesCheckOut = [];
|
|
11731
|
+
var tooltipClonesCheckInOnly = [];
|
|
11732
|
+
var tooltipClonesCheckOutOnly = [];
|
|
11733
|
+
var tooltipClonesSpinner = [];
|
|
11734
|
+
var tooltipClonesOverlappingDates = [];
|
|
11735
|
+
if (calendarTooltip && calendarButtons.length > 0) {
|
|
11736
|
+
calendarButtons.forEach(function (element) {
|
|
11737
|
+
var tooltipClone = calendarTooltip.cloneNode(true);
|
|
11738
|
+
element.appendChild(tooltipClone);
|
|
11739
|
+
tooltipClonesCheckIn.push(tooltipClone);
|
|
11740
|
+
});
|
|
11637
11741
|
}
|
|
11638
|
-
|
|
11639
|
-
|
|
11640
|
-
|
|
11641
|
-
|
|
11642
|
-
|
|
11643
|
-
var FilterSections;
|
|
11644
|
-
(function (FilterSections) {
|
|
11645
|
-
FilterSections["CALENDAR"] = "calendar";
|
|
11646
|
-
FilterSections["GUESTS"] = "guests";
|
|
11647
|
-
FilterSections["CATEGORIES"] = "categories";
|
|
11648
|
-
FilterSections["LOCATIONS"] = "locations";
|
|
11649
|
-
})(FilterSections || (FilterSections = {}));
|
|
11650
|
-
var Pages;
|
|
11651
|
-
(function (Pages) {
|
|
11652
|
-
Pages["ROOMS"] = "/rooms";
|
|
11653
|
-
Pages["EVENTS"] = "/events";
|
|
11654
|
-
Pages["SALES"] = "/sales";
|
|
11655
|
-
})(Pages || (Pages = {}));
|
|
11656
|
-
|
|
11657
|
-
var calculateDropdownPosition = function (_a) {
|
|
11658
|
-
var filterSection = _a.filterSection, headerRef = _a.headerRef, locationsButtonRef = _a.locationsButtonRef, datesButtonRef = _a.datesButtonRef, guestsButtonRef = _a.guestsButtonRef, isMobile = _a.isMobile;
|
|
11659
|
-
// On mobile, don't apply any positioning - let CSS handle it naturally
|
|
11660
|
-
// Dropdowns will start from leftmost point with position: relative
|
|
11661
|
-
if (isMobile) {
|
|
11662
|
-
return {};
|
|
11663
|
-
}
|
|
11664
|
-
if (!headerRef.current)
|
|
11665
|
-
return {};
|
|
11666
|
-
var containerRect = headerRef.current.getBoundingClientRect();
|
|
11667
|
-
var containerLeft = 0;
|
|
11668
|
-
switch (filterSection) {
|
|
11669
|
-
case FilterSections.LOCATIONS:
|
|
11670
|
-
// Locations: Start from beginning, hug content
|
|
11671
|
-
if (locationsButtonRef.current) {
|
|
11672
|
-
var buttonRect = locationsButtonRef.current.getBoundingClientRect();
|
|
11673
|
-
var relativeLeft = buttonRect.left - containerRect.left;
|
|
11674
|
-
return {
|
|
11675
|
-
left: relativeLeft,
|
|
11676
|
-
right: 'auto',
|
|
11677
|
-
width: 'auto',
|
|
11678
|
-
};
|
|
11679
|
-
}
|
|
11680
|
-
break;
|
|
11681
|
-
case FilterSections.CALENDAR:
|
|
11682
|
-
// Calendar: Two months side-by-side, needs ~650-700px
|
|
11683
|
-
// Start from dates button, but push left if not enough space
|
|
11684
|
-
if (datesButtonRef.current) {
|
|
11685
|
-
var buttonRect = datesButtonRef.current.getBoundingClientRect();
|
|
11686
|
-
var relativeLeft = buttonRect.left - containerRect.left;
|
|
11687
|
-
var availableWidth = containerRect.width - relativeLeft;
|
|
11688
|
-
var calendarMinWidth = 650;
|
|
11689
|
-
if (availableWidth < calendarMinWidth) {
|
|
11690
|
-
// Not enough space, align to the right edge
|
|
11691
|
-
return {
|
|
11692
|
-
left: 'auto',
|
|
11693
|
-
right: containerLeft,
|
|
11694
|
-
width: 'auto',
|
|
11695
|
-
maxWidth: "".concat(containerRect.width, "px"),
|
|
11696
|
-
};
|
|
11697
|
-
}
|
|
11698
|
-
else {
|
|
11699
|
-
// Enough space, start from dates button
|
|
11700
|
-
return {
|
|
11701
|
-
left: relativeLeft,
|
|
11702
|
-
right: 'auto',
|
|
11703
|
-
width: 'auto',
|
|
11704
|
-
};
|
|
11705
|
-
}
|
|
11706
|
-
}
|
|
11707
|
-
break;
|
|
11708
|
-
case FilterSections.GUESTS:
|
|
11709
|
-
// Guests: Start from guests button, push left if not enough space
|
|
11710
|
-
if (guestsButtonRef.current) {
|
|
11711
|
-
var buttonRect = guestsButtonRef.current.getBoundingClientRect();
|
|
11712
|
-
var relativeLeft = buttonRect.left - containerRect.left;
|
|
11713
|
-
var availableWidth = containerRect.width - relativeLeft;
|
|
11714
|
-
var dropdownMinWidth = 350;
|
|
11715
|
-
if (availableWidth < dropdownMinWidth) {
|
|
11716
|
-
// Not enough space, align to the right
|
|
11717
|
-
return {
|
|
11718
|
-
left: 'auto',
|
|
11719
|
-
right: containerLeft,
|
|
11720
|
-
width: 'auto',
|
|
11721
|
-
maxWidth: "".concat(containerRect.width, "px"),
|
|
11722
|
-
};
|
|
11723
|
-
}
|
|
11724
|
-
else {
|
|
11725
|
-
// Enough space, start from button
|
|
11726
|
-
return {
|
|
11727
|
-
left: relativeLeft,
|
|
11728
|
-
right: 'auto',
|
|
11729
|
-
width: 'auto',
|
|
11730
|
-
};
|
|
11731
|
-
}
|
|
11732
|
-
}
|
|
11733
|
-
break;
|
|
11734
|
-
default:
|
|
11735
|
-
return {};
|
|
11736
|
-
}
|
|
11737
|
-
return {};
|
|
11738
|
-
};
|
|
11739
|
-
|
|
11740
|
-
var useFilterBar = function (_a) {
|
|
11741
|
-
var redirectUrl = _a.redirectUrl, ageCategories = _a.ageCategories, onSubmit = _a.onSubmit, tabs = _a.tabs, locations = _a.locations;
|
|
11742
|
-
var _b = __read(useState(Pages.EVENTS), 2), selectedPath = _b[0], setSelectedPath = _b[1];
|
|
11743
|
-
var _c = __read(useState(false), 2), selectedFilter = _c[0], setSelectedFilter = _c[1];
|
|
11744
|
-
var _d = __read(useState(), 2), calendarRange = _d[0], setCalendarRange = _d[1];
|
|
11745
|
-
var _e = __read(useState(false), 2), innerLoading = _e[0], setInnerLoading = _e[1];
|
|
11746
|
-
var _f = __read(useState(0), 2), categories = _f[0], setCategories = _f[1];
|
|
11747
|
-
var _g = __read(useState({}), 2), ageCategoryCounts = _g[0], setAgeCategoryCounts = _g[1];
|
|
11748
|
-
var _h = __read(useState([]), 2), selectedLocations = _h[0], setSelectedLocations = _h[1];
|
|
11749
|
-
useEffect(function () {
|
|
11750
|
-
var _a;
|
|
11751
|
-
var urlSearchParams = new URLSearchParams(window.location.search);
|
|
11752
|
-
var startDateParam = urlSearchParams.get('startDate');
|
|
11753
|
-
var endDateParam = urlSearchParams.get('endDate');
|
|
11754
|
-
// Get all locationId params from URL
|
|
11755
|
-
var locationIdParams = urlSearchParams.getAll('locationId');
|
|
11756
|
-
var ageCategoryCountsParam = JSON.parse(urlSearchParams.get('ageCategoryCounts') || '{}');
|
|
11757
|
-
var parsedCategories = parseInt(urlSearchParams.get('categories') || '0', 10);
|
|
11758
|
-
if (startDateParam && endDateParam) {
|
|
11759
|
-
setCalendarRange({
|
|
11760
|
-
from: new Date(startDateParam),
|
|
11761
|
-
to: new Date(endDateParam),
|
|
11742
|
+
if (calendarTooltipCheckOut && calendarButtonsCheckOut.length > 0) {
|
|
11743
|
+
calendarButtonsCheckOut.forEach(function (element) {
|
|
11744
|
+
var tooltipClone = calendarTooltipCheckOut.cloneNode(true);
|
|
11745
|
+
element.appendChild(tooltipClone);
|
|
11746
|
+
tooltipClonesCheckOut.push(tooltipClone);
|
|
11762
11747
|
});
|
|
11763
11748
|
}
|
|
11764
|
-
|
|
11765
|
-
|
|
11766
|
-
|
|
11767
|
-
|
|
11768
|
-
|
|
11769
|
-
return locationIdParams.includes(location.id.toString());
|
|
11749
|
+
if (calendarTooltipCheckOutOnly && calendarCheckOutOnly.length > 0) {
|
|
11750
|
+
calendarCheckOutOnly.forEach(function (element) {
|
|
11751
|
+
var tooltipClone = calendarTooltipCheckOutOnly.cloneNode(true);
|
|
11752
|
+
element.appendChild(tooltipClone);
|
|
11753
|
+
tooltipClonesCheckOutOnly.push(tooltipClone);
|
|
11770
11754
|
});
|
|
11771
|
-
setSelectedLocations(matchedLocations);
|
|
11772
11755
|
}
|
|
11773
|
-
|
|
11774
|
-
|
|
11775
|
-
|
|
11776
|
-
|
|
11777
|
-
|
|
11778
|
-
|
|
11779
|
-
var e_1, _a;
|
|
11780
|
-
var paths = [Pages.EVENTS, Pages.ROOMS, Pages.SALES];
|
|
11781
|
-
try {
|
|
11782
|
-
for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
|
|
11783
|
-
var path = paths_1_1.value;
|
|
11784
|
-
if (window.location.pathname.includes(path)) {
|
|
11785
|
-
return path;
|
|
11786
|
-
}
|
|
11787
|
-
}
|
|
11788
|
-
}
|
|
11789
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
11790
|
-
finally {
|
|
11791
|
-
try {
|
|
11792
|
-
if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);
|
|
11793
|
-
}
|
|
11794
|
-
finally { if (e_1) throw e_1.error; }
|
|
11795
|
-
}
|
|
11796
|
-
return defaultTab ? defaultTab.path : Pages.EVENTS;
|
|
11797
|
-
};
|
|
11798
|
-
var currentPath = findMatchingPath();
|
|
11799
|
-
setSelectedPath(currentPath);
|
|
11800
|
-
}, []);
|
|
11801
|
-
var updateGuestsCount = function (id, newCount) {
|
|
11802
|
-
setAgeCategoryCounts(function (prevCounts) {
|
|
11803
|
-
var _a;
|
|
11804
|
-
return (__assign$2(__assign$2({}, prevCounts), (_a = {}, _a[id] = newCount, _a)));
|
|
11805
|
-
});
|
|
11806
|
-
};
|
|
11807
|
-
var handleSelectedFilter = function (id) {
|
|
11808
|
-
setSelectedFilter(id);
|
|
11809
|
-
};
|
|
11810
|
-
var handleSubmit = function () {
|
|
11811
|
-
var e_2, _a;
|
|
11812
|
-
var newParams = {
|
|
11813
|
-
startDate: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11814
|
-
? format(calendarRange.from, 'yyyy-MM-dd')
|
|
11815
|
-
: '',
|
|
11816
|
-
endDate: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? format(calendarRange.to, 'yyyy-MM-dd') : '',
|
|
11817
|
-
//categories: categories.toString(),
|
|
11818
|
-
ageCategoryCounts: handleAgeCategoryRules({
|
|
11819
|
-
ageCategoryCounts: ageCategoryCounts,
|
|
11820
|
-
ageCategories: ageCategories,
|
|
11821
|
-
}),
|
|
11822
|
-
selectedLocations: selectedLocations
|
|
11823
|
-
.map(function (location) { return location.id.toString(); })
|
|
11824
|
-
.join(','),
|
|
11825
|
-
};
|
|
11826
|
-
var querySearchParams = new URLSearchParams();
|
|
11827
|
-
try {
|
|
11828
|
-
for (var _b = __values(Object.entries(newParams)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
11829
|
-
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
11830
|
-
if (value) {
|
|
11831
|
-
if (key === 'selectedLocations' && !!selectedLocations.length) {
|
|
11832
|
-
// Append all selected locationIds
|
|
11833
|
-
selectedLocations.forEach(function (location) {
|
|
11834
|
-
querySearchParams.append('locationId', location.id.toString());
|
|
11835
|
-
});
|
|
11836
|
-
}
|
|
11837
|
-
else {
|
|
11838
|
-
querySearchParams.append(key, value.toString());
|
|
11839
|
-
}
|
|
11840
|
-
}
|
|
11841
|
-
}
|
|
11756
|
+
if (calendarTooltipCheckInOnly && calendarCheckInOnly.length > 0) {
|
|
11757
|
+
calendarCheckInOnly.forEach(function (element) {
|
|
11758
|
+
var tooltipClone = calendarTooltipCheckInOnly.cloneNode(true);
|
|
11759
|
+
element.appendChild(tooltipClone);
|
|
11760
|
+
tooltipClonesCheckInOnly.push(tooltipClone);
|
|
11761
|
+
});
|
|
11842
11762
|
}
|
|
11843
|
-
|
|
11844
|
-
|
|
11845
|
-
|
|
11846
|
-
|
|
11847
|
-
}
|
|
11848
|
-
finally { if (e_2) throw e_2.error; }
|
|
11763
|
+
if (loadingSpinner && calendarMonthContainer) {
|
|
11764
|
+
var tooltipClone = loadingSpinner.cloneNode(true);
|
|
11765
|
+
calendarMonthContainer.appendChild(tooltipClone);
|
|
11766
|
+
tooltipClonesSpinner.push(tooltipClone);
|
|
11849
11767
|
}
|
|
11850
|
-
|
|
11851
|
-
|
|
11852
|
-
|
|
11768
|
+
if (calendarTooltipOverlappingDate && calendarOverlappingDate.length > 0) {
|
|
11769
|
+
calendarOverlappingDate.forEach(function (element) {
|
|
11770
|
+
var tooltipClone = calendarTooltipOverlappingDate.cloneNode(true);
|
|
11771
|
+
element.appendChild(tooltipClone);
|
|
11772
|
+
tooltipClonesOverlappingDates.push(tooltipClone);
|
|
11773
|
+
});
|
|
11774
|
+
}
|
|
11775
|
+
return function () {
|
|
11776
|
+
tooltipClonesCheckIn.forEach(function (clone) { return clone.remove(); });
|
|
11777
|
+
tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
|
|
11778
|
+
tooltipClonesSpinner.forEach(function (clone) { return clone.remove(); });
|
|
11779
|
+
tooltipClonesOverlappingDates.forEach(function (clone) { return clone.remove(); });
|
|
11780
|
+
tooltipClonesCheckInOnly.forEach(function (clone) { return clone.remove(); });
|
|
11781
|
+
tooltipClonesCheckOutOnly.forEach(function (clone) { return clone.remove(); });
|
|
11782
|
+
};
|
|
11783
|
+
});
|
|
11784
|
+
};
|
|
11785
|
+
|
|
11786
|
+
var useCalendarLoadingSpinner = function (_a) {
|
|
11787
|
+
var loadingData = _a.loadingData;
|
|
11788
|
+
return useEffect(function () {
|
|
11789
|
+
if (typeof document === 'undefined')
|
|
11790
|
+
return;
|
|
11791
|
+
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .rdp-months .will-calendar-spinner');
|
|
11792
|
+
if (loadingData) {
|
|
11793
|
+
if (loadingSpinner)
|
|
11794
|
+
loadingSpinner.style.display = 'flex';
|
|
11853
11795
|
}
|
|
11854
11796
|
else {
|
|
11855
|
-
|
|
11856
|
-
|
|
11857
|
-
var path = "".concat(redirectUrl).concat(selectedPath);
|
|
11858
|
-
setInnerLoading(true);
|
|
11859
|
-
window.location.href = paramString ? "".concat(path, "?").concat(paramString) : path;
|
|
11797
|
+
if (loadingSpinner)
|
|
11798
|
+
loadingSpinner.style.display = 'none';
|
|
11860
11799
|
}
|
|
11861
|
-
};
|
|
11862
|
-
var handleResetFilters = function () {
|
|
11863
|
-
setAgeCategoryCounts({});
|
|
11864
|
-
setCalendarRange(undefined);
|
|
11865
|
-
};
|
|
11866
|
-
return {
|
|
11867
|
-
selectedFilter: selectedFilter,
|
|
11868
|
-
ageCategoryCounts: ageCategoryCounts,
|
|
11869
|
-
categories: categories,
|
|
11870
|
-
calendarRange: calendarRange,
|
|
11871
|
-
selectedPath: selectedPath,
|
|
11872
|
-
innerLoading: innerLoading,
|
|
11873
|
-
selectedLocations: selectedLocations,
|
|
11874
|
-
setSelectedLocations: setSelectedLocations,
|
|
11875
|
-
setCalendarRange: setCalendarRange,
|
|
11876
|
-
setSelectedFilter: setSelectedFilter,
|
|
11877
|
-
setAgeCategoryCounts: setAgeCategoryCounts,
|
|
11878
|
-
setCategories: setCategories,
|
|
11879
|
-
handleSelectedFilter: handleSelectedFilter,
|
|
11880
|
-
handleSubmit: handleSubmit,
|
|
11881
|
-
updateGuestsCount: updateGuestsCount,
|
|
11882
|
-
handleResetFilters: handleResetFilters,
|
|
11883
|
-
setSelectedPath: setSelectedPath,
|
|
11884
|
-
};
|
|
11800
|
+
});
|
|
11885
11801
|
};
|
|
11886
|
-
|
|
11887
|
-
var
|
|
11888
|
-
var
|
|
11889
|
-
|
|
11890
|
-
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
|
|
11802
|
+
|
|
11803
|
+
var useUpdateDisabledDates = function (_a) {
|
|
11804
|
+
var disableCalendarDates = _a.disableCalendarDates, calendarRange = _a.calendarRange, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, updateCalendarDefaultMonth = _a.updateCalendarDefaultMonth;
|
|
11805
|
+
var _b = __read(useState(undefined), 2), overlappingDate = _b[0], setOverlappingDate = _b[1];
|
|
11806
|
+
var _c = __read(useState([]), 2), lastPossibleCheckout = _c[0], setLatsPossibleCheckout = _c[1];
|
|
11807
|
+
var newDisableCalendarDates = useMemo(function () {
|
|
11808
|
+
var _a;
|
|
11809
|
+
if (disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.availableDates) {
|
|
11810
|
+
var dateFormat_1 = 'dd-MM-yyyy';
|
|
11811
|
+
var disabledDates = disableCalendarDates.disabledDates;
|
|
11812
|
+
var _b = (disabledDates || []).reduce(function (acc, dateRange) {
|
|
11813
|
+
var _a, _b;
|
|
11814
|
+
var formattedFromDate = format(dateRange.from, dateFormat_1);
|
|
11815
|
+
var formattedToDate = format(dateRange.to, dateFormat_1);
|
|
11816
|
+
var hasTwoOverlappingDates = (_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.some(function (item) {
|
|
11817
|
+
return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
|
|
11818
|
+
format(item.lastCheckOut, dateFormat_1) === formattedToDate;
|
|
11819
|
+
});
|
|
11820
|
+
var hasOneOverlappingDate = (_b = disableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.some(function (item) {
|
|
11821
|
+
return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
|
|
11822
|
+
format(item.lastCheckOut, dateFormat_1) !== formattedToDate;
|
|
11823
|
+
});
|
|
11824
|
+
if (hasTwoOverlappingDates) {
|
|
11825
|
+
acc.newOverlappingDates.push(dateRange);
|
|
11826
|
+
}
|
|
11827
|
+
else if (hasOneOverlappingDate) {
|
|
11828
|
+
acc.newOverlappingDates.push(dateRange);
|
|
11829
|
+
acc.updatedDisabledDates.push(__assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) }));
|
|
11830
|
+
}
|
|
11831
|
+
else {
|
|
11832
|
+
acc.updatedDisabledDates.push(dateRange);
|
|
11896
11833
|
}
|
|
11834
|
+
return acc;
|
|
11835
|
+
}, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _b.updatedDisabledDates, newOverlappingDates = _b.newOverlappingDates;
|
|
11836
|
+
// Find last possible checkout ( disable all dates after the last possible checkout )
|
|
11837
|
+
var lastPossibleCheckoutDate = (_a = disableCalendarDates.availableDates.at(-1)) === null || _a === void 0 ? void 0 : _a.lastCheckOut;
|
|
11838
|
+
if (lastPossibleCheckoutDate) {
|
|
11839
|
+
setLatsPossibleCheckout({ after: lastPossibleCheckoutDate });
|
|
11897
11840
|
}
|
|
11898
|
-
|
|
11899
|
-
|
|
11900
|
-
|
|
11901
|
-
|
|
11902
|
-
|
|
11841
|
+
// Extract overlapping dates ( dates that are only available for checkout )
|
|
11842
|
+
if (newOverlappingDates.length) {
|
|
11843
|
+
setOverlappingDate(__spreadArray$1([], __read(newOverlappingDates), false));
|
|
11844
|
+
}
|
|
11845
|
+
var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
|
|
11846
|
+
return newDisableCalendarDates_1;
|
|
11847
|
+
}
|
|
11848
|
+
return disableCalendarDates;
|
|
11849
|
+
}, [
|
|
11850
|
+
disableCalendarDates,
|
|
11851
|
+
calendarRange,
|
|
11852
|
+
updateCalendarMonthNavigation,
|
|
11853
|
+
updateCalendarDefaultMonth,
|
|
11854
|
+
]);
|
|
11855
|
+
return { newDisableCalendarDates: newDisableCalendarDates, overlappingDate: overlappingDate, lastPossibleCheckout: lastPossibleCheckout };
|
|
11903
11856
|
};
|
|
11904
11857
|
|
|
11905
|
-
var
|
|
11906
|
-
|
|
11907
|
-
|
|
11908
|
-
|
|
11909
|
-
|
|
11910
|
-
|
|
11911
|
-
|
|
11912
|
-
|
|
11913
|
-
|
|
11914
|
-
|
|
11915
|
-
|
|
11916
|
-
|
|
11917
|
-
|
|
11918
|
-
|
|
11919
|
-
|
|
11920
|
-
|
|
11858
|
+
var css_248z$e = ".rdp {\n --rdp-cell-size: 40px;\n --rdp-caption-font-size: 18px;\n --rdp-accent-color: #0000ff;\n --rdp-background-color: #e7edff;\n --rdp-accent-color-dark: #3003e1;\n --rdp-background-color-dark: #180270;\n --rdp-outline: 2px solid var(--rdp-accent-color); /* Outline border for focused elements */\n --rdp-outline-selected: 3px solid var(--rdp-accent-color); /* Outline border for focused _and_ selected elements */\n\n margin: 1em;\n}\n\n/* Hide elements for devices that are not screen readers */\n.rdp-vhidden {\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n background: transparent;\n border: 0;\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n position: absolute !important;\n top: 0;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n overflow: hidden !important;\n clip: rect(1px, 1px, 1px, 1px) !important;\n border: 0 !important;\n}\n\n/* Buttons */\n.rdp-button_reset {\n appearance: none;\n position: relative;\n margin: 0;\n padding: 0;\n cursor: default;\n color: inherit;\n background: none;\n font: inherit;\n\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.rdp-button_reset:focus-visible {\n /* Make sure to reset outline only when :focus-visible is supported */\n outline: none;\n}\n\n.rdp-button {\n border: 2px solid transparent;\n}\n\n.rdp-button[disabled]:not(.rdp-day_selected) {\n opacity: 0.25;\n}\n\n.rdp-button:not([disabled]) {\n cursor: pointer;\n}\n\n.rdp-button:focus-visible:not([disabled]) {\n color: inherit;\n background-color: var(--rdp-background-color);\n border: var(--rdp-outline);\n}\n\n.rdp-button:hover:not([disabled]):not(.rdp-day_selected) {\n background-color: var(--rdp-background-color);\n}\n\n.rdp-months {\n display: flex;\n}\n\n.rdp-month {\n margin: 0 1em;\n}\n\n.rdp-month:first-child {\n margin-left: 0;\n}\n\n.rdp-month:last-child {\n margin-right: 0;\n}\n\n.rdp-table {\n margin: 0;\n max-width: calc(var(--rdp-cell-size) * 7);\n border-collapse: collapse;\n}\n\n.rdp-with_weeknumber .rdp-table {\n max-width: calc(var(--rdp-cell-size) * 8);\n border-collapse: collapse;\n}\n\n.rdp-caption {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0;\n text-align: left;\n}\n\n.rdp-multiple_months .rdp-caption {\n position: relative;\n display: block;\n text-align: center;\n}\n\n.rdp-caption_dropdowns {\n position: relative;\n display: inline-flex;\n}\n\n.rdp-caption_label {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n margin: 0;\n padding: 0 0.25em;\n white-space: nowrap;\n color: currentColor;\n border: 0;\n border: 2px solid transparent;\n font-family: inherit;\n font-size: var(--rdp-caption-font-size);\n font-weight: bold;\n}\n\n.rdp-nav {\n white-space: nowrap;\n}\n\n.rdp-multiple_months .rdp-caption_start .rdp-nav {\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n}\n\n.rdp-multiple_months .rdp-caption_end .rdp-nav {\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n}\n\n.rdp-nav_button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--rdp-cell-size);\n height: var(--rdp-cell-size);\n padding: 0.25em;\n border-radius: 100%;\n}\n\n/* ---------- */\n/* Dropdowns */\n/* ---------- */\n\n.rdp-dropdown_year,\n.rdp-dropdown_month {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.rdp-dropdown {\n appearance: none;\n position: absolute;\n z-index: 2;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n cursor: inherit;\n opacity: 0;\n border: none;\n background-color: transparent;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n.rdp-dropdown[disabled] {\n opacity: unset;\n color: unset;\n}\n\n.rdp-dropdown:focus-visible:not([disabled]) + .rdp-caption_label {\n background-color: var(--rdp-background-color);\n border: var(--rdp-outline);\n border-radius: 6px;\n}\n\n.rdp-dropdown_icon {\n margin: 0 0 0 5px;\n}\n\n.rdp-head {\n border: 0;\n}\n\n.rdp-head_row,\n.rdp-row {\n height: 100%;\n}\n\n.rdp-head_cell {\n vertical-align: middle;\n font-size: 0.75em;\n font-weight: 700;\n text-align: center;\n height: 100%;\n height: var(--rdp-cell-size);\n padding: 0;\n text-transform: uppercase;\n}\n\n.rdp-tbody {\n border: 0;\n}\n\n.rdp-tfoot {\n margin: 0.5em;\n}\n\n.rdp-cell {\n width: var(--rdp-cell-size);\n height: 100%;\n height: var(--rdp-cell-size);\n padding: 0;\n text-align: center;\n}\n\n.rdp-weeknumber {\n font-size: 0.75em;\n}\n\n.rdp-weeknumber,\n.rdp-day {\n display: flex;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--rdp-cell-size);\n max-width: var(--rdp-cell-size);\n height: var(--rdp-cell-size);\n margin: 0;\n border: 2px solid transparent;\n border-radius: 100%;\n}\n\n.rdp-day_today:not(.rdp-day_outside) {\n font-weight: bold;\n}\n\n.rdp-day_selected,\n.rdp-day_selected:focus-visible,\n.rdp-day_selected:hover {\n color: white;\n opacity: 1;\n background-color: var(--rdp-accent-color);\n}\n\n.rdp-day_outside {\n opacity: 0.5;\n}\n\n.rdp-day_selected:focus-visible {\n /* Since the background is the same use again the outline */\n outline: var(--rdp-outline);\n outline-offset: 2px;\n z-index: 1;\n}\n\n.rdp:not([dir='rtl']) .rdp-day_range_start:not(.rdp-day_range_end) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rdp:not([dir='rtl']) .rdp-day_range_end:not(.rdp-day_range_start) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.rdp[dir='rtl'] .rdp-day_range_start:not(.rdp-day_range_end) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.rdp[dir='rtl'] .rdp-day_range_end:not(.rdp-day_range_start) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rdp-day_range_end.rdp-day_range_start {\n border-radius: 100%;\n}\n\n.rdp-day_range_middle {\n border-radius: 0;\n}";
|
|
11859
|
+
styleInject(css_248z$e);
|
|
11860
|
+
|
|
11861
|
+
var css_248z$d = ".will-calendar-filter-container {\n display: flex;\n justify-content: center;\n user-select: none;\n}\n\n/* Calendar overrides */\n.will-calendar-filter-container .rdp {\n margin: 0;\n}\n\n.will-calendar-filter-container .DayPicker {\n font-size: 25px;\n}\n\n.will-calendar-filter-container .rdp-month {\n position: relative;\n}\n\n.will-calendar-filter-container .rdp-month.rdp-caption_start {\n padding-left: 70px;\n}\n\n.will-calendar-filter-container .rdp-month.rdp-caption_end {\n padding-right: 70px;\n}\n\n.will-calendar-filter-container .rdp-month .rdp-nav {\n border: 1px solid var(--will-primary);\n border-radius: 50%;\n}\n\n.will-calendar-filter-container .rdp-month .rdp-nav svg {\n color: var(--will-primary);\n}\n\n.will-calendar-filter-container .rdp-month .rdp-caption {\n position: initial;\n}\n\n.will-calendar-filter-container .rdp-month .rdp-caption > .rdp-caption_label,\n.will-calendar-filter-container .rdp-table .rdp-head {\n opacity: 0.6;\n}\n\n.will-calendar-filter-container .rdp-table {\n border-collapse: separate;\n border-spacing: 0px 2px;\n}\n\n.will-calendar-filter-container\n .rdp-button_reset.rdp-button.rdp-day.rdp-day_selected {\n background-color: var(--will-primary);\n opacity: 1;\n color: var(--will-white);\n}\n\n.will-calendar-filter-container .my-today:not(.rdp-day_selected) {\n font-weight: 700;\n opacity: 1;\n color: var(--will-primary);\n}\n\n.will-calendar-filter-container .rdp-cell {\n position: relative;\n}\n\n.will-calendar-filter-container .rdp-cell button {\n font-weight: 500;\n}\n\n.will-calendar-filter-container .rdp-cell button.booked {\n font-weight: 400;\n cursor: not-allowed;\n}\n\n.will-calendar-filter-container .rdp-cell .rdp-button[disabled] {\n color: var(--will-transparent-black);\n opacity: 1;\n}\n\n@media (max-width: 960px) {\n .will-calendar-filter-container .rdp-month .rdp-nav {\n border: none;\n border-radius: initial;\n }\n\n .will-calendar-filter-container .rdp-month.rdp-caption_start {\n padding-left: 10px;\n }\n\n .will-calendar-filter-container .rdp-month.rdp-caption_end {\n padding-right: 10px;\n }\n}\n\n/* Tooltips */\n.will-root .will-calendar-filter-container .will-calendar-tooltip,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-overlapping-date,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out-only,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-in-only {\n position: absolute;\n top: -42px;\n transform: translateX(calc(-50% + 20px));\n display: none;\n white-space: nowrap;\n z-index: 2;\n}\n\n.will-root .will-calendar-filter-container .will-calendar-tooltip > div,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out\n > div,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-overlapping-date\n > div,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out-only\n > div,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-in-only\n > div {\n background-color: white;\n position: relative;\n padding: 5px 10px;\n border: 1px solid var(--will-primary);\n border-radius: 5px;\n}\n\n.will-root .will-calendar-filter-container .will-calendar-tooltip::before,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out::before,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-overlapping-date::before,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out-only::before,\n.will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-in-only::before {\n content: '';\n width: 10px;\n height: 10px;\n border: 1px solid var(--will-primary);\n position: absolute;\n bottom: -4px;\n left: calc(50% - 5.555px);\n rotate: 45deg;\n z-index: 0;\n background-color: var(--will-white);\n}\n\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip,\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip-check-out,\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip-overlapping-date,\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip-check-out-only,\n.will-root\n .will-calendar-filter-container\n .rdp-cell:hover\n .will-calendar-tooltip-check-in-only {\n display: block;\n}\n\n/* Loading spinner */\n\n.will-root .will-calendar-filter-container .rdp-months {\n position: relative;\n}\n\n.will-root .will-calendar-filter-container .will-calendar-spinner {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: var(--will-white-transparent);\n z-index: 3;\n display: none;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n}\n\n/* No active selection */\n\n.will-root .will-calendar-filter-container .no-active-selection-start,\n.will-root .will-calendar-filter-container .no-active-selection-mid,\n.will-root .will-calendar-filter-container .no-active-selection-end {\n position: initial;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-start::before,\n.will-root .will-calendar-filter-container .no-active-selection-mid::before,\n.will-root .will-calendar-filter-container .no-active-selection-end::before {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n border: 2px solid var(--will-light-grey);\n box-sizing: border-box;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-start::before {\n border-right: none;\n border-top-left-radius: 50%;\n border-bottom-left-radius: 50%;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-mid::before {\n border-right: none;\n border-left: none;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-end::before {\n border-left: none;\n border-top-right-radius: 50%;\n border-bottom-right-radius: 50%;\n}\n\n.will-root\n .will-calendar-filter-container\n .rdp-day_selected.rdp-day_range_middle.checkout-option {\n background-color: var(--will-primary-lightest);\n color: inherit;\n}\n\n/* Overlapping date */\n\n.will-root .will-calendar-filter-container .overlapping-date {\n user-select: none;\n pointer-events: none;\n}\n\n.will-root .will-calendar-filter-container .overlapping-date:hover {\n cursor: not-allowed;\n}\n\n@media (max-width: 600px) {\n /* Tooltips */\n .will-root .will-calendar-filter-container .will-calendar-tooltip,\n .will-root .will-calendar-filter-container .will-calendar-tooltip-check-out,\n .will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-overlapping-date,\n .will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-out-only,\n .will-root\n .will-calendar-filter-container\n .will-calendar-tooltip-check-in-only {\n top: -70px;\n white-space: wrap;\n max-width: 120px;\n }\n}\n";
|
|
11862
|
+
styleInject(css_248z$d);
|
|
11863
|
+
|
|
11864
|
+
var Calendar = forwardRef(function (_a, ref) {
|
|
11865
|
+
var _b;
|
|
11866
|
+
var selectedPath = _a.selectedPath, calendarRange = _a.calendarRange, setCalendarRange = _a.setCalendarRange, language = _a.language, disableCalendarDates = _a.disableCalendarDates, requestDates = _a.requestDates, disabledDates = _a.disabledDates, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation = _a.setUpdateCalendarMonthNavigation, updateCalendarDefaultMonth = _a.updateCalendarDefaultMonth, loadingData = _a.loadingData, showFeedback = _a.showFeedback, palette = _a.palette, setCalendarHasError = _a.setCalendarHasError, setUpdatedForSubmit = _a.setUpdatedForSubmit, rangeContext = _a.rangeContext, calendarHasError = _a.calendarHasError, autoFocus = _a.autoFocus;
|
|
11867
|
+
// Translations
|
|
11868
|
+
var t = useTranslation('common').t;
|
|
11869
|
+
var calendarContainerRef = useAutoFocus(autoFocus);
|
|
11870
|
+
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
11871
|
+
var today = startOfDay(new Date());
|
|
11872
|
+
var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
|
|
11873
|
+
var rangeContextStartDate = rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from;
|
|
11874
|
+
// Handle initial disable dates including overlapping availableDates.lastCheckOut and disabledDates.start
|
|
11875
|
+
var _c = useUpdateDisabledDates({
|
|
11876
|
+
disableCalendarDates: disableCalendarDates,
|
|
11877
|
+
calendarRange: calendarRange,
|
|
11878
|
+
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11879
|
+
updateCalendarDefaultMonth: updateCalendarDefaultMonth,
|
|
11880
|
+
}), newDisableCalendarDates = _c.newDisableCalendarDates, overlappingDate = _c.overlappingDate, lastPossibleCheckout = _c.lastPossibleCheckout;
|
|
11881
|
+
// Handle disable dates by page
|
|
11882
|
+
var disabledDatesByPage$1 = disabledDatesByPage({
|
|
11883
|
+
today: today,
|
|
11884
|
+
selectedPath: selectedPath,
|
|
11885
|
+
newDisableCalendarDates: newDisableCalendarDates,
|
|
11886
|
+
});
|
|
11887
|
+
// Handle tooltip
|
|
11888
|
+
useCalendarTooltips({
|
|
11889
|
+
showFeedback: showFeedback,
|
|
11890
|
+
});
|
|
11891
|
+
// Handle loading spinner
|
|
11892
|
+
useCalendarLoadingSpinner({
|
|
11893
|
+
loadingData: loadingData,
|
|
11894
|
+
});
|
|
11895
|
+
// Handle the date selection and availability for selection logic.
|
|
11896
|
+
var handleOnSelect = function (range) {
|
|
11897
|
+
setCalendarHasError && calendarHasError && setCalendarHasError(false);
|
|
11898
|
+
calendarSelectionRules({
|
|
11899
|
+
range: range,
|
|
11900
|
+
newDisableCalendarDates: newDisableCalendarDates,
|
|
11901
|
+
setCalendarRange: setCalendarRange,
|
|
11902
|
+
calendarRange: calendarRange,
|
|
11903
|
+
overlappingDate: overlappingDate,
|
|
11904
|
+
setCalendarHasError: setCalendarHasError,
|
|
11905
|
+
rangeContext: rangeContext,
|
|
11906
|
+
});
|
|
11907
|
+
setUpdatedForSubmit && setUpdatedForSubmit(true);
|
|
11908
|
+
};
|
|
11909
|
+
// Handle disabled dates for range context
|
|
11910
|
+
var _d = handleRangeContextDisabledDates({
|
|
11911
|
+
rangeContext: rangeContext,
|
|
11912
|
+
availableDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates,
|
|
11913
|
+
calendarRange: calendarRange,
|
|
11914
|
+
}), findFirstPossibleRangeContextCheckIn = _d.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _d.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _d.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _d.lastPossibleRangeContextCheckOut, currentSelectionAvailability = _d.currentSelectionAvailability;
|
|
11915
|
+
// Handle check for continuous selection in the range context
|
|
11916
|
+
checkForContinuousSelection({
|
|
11917
|
+
setCalendarHasError: setCalendarHasError,
|
|
11918
|
+
rangeContext: rangeContext,
|
|
11919
|
+
calendarRange: calendarRange,
|
|
11920
|
+
calendarHasError: calendarHasError,
|
|
11921
|
+
disabledDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates,
|
|
11922
|
+
});
|
|
11923
|
+
var disabledInsideSelectableRange = function () {
|
|
11924
|
+
if (
|
|
11925
|
+
// Range end already selected
|
|
11926
|
+
(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ||
|
|
11927
|
+
// No current check-in availability
|
|
11928
|
+
!currentSelectionAvailability ||
|
|
11929
|
+
// No gap between check-in and first possible check-out, nothing to disable
|
|
11930
|
+
addDays(currentSelectionAvailability.checkIn, 1) >=
|
|
11931
|
+
currentSelectionAvailability.firstCheckOut) {
|
|
11932
|
+
return [];
|
|
11921
11933
|
}
|
|
11922
|
-
|
|
11923
|
-
|
|
11934
|
+
// Disable dates between current check-in and first possible check-out
|
|
11935
|
+
return [
|
|
11936
|
+
{
|
|
11937
|
+
from: addDays(currentSelectionAvailability.checkIn, 1),
|
|
11938
|
+
to: addDays(currentSelectionAvailability.firstCheckOut, -1),
|
|
11939
|
+
},
|
|
11940
|
+
];
|
|
11941
|
+
};
|
|
11942
|
+
var base = disabledDatesByPage$1.length
|
|
11943
|
+
? disabledDatesByPage$1
|
|
11944
|
+
: (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
|
|
11945
|
+
? disabledDates
|
|
11946
|
+
: (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [];
|
|
11947
|
+
var disabled = disabledDatesByPage$1.length
|
|
11948
|
+
? base
|
|
11949
|
+
: __spreadArray$1(__spreadArray$1(__spreadArray$1(__spreadArray$1([
|
|
11950
|
+
lastPossibleCheckout
|
|
11951
|
+
], __read(base), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false), __read(disabledInsideSelectableRange()), false);
|
|
11952
|
+
return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
|
|
11953
|
+
React__default.createElement("div", { className: "will-calendar-filter-container", ref: calendarContainerRef },
|
|
11954
|
+
React__default.createElement(DayPicker, { key: updateCalendarDefaultMonth, id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) { return handleOnSelect(range); }, captionLayout: "dropdown-buttons", defaultMonth: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ||
|
|
11955
|
+
selectedStartDate ||
|
|
11956
|
+
rangeContextStartDate ||
|
|
11957
|
+
(((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11958
|
+
? newDisableCalendarDates.disabledDates[0].from
|
|
11959
|
+
: today), disabled: disabled, fromMonth: today, onMonthChange: function (val) {
|
|
11960
|
+
requestDates === null || requestDates === void 0 ? void 0 : requestDates(val);
|
|
11961
|
+
setUpdateCalendarMonthNavigation === null || setUpdateCalendarMonthNavigation === void 0 ? void 0 : setUpdateCalendarMonthNavigation(function (prev) { return !prev; });
|
|
11962
|
+
}, classNames: {
|
|
11963
|
+
day_range_start: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ? 'rdp-day_range_start' : '',
|
|
11964
|
+
day_range_end: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? 'rdp-day_range_end' : '',
|
|
11965
|
+
}, modifiersClassNames: {
|
|
11966
|
+
today: 'my-today',
|
|
11967
|
+
booked: 'booked',
|
|
11968
|
+
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
11969
|
+
overlappingDate: 'overlapping-date',
|
|
11970
|
+
noActiveSelectionStart: 'no-active-selection-start',
|
|
11971
|
+
noActiveSelectionMid: 'no-active-selection-mid',
|
|
11972
|
+
noActiveSelectionEnd: 'no-active-selection-end',
|
|
11973
|
+
checkoutOptionsMid: 'rdp-day_selected rdp-day_range_middle checkout-option',
|
|
11974
|
+
checkInOnly: 'check-in-only',
|
|
11975
|
+
checkOutOnly: 'check-out-only',
|
|
11976
|
+
}, modifiers:
|
|
11977
|
+
// This function handles conditions for applying the modifiersClassNames
|
|
11978
|
+
handleCalendarModifiers({
|
|
11979
|
+
calendarRange: calendarRange,
|
|
11980
|
+
disabledDates: disabled,
|
|
11981
|
+
overlappingDate: overlappingDate,
|
|
11982
|
+
rangeContext: rangeContext,
|
|
11983
|
+
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11984
|
+
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11985
|
+
currentSelectionLastCheckoutDate: currentSelectionAvailability,
|
|
11986
|
+
}) }),
|
|
11987
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
11988
|
+
React__default.createElement("div", null, t('noCheckIn'))),
|
|
11989
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
|
|
11990
|
+
React__default.createElement("div", null, t('noCheckOut'))),
|
|
11991
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
|
|
11992
|
+
React__default.createElement("div", null, t('checkOutOnly'))),
|
|
11993
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-check-in-only' },
|
|
11994
|
+
React__default.createElement("div", null, t('checkInOnly'))),
|
|
11995
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out-only' },
|
|
11996
|
+
React__default.createElement("div", null, t('checkOutOnly'))),
|
|
11997
|
+
React__default.createElement("div", { className: 'will-calendar-spinner' },
|
|
11998
|
+
React__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50, icon: "spinner" })))));
|
|
11999
|
+
});
|
|
12000
|
+
|
|
12001
|
+
var css_248z$c = ".will-filter-section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n}\n\n.will-filter-section-title {\n font-size: 22px;\n margin: 0;\n}\n\n.will-filter-section-action {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.will-filter-section-action .will-filter-bar-close-button {\n position: relative;\n top: auto;\n right: auto;\n margin: 0;\n}\n\n@media (max-width: 960px) {\n .will-filter-section-title {\n font-size: 18px;\n }\n}\n";
|
|
12002
|
+
styleInject(css_248z$c);
|
|
12003
|
+
|
|
12004
|
+
var SectionHeader = function (_a) {
|
|
12005
|
+
var title = _a.title, action = _a.action;
|
|
12006
|
+
return (React__default.createElement("div", { className: "will-filter-section-header" },
|
|
12007
|
+
React__default.createElement("h3", { className: "will-filter-section-title" }, title),
|
|
12008
|
+
action && React__default.createElement("div", { className: "will-filter-section-action" }, action)));
|
|
11924
12009
|
};
|
|
11925
12010
|
|
|
11926
|
-
var css_248z$b = ".will-
|
|
12011
|
+
var css_248z$b = ".will-dates-filter-container {\n padding: 0 16px;\n}\n";
|
|
11927
12012
|
styleInject(css_248z$b);
|
|
11928
12013
|
|
|
11929
|
-
var
|
|
11930
|
-
var
|
|
11931
|
-
return (
|
|
12014
|
+
var Dates = forwardRef(function (_a, ref) {
|
|
12015
|
+
var onClose = _a.onClose, autoFocus = _a.autoFocus, calendarRange = _a.calendarRange, setCalendarRange = _a.setCalendarRange, disableCalendarDates = _a.disableCalendarDates, selectedPath = _a.selectedPath, language = _a.language;
|
|
12016
|
+
return (React__default.createElement("div", { id: "will-filter-bar-dates", ref: ref },
|
|
12017
|
+
React__default.createElement(SectionHeader, { title: '', action: onClose && React__default.createElement(CloseButton, { handleClose: onClose }) }),
|
|
12018
|
+
React__default.createElement("div", { className: "will-dates-filter-container" },
|
|
12019
|
+
React__default.createElement(Calendar, { autoFocus: autoFocus, calendarRange: calendarRange, setCalendarRange: setCalendarRange, disableCalendarDates: disableCalendarDates, selectedPath: selectedPath, language: language }))));
|
|
11932
12020
|
});
|
|
11933
|
-
|
|
12021
|
+
Dates.displayName = 'Dates';
|
|
11934
12022
|
|
|
11935
|
-
var css_248z$a = ".will-filter-
|
|
12023
|
+
var css_248z$a = ".will-guests-filter-label,\n.will-guests-filter-count {\n font-size: 18px;\n color: var(--will-text);\n}\n\n.will-guests-filter-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.will-guests-filter-label {\n display: block;\n font-weight: 600;\n margin-bottom: 10px;\n}\n\n.will-guests-filter-inner .will-guests-filter-counter {\n display: flex;\n align-items: center;\n}\n\n.will-guests-filter-count {\n margin: 0 10px;\n min-width: 30px;\n text-align: center;\n}\n\n.will-guests-filter-counter-button {\n border-radius: 50%;\n background-color: transparent;\n border: 1px solid var(--will-grey);\n width: 30px;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 20px;\n cursor: pointer;\n color: var(--will-black);\n\n padding: 0;\n margin: 0;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.will-guests-filter-counter-button:hover {\n background-color: var(--will-onahau);\n}\n\n@media (max-width: 960px) {\n .will-guests-filter-inner {\n width: 100%;\n margin: 15px 0;\n justify-content: space-between;\n }\n}\n";
|
|
11936
12024
|
styleInject(css_248z$a);
|
|
11937
12025
|
|
|
11938
|
-
var TabButton = function (_a) {
|
|
11939
|
-
var onClick = _a.onClick, label = _a.label, active = _a.active, mode = _a.mode;
|
|
11940
|
-
return (jsx("button", { className: "will-filter-bar-tab-button ".concat(mode || 'light', " ").concat(active && 'active', " "), onClick: onClick, children: label }));
|
|
11941
|
-
};
|
|
11942
|
-
|
|
11943
|
-
var css_248z$9 = ".will-guests-filter-label,\n.will-guests-filter-count {\n font-size: 18px;\n color: var(--will-text);\n}\n\n.will-guests-filter-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.will-guests-filter-label {\n display: block;\n font-weight: 600;\n margin-bottom: 10px;\n}\n\n.will-guests-filter-inner .will-guests-filter-counter {\n display: flex;\n align-items: center;\n}\n\n.will-guests-filter-count {\n margin: 0 10px;\n min-width: 30px;\n text-align: center;\n}\n\n.will-guests-filter-counter-button {\n border-radius: 50%;\n background-color: transparent;\n border: 1px solid var(--will-grey);\n width: 30px;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 20px;\n cursor: pointer;\n color: var(--will-black);\n\n padding: 0;\n margin: 0;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.will-guests-filter-counter-button:hover {\n background-color: var(--will-onahau);\n}\n\n@media (max-width: 960px) {\n .will-guests-filter-inner {\n width: 100%;\n margin: 15px 0;\n justify-content: space-between;\n }\n}\n";
|
|
11944
|
-
styleInject(css_248z$9);
|
|
11945
|
-
|
|
11946
12026
|
var GuestCount = function (_a) {
|
|
11947
12027
|
var label = _a.label, sortOrder = _a.sortOrder, id = _a.id, updateGuestsCount = _a.updateGuestsCount, count = _a.count, minVal = _a.minVal;
|
|
11948
12028
|
useEffect(function () {
|
|
@@ -11958,77 +12038,57 @@ var GuestCount = function (_a) {
|
|
|
11958
12038
|
var handleIncrement = function () {
|
|
11959
12039
|
updateGuestsCount("guests-".concat(id), count + 1);
|
|
11960
12040
|
};
|
|
11961
|
-
return (
|
|
11962
|
-
|
|
11963
|
-
|
|
11964
|
-
|
|
11965
|
-
|
|
11966
|
-
|
|
11967
|
-
|
|
11968
|
-
|
|
11969
|
-
|
|
11970
|
-
|
|
11971
|
-
|
|
11972
|
-
|
|
11973
|
-
|
|
11974
|
-
};
|
|
11975
|
-
|
|
11976
|
-
|
|
11977
|
-
|
|
12041
|
+
return (React__default.createElement("div", { className: "will-guests-filter-inner", style: { order: "".concat(sortOrder) } },
|
|
12042
|
+
React__default.createElement("p", { className: "will-guests-filter-label" }, label),
|
|
12043
|
+
React__default.createElement("div", { className: "will-guests-filter-counter" },
|
|
12044
|
+
React__default.createElement("button", { className: "will-guests-filter-counter-button", onClick: handleDecrement, disabled: (minVal && count <= minVal) || !count, style: {
|
|
12045
|
+
cursor: (minVal && count <= minVal) || !count ? 'initial' : 'pointer',
|
|
12046
|
+
paddingBottom: '4px',
|
|
12047
|
+
opacity: (minVal && count <= minVal) || !count ? 0.4 : 1,
|
|
12048
|
+
} },
|
|
12049
|
+
React__default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
12050
|
+
React__default.createElement("path", { d: "M4 10H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }))),
|
|
12051
|
+
React__default.createElement("span", { className: "will-guests-filter-count" }, count),
|
|
12052
|
+
React__default.createElement("button", { className: "will-guests-filter-counter-button", onClick: handleIncrement },
|
|
12053
|
+
React__default.createElement("svg", { width: "15", height: "15", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
12054
|
+
React__default.createElement("path", { d: "M10 4V16M4 10H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }))))));
|
|
12055
|
+
};
|
|
12056
|
+
|
|
12057
|
+
var css_248z$9 = "#will-filter-bar-guests {\n text-align: initial;\n}\n\n.will-guests-filter-container {\n display: flex;\n flex-direction: column;\n min-width: 400px;\n gap: 20px;\n padding: 16px;\n}\n\n/**/\n.will-guest-count {\n display: inline-block;\n min-width: 10px;\n}\n";
|
|
12058
|
+
styleInject(css_248z$9);
|
|
11978
12059
|
|
|
11979
12060
|
var Guests = forwardRef(function (_a, ref) {
|
|
11980
12061
|
var ageCategories = _a.ageCategories, updateGuestsCount = _a.updateGuestsCount, ageCategoryCounts = _a.ageCategoryCounts, autoFocus = _a.autoFocus, onClose = _a.onClose;
|
|
11981
12062
|
var t = useTranslation('filterBar').t;
|
|
11982
12063
|
var containerRef = useAutoFocus(autoFocus);
|
|
11983
|
-
return (
|
|
12064
|
+
return (React__default.createElement("div", { id: "will-filter-bar-guests", ref: ref },
|
|
12065
|
+
React__default.createElement(SectionHeader, { title: t('guests.title'), action: onClose && React__default.createElement(CloseButton, { handleClose: onClose }) }),
|
|
12066
|
+
React__default.createElement("div", { className: "will-guests-filter-container", ref: containerRef }, ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.map(function (category) { return (React__default.createElement(GuestCount, { key: category.id, id: category.id, label: category.name, minVal: category.minVal, sortOrder: category.sortOrder, updateGuestsCount: updateGuestsCount, count: ageCategoryCounts["guests-".concat(category.id)] || 0 })); }))));
|
|
11984
12067
|
});
|
|
11985
12068
|
Guests.displayName = 'Guests';
|
|
11986
12069
|
|
|
11987
|
-
var css_248z$
|
|
11988
|
-
styleInject(css_248z$
|
|
11989
|
-
|
|
11990
|
-
var Divider = function () {
|
|
11991
|
-
return jsx("div", { className: "will-filter-bar-divider" });
|
|
11992
|
-
};
|
|
11993
|
-
|
|
11994
|
-
var css_248z$5 = ".will-filter-bar-categories {\n text-align: center;\n}\n\n.will-categories-filter-title {\n font-size: 16px;\n text-transform: uppercase;\n margin: 10px 0 30px 0;\n}\n\n.will-categories-filter-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 20px;\n}\n\n.will-categories-filter-inner input {\n cursor: pointer;\n margin-right: 10px;\n}\n";
|
|
11995
|
-
styleInject(css_248z$5);
|
|
11996
|
-
|
|
11997
|
-
var Categories = function (_a) {
|
|
11998
|
-
_a.categories; var setCategories = _a.setCategories;
|
|
11999
|
-
var t = useTranslation('filterBar').t;
|
|
12000
|
-
var categoriesPlaceholder = [
|
|
12001
|
-
'Weekend',
|
|
12002
|
-
'Week',
|
|
12003
|
-
'Summer camp',
|
|
12004
|
-
'Winter camp',
|
|
12005
|
-
];
|
|
12006
|
-
var _b = __read(useState(''), 2), selectedCategory = _b[0], setSelectedCategory = _b[1];
|
|
12007
|
-
var handleCategoryChange = function (selectedCategory) {
|
|
12008
|
-
setSelectedCategory(selectedCategory);
|
|
12009
|
-
setCategories(selectedCategory);
|
|
12010
|
-
};
|
|
12011
|
-
return (jsxs("div", { className: "will-filter-bar-categories", children: [jsx("h3", { className: "will-categories-filter-title", children: t('categories.label') }), jsx("div", { className: "will-categories-filter-inner", children: categoriesPlaceholder.map(function (itm, idx) { return (jsxs("div", { children: [jsx("input", { type: "radio", value: itm, checked: selectedCategory === itm, onChange: function () { return handleCategoryChange(itm); } }), jsx("span", { children: itm })] }, idx)); }) })] }));
|
|
12012
|
-
};
|
|
12013
|
-
|
|
12014
|
-
var css_248z$4 = ".will-filter-bar-locations {\n text-align: initial;\n}\n\n.will-locations-filter-container {\n display: flex;\n gap: 10px;\n flex-direction: column;\n min-width: 400px;\n padding: 16px 0;\n}\n\n@media (max-width: 960px) {\n .will-locations-filter-container {\n margin-top: 15px;\n min-width: 100%;\n }\n}\n";
|
|
12015
|
-
styleInject(css_248z$4);
|
|
12016
|
-
|
|
12017
|
-
var css_248z$3 = ".will-image-card {\n display: flex;\n gap: 20px;\n justify-content: space-between;\n align-items: center;\n padding: 8px 16px;\n cursor: pointer;\n user-select: none;\n min-height: 40px;\n}\n\n.will-image-card.is-selected {\n background-color: var(--will-transparent-lavender);\n}\n\n.will-image-card:hover {\n background-color: var(--will-transparent-lavender);\n}\n\n.will-image-card-image img {\n width: 120px;\n height: 68px;\n object-fit: cover;\n}\n";
|
|
12018
|
-
styleInject(css_248z$3);
|
|
12070
|
+
var css_248z$8 = ".will-image-card {\n display: flex;\n gap: 20px;\n justify-content: space-between;\n align-items: center;\n padding: 8px 16px;\n cursor: pointer;\n user-select: none;\n min-height: 40px;\n}\n\n.will-image-card.is-selected {\n background-color: var(--will-transparent-lavender);\n}\n\n.will-image-card:hover {\n background-color: var(--will-transparent-lavender);\n}\n\n.will-image-card-image img {\n width: 120px;\n height: 68px;\n object-fit: cover;\n}\n";
|
|
12071
|
+
styleInject(css_248z$8);
|
|
12019
12072
|
|
|
12020
12073
|
var ImageCard = forwardRef(function (_a, ref) {
|
|
12021
12074
|
var title = _a.title, description = _a.description, imageUrl = _a.imageUrl, isSelected = _a.isSelected, onClick = _a.onClick;
|
|
12022
12075
|
var ariaLabel = "".concat(title).concat(description ? ", ".concat(description) : '');
|
|
12023
|
-
return (
|
|
12076
|
+
return (React__default.createElement("div", { ref: ref, className: "will-image-card ".concat(isSelected ? 'is-selected' : ''), onClick: onClick, onKeyDown: function (e) {
|
|
12024
12077
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
12025
12078
|
e.preventDefault();
|
|
12026
12079
|
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
12027
12080
|
}
|
|
12028
|
-
}, role: "button", tabIndex: 0, "aria-pressed": isSelected, "aria-label": ariaLabel
|
|
12081
|
+
}, role: "button", tabIndex: 0, "aria-pressed": isSelected, "aria-label": ariaLabel },
|
|
12082
|
+
React__default.createElement("div", { className: "will-image-card-content" },
|
|
12083
|
+
React__default.createElement("h3", null, title),
|
|
12084
|
+
description && React__default.createElement("p", null, description)),
|
|
12085
|
+
React__default.createElement("div", { className: "will-image-card-image" }, imageUrl && React__default.createElement("img", { src: imageUrl, alt: title || 'Location image' }))));
|
|
12029
12086
|
});
|
|
12030
12087
|
ImageCard.displayName = 'ImageCard';
|
|
12031
12088
|
|
|
12089
|
+
var css_248z$7 = "#will-filter-bar-locations {\n text-align: initial;\n}\n\n.will-locations-filter-container {\n display: flex;\n gap: 10px;\n flex-direction: column;\n min-width: 400px;\n padding: 16px 0;\n}\n\n@media (max-width: 960px) {\n .will-locations-filter-container {\n margin-top: 15px;\n min-width: 100%;\n }\n}\n";
|
|
12090
|
+
styleInject(css_248z$7);
|
|
12091
|
+
|
|
12032
12092
|
var Locations = forwardRef(function (_a, ref) {
|
|
12033
12093
|
var locations = _a.locations, language = _a.language, selectedLocations = _a.selectedLocations, setSelectedLocations = _a.setSelectedLocations, autoFocus = _a.autoFocus, _b = _a.multiSelect, multiSelect = _b === void 0 ? false : _b, onClose = _a.onClose;
|
|
12034
12094
|
var t = useTranslation('filterBar').t;
|
|
@@ -12057,67 +12117,84 @@ var Locations = forwardRef(function (_a, ref) {
|
|
|
12057
12117
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
12058
12118
|
}
|
|
12059
12119
|
};
|
|
12060
|
-
return (
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
|
|
12120
|
+
return (React__default.createElement("div", { id: "will-filter-bar-locations", ref: ref },
|
|
12121
|
+
React__default.createElement(SectionHeader, { title: t('locations.title'), action: onClose && React__default.createElement(CloseButton, { handleClose: onClose }) }),
|
|
12122
|
+
React__default.createElement("div", { className: "will-locations-filter-container" }, !!((locations === null || locations === void 0 ? void 0 : locations.length) && language) &&
|
|
12123
|
+
locations.map(function (location, index) {
|
|
12124
|
+
return (React__default.createElement(ImageCard, { key: location.id, ref: index === 0 ? firstCardRef : null, title: location.label, description: location.description, imageUrl: location.imageUrl, isSelected: selectedLocations.some(function (loc) { return loc.id === location.id; }), onClick: function () { return handleLocationClick(location); } }));
|
|
12125
|
+
}))));
|
|
12064
12126
|
});
|
|
12065
12127
|
Locations.displayName = 'Locations';
|
|
12066
12128
|
|
|
12067
|
-
var css_248z$
|
|
12068
|
-
styleInject(css_248z$
|
|
12129
|
+
var css_248z$6 = "#will-filter-bar-categories {\n text-align: center;\n}\n\n.will-categories-filter-title {\n font-size: 16px;\n text-transform: uppercase;\n margin: 10px 0 30px 0;\n}\n\n.will-categories-filter-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 20px;\n}\n\n.will-categories-filter-inner input {\n cursor: pointer;\n margin-right: 10px;\n}\n";
|
|
12130
|
+
styleInject(css_248z$6);
|
|
12069
12131
|
|
|
12070
|
-
var
|
|
12071
|
-
|
|
12132
|
+
var Categories = function (_a) {
|
|
12133
|
+
_a.categories; var setCategories = _a.setCategories;
|
|
12134
|
+
var t = useTranslation('filterBar').t;
|
|
12135
|
+
var categoriesPlaceholder = [
|
|
12136
|
+
'Weekend',
|
|
12137
|
+
'Week',
|
|
12138
|
+
'Summer camp',
|
|
12139
|
+
'Winter camp',
|
|
12140
|
+
];
|
|
12141
|
+
var _b = __read(useState(''), 2), selectedCategory = _b[0], setSelectedCategory = _b[1];
|
|
12142
|
+
var handleCategoryChange = function (selectedCategory) {
|
|
12143
|
+
setSelectedCategory(selectedCategory);
|
|
12144
|
+
setCategories(selectedCategory);
|
|
12145
|
+
};
|
|
12146
|
+
return (React__default.createElement("div", { id: "will-filter-bar-categories" },
|
|
12147
|
+
React__default.createElement("h3", { className: "will-categories-filter-title" }, t('categories.label')),
|
|
12148
|
+
React__default.createElement("div", { className: "will-categories-filter-inner" }, categoriesPlaceholder.map(function (itm, idx) { return (React__default.createElement("div", { key: idx },
|
|
12149
|
+
React__default.createElement("input", { type: "radio", value: itm, checked: selectedCategory === itm, onChange: function () { return handleCategoryChange(itm); } }),
|
|
12150
|
+
React__default.createElement("span", null, itm))); }))));
|
|
12151
|
+
};
|
|
12152
|
+
Categories.displayName = 'Categories';
|
|
12072
12153
|
|
|
12073
|
-
var
|
|
12074
|
-
|
|
12075
|
-
return (jsxs("div", { className: "will-filter-bar-dates", ref: ref, children: [jsx(FilterSectionHeader, { title: '', action: onClose && jsx(CloseButton, { handleClose: onClose }) }), jsx("div", { className: "will-dates-filter-container", children: jsx(Calendar, { autoFocus: autoFocus, calendarRange: calendarRange, setCalendarRange: setCalendarRange, disableCalendarDates: disableCalendarDates, selectedPath: selectedPath, language: language, ref: filtersRef }) })] }));
|
|
12076
|
-
});
|
|
12077
|
-
Dates.displayName = 'Dates';
|
|
12154
|
+
var css_248z$5 = ".will-filter-bar-panels {\n background-color: var(--will-white);\n min-height: 100px;\n position: absolute;\n top: 125px;\n z-index: 111;\n border-radius: 25px;\n box-shadow: var(--will-box-shadow);\n}\n\n@media (max-width: 960px) {\n .will-root {\n width: 100%;\n min-width: auto;\n max-height: 100vh;\n z-index: 3;\n }\n\n .will-filter-bar-panels {\n margin-top: 10px;\n top: 0;\n position: relative;\n }\n}\n";
|
|
12155
|
+
styleInject(css_248z$5);
|
|
12078
12156
|
|
|
12079
|
-
function
|
|
12080
|
-
var
|
|
12081
|
-
var _c = _a.language, language = _c === void 0 ? LANGUAGE_FALLBACK : _c, _d = _a.ageCategories, ageCategories = _d === void 0 ? AGE_CATEGORIES_FALLBACK : _d, _e = _a.redirectUrl, redirectUrl = _e === void 0 ? REDIRECT_URL_FALLBACK : _e, palette = _a.palette, onSubmit = _a.onSubmit, fullWidth = _a.fullWidth, disableCalendarDates = _a.disableCalendarDates, mode = _a.mode, tabs = _a.tabs, outerLoading = _a.outerLoading, locations = _a.locations;
|
|
12082
|
-
var themePalette = useTheme({ palette: palette });
|
|
12083
|
-
// Translations
|
|
12084
|
-
useUpdateTranslations({ language: language });
|
|
12085
|
-
var t = useTranslation('filterBar').t;
|
|
12086
|
-
// Refs for SelectButtons
|
|
12087
|
-
var locationsButtonRef = useRef(null);
|
|
12088
|
-
var datesButtonRef = useRef(null);
|
|
12089
|
-
var guestsButtonRef = useRef(null);
|
|
12090
|
-
var previouslyFocusedButtonRef = useRef(null);
|
|
12091
|
-
var headerRef = useRef(null);
|
|
12092
|
-
// Dropdown positioning
|
|
12093
|
-
var _f = __read(useState({}), 2), dropdownStyle = _f[0], setDropdownStyle = _f[1];
|
|
12094
|
-
// Filters
|
|
12095
|
-
var _g = useFilterBar({
|
|
12096
|
-
redirectUrl: redirectUrl,
|
|
12097
|
-
ageCategories: ageCategories,
|
|
12098
|
-
onSubmit: onSubmit,
|
|
12099
|
-
tabs: tabs,
|
|
12100
|
-
locations: locations,
|
|
12101
|
-
}), selectedFilter = _g.selectedFilter, ageCategoryCounts = _g.ageCategoryCounts, categories = _g.categories, calendarRange = _g.calendarRange, selectedPath = _g.selectedPath, innerLoading = _g.innerLoading, selectedLocations = _g.selectedLocations, setSelectedLocations = _g.setSelectedLocations, setCalendarRange = _g.setCalendarRange, setCategories = _g.setCategories, handleSelectedFilter = _g.handleSelectedFilter, handleSubmit = _g.handleSubmit, updateGuestsCount = _g.updateGuestsCount, setSelectedPath = _g.setSelectedPath, handleResetFilters = _g.handleResetFilters;
|
|
12102
|
-
// Scroll in to view
|
|
12103
|
-
var _h = useScrollInToView({ selectedFilter: selectedFilter }), isMobile = _h.isMobile, targetFilterBarRef = _h.targetFilterBarRef;
|
|
12157
|
+
var FilterPanels = function () {
|
|
12158
|
+
var _a = useFilterBar(), categories = _a.categories, calendarRange = _a.calendarRange, selectedFilter = _a.selectedFilter, selectedPath = _a.selectedPath, ageCategoryCounts = _a.ageCategoryCounts, selectedLocations = _a.selectedLocations, mode = _a.mode, tabs = _a.tabs, disableCalendarDates = _a.disableCalendarDates, ageCategories = _a.ageCategories, locations = _a.locations, language = _a.language, isMobile = _a.isMobile, panelRef = _a.panelRef, buttonRefs = _a.buttonRefs, targetFilterBarRef = _a.targetFilterBarRef, setSelectedLocations = _a.setSelectedLocations, setCalendarRange = _a.setCalendarRange, handleSelectedFilter = _a.handleSelectedFilter, updateGuestsCount = _a.updateGuestsCount, setCategories = _a.setCategories;
|
|
12104
12159
|
// Handle close filter section
|
|
12105
12160
|
var filtersRef = useCloseFilterSection({ handleSelectedFilter: handleSelectedFilter }).filtersRef;
|
|
12106
|
-
|
|
12107
|
-
|
|
12108
|
-
|
|
12109
|
-
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12114
|
-
|
|
12115
|
-
|
|
12116
|
-
|
|
12117
|
-
|
|
12161
|
+
var localStyles = usePanelPosition({
|
|
12162
|
+
selectedFilter: selectedFilter,
|
|
12163
|
+
panelRef: panelRef,
|
|
12164
|
+
targetFilterBarRef: targetFilterBarRef,
|
|
12165
|
+
buttonRefs: buttonRefs,
|
|
12166
|
+
isMobile: isMobile,
|
|
12167
|
+
}).localStyles;
|
|
12168
|
+
var renderContent = function () {
|
|
12169
|
+
switch (selectedFilter) {
|
|
12170
|
+
case FilterSections.CALENDAR:
|
|
12171
|
+
return (React__default.createElement(Dates, { autoFocus: true, ref: filtersRef, onClose: function () { return handleSelectedFilter(false); }, calendarRange: calendarRange, setCalendarRange: setCalendarRange, disableCalendarDates: disableCalendarDates, selectedPath: selectedPath, language: language }));
|
|
12172
|
+
case FilterSections.GUESTS:
|
|
12173
|
+
return (React__default.createElement(Guests, { autoFocus: true, ref: filtersRef, ageCategories: ageCategories, ageCategoryCounts: ageCategoryCounts, updateGuestsCount: updateGuestsCount, onClose: function () { return handleSelectedFilter(false); } }));
|
|
12174
|
+
case FilterSections.CATEGORIES:
|
|
12175
|
+
return (React__default.createElement(Categories, { categories: categories, setCategories: setCategories }));
|
|
12176
|
+
case FilterSections.LOCATIONS:
|
|
12177
|
+
return (React__default.createElement(Locations, { autoFocus: true, ref: filtersRef, locations: locations === null || locations === void 0 ? void 0 : locations.data, language: language, selectedLocations: selectedLocations, setSelectedLocations: setSelectedLocations, multiSelect: locations === null || locations === void 0 ? void 0 : locations.multiSelect, onClose: function () { return handleSelectedFilter(false); } }));
|
|
12178
|
+
default:
|
|
12179
|
+
return null;
|
|
12118
12180
|
}
|
|
12119
|
-
handleSelectedFilter(filter);
|
|
12120
12181
|
};
|
|
12182
|
+
return (selectedFilter && (React__default.createElement("div", { ref: panelRef, className: "will-filter-bar-panels ".concat(mode || 'light'), style: (!tabs || tabs.length < 2) && !isMobile
|
|
12183
|
+
? { top: 66 }
|
|
12184
|
+
: __assign$2({}, localStyles) }, renderContent())));
|
|
12185
|
+
};
|
|
12186
|
+
|
|
12187
|
+
var css_248z$4 = ".will-filter-bar-controls {\n display: flex;\n justify-content: space-between;\n padding: 10px;\n position: relative;\n z-index: 222;\n border-radius: 40px;\n background-color: var(--will-white);\n}\n\n@media (max-width: 960px) {\n .will-filter-bar-controls {\n flex-direction: column;\n padding: 20px;\n border-radius: 25px;\n overflow: hidden;\n }\n}\n";
|
|
12188
|
+
styleInject(css_248z$4);
|
|
12189
|
+
|
|
12190
|
+
var FilterControls = function () {
|
|
12191
|
+
var _a;
|
|
12192
|
+
var t = useTranslation('filterBar').t;
|
|
12193
|
+
var _b = useFilterBar(), calendarRange = _b.calendarRange, selectedFilter = _b.selectedFilter, selectedPath = _b.selectedPath, ageCategoryCounts = _b.ageCategoryCounts, selectedLocations = _b.selectedLocations, mode = _b.mode, tabs = _b.tabs, ageCategories = _b.ageCategories, locations = _b.locations, innerLoading = _b.innerLoading, outerLoading = _b.outerLoading, handleSubmit = _b.handleSubmit, handleSelectedFilter = _b.handleSelectedFilter,
|
|
12194
|
+
// Refs
|
|
12195
|
+
previouslyFocusedButtonRef = _b.previouslyFocusedButtonRef, buttonRefs = _b.buttonRefs,
|
|
12196
|
+
//
|
|
12197
|
+
targetFilterBarRef = _b.targetFilterBarRef;
|
|
12121
12198
|
// Store previously focused button and restore focus when closing
|
|
12122
12199
|
useEffect(function () {
|
|
12123
12200
|
if (!selectedFilter && previouslyFocusedButtonRef.current) {
|
|
@@ -12125,8 +12202,6 @@ function FilterBar(_a) {
|
|
|
12125
12202
|
previouslyFocusedButtonRef.current = null;
|
|
12126
12203
|
}
|
|
12127
12204
|
}, [selectedFilter]);
|
|
12128
|
-
// Display component after fully loaded
|
|
12129
|
-
useAwaitRender();
|
|
12130
12205
|
// Parsed data for filter section description
|
|
12131
12206
|
var parsedDates = parseDates({ calendarRange: calendarRange });
|
|
12132
12207
|
var parsedGuests = parseGuests({
|
|
@@ -12141,47 +12216,68 @@ function FilterBar(_a) {
|
|
|
12141
12216
|
locationsPlaceholder: t('locations.placeholder'),
|
|
12142
12217
|
locationsSelectedLabel: t('locations.selected'),
|
|
12143
12218
|
});
|
|
12144
|
-
return (
|
|
12145
|
-
|
|
12146
|
-
|
|
12147
|
-
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
|
|
12155
|
-
|
|
12156
|
-
|
|
12157
|
-
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
|
|
12161
|
-
|
|
12162
|
-
|
|
12163
|
-
|
|
12164
|
-
|
|
12165
|
-
|
|
12166
|
-
|
|
12167
|
-
|
|
12168
|
-
|
|
12169
|
-
|
|
12219
|
+
return (React__default.createElement("div", { className: "will-filter-bar-controls ".concat(mode || 'light'), ref: (tabs === null || tabs === void 0 ? void 0 : tabs.length) === 1 ? targetFilterBarRef : null },
|
|
12220
|
+
!!((_a = locations === null || locations === void 0 ? void 0 : locations.data) === null || _a === void 0 ? void 0 : _a.length) && (React__default.createElement(React__default.Fragment, null,
|
|
12221
|
+
React__default.createElement(SelectButton, { ref: function (el) { return (buttonRefs.current[FilterSections.LOCATIONS] = el); }, label: t('locations.label'), description: parsedLocations, onClick: function (e) {
|
|
12222
|
+
previouslyFocusedButtonRef.current = e.currentTarget;
|
|
12223
|
+
handleSelectedFilter(FilterSections.LOCATIONS);
|
|
12224
|
+
}, active: !!selectedLocations.length, disabled: locations === null || locations === void 0 ? void 0 : locations.disabled, ariaExpanded: selectedFilter === FilterSections.LOCATIONS, ariaControls: "will-filter-bar-locations" }),
|
|
12225
|
+
React__default.createElement(Divider, null))),
|
|
12226
|
+
React__default.createElement(SelectButton, { ref: function (el) { return (buttonRefs.current[FilterSections.CALENDAR] = el); }, label: t('calendar.label'), description: parsedDates
|
|
12227
|
+
? parsedDates
|
|
12228
|
+
: selectedPath === Pages.ROOMS
|
|
12229
|
+
? t('calendar.roomsLabelPlaceholder')
|
|
12230
|
+
: t('calendar.eventsLabelPlaceholder'), onClick: function (e) {
|
|
12231
|
+
previouslyFocusedButtonRef.current = e.currentTarget;
|
|
12232
|
+
handleSelectedFilter(FilterSections.CALENDAR);
|
|
12233
|
+
}, active: !!parsedDates, ariaExpanded: selectedFilter === FilterSections.CALENDAR, ariaControls: "will-filter-bar-dates" }),
|
|
12234
|
+
selectedPath !== Pages.EVENTS && (React__default.createElement(React__default.Fragment, null,
|
|
12235
|
+
React__default.createElement(Divider, null),
|
|
12236
|
+
React__default.createElement(SelectButton, { ref: function (el) { return (buttonRefs.current[FilterSections.GUESTS] = el); }, label: t('guests.label'), description: parsedGuests.content, onClick: function (e) {
|
|
12237
|
+
previouslyFocusedButtonRef.current = e.currentTarget;
|
|
12238
|
+
handleSelectedFilter(FilterSections.GUESTS);
|
|
12239
|
+
}, active: !!parsedGuests.data.total, ariaExpanded: selectedFilter === FilterSections.GUESTS, ariaControls: "will-guests-filter" }))),
|
|
12240
|
+
React__default.createElement(SubmitButton, { onClick: handleSubmit, startIcon: React__default.createElement(FaSearch, null), label: t('common:search'), isLoading: innerLoading || outerLoading })));
|
|
12241
|
+
};
|
|
12242
|
+
|
|
12243
|
+
var css_248z$3 = ".will-filter-bar-tabs {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n z-index: 222;\n background: transparent;\n padding: 10px;\n gap: 10px;\n}\n";
|
|
12244
|
+
styleInject(css_248z$3);
|
|
12245
|
+
|
|
12246
|
+
var FilterTabs = function () {
|
|
12247
|
+
var t = useTranslation('filterBar').t;
|
|
12248
|
+
var _a = useFilterBar(), selectedPath = _a.selectedPath, mode = _a.mode, tabs = _a.tabs, handleSelectedFilter = _a.handleSelectedFilter, setSelectedPath = _a.setSelectedPath, handleResetFilters = _a.handleResetFilters,
|
|
12249
|
+
//
|
|
12250
|
+
targetFilterBarRef = _a.targetFilterBarRef;
|
|
12251
|
+
return (tabs &&
|
|
12252
|
+
tabs.length > 1 && (React__default.createElement("div", { className: "will-filter-bar-tabs", ref: targetFilterBarRef }, tabs
|
|
12253
|
+
.sort(function (a, b) { return a.order - b.order; })
|
|
12254
|
+
.map(function (tab, idx) { return (React__default.createElement(TabButton, { key: "tab-".concat(idx), label: tab.label || t("tabs.".concat(tab.path.substring(1))), onClick: function () {
|
|
12255
|
+
setSelectedPath(tab.path);
|
|
12256
|
+
handleResetFilters();
|
|
12257
|
+
handleSelectedFilter(false);
|
|
12258
|
+
}, active: selectedPath === tab.path, mode: mode })); }))));
|
|
12259
|
+
};
|
|
12260
|
+
|
|
12261
|
+
var css_248z$2 = "@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');\n\n.will-root * {\n font-family: 'Montserrat', sans-serif;\n}\n\n.will-root {\n \n box-sizing: border-box;\n font-size: 14px;\n \n color: #1E1E1E;\n \n /* Palette */\n --will-primary: #374269;\n --will-secondary: #374269;\n --will-grey: #ABA7AF;\n --will-light-grey: #C8C8C8;\n --will-white: #fff;\n --will-white-transparent: #ffffffcf;\n --will-black: #000;\n --will-onahau: #CDEEFF;\n --will-text: #5A5959;\n --will-charcoal-blue: #384265;\n --will-error: #d32f2f;\n\n /* Transparent */\n --will-transparent-black: rgba(0, 0, 0, 0.5);\n --will-transparent-white: rgba(255, 255, 255, 0.30);\n --will-transparent-lavender: rgba(171, 167, 175, 0.30);\n\n /* Color mix */\n --will-primary-lighter: color-mix(in srgb, var(--will-primary), white 50%);\n --will-primary-lightest: color-mix(in srgb, var(--will-primary), white 80%);\n\n\n /* Shadows */\n --will-box-shadow-dark: 0px 2px 12px 2px #a1a1a180;\n --will-box-shadow-light: 0px 2px 12px 2px #bcb9b980;\n\n /* Breakpoints */\n --will-lg: 1140px;\n --will-md: 960px;\n --will-sm: 600px;\n --will-xl: 1280px;\n --will-xs: 0px;\n}\n\n/* Typography */\n\n.will-root h1, h2, h3, h4, h5, h6 {\n font-weight: 700;\n} \n\n.will-root p, h1, h2, h3, h4, h5, h6, span {\n margin: 0;\n padding: 0;\n}\n\n\n/* Integration fixes */\n\n.will-root p {\n margin: 0 !important;\n}\n\n.will-root button {\n line-height: normal !important;\n}\n";
|
|
12262
|
+
styleInject(css_248z$2);
|
|
12263
|
+
|
|
12264
|
+
var css_248z$1 = ".will-root {\n z-index: 999;\n width: fit-content;\n min-width: 796px;\n max-height: 100vh;\n position: relative;\n}\n\n.will-root.is-full-width {\n width: 100%;\n min-width: auto;\n}\n\n.will-filter-bar {\n box-sizing: border-box;\n position: relative;\n}\n\n/* Common */\n\n.will-filter-bar-controls.dark,\n.will-filter-bar-panels.dark {\n box-shadow: var(--will-box-shadow-dark);\n}\n\n.will-filter-bar-controls.light,\n.will-filter-bar-panels.light {\n box-shadow: var(--will-box-shadow-light);\n}\n";
|
|
12265
|
+
styleInject(css_248z$1);
|
|
12266
|
+
|
|
12267
|
+
var FilterBar = function (_a) {
|
|
12268
|
+
var _b = _a.language, language = _b === void 0 ? LANGUAGE_FALLBACK : _b, ageCategories = _a.ageCategories, _c = _a.redirectUrl, redirectUrl = _c === void 0 ? REDIRECT_URL_FALLBACK : _c, palette = _a.palette, onSubmit = _a.onSubmit, fullWidth = _a.fullWidth, disableCalendarDates = _a.disableCalendarDates, mode = _a.mode, tabs = _a.tabs, outerLoading = _a.outerLoading, locations = _a.locations;
|
|
12269
|
+
var themePalette = useTheme({ palette: palette });
|
|
12270
|
+
// Translations
|
|
12271
|
+
useUpdateTranslations({ language: language });
|
|
12272
|
+
// Display component after fully loaded
|
|
12273
|
+
useAwaitRender();
|
|
12274
|
+
return (React__default.createElement(FilterBarProvider, { language: language, ageCategories: ageCategories, redirectUrl: redirectUrl, palette: palette, onSubmit: onSubmit, fullWidth: fullWidth, disableCalendarDates: disableCalendarDates, mode: mode, tabs: tabs, outerLoading: outerLoading, locations: locations },
|
|
12275
|
+
React__default.createElement("div", { className: "will-root ".concat(fullWidth ? 'is-full-width' : ''), style: themePalette },
|
|
12276
|
+
React__default.createElement(FilterTabs, null),
|
|
12277
|
+
React__default.createElement(FilterControls, null),
|
|
12278
|
+
React__default.createElement(FilterPanels, null))));
|
|
12279
|
+
};
|
|
12170
12280
|
////////////
|
|
12171
|
-
var AGE_CATEGORIES_FALLBACK = [
|
|
12172
|
-
{
|
|
12173
|
-
id: '1',
|
|
12174
|
-
name: 'Adults',
|
|
12175
|
-
sortOrder: 1,
|
|
12176
|
-
minVal: 0,
|
|
12177
|
-
},
|
|
12178
|
-
{
|
|
12179
|
-
id: '2',
|
|
12180
|
-
name: 'Kids',
|
|
12181
|
-
sortOrder: 2,
|
|
12182
|
-
minVal: 0,
|
|
12183
|
-
},
|
|
12184
|
-
];
|
|
12185
12281
|
var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
|
|
12186
12282
|
var LANGUAGE_FALLBACK = 'en';
|
|
12187
12283
|
|
|
@@ -12306,26 +12402,36 @@ var Footer = function (_a) {
|
|
|
12306
12402
|
var nights = nightsCount({
|
|
12307
12403
|
calendarRange: calendarRange,
|
|
12308
12404
|
});
|
|
12309
|
-
return (
|
|
12310
|
-
|
|
12311
|
-
|
|
12312
|
-
|
|
12313
|
-
|
|
12314
|
-
|
|
12315
|
-
|
|
12316
|
-
|
|
12317
|
-
|
|
12318
|
-
|
|
12319
|
-
|
|
12320
|
-
|
|
12321
|
-
|
|
12322
|
-
|
|
12323
|
-
|
|
12405
|
+
return (React__default.createElement("div", { className: "will-calendar-footer-actions-wrapper" },
|
|
12406
|
+
React__default.createElement("div", { className: "will-calendar-footer-dates" },
|
|
12407
|
+
calendarHasError ? (React__default.createElement("div", { className: "will-calendar-footer-error" }, calendarHasError &&
|
|
12408
|
+
renderCalendarErrorMessage({
|
|
12409
|
+
palette: palette,
|
|
12410
|
+
message: t("common:errors.calendarErrors.checkInAvailabilityError"),
|
|
12411
|
+
}))) : (React__default.createElement("div", null,
|
|
12412
|
+
React__default.createElement("span", null, parseDate({
|
|
12413
|
+
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from,
|
|
12414
|
+
dateFormat: 'EEEEEE d.M.yyyy',
|
|
12415
|
+
language: language,
|
|
12416
|
+
}) || t('common:checkIn')),
|
|
12417
|
+
React__default.createElement("span", { className: "will-calendar-footer-dates-separator" }, "-"),
|
|
12418
|
+
React__default.createElement("span", null, parseDate({
|
|
12419
|
+
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to,
|
|
12420
|
+
dateFormat: 'EEEEEE d.M.yyyy',
|
|
12421
|
+
language: language,
|
|
12422
|
+
}) || t('common:checkOut')))),
|
|
12423
|
+
React__default.createElement("span", { className: "will-calendar-footer-booked" }, !calendarHasError && nights
|
|
12424
|
+
? "".concat(nights, " ").concat(t("common:".concat(nights === 1 ? 'night' : 'nights')))
|
|
12425
|
+
: '')),
|
|
12426
|
+
React__default.createElement("div", { className: "will-calendar-footer-actions" },
|
|
12427
|
+
React__default.createElement(SubmitButton, { onClick: handleClearDates, disabled: !(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from), label: t("common:clearDates"), variant: "text" }))));
|
|
12324
12428
|
};
|
|
12325
12429
|
/////////
|
|
12326
12430
|
var renderCalendarErrorMessage = function (_a) {
|
|
12327
12431
|
var message = _a.message, palette = _a.palette;
|
|
12328
|
-
return (
|
|
12432
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
12433
|
+
React__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.error) || 'inherit', size: 25, icon: "warning" }),
|
|
12434
|
+
React__default.createElement("span", null, message || '')));
|
|
12329
12435
|
};
|
|
12330
12436
|
|
|
12331
12437
|
var css_248z = ".will-root .will-calendar-wrapper {\n box-shadow: var(--will-box-shadow-dark);\n border-radius: 20px;\n background-color: var(--will-white);\n position: absolute;\n top: 0;\n left: 0;\n \n}\n\n.will-root .will-calendar-wrapper .will-calendar-header,\n.will-root .will-calendar-wrapper .will-calendar-main,\n.will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px;\n}\n\n/* Header */\n\n.will-root .will-calendar-wrapper .will-calendar-header {\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid var(--will-grey);\n align-items: center;\n}\n\n/* Footer */\n\n.will-root .will-calendar-wrapper .will-calendar-footer {\n border-top: 1px solid var(--will-grey);\n}\n\n/* Footer actions */\n\n.will-root .will-calendar-wrapper .will-calendar-footer-actions-wrapper {\n display: flex;\n justify-content: space-between;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates > div {\n margin-bottom: 5px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates-separator {\n margin: 0 15px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n display: flex;\n min-height: 20.5px;\n margin-top: 10px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-error {\n display: flex;\n max-width: 80%;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-error span {\n display: inline-block;\n margin-left: 10px;\n}\n\n@media (max-width: 960px) {\n .will-root .will-calendar-wrapper {\n width: -webkit-fill-available;\n margin: 0 -6%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-header,\n .will-root .will-calendar-wrapper .will-calendar-main,\n .will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px 10px;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions-wrapper {\n flex-direction: column;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates {\n text-align: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n justify-content: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions {\n flex-direction: column;\n width: 100%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions button{\n width: 100%;\n margin-top: 10px;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-error {\n max-width: 100%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-error span {\n text-align: center;\n margin-left: 5px;\n }\n }\n\n.will-root .will-calendar-wrapper .will-calendar-header .will-filter-bar-close-button {\n position: initial;\n}";
|
|
@@ -12351,7 +12457,14 @@ function FilterCalendar(_a) {
|
|
|
12351
12457
|
var filtersRef = useCloseFilterSection({
|
|
12352
12458
|
handleSelectedFilter: setToggleCalendar,
|
|
12353
12459
|
}).filtersRef;
|
|
12354
|
-
return (
|
|
12460
|
+
return (React__default.createElement("div", { className: "will-root", style: themePalette }, toggleCalendar && (React__default.createElement("div", { className: "will-calendar-wrapper", ref: filtersRef },
|
|
12461
|
+
React__default.createElement("div", { className: "will-calendar-header" },
|
|
12462
|
+
React__default.createElement("h2", null, t('filterBar:calendar.title')),
|
|
12463
|
+
React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
12464
|
+
React__default.createElement("div", { className: "will-calendar-main" },
|
|
12465
|
+
React__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, updateCalendarMonthNavigation: updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation: setUpdateCalendarMonthNavigation, updateCalendarDefaultMonth: updateCalendarDefaultMonth, loadingData: loadingData, showFeedback: showFeedback, noActiveSelection: noActiveSelection, palette: palette, setCalendarHasError: setCalendarHasError, setUpdatedForSubmit: setUpdatedForSubmit, rangeContext: rangeContext, calendarHasError: calendarHasError })),
|
|
12466
|
+
React__default.createElement("div", { className: "will-calendar-footer" },
|
|
12467
|
+
React__default.createElement(Footer, { calendarHasError: calendarHasError, calendarRange: calendarRange, handleClearDates: handleClearDates, language: language, palette: palette }))))));
|
|
12355
12468
|
}
|
|
12356
12469
|
|
|
12357
12470
|
export { Button$1 as Button, FilterBar, FilterCalendar };
|