willba-component-library 0.3.14 → 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/components/FilterBar/FilterBar.d.ts +2 -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/index.d.ts +6 -5
- 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 +1 -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/index.d.ts +4 -2
- package/lib/index.d.ts +1 -1
- package/lib/index.esm.js +1096 -1059
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +1095 -1058
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +1095 -1058
- package/lib/index.umd.js.map +1 -1
- package/lib/themes/useTheme.d.ts +1 -1
- package/package.json +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,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default, { useState, createContext, useContext, useRef,
|
|
2
|
+
import React__default, { useState, useEffect, createContext, useContext, useRef, forwardRef, useMemo } from 'react';
|
|
3
3
|
|
|
4
4
|
/******************************************************************************
|
|
5
5
|
Copyright (c) Microsoft Corporation.
|
|
@@ -191,8 +191,8 @@ function styleInject(css, ref) {
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
var css_248z$
|
|
195
|
-
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);
|
|
196
196
|
|
|
197
197
|
/**
|
|
198
198
|
* Primary UI component for user interaction
|
|
@@ -203,440 +203,100 @@ var Button$1 = function (_a) {
|
|
|
203
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)));
|
|
204
204
|
};
|
|
205
205
|
|
|
206
|
-
function
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
console.warn(...args);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
const alreadyWarned = {};
|
|
216
|
-
function warnOnce() {
|
|
217
|
-
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
218
|
-
args[_key2] = arguments[_key2];
|
|
219
|
-
}
|
|
220
|
-
if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;
|
|
221
|
-
if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();
|
|
222
|
-
warn(...args);
|
|
223
|
-
}
|
|
224
|
-
const loadedClb = (i18n, cb) => () => {
|
|
225
|
-
if (i18n.isInitialized) {
|
|
226
|
-
cb();
|
|
227
|
-
} else {
|
|
228
|
-
const initialized = () => {
|
|
229
|
-
setTimeout(() => {
|
|
230
|
-
i18n.off('initialized', initialized);
|
|
231
|
-
}, 0);
|
|
232
|
-
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,
|
|
233
212
|
};
|
|
234
|
-
|
|
235
|
-
}
|
|
213
|
+
return themePalette;
|
|
236
214
|
};
|
|
237
|
-
function loadNamespaces(i18n, ns, cb) {
|
|
238
|
-
i18n.loadNamespaces(ns, loadedClb(i18n, cb));
|
|
239
|
-
}
|
|
240
|
-
function loadLanguages(i18n, lng, ns, cb) {
|
|
241
|
-
if (typeof ns === 'string') ns = [ns];
|
|
242
|
-
ns.forEach(n => {
|
|
243
|
-
if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);
|
|
244
|
-
});
|
|
245
|
-
i18n.loadLanguages(lng, loadedClb(i18n, cb));
|
|
246
|
-
}
|
|
247
|
-
function oldI18nextHasLoadedNamespace(ns, i18n) {
|
|
248
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
249
|
-
const lng = i18n.languages[0];
|
|
250
|
-
const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;
|
|
251
|
-
const lastLng = i18n.languages[i18n.languages.length - 1];
|
|
252
|
-
if (lng.toLowerCase() === 'cimode') return true;
|
|
253
|
-
const loadNotPending = (l, n) => {
|
|
254
|
-
const loadState = i18n.services.backendConnector.state[`${l}|${n}`];
|
|
255
|
-
return loadState === -1 || loadState === 2;
|
|
256
|
-
};
|
|
257
|
-
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;
|
|
258
|
-
if (i18n.hasResourceBundle(lng, ns)) return true;
|
|
259
|
-
if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;
|
|
260
|
-
if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
|
|
261
|
-
return false;
|
|
262
|
-
}
|
|
263
|
-
function hasLoadedNamespace(ns, i18n) {
|
|
264
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
265
|
-
if (!i18n.languages || !i18n.languages.length) {
|
|
266
|
-
warnOnce('i18n.languages were undefined or empty', i18n.languages);
|
|
267
|
-
return true;
|
|
268
|
-
}
|
|
269
|
-
const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;
|
|
270
|
-
if (!isNewerI18next) {
|
|
271
|
-
return oldI18nextHasLoadedNamespace(ns, i18n, options);
|
|
272
|
-
}
|
|
273
|
-
return i18n.hasLoadedNamespace(ns, {
|
|
274
|
-
lng: options.lng,
|
|
275
|
-
precheck: (i18nInstance, loadNotPending) => {
|
|
276
|
-
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
215
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
'>': '>',
|
|
289
|
-
''': "'",
|
|
290
|
-
''': "'",
|
|
291
|
-
'"': '"',
|
|
292
|
-
'"': '"',
|
|
293
|
-
' ': ' ',
|
|
294
|
-
' ': ' ',
|
|
295
|
-
'©': '©',
|
|
296
|
-
'©': '©',
|
|
297
|
-
'®': '®',
|
|
298
|
-
'®': '®',
|
|
299
|
-
'…': '…',
|
|
300
|
-
'…': '…',
|
|
301
|
-
'/': '/',
|
|
302
|
-
'/': '/'
|
|
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;
|
|
303
223
|
};
|
|
304
|
-
const unescapeHtmlEntity = m => htmlEntities[m];
|
|
305
|
-
const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);
|
|
306
224
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
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;
|
|
316
236
|
};
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
...defaultOptions$1,
|
|
321
|
-
...options
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
function getDefaults() {
|
|
325
|
-
return defaultOptions$1;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
let i18nInstance;
|
|
329
|
-
function setI18n(instance) {
|
|
330
|
-
i18nInstance = instance;
|
|
331
|
-
}
|
|
332
|
-
function getI18n() {
|
|
333
|
-
return i18nInstance;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
const initReactI18next = {
|
|
337
|
-
type: '3rdParty',
|
|
338
|
-
init(instance) {
|
|
339
|
-
setDefaults(instance.options.react);
|
|
340
|
-
setI18n(instance);
|
|
341
|
-
}
|
|
237
|
+
const makeString = object => {
|
|
238
|
+
if (object == null) return '';
|
|
239
|
+
return '' + object;
|
|
342
240
|
};
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
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;
|
|
348
262
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
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;
|
|
353
277
|
}
|
|
354
|
-
|
|
355
|
-
|
|
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
|
+
}
|
|
356
288
|
}
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
const usePrevious = (value, ignore) => {
|
|
360
|
-
const ref = useRef();
|
|
361
|
-
useEffect(() => {
|
|
362
|
-
ref.current = ignore ? ref.current : value;
|
|
363
|
-
}, [value, ignore]);
|
|
364
|
-
return ref.current;
|
|
289
|
+
last.obj[`${last.k}.${e}`] = newValue;
|
|
365
290
|
};
|
|
366
|
-
|
|
367
|
-
let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
291
|
+
const pushPath = (object, path, newValue, concat) => {
|
|
368
292
|
const {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
|
|
377
|
-
if (!i18n) {
|
|
378
|
-
warnOnce('You will need to pass in an i18next instance by using initReactI18next');
|
|
379
|
-
const notReadyT = (k, optsOrDefaultValue) => {
|
|
380
|
-
if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;
|
|
381
|
-
if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;
|
|
382
|
-
return Array.isArray(k) ? k[k.length - 1] : k;
|
|
383
|
-
};
|
|
384
|
-
const retNotReady = [notReadyT, {}, false];
|
|
385
|
-
retNotReady.t = notReadyT;
|
|
386
|
-
retNotReady.i18n = {};
|
|
387
|
-
retNotReady.ready = false;
|
|
388
|
-
return retNotReady;
|
|
389
|
-
}
|
|
390
|
-
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.');
|
|
391
|
-
const i18nOptions = {
|
|
392
|
-
...getDefaults(),
|
|
393
|
-
...i18n.options.react,
|
|
394
|
-
...props
|
|
395
|
-
};
|
|
396
|
-
const {
|
|
397
|
-
useSuspense,
|
|
398
|
-
keyPrefix
|
|
399
|
-
} = i18nOptions;
|
|
400
|
-
let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
|
|
401
|
-
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];
|
|
402
|
-
if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);
|
|
403
|
-
const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));
|
|
404
|
-
function getT() {
|
|
405
|
-
return i18n.getFixedT(props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);
|
|
406
|
-
}
|
|
407
|
-
const [t, setT] = useState(getT);
|
|
408
|
-
let joinedNS = namespaces.join();
|
|
409
|
-
if (props.lng) joinedNS = `${props.lng}${joinedNS}`;
|
|
410
|
-
const previousJoinedNS = usePrevious(joinedNS);
|
|
411
|
-
const isMounted = useRef(true);
|
|
412
|
-
useEffect(() => {
|
|
413
|
-
const {
|
|
414
|
-
bindI18n,
|
|
415
|
-
bindI18nStore
|
|
416
|
-
} = i18nOptions;
|
|
417
|
-
isMounted.current = true;
|
|
418
|
-
if (!ready && !useSuspense) {
|
|
419
|
-
if (props.lng) {
|
|
420
|
-
loadLanguages(i18n, props.lng, namespaces, () => {
|
|
421
|
-
if (isMounted.current) setT(getT);
|
|
422
|
-
});
|
|
423
|
-
} else {
|
|
424
|
-
loadNamespaces(i18n, namespaces, () => {
|
|
425
|
-
if (isMounted.current) setT(getT);
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
|
|
430
|
-
setT(getT);
|
|
431
|
-
}
|
|
432
|
-
function boundReset() {
|
|
433
|
-
if (isMounted.current) setT(getT);
|
|
434
|
-
}
|
|
435
|
-
if (bindI18n && i18n) i18n.on(bindI18n, boundReset);
|
|
436
|
-
if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);
|
|
437
|
-
return () => {
|
|
438
|
-
isMounted.current = false;
|
|
439
|
-
if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));
|
|
440
|
-
if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));
|
|
441
|
-
};
|
|
442
|
-
}, [i18n, joinedNS]);
|
|
443
|
-
const isInitial = useRef(true);
|
|
444
|
-
useEffect(() => {
|
|
445
|
-
if (isMounted.current && !isInitial.current) {
|
|
446
|
-
setT(getT);
|
|
447
|
-
}
|
|
448
|
-
isInitial.current = false;
|
|
449
|
-
}, [i18n, keyPrefix]);
|
|
450
|
-
const ret = [t, i18n, ready];
|
|
451
|
-
ret.t = t;
|
|
452
|
-
ret.i18n = i18n;
|
|
453
|
-
ret.ready = ready;
|
|
454
|
-
if (ready) return ret;
|
|
455
|
-
if (!ready && !useSuspense) return ret;
|
|
456
|
-
throw new Promise(resolve => {
|
|
457
|
-
if (props.lng) {
|
|
458
|
-
loadLanguages(i18n, props.lng, namespaces, () => resolve());
|
|
459
|
-
} else {
|
|
460
|
-
loadNamespaces(i18n, namespaces, () => resolve());
|
|
461
|
-
}
|
|
462
|
-
});
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
var DefaultContext = {
|
|
466
|
-
color: undefined,
|
|
467
|
-
size: undefined,
|
|
468
|
-
className: undefined,
|
|
469
|
-
style: undefined,
|
|
470
|
-
attr: undefined
|
|
471
|
-
};
|
|
472
|
-
var IconContext = React__default.createContext && React__default.createContext(DefaultContext);
|
|
473
|
-
|
|
474
|
-
var __assign$1 = undefined && undefined.__assign || function () {
|
|
475
|
-
__assign$1 = Object.assign || function (t) {
|
|
476
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
477
|
-
s = arguments[i];
|
|
478
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
479
|
-
}
|
|
480
|
-
return t;
|
|
481
|
-
};
|
|
482
|
-
return __assign$1.apply(this, arguments);
|
|
483
|
-
};
|
|
484
|
-
var __rest$1 = undefined && undefined.__rest || function (s, e) {
|
|
485
|
-
var t = {};
|
|
486
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
487
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
488
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
489
|
-
}
|
|
490
|
-
return t;
|
|
491
|
-
};
|
|
492
|
-
function Tree2Element(tree) {
|
|
493
|
-
return tree && tree.map(function (node, i) {
|
|
494
|
-
return React__default.createElement(node.tag, __assign$1({
|
|
495
|
-
key: i
|
|
496
|
-
}, node.attr), Tree2Element(node.child));
|
|
497
|
-
});
|
|
498
|
-
}
|
|
499
|
-
function GenIcon(data) {
|
|
500
|
-
// eslint-disable-next-line react/display-name
|
|
501
|
-
return function (props) {
|
|
502
|
-
return React__default.createElement(IconBase, __assign$1({
|
|
503
|
-
attr: __assign$1({}, data.attr)
|
|
504
|
-
}, props), Tree2Element(data.child));
|
|
505
|
-
};
|
|
506
|
-
}
|
|
507
|
-
function IconBase(props) {
|
|
508
|
-
var elem = function (conf) {
|
|
509
|
-
var attr = props.attr,
|
|
510
|
-
size = props.size,
|
|
511
|
-
title = props.title,
|
|
512
|
-
svgProps = __rest$1(props, ["attr", "size", "title"]);
|
|
513
|
-
var computedSize = size || conf.size || "1em";
|
|
514
|
-
var className;
|
|
515
|
-
if (conf.className) className = conf.className;
|
|
516
|
-
if (props.className) className = (className ? className + " " : "") + props.className;
|
|
517
|
-
return React__default.createElement("svg", __assign$1({
|
|
518
|
-
stroke: "currentColor",
|
|
519
|
-
fill: "currentColor",
|
|
520
|
-
strokeWidth: "0"
|
|
521
|
-
}, conf.attr, attr, svgProps, {
|
|
522
|
-
className: className,
|
|
523
|
-
style: __assign$1(__assign$1({
|
|
524
|
-
color: props.color || conf.color
|
|
525
|
-
}, conf.style), props.style),
|
|
526
|
-
height: computedSize,
|
|
527
|
-
width: computedSize,
|
|
528
|
-
xmlns: "http://www.w3.org/2000/svg"
|
|
529
|
-
}), title && React__default.createElement("title", null, title), props.children);
|
|
530
|
-
};
|
|
531
|
-
return IconContext !== undefined ? React__default.createElement(IconContext.Consumer, null, function (conf) {
|
|
532
|
-
return elem(conf);
|
|
533
|
-
}) : elem(DefaultContext);
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
// THIS FILE IS AUTO GENERATED
|
|
537
|
-
function FaSearch (props) {
|
|
538
|
-
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);
|
|
539
|
-
}function FaSpinner (props) {
|
|
540
|
-
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);
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
function useTheme(_a) {
|
|
544
|
-
var palette = _a.palette;
|
|
545
|
-
var themePalette = {
|
|
546
|
-
'--will-primary': palette === null || palette === void 0 ? void 0 : palette.primary,
|
|
547
|
-
'--will-secondary': palette === null || palette === void 0 ? void 0 : palette.secondary,
|
|
548
|
-
'--will-error': palette === null || palette === void 0 ? void 0 : palette.error,
|
|
549
|
-
};
|
|
550
|
-
return themePalette;
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
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";
|
|
554
|
-
styleInject(css_248z$g);
|
|
555
|
-
|
|
556
|
-
var useAwaitRender = function () {
|
|
557
|
-
var _a = __read(useState(false), 2), initialRenderComplete = _a[0], setInitialRenderComplete = _a[1];
|
|
558
|
-
useEffect(function () {
|
|
559
|
-
setInitialRenderComplete(true);
|
|
560
|
-
}, []);
|
|
561
|
-
if (!initialRenderComplete)
|
|
562
|
-
return null;
|
|
563
|
-
};
|
|
564
|
-
|
|
565
|
-
const isString = obj => typeof obj === 'string';
|
|
566
|
-
const defer = () => {
|
|
567
|
-
let res;
|
|
568
|
-
let rej;
|
|
569
|
-
const promise = new Promise((resolve, reject) => {
|
|
570
|
-
res = resolve;
|
|
571
|
-
rej = reject;
|
|
572
|
-
});
|
|
573
|
-
promise.resolve = res;
|
|
574
|
-
promise.reject = rej;
|
|
575
|
-
return promise;
|
|
576
|
-
};
|
|
577
|
-
const makeString = object => {
|
|
578
|
-
if (object == null) return '';
|
|
579
|
-
return '' + object;
|
|
580
|
-
};
|
|
581
|
-
const copy = (a, s, t) => {
|
|
582
|
-
a.forEach(m => {
|
|
583
|
-
if (s[m]) t[m] = s[m];
|
|
584
|
-
});
|
|
585
|
-
};
|
|
586
|
-
const lastOfPathSeparatorRegExp = /###/g;
|
|
587
|
-
const cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;
|
|
588
|
-
const canNotTraverseDeeper = object => !object || isString(object);
|
|
589
|
-
const getLastOfPath = (object, path, Empty) => {
|
|
590
|
-
const stack = !isString(path) ? path : path.split('.');
|
|
591
|
-
let stackIndex = 0;
|
|
592
|
-
while (stackIndex < stack.length - 1) {
|
|
593
|
-
if (canNotTraverseDeeper(object)) return {};
|
|
594
|
-
const key = cleanKey(stack[stackIndex]);
|
|
595
|
-
if (!object[key] && Empty) object[key] = new Empty();
|
|
596
|
-
if (Object.prototype.hasOwnProperty.call(object, key)) {
|
|
597
|
-
object = object[key];
|
|
598
|
-
} else {
|
|
599
|
-
object = {};
|
|
600
|
-
}
|
|
601
|
-
++stackIndex;
|
|
602
|
-
}
|
|
603
|
-
if (canNotTraverseDeeper(object)) return {};
|
|
604
|
-
return {
|
|
605
|
-
obj: object,
|
|
606
|
-
k: cleanKey(stack[stackIndex])
|
|
607
|
-
};
|
|
608
|
-
};
|
|
609
|
-
const setPath = (object, path, newValue) => {
|
|
610
|
-
const {
|
|
611
|
-
obj,
|
|
612
|
-
k
|
|
613
|
-
} = getLastOfPath(object, path, Object);
|
|
614
|
-
if (obj !== undefined || path.length === 1) {
|
|
615
|
-
obj[k] = newValue;
|
|
616
|
-
return;
|
|
617
|
-
}
|
|
618
|
-
let e = path[path.length - 1];
|
|
619
|
-
let p = path.slice(0, path.length - 1);
|
|
620
|
-
let last = getLastOfPath(object, p, Object);
|
|
621
|
-
while (last.obj === undefined && p.length) {
|
|
622
|
-
e = `${p[p.length - 1]}.${e}`;
|
|
623
|
-
p = p.slice(0, p.length - 1);
|
|
624
|
-
last = getLastOfPath(object, p, Object);
|
|
625
|
-
if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {
|
|
626
|
-
last.obj = undefined;
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
last.obj[`${last.k}.${e}`] = newValue;
|
|
630
|
-
};
|
|
631
|
-
const pushPath = (object, path, newValue, concat) => {
|
|
632
|
-
const {
|
|
633
|
-
obj,
|
|
634
|
-
k
|
|
635
|
-
} = getLastOfPath(object, path, Object);
|
|
636
|
-
obj[k] = obj[k] || [];
|
|
637
|
-
obj[k].push(newValue);
|
|
638
|
-
};
|
|
639
|
-
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) => {
|
|
640
300
|
const {
|
|
641
301
|
obj,
|
|
642
302
|
k
|
|
@@ -2792,16 +2452,275 @@ instance.hasLoadedNamespace;
|
|
|
2792
2452
|
instance.loadNamespaces;
|
|
2793
2453
|
instance.loadLanguages;
|
|
2794
2454
|
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
}
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
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",
|
|
2805
2724
|
startDate: "Start date",
|
|
2806
2725
|
endDate: "End date",
|
|
2807
2726
|
title: "Calendar"
|
|
@@ -2998,28 +2917,134 @@ var useAutoFocus = function (autoFocus) {
|
|
|
2998
2917
|
return ref;
|
|
2999
2918
|
};
|
|
3000
2919
|
|
|
3001
|
-
var css_248z$
|
|
3002
|
-
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);
|
|
3003
2922
|
|
|
3004
|
-
var
|
|
3005
|
-
var
|
|
3006
|
-
return (React__default.createElement("button", { className: "will-filter-bar-
|
|
3007
|
-
|
|
3008
|
-
|
|
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));
|
|
3009
2939
|
};
|
|
3010
2940
|
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
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);
|
|
3014
|
-
}
|
|
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);
|
|
3015
2943
|
|
|
3016
|
-
var
|
|
3017
|
-
|
|
2944
|
+
var Divider = function () {
|
|
2945
|
+
return React__default.createElement("div", { className: "will-filter-bar-divider" });
|
|
2946
|
+
};
|
|
3018
2947
|
|
|
3019
|
-
var
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
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
|
+
};
|
|
3023
3048
|
};
|
|
3024
3049
|
|
|
3025
3050
|
function _typeof(o) {
|
|
@@ -6578,62 +6603,416 @@ function subDays(dirtyDate, dirtyAmount) {
|
|
|
6578
6603
|
* Set the month to the given date.
|
|
6579
6604
|
*
|
|
6580
6605
|
* @param {Date|Number} date - the date to be changed
|
|
6581
|
-
* @param {Number} month - the month of the new date
|
|
6582
|
-
* @returns {Date} the new date with the month set
|
|
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;
|
|
6629
|
+
}
|
|
6630
|
+
|
|
6631
|
+
/**
|
|
6632
|
+
* @name setYear
|
|
6633
|
+
* @category Year Helpers
|
|
6634
|
+
* @summary Set the year to the given date.
|
|
6635
|
+
*
|
|
6636
|
+
* @description
|
|
6637
|
+
* Set the year to the given date.
|
|
6638
|
+
*
|
|
6639
|
+
* @param {Date|Number} date - the date to be changed
|
|
6640
|
+
* @param {Number} year - the year of the new date
|
|
6641
|
+
* @returns {Date} the new date with the year set
|
|
6583
6642
|
* @throws {TypeError} 2 arguments required
|
|
6584
6643
|
*
|
|
6585
6644
|
* @example
|
|
6586
|
-
* // Set
|
|
6587
|
-
* const result =
|
|
6588
|
-
* //=>
|
|
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
|
|
6589
6648
|
*/
|
|
6590
|
-
function
|
|
6649
|
+
function setYear(dirtyDate, dirtyYear) {
|
|
6591
6650
|
requiredArgs(2, arguments);
|
|
6592
6651
|
var date = toDate(dirtyDate);
|
|
6593
|
-
var
|
|
6594
|
-
|
|
6595
|
-
|
|
6596
|
-
|
|
6597
|
-
|
|
6598
|
-
|
|
6599
|
-
|
|
6600
|
-
// Set the last day of the new month
|
|
6601
|
-
// if the original date was the last day of the longer month
|
|
6602
|
-
date.setMonth(month, Math.min(day, daysInMonth));
|
|
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);
|
|
6603
6659
|
return date;
|
|
6604
6660
|
}
|
|
6605
6661
|
|
|
6606
|
-
|
|
6607
|
-
|
|
6608
|
-
|
|
6609
|
-
|
|
6610
|
-
|
|
6611
|
-
|
|
6612
|
-
|
|
6613
|
-
|
|
6614
|
-
|
|
6615
|
-
|
|
6616
|
-
|
|
6617
|
-
|
|
6618
|
-
|
|
6619
|
-
|
|
6620
|
-
|
|
6621
|
-
|
|
6622
|
-
|
|
6623
|
-
|
|
6624
|
-
|
|
6625
|
-
|
|
6626
|
-
|
|
6627
|
-
|
|
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);
|
|
6983
|
+
}
|
|
6984
|
+
|
|
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);
|
|
6990
|
+
}
|
|
6991
|
+
|
|
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);
|
|
6994
|
+
|
|
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
|
+
};
|
|
6628
7001
|
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
|
|
6632
|
-
}
|
|
6633
|
-
date.setFullYear(year);
|
|
6634
|
-
return date;
|
|
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);
|
|
6635
7005
|
}
|
|
6636
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
|
+
|
|
6637
7016
|
function futureSeconds(text) {
|
|
6638
7017
|
return text.replace(/sekuntia?/, 'sekunnin');
|
|
6639
7018
|
}
|
|
@@ -11476,11 +11855,11 @@ var useUpdateDisabledDates = function (_a) {
|
|
|
11476
11855
|
return { newDisableCalendarDates: newDisableCalendarDates, overlappingDate: overlappingDate, lastPossibleCheckout: lastPossibleCheckout };
|
|
11477
11856
|
};
|
|
11478
11857
|
|
|
11479
|
-
var css_248z$
|
|
11480
|
-
styleInject(css_248z$
|
|
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);
|
|
11481
11860
|
|
|
11482
|
-
var css_248z$
|
|
11483
|
-
styleInject(css_248z$
|
|
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);
|
|
11484
11863
|
|
|
11485
11864
|
var Calendar = forwardRef(function (_a, ref) {
|
|
11486
11865
|
var _b;
|
|
@@ -11550,413 +11929,100 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
11550
11929
|
// No gap between check-in and first possible check-out, nothing to disable
|
|
11551
11930
|
addDays(currentSelectionAvailability.checkIn, 1) >=
|
|
11552
11931
|
currentSelectionAvailability.firstCheckOut) {
|
|
11553
|
-
return [];
|
|
11554
|
-
}
|
|
11555
|
-
// Disable dates between current check-in and first possible check-out
|
|
11556
|
-
return [
|
|
11557
|
-
{
|
|
11558
|
-
from: addDays(currentSelectionAvailability.checkIn, 1),
|
|
11559
|
-
to: addDays(currentSelectionAvailability.firstCheckOut, -1),
|
|
11560
|
-
},
|
|
11561
|
-
];
|
|
11562
|
-
};
|
|
11563
|
-
var base = disabledDatesByPage$1.length
|
|
11564
|
-
? disabledDatesByPage$1
|
|
11565
|
-
: (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
|
|
11566
|
-
? disabledDates
|
|
11567
|
-
: (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [];
|
|
11568
|
-
var disabled = disabledDatesByPage$1.length
|
|
11569
|
-
? base
|
|
11570
|
-
: __spreadArray$1(__spreadArray$1(__spreadArray$1(__spreadArray$1([
|
|
11571
|
-
lastPossibleCheckout
|
|
11572
|
-
], __read(base), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false), __read(disabledInsideSelectableRange()), false);
|
|
11573
|
-
return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
|
|
11574
|
-
React__default.createElement("div", { className: "will-calendar-filter-container", ref: calendarContainerRef },
|
|
11575
|
-
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) ||
|
|
11576
|
-
selectedStartDate ||
|
|
11577
|
-
rangeContextStartDate ||
|
|
11578
|
-
(((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11579
|
-
? newDisableCalendarDates.disabledDates[0].from
|
|
11580
|
-
: today), disabled: disabled, fromMonth: today, onMonthChange: function (val) {
|
|
11581
|
-
requestDates === null || requestDates === void 0 ? void 0 : requestDates(val);
|
|
11582
|
-
setUpdateCalendarMonthNavigation === null || setUpdateCalendarMonthNavigation === void 0 ? void 0 : setUpdateCalendarMonthNavigation(function (prev) { return !prev; });
|
|
11583
|
-
}, classNames: {
|
|
11584
|
-
day_range_start: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ? 'rdp-day_range_start' : '',
|
|
11585
|
-
day_range_end: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? 'rdp-day_range_end' : '',
|
|
11586
|
-
}, modifiersClassNames: {
|
|
11587
|
-
today: 'my-today',
|
|
11588
|
-
booked: 'booked',
|
|
11589
|
-
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
11590
|
-
overlappingDate: 'overlapping-date',
|
|
11591
|
-
noActiveSelectionStart: 'no-active-selection-start',
|
|
11592
|
-
noActiveSelectionMid: 'no-active-selection-mid',
|
|
11593
|
-
noActiveSelectionEnd: 'no-active-selection-end',
|
|
11594
|
-
checkoutOptionsMid: 'rdp-day_selected rdp-day_range_middle checkout-option',
|
|
11595
|
-
checkInOnly: 'check-in-only',
|
|
11596
|
-
checkOutOnly: 'check-out-only',
|
|
11597
|
-
}, modifiers:
|
|
11598
|
-
// This function handles conditions for applying the modifiersClassNames
|
|
11599
|
-
handleCalendarModifiers({
|
|
11600
|
-
calendarRange: calendarRange,
|
|
11601
|
-
disabledDates: disabled,
|
|
11602
|
-
overlappingDate: overlappingDate,
|
|
11603
|
-
rangeContext: rangeContext,
|
|
11604
|
-
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11605
|
-
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11606
|
-
currentSelectionLastCheckoutDate: currentSelectionAvailability,
|
|
11607
|
-
}) }),
|
|
11608
|
-
React__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
11609
|
-
React__default.createElement("div", null, t('noCheckIn'))),
|
|
11610
|
-
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
|
|
11611
|
-
React__default.createElement("div", null, t('noCheckOut'))),
|
|
11612
|
-
React__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
|
|
11613
|
-
React__default.createElement("div", null, t('checkOutOnly'))),
|
|
11614
|
-
React__default.createElement("div", { className: 'will-calendar-tooltip-check-in-only' },
|
|
11615
|
-
React__default.createElement("div", null, t('checkInOnly'))),
|
|
11616
|
-
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out-only' },
|
|
11617
|
-
React__default.createElement("div", null, t('checkOutOnly'))),
|
|
11618
|
-
React__default.createElement("div", { className: 'will-calendar-spinner' },
|
|
11619
|
-
React__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50, icon: "spinner" })))));
|
|
11620
|
-
});
|
|
11621
|
-
|
|
11622
|
-
var parseGuests = function (_a) {
|
|
11623
|
-
var guestLabel = _a.guestLabel, guestsLabel = _a.guestsLabel, guestsPlaceholder = _a.guestsPlaceholder, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
|
|
11624
|
-
var parsedData = Object.entries(ageCategoryCounts).reduce(function (acc, _a) {
|
|
11625
|
-
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
11626
|
-
var parts = key.split('-');
|
|
11627
|
-
if (parts.length < 2)
|
|
11628
|
-
return acc;
|
|
11629
|
-
var ageCategoryId = parts[1];
|
|
11630
|
-
var ageCategory = ageCategories.find(function (c) { return c.id === ageCategoryId; });
|
|
11631
|
-
if (ageCategory && value) {
|
|
11632
|
-
return {
|
|
11633
|
-
total: acc.total + value,
|
|
11634
|
-
html: __spreadArray$1(__spreadArray$1([], __read(acc.html), false), ["".concat(value)], false),
|
|
11635
|
-
};
|
|
11636
|
-
}
|
|
11637
|
-
return acc;
|
|
11638
|
-
}, { total: 0, html: [] });
|
|
11639
|
-
var htmlString = parsedData.html.length > 1 ? parsedData.html.join(' + ') : '';
|
|
11640
|
-
return {
|
|
11641
|
-
content: parsedData.total
|
|
11642
|
-
? "<span class=\"will-guest-count\">".concat(parsedData.total, "</span> ").concat(parsedData.total > 1 ? guestsLabel : guestLabel).concat(htmlString ? " ( ".concat(htmlString, " )") : '')
|
|
11643
|
-
: guestsPlaceholder,
|
|
11644
|
-
data: parsedData,
|
|
11645
|
-
};
|
|
11646
|
-
};
|
|
11647
|
-
|
|
11648
|
-
var parseLocations = function (_a) {
|
|
11649
|
-
var selectedLocations = _a.selectedLocations, locationsPlaceholder = _a.locationsPlaceholder, _b = _a.locationsSelectedLabel, locationsSelectedLabel = _b === void 0 ? 'locations' : _b;
|
|
11650
|
-
if (!selectedLocations.length) {
|
|
11651
|
-
return locationsPlaceholder;
|
|
11652
|
-
}
|
|
11653
|
-
if (selectedLocations.length === 1) {
|
|
11654
|
-
var translation = selectedLocations[0].label;
|
|
11655
|
-
if (!translation) {
|
|
11656
|
-
return locationsPlaceholder;
|
|
11657
|
-
}
|
|
11658
|
-
return translation;
|
|
11659
|
-
}
|
|
11660
|
-
return "".concat(selectedLocations.length, " ").concat(locationsSelectedLabel);
|
|
11661
|
-
};
|
|
11662
|
-
|
|
11663
|
-
var FilterSections;
|
|
11664
|
-
(function (FilterSections) {
|
|
11665
|
-
FilterSections["CALENDAR"] = "calendar";
|
|
11666
|
-
FilterSections["GUESTS"] = "guests";
|
|
11667
|
-
FilterSections["CATEGORIES"] = "categories";
|
|
11668
|
-
FilterSections["LOCATIONS"] = "locations";
|
|
11669
|
-
})(FilterSections || (FilterSections = {}));
|
|
11670
|
-
var Pages;
|
|
11671
|
-
(function (Pages) {
|
|
11672
|
-
Pages["ROOMS"] = "/rooms";
|
|
11673
|
-
Pages["EVENTS"] = "/events";
|
|
11674
|
-
Pages["SALES"] = "/sales";
|
|
11675
|
-
})(Pages || (Pages = {}));
|
|
11676
|
-
|
|
11677
|
-
var calculateDropdownPosition = function (_a) {
|
|
11678
|
-
var filterSection = _a.filterSection, headerRef = _a.headerRef, locationsButtonRef = _a.locationsButtonRef, datesButtonRef = _a.datesButtonRef, guestsButtonRef = _a.guestsButtonRef, isMobile = _a.isMobile;
|
|
11679
|
-
if (isMobile) {
|
|
11680
|
-
return {};
|
|
11681
|
-
}
|
|
11682
|
-
if (!headerRef.current)
|
|
11683
|
-
return {};
|
|
11684
|
-
var containerRect = headerRef.current.getBoundingClientRect();
|
|
11685
|
-
var containerLeft = 0;
|
|
11686
|
-
switch (filterSection) {
|
|
11687
|
-
case FilterSections.LOCATIONS:
|
|
11688
|
-
if (locationsButtonRef.current) {
|
|
11689
|
-
var buttonRect = locationsButtonRef.current.getBoundingClientRect();
|
|
11690
|
-
var relativeLeft = buttonRect.left - containerRect.left;
|
|
11691
|
-
return {
|
|
11692
|
-
left: relativeLeft,
|
|
11693
|
-
right: 'auto',
|
|
11694
|
-
width: 'auto',
|
|
11695
|
-
};
|
|
11696
|
-
}
|
|
11697
|
-
break;
|
|
11698
|
-
case FilterSections.CALENDAR:
|
|
11699
|
-
if (datesButtonRef.current) {
|
|
11700
|
-
var buttonRect = datesButtonRef.current.getBoundingClientRect();
|
|
11701
|
-
var relativeLeft = buttonRect.left - containerRect.left;
|
|
11702
|
-
var availableWidth = containerRect.width - relativeLeft;
|
|
11703
|
-
var calendarMinWidth = 650;
|
|
11704
|
-
if (availableWidth < calendarMinWidth) {
|
|
11705
|
-
return {
|
|
11706
|
-
left: 'auto',
|
|
11707
|
-
right: containerLeft,
|
|
11708
|
-
width: 'auto',
|
|
11709
|
-
maxWidth: "".concat(containerRect.width, "px"),
|
|
11710
|
-
};
|
|
11711
|
-
}
|
|
11712
|
-
else {
|
|
11713
|
-
return {
|
|
11714
|
-
left: relativeLeft,
|
|
11715
|
-
right: 'auto',
|
|
11716
|
-
width: 'auto',
|
|
11717
|
-
};
|
|
11718
|
-
}
|
|
11719
|
-
}
|
|
11720
|
-
break;
|
|
11721
|
-
case FilterSections.GUESTS:
|
|
11722
|
-
if (guestsButtonRef.current) {
|
|
11723
|
-
var buttonRect = guestsButtonRef.current.getBoundingClientRect();
|
|
11724
|
-
var relativeLeft = buttonRect.left - containerRect.left;
|
|
11725
|
-
var availableWidth = containerRect.width - relativeLeft;
|
|
11726
|
-
var dropdownMinWidth = 350;
|
|
11727
|
-
if (availableWidth < dropdownMinWidth) {
|
|
11728
|
-
return {
|
|
11729
|
-
left: 'auto',
|
|
11730
|
-
right: containerLeft,
|
|
11731
|
-
width: 'auto',
|
|
11732
|
-
maxWidth: "".concat(containerRect.width, "px"),
|
|
11733
|
-
};
|
|
11734
|
-
}
|
|
11735
|
-
else {
|
|
11736
|
-
return {
|
|
11737
|
-
left: relativeLeft,
|
|
11738
|
-
right: 'auto',
|
|
11739
|
-
width: 'auto',
|
|
11740
|
-
};
|
|
11741
|
-
}
|
|
11742
|
-
}
|
|
11743
|
-
break;
|
|
11744
|
-
default:
|
|
11745
|
-
return {};
|
|
11746
|
-
}
|
|
11747
|
-
return {};
|
|
11748
|
-
};
|
|
11749
|
-
|
|
11750
|
-
var useFilterBar = function (_a) {
|
|
11751
|
-
var redirectUrl = _a.redirectUrl, ageCategories = _a.ageCategories, onSubmit = _a.onSubmit, tabs = _a.tabs, locations = _a.locations;
|
|
11752
|
-
var _b = __read(useState(Pages.EVENTS), 2), selectedPath = _b[0], setSelectedPath = _b[1];
|
|
11753
|
-
var _c = __read(useState(false), 2), selectedFilter = _c[0], setSelectedFilter = _c[1];
|
|
11754
|
-
var _d = __read(useState(), 2), calendarRange = _d[0], setCalendarRange = _d[1];
|
|
11755
|
-
var _e = __read(useState(false), 2), innerLoading = _e[0], setInnerLoading = _e[1];
|
|
11756
|
-
var _f = __read(useState(0), 2), categories = _f[0], setCategories = _f[1];
|
|
11757
|
-
var _g = __read(useState({}), 2), ageCategoryCounts = _g[0], setAgeCategoryCounts = _g[1];
|
|
11758
|
-
var _h = __read(useState([]), 2), selectedLocations = _h[0], setSelectedLocations = _h[1];
|
|
11759
|
-
useEffect(function () {
|
|
11760
|
-
var _a;
|
|
11761
|
-
var urlSearchParams = new URLSearchParams(window.location.search);
|
|
11762
|
-
var startDateParam = urlSearchParams.get('startDate');
|
|
11763
|
-
var endDateParam = urlSearchParams.get('endDate');
|
|
11764
|
-
// Get all locationId params from URL
|
|
11765
|
-
var locationIdParams = urlSearchParams.getAll('locationId');
|
|
11766
|
-
var ageCategoryCountsParam = JSON.parse(urlSearchParams.get('ageCategoryCounts') || '{}');
|
|
11767
|
-
var parsedCategories = parseInt(urlSearchParams.get('categories') || '0', 10);
|
|
11768
|
-
if (startDateParam && endDateParam) {
|
|
11769
|
-
setCalendarRange({
|
|
11770
|
-
from: new Date(startDateParam),
|
|
11771
|
-
to: new Date(endDateParam),
|
|
11772
|
-
});
|
|
11773
|
-
}
|
|
11774
|
-
setAgeCategoryCounts(ageCategoryCountsParam);
|
|
11775
|
-
setCategories(parsedCategories);
|
|
11776
|
-
// Set selected locations from URL - handle all locationIds
|
|
11777
|
-
if (((_a = locations === null || locations === void 0 ? void 0 : locations.data) === null || _a === void 0 ? void 0 : _a.length) && locationIdParams.length) {
|
|
11778
|
-
var matchedLocations = locations.data.filter(function (location) {
|
|
11779
|
-
return locationIdParams.includes(location.id.toString());
|
|
11780
|
-
});
|
|
11781
|
-
setSelectedLocations(matchedLocations);
|
|
11782
|
-
}
|
|
11783
|
-
}, []);
|
|
11784
|
-
useEffect(function () {
|
|
11785
|
-
if (typeof window === 'undefined')
|
|
11786
|
-
return;
|
|
11787
|
-
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; });
|
|
11788
|
-
var findMatchingPath = function () {
|
|
11789
|
-
var e_1, _a;
|
|
11790
|
-
var paths = [Pages.EVENTS, Pages.ROOMS, Pages.SALES];
|
|
11791
|
-
try {
|
|
11792
|
-
for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
|
|
11793
|
-
var path = paths_1_1.value;
|
|
11794
|
-
if (window.location.pathname.includes(path)) {
|
|
11795
|
-
return path;
|
|
11796
|
-
}
|
|
11797
|
-
}
|
|
11798
|
-
}
|
|
11799
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
11800
|
-
finally {
|
|
11801
|
-
try {
|
|
11802
|
-
if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);
|
|
11803
|
-
}
|
|
11804
|
-
finally { if (e_1) throw e_1.error; }
|
|
11805
|
-
}
|
|
11806
|
-
return defaultTab ? defaultTab.path : Pages.EVENTS;
|
|
11807
|
-
};
|
|
11808
|
-
var currentPath = findMatchingPath();
|
|
11809
|
-
setSelectedPath(currentPath);
|
|
11810
|
-
}, []);
|
|
11811
|
-
var updateGuestsCount = function (id, newCount) {
|
|
11812
|
-
setAgeCategoryCounts(function (prevCounts) {
|
|
11813
|
-
var _a;
|
|
11814
|
-
return (__assign$2(__assign$2({}, prevCounts), (_a = {}, _a[id] = newCount, _a)));
|
|
11815
|
-
});
|
|
11816
|
-
};
|
|
11817
|
-
var handleSelectedFilter = function (id) {
|
|
11818
|
-
setSelectedFilter(id);
|
|
11819
|
-
};
|
|
11820
|
-
var handleSubmit = function () {
|
|
11821
|
-
var e_2, _a;
|
|
11822
|
-
var newParams = {
|
|
11823
|
-
startDate: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11824
|
-
? format(calendarRange.from, 'yyyy-MM-dd')
|
|
11825
|
-
: '',
|
|
11826
|
-
endDate: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? format(calendarRange.to, 'yyyy-MM-dd') : '',
|
|
11827
|
-
//categories: categories.toString(),
|
|
11828
|
-
ageCategoryCounts: handleAgeCategoryRules({
|
|
11829
|
-
ageCategoryCounts: ageCategoryCounts,
|
|
11830
|
-
ageCategories: ageCategories,
|
|
11831
|
-
}),
|
|
11832
|
-
selectedLocations: selectedLocations
|
|
11833
|
-
.map(function (location) { return location.id.toString(); })
|
|
11834
|
-
.join(','),
|
|
11835
|
-
};
|
|
11836
|
-
var querySearchParams = new URLSearchParams();
|
|
11837
|
-
try {
|
|
11838
|
-
for (var _b = __values(Object.entries(newParams)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
11839
|
-
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
11840
|
-
if (value) {
|
|
11841
|
-
if (key === 'selectedLocations' && !!selectedLocations.length) {
|
|
11842
|
-
// Append all selected locationIds
|
|
11843
|
-
selectedLocations.forEach(function (location) {
|
|
11844
|
-
querySearchParams.append('locationId', location.id.toString());
|
|
11845
|
-
});
|
|
11846
|
-
}
|
|
11847
|
-
else {
|
|
11848
|
-
querySearchParams.append(key, value.toString());
|
|
11849
|
-
}
|
|
11850
|
-
}
|
|
11851
|
-
}
|
|
11852
|
-
}
|
|
11853
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
11854
|
-
finally {
|
|
11855
|
-
try {
|
|
11856
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
11857
|
-
}
|
|
11858
|
-
finally { if (e_2) throw e_2.error; }
|
|
11859
|
-
}
|
|
11860
|
-
handleSelectedFilter(false);
|
|
11861
|
-
if (onSubmit && window.location.href.includes(selectedPath)) {
|
|
11862
|
-
onSubmit(newParams);
|
|
11863
|
-
}
|
|
11864
|
-
else {
|
|
11865
|
-
var params = new URLSearchParams(querySearchParams !== null && querySearchParams !== void 0 ? querySearchParams : undefined);
|
|
11866
|
-
var paramString = params.toString();
|
|
11867
|
-
var path = "".concat(redirectUrl).concat(selectedPath);
|
|
11868
|
-
setInnerLoading(true);
|
|
11869
|
-
window.location.href = paramString ? "".concat(path, "?").concat(paramString) : path;
|
|
11932
|
+
return [];
|
|
11870
11933
|
}
|
|
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
|
+
];
|
|
11871
11941
|
};
|
|
11872
|
-
var
|
|
11873
|
-
|
|
11874
|
-
|
|
11875
|
-
|
|
11876
|
-
|
|
11877
|
-
|
|
11878
|
-
|
|
11879
|
-
|
|
11880
|
-
|
|
11881
|
-
|
|
11882
|
-
|
|
11883
|
-
|
|
11884
|
-
|
|
11885
|
-
|
|
11886
|
-
|
|
11887
|
-
|
|
11888
|
-
|
|
11889
|
-
|
|
11890
|
-
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
}
|
|
11896
|
-
|
|
11897
|
-
|
|
11898
|
-
|
|
11899
|
-
|
|
11900
|
-
|
|
11901
|
-
|
|
11902
|
-
|
|
11903
|
-
|
|
11904
|
-
|
|
11905
|
-
|
|
11906
|
-
}
|
|
11907
|
-
|
|
11908
|
-
|
|
11909
|
-
|
|
11910
|
-
|
|
11911
|
-
|
|
11912
|
-
|
|
11913
|
-
|
|
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
|
+
});
|
|
11914
12000
|
|
|
11915
|
-
var
|
|
11916
|
-
|
|
11917
|
-
|
|
11918
|
-
|
|
11919
|
-
|
|
11920
|
-
|
|
11921
|
-
|
|
11922
|
-
|
|
11923
|
-
}
|
|
11924
|
-
if (targetFilterBarRef.current && selectedFilter) {
|
|
11925
|
-
window.scrollTo({
|
|
11926
|
-
behavior: 'smooth',
|
|
11927
|
-
top: targetFilterBarRef.current.getBoundingClientRect().top -
|
|
11928
|
-
document.body.getBoundingClientRect().top -
|
|
11929
|
-
30,
|
|
11930
|
-
});
|
|
11931
|
-
}
|
|
11932
|
-
}, [selectedFilter]);
|
|
11933
|
-
return { isMobile: isMobile, targetFilterBarRef: targetFilterBarRef };
|
|
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)));
|
|
11934
12009
|
};
|
|
11935
12010
|
|
|
11936
|
-
var css_248z$b = ".will-
|
|
12011
|
+
var css_248z$b = ".will-dates-filter-container {\n padding: 0 16px;\n}\n";
|
|
11937
12012
|
styleInject(css_248z$b);
|
|
11938
12013
|
|
|
11939
|
-
var
|
|
11940
|
-
var
|
|
11941
|
-
return (React__default.createElement("
|
|
11942
|
-
React__default.createElement(
|
|
11943
|
-
|
|
11944
|
-
|
|
11945
|
-
React__default.createElement("p", { className: "select-button-description ".concat(active ? 'active' : ''), dangerouslySetInnerHTML: { __html: description } })))));
|
|
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 }))));
|
|
11946
12020
|
});
|
|
11947
|
-
|
|
12021
|
+
Dates.displayName = 'Dates';
|
|
11948
12022
|
|
|
11949
|
-
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";
|
|
11950
12024
|
styleInject(css_248z$a);
|
|
11951
12025
|
|
|
11952
|
-
var TabButton = function (_a) {
|
|
11953
|
-
var onClick = _a.onClick, label = _a.label, active = _a.active, mode = _a.mode;
|
|
11954
|
-
return (React__default.createElement("button", { className: "will-filter-bar-tab-button ".concat(mode || 'light', " ").concat(active && 'active', " "), onClick: onClick }, label));
|
|
11955
|
-
};
|
|
11956
|
-
|
|
11957
|
-
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";
|
|
11958
|
-
styleInject(css_248z$9);
|
|
11959
|
-
|
|
11960
12026
|
var GuestCount = function (_a) {
|
|
11961
12027
|
var label = _a.label, sortOrder = _a.sortOrder, id = _a.id, updateGuestsCount = _a.updateGuestsCount, count = _a.count, minVal = _a.minVal;
|
|
11962
12028
|
useEffect(function () {
|
|
@@ -11988,65 +12054,21 @@ var GuestCount = function (_a) {
|
|
|
11988
12054
|
React__default.createElement("path", { d: "M10 4V16M4 10H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }))))));
|
|
11989
12055
|
};
|
|
11990
12056
|
|
|
11991
|
-
var css_248z$
|
|
11992
|
-
styleInject(css_248z$
|
|
11993
|
-
|
|
11994
|
-
var FilterSectionHeader = function (_a) {
|
|
11995
|
-
var title = _a.title, action = _a.action;
|
|
11996
|
-
return (React__default.createElement("div", { className: "will-filter-section-header" },
|
|
11997
|
-
React__default.createElement("h3", { className: "will-filter-section-title" }, title),
|
|
11998
|
-
action && React__default.createElement("div", { className: "will-filter-section-action" }, action)));
|
|
11999
|
-
};
|
|
12000
|
-
|
|
12001
|
-
var css_248z$7 = ".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@media (max-width: 960px) {\n .will-guests-filter-container {\n margin-top: 15px;\n min-width: 100%;\n }\n}\n";
|
|
12002
|
-
styleInject(css_248z$7);
|
|
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);
|
|
12003
12059
|
|
|
12004
12060
|
var Guests = forwardRef(function (_a, ref) {
|
|
12005
12061
|
var ageCategories = _a.ageCategories, updateGuestsCount = _a.updateGuestsCount, ageCategoryCounts = _a.ageCategoryCounts, autoFocus = _a.autoFocus, onClose = _a.onClose;
|
|
12006
12062
|
var t = useTranslation('filterBar').t;
|
|
12007
12063
|
var containerRef = useAutoFocus(autoFocus);
|
|
12008
|
-
return (React__default.createElement("div", {
|
|
12009
|
-
React__default.createElement(
|
|
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 }) }),
|
|
12010
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 })); }))));
|
|
12011
12067
|
});
|
|
12012
12068
|
Guests.displayName = 'Guests';
|
|
12013
12069
|
|
|
12014
|
-
var css_248z$
|
|
12015
|
-
styleInject(css_248z$
|
|
12016
|
-
|
|
12017
|
-
var Divider = function () {
|
|
12018
|
-
return React__default.createElement("div", { className: "will-filter-bar-divider" });
|
|
12019
|
-
};
|
|
12020
|
-
|
|
12021
|
-
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";
|
|
12022
|
-
styleInject(css_248z$5);
|
|
12023
|
-
|
|
12024
|
-
var Categories = function (_a) {
|
|
12025
|
-
_a.categories; var setCategories = _a.setCategories;
|
|
12026
|
-
var t = useTranslation('filterBar').t;
|
|
12027
|
-
var categoriesPlaceholder = [
|
|
12028
|
-
'Weekend',
|
|
12029
|
-
'Week',
|
|
12030
|
-
'Summer camp',
|
|
12031
|
-
'Winter camp',
|
|
12032
|
-
];
|
|
12033
|
-
var _b = __read(useState(''), 2), selectedCategory = _b[0], setSelectedCategory = _b[1];
|
|
12034
|
-
var handleCategoryChange = function (selectedCategory) {
|
|
12035
|
-
setSelectedCategory(selectedCategory);
|
|
12036
|
-
setCategories(selectedCategory);
|
|
12037
|
-
};
|
|
12038
|
-
return (React__default.createElement("div", { className: "will-filter-bar-categories" },
|
|
12039
|
-
React__default.createElement("h3", { className: "will-categories-filter-title" }, t('categories.label')),
|
|
12040
|
-
React__default.createElement("div", { className: "will-categories-filter-inner" }, categoriesPlaceholder.map(function (itm, idx) { return (React__default.createElement("div", { key: idx },
|
|
12041
|
-
React__default.createElement("input", { type: "radio", value: itm, checked: selectedCategory === itm, onChange: function () { return handleCategoryChange(itm); } }),
|
|
12042
|
-
React__default.createElement("span", null, itm))); }))));
|
|
12043
|
-
};
|
|
12044
|
-
|
|
12045
|
-
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";
|
|
12046
|
-
styleInject(css_248z$4);
|
|
12047
|
-
|
|
12048
|
-
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";
|
|
12049
|
-
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);
|
|
12050
12072
|
|
|
12051
12073
|
var ImageCard = forwardRef(function (_a, ref) {
|
|
12052
12074
|
var title = _a.title, description = _a.description, imageUrl = _a.imageUrl, isSelected = _a.isSelected, onClick = _a.onClick;
|
|
@@ -12064,6 +12086,9 @@ var ImageCard = forwardRef(function (_a, ref) {
|
|
|
12064
12086
|
});
|
|
12065
12087
|
ImageCard.displayName = 'ImageCard';
|
|
12066
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
|
+
|
|
12067
12092
|
var Locations = forwardRef(function (_a, ref) {
|
|
12068
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;
|
|
12069
12094
|
var t = useTranslation('filterBar').t;
|
|
@@ -12092,8 +12117,8 @@ var Locations = forwardRef(function (_a, ref) {
|
|
|
12092
12117
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
12093
12118
|
}
|
|
12094
12119
|
};
|
|
12095
|
-
return (React__default.createElement("div", {
|
|
12096
|
-
React__default.createElement(
|
|
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 }) }),
|
|
12097
12122
|
React__default.createElement("div", { className: "will-locations-filter-container" }, !!((locations === null || locations === void 0 ? void 0 : locations.length) && language) &&
|
|
12098
12123
|
locations.map(function (location, index) {
|
|
12099
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); } }));
|
|
@@ -12101,63 +12126,75 @@ var Locations = forwardRef(function (_a, ref) {
|
|
|
12101
12126
|
});
|
|
12102
12127
|
Locations.displayName = 'Locations';
|
|
12103
12128
|
|
|
12104
|
-
var css_248z$
|
|
12105
|
-
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);
|
|
12106
12131
|
|
|
12107
|
-
var
|
|
12108
|
-
|
|
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';
|
|
12109
12153
|
|
|
12110
|
-
var
|
|
12111
|
-
|
|
12112
|
-
return (React__default.createElement("div", { className: "will-filter-bar-dates", ref: ref },
|
|
12113
|
-
React__default.createElement(FilterSectionHeader, { title: '', action: onClose && React__default.createElement(CloseButton, { handleClose: onClose }) }),
|
|
12114
|
-
React__default.createElement("div", { className: "will-dates-filter-container" },
|
|
12115
|
-
React__default.createElement(Calendar, { autoFocus: autoFocus, calendarRange: calendarRange, setCalendarRange: setCalendarRange, disableCalendarDates: disableCalendarDates, selectedPath: selectedPath, language: language, ref: filtersRef }))));
|
|
12116
|
-
});
|
|
12117
|
-
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);
|
|
12118
12156
|
|
|
12119
|
-
function
|
|
12120
|
-
var
|
|
12121
|
-
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;
|
|
12122
|
-
var themePalette = useTheme({ palette: palette });
|
|
12123
|
-
// Translations
|
|
12124
|
-
useUpdateTranslations({ language: language });
|
|
12125
|
-
var t = useTranslation('filterBar').t;
|
|
12126
|
-
// Refs for SelectButtons
|
|
12127
|
-
var locationsButtonRef = useRef(null);
|
|
12128
|
-
var datesButtonRef = useRef(null);
|
|
12129
|
-
var guestsButtonRef = useRef(null);
|
|
12130
|
-
var previouslyFocusedButtonRef = useRef(null);
|
|
12131
|
-
var headerRef = useRef(null);
|
|
12132
|
-
// Dropdown positioning
|
|
12133
|
-
var _f = __read(useState({}), 2), dropdownStyle = _f[0], setDropdownStyle = _f[1];
|
|
12134
|
-
// Filters
|
|
12135
|
-
var _g = useFilterBar({
|
|
12136
|
-
redirectUrl: redirectUrl,
|
|
12137
|
-
ageCategories: ageCategories,
|
|
12138
|
-
onSubmit: onSubmit,
|
|
12139
|
-
tabs: tabs,
|
|
12140
|
-
locations: locations,
|
|
12141
|
-
}), 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;
|
|
12142
|
-
// Scroll in to view
|
|
12143
|
-
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;
|
|
12144
12159
|
// Handle close filter section
|
|
12145
12160
|
var filtersRef = useCloseFilterSection({ handleSelectedFilter: handleSelectedFilter }).filtersRef;
|
|
12146
|
-
|
|
12147
|
-
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
|
|
12155
|
-
|
|
12156
|
-
|
|
12157
|
-
|
|
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;
|
|
12158
12180
|
}
|
|
12159
|
-
handleSelectedFilter(filter);
|
|
12160
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;
|
|
12161
12198
|
// Store previously focused button and restore focus when closing
|
|
12162
12199
|
useEffect(function () {
|
|
12163
12200
|
if (!selectedFilter && previouslyFocusedButtonRef.current) {
|
|
@@ -12165,8 +12202,6 @@ function FilterBar(_a) {
|
|
|
12165
12202
|
previouslyFocusedButtonRef.current = null;
|
|
12166
12203
|
}
|
|
12167
12204
|
}, [selectedFilter]);
|
|
12168
|
-
// Display component after fully loaded
|
|
12169
|
-
useAwaitRender();
|
|
12170
12205
|
// Parsed data for filter section description
|
|
12171
12206
|
var parsedDates = parseDates({ calendarRange: calendarRange });
|
|
12172
12207
|
var parsedGuests = parseGuests({
|
|
@@ -12181,66 +12216,68 @@ function FilterBar(_a) {
|
|
|
12181
12216
|
locationsPlaceholder: t('locations.placeholder'),
|
|
12182
12217
|
locationsSelectedLabel: t('locations.selected'),
|
|
12183
12218
|
});
|
|
12184
|
-
return (React__default.createElement("div", { className: "will-
|
|
12185
|
-
|
|
12186
|
-
.
|
|
12187
|
-
|
|
12188
|
-
|
|
12189
|
-
|
|
12190
|
-
|
|
12191
|
-
|
|
12192
|
-
|
|
12193
|
-
|
|
12194
|
-
|
|
12195
|
-
|
|
12196
|
-
|
|
12197
|
-
|
|
12198
|
-
|
|
12199
|
-
|
|
12200
|
-
|
|
12201
|
-
|
|
12202
|
-
|
|
12203
|
-
|
|
12204
|
-
|
|
12205
|
-
|
|
12206
|
-
|
|
12207
|
-
|
|
12208
|
-
|
|
12209
|
-
|
|
12210
|
-
|
|
12211
|
-
|
|
12212
|
-
|
|
12213
|
-
|
|
12214
|
-
|
|
12215
|
-
|
|
12216
|
-
|
|
12217
|
-
|
|
12218
|
-
|
|
12219
|
-
|
|
12220
|
-
|
|
12221
|
-
|
|
12222
|
-
|
|
12223
|
-
|
|
12224
|
-
|
|
12225
|
-
|
|
12226
|
-
|
|
12227
|
-
|
|
12228
|
-
|
|
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
|
+
};
|
|
12229
12280
|
////////////
|
|
12230
|
-
var AGE_CATEGORIES_FALLBACK = [
|
|
12231
|
-
{
|
|
12232
|
-
id: '1',
|
|
12233
|
-
name: 'Adults',
|
|
12234
|
-
sortOrder: 1,
|
|
12235
|
-
minVal: 0,
|
|
12236
|
-
},
|
|
12237
|
-
{
|
|
12238
|
-
id: '2',
|
|
12239
|
-
name: 'Kids',
|
|
12240
|
-
sortOrder: 2,
|
|
12241
|
-
minVal: 0,
|
|
12242
|
-
},
|
|
12243
|
-
];
|
|
12244
12281
|
var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
|
|
12245
12282
|
var LANGUAGE_FALLBACK = 'en';
|
|
12246
12283
|
|