willba-component-library 0.3.14 → 0.3.16
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 +1142 -1117
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +1141 -1116
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +1141 -1116
- 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.css +1 -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 +9 -4
- package/src/components/FilterBar/components/{guests → FilterPanels/Guests}/Guests.tsx +7 -7
- package/src/components/FilterBar/components/{locations → FilterPanels/Locations}/Locations.css +2 -3
- 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 +53 -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/{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, useLayoutEffect, 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
|
|
@@ -2701,96 +2361,355 @@ class I18n extends EventEmitter {
|
|
|
2701
2361
|
instance.createInstance = I18n.createInstance;
|
|
2702
2362
|
return instance;
|
|
2703
2363
|
}
|
|
2704
|
-
cloneInstance(options = {}, callback = noop) {
|
|
2705
|
-
const forkResourceStore = options.forkResourceStore;
|
|
2706
|
-
if (forkResourceStore) delete options.forkResourceStore;
|
|
2707
|
-
const mergedOptions = {
|
|
2708
|
-
...this.options,
|
|
2709
|
-
...options,
|
|
2710
|
-
...{
|
|
2711
|
-
isClone: true
|
|
2364
|
+
cloneInstance(options = {}, callback = noop) {
|
|
2365
|
+
const forkResourceStore = options.forkResourceStore;
|
|
2366
|
+
if (forkResourceStore) delete options.forkResourceStore;
|
|
2367
|
+
const mergedOptions = {
|
|
2368
|
+
...this.options,
|
|
2369
|
+
...options,
|
|
2370
|
+
...{
|
|
2371
|
+
isClone: true
|
|
2372
|
+
}
|
|
2373
|
+
};
|
|
2374
|
+
const clone = new I18n(mergedOptions);
|
|
2375
|
+
if (options.debug !== undefined || options.prefix !== undefined) {
|
|
2376
|
+
clone.logger = clone.logger.clone(options);
|
|
2377
|
+
}
|
|
2378
|
+
const membersToCopy = ['store', 'services', 'language'];
|
|
2379
|
+
membersToCopy.forEach(m => {
|
|
2380
|
+
clone[m] = this[m];
|
|
2381
|
+
});
|
|
2382
|
+
clone.services = {
|
|
2383
|
+
...this.services
|
|
2384
|
+
};
|
|
2385
|
+
clone.services.utils = {
|
|
2386
|
+
hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
|
|
2387
|
+
};
|
|
2388
|
+
if (forkResourceStore) {
|
|
2389
|
+
const clonedData = Object.keys(this.store.data).reduce((prev, l) => {
|
|
2390
|
+
prev[l] = {
|
|
2391
|
+
...this.store.data[l]
|
|
2392
|
+
};
|
|
2393
|
+
prev[l] = Object.keys(prev[l]).reduce((acc, n) => {
|
|
2394
|
+
acc[n] = {
|
|
2395
|
+
...prev[l][n]
|
|
2396
|
+
};
|
|
2397
|
+
return acc;
|
|
2398
|
+
}, prev[l]);
|
|
2399
|
+
return prev;
|
|
2400
|
+
}, {});
|
|
2401
|
+
clone.store = new ResourceStore(clonedData, mergedOptions);
|
|
2402
|
+
clone.services.resourceStore = clone.store;
|
|
2403
|
+
}
|
|
2404
|
+
if (options.interpolation) {
|
|
2405
|
+
const defOpts = get();
|
|
2406
|
+
const mergedInterpolation = {
|
|
2407
|
+
...defOpts.interpolation,
|
|
2408
|
+
...this.options.interpolation,
|
|
2409
|
+
...options.interpolation
|
|
2410
|
+
};
|
|
2411
|
+
const mergedForInterpolator = {
|
|
2412
|
+
...mergedOptions,
|
|
2413
|
+
interpolation: mergedInterpolation
|
|
2414
|
+
};
|
|
2415
|
+
clone.services.interpolator = new Interpolator(mergedForInterpolator);
|
|
2416
|
+
}
|
|
2417
|
+
clone.translator = new Translator(clone.services, mergedOptions);
|
|
2418
|
+
clone.translator.on('*', (event, ...args) => {
|
|
2419
|
+
clone.emit(event, ...args);
|
|
2420
|
+
});
|
|
2421
|
+
clone.init(mergedOptions, callback);
|
|
2422
|
+
clone.translator.options = mergedOptions;
|
|
2423
|
+
clone.translator.backendConnector.services.utils = {
|
|
2424
|
+
hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
|
|
2425
|
+
};
|
|
2426
|
+
return clone;
|
|
2427
|
+
}
|
|
2428
|
+
toJSON() {
|
|
2429
|
+
return {
|
|
2430
|
+
options: this.options,
|
|
2431
|
+
store: this.store,
|
|
2432
|
+
language: this.language,
|
|
2433
|
+
languages: this.languages,
|
|
2434
|
+
resolvedLanguage: this.resolvedLanguage
|
|
2435
|
+
};
|
|
2436
|
+
}
|
|
2437
|
+
}
|
|
2438
|
+
const instance = I18n.createInstance();
|
|
2439
|
+
|
|
2440
|
+
instance.createInstance;
|
|
2441
|
+
instance.dir;
|
|
2442
|
+
instance.init;
|
|
2443
|
+
instance.loadResources;
|
|
2444
|
+
instance.reloadResources;
|
|
2445
|
+
instance.use;
|
|
2446
|
+
instance.changeLanguage;
|
|
2447
|
+
instance.getFixedT;
|
|
2448
|
+
instance.t;
|
|
2449
|
+
instance.exists;
|
|
2450
|
+
instance.setDefaultNamespace;
|
|
2451
|
+
instance.hasLoadedNamespace;
|
|
2452
|
+
instance.loadNamespaces;
|
|
2453
|
+
instance.loadLanguages;
|
|
2454
|
+
|
|
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
|
+
});
|
|
2712
2676
|
}
|
|
2713
|
-
};
|
|
2714
|
-
const clone = new I18n(mergedOptions);
|
|
2715
|
-
if (options.debug !== undefined || options.prefix !== undefined) {
|
|
2716
|
-
clone.logger = clone.logger.clone(options);
|
|
2717
2677
|
}
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
clone[m] = this[m];
|
|
2721
|
-
});
|
|
2722
|
-
clone.services = {
|
|
2723
|
-
...this.services
|
|
2724
|
-
};
|
|
2725
|
-
clone.services.utils = {
|
|
2726
|
-
hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
|
|
2727
|
-
};
|
|
2728
|
-
if (forkResourceStore) {
|
|
2729
|
-
const clonedData = Object.keys(this.store.data).reduce((prev, l) => {
|
|
2730
|
-
prev[l] = {
|
|
2731
|
-
...this.store.data[l]
|
|
2732
|
-
};
|
|
2733
|
-
prev[l] = Object.keys(prev[l]).reduce((acc, n) => {
|
|
2734
|
-
acc[n] = {
|
|
2735
|
-
...prev[l][n]
|
|
2736
|
-
};
|
|
2737
|
-
return acc;
|
|
2738
|
-
}, prev[l]);
|
|
2739
|
-
return prev;
|
|
2740
|
-
}, {});
|
|
2741
|
-
clone.store = new ResourceStore(clonedData, mergedOptions);
|
|
2742
|
-
clone.services.resourceStore = clone.store;
|
|
2678
|
+
if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
|
|
2679
|
+
setT(getT);
|
|
2743
2680
|
}
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
const mergedInterpolation = {
|
|
2747
|
-
...defOpts.interpolation,
|
|
2748
|
-
...this.options.interpolation,
|
|
2749
|
-
...options.interpolation
|
|
2750
|
-
};
|
|
2751
|
-
const mergedForInterpolator = {
|
|
2752
|
-
...mergedOptions,
|
|
2753
|
-
interpolation: mergedInterpolation
|
|
2754
|
-
};
|
|
2755
|
-
clone.services.interpolator = new Interpolator(mergedForInterpolator);
|
|
2681
|
+
function boundReset() {
|
|
2682
|
+
if (isMounted.current) setT(getT);
|
|
2756
2683
|
}
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
clone.translator.backendConnector.services.utils = {
|
|
2764
|
-
hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
|
|
2765
|
-
};
|
|
2766
|
-
return clone;
|
|
2767
|
-
}
|
|
2768
|
-
toJSON() {
|
|
2769
|
-
return {
|
|
2770
|
-
options: this.options,
|
|
2771
|
-
store: this.store,
|
|
2772
|
-
language: this.language,
|
|
2773
|
-
languages: this.languages,
|
|
2774
|
-
resolvedLanguage: this.resolvedLanguage
|
|
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));
|
|
2775
2690
|
};
|
|
2776
|
-
}
|
|
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
|
+
});
|
|
2777
2712
|
}
|
|
2778
|
-
const instance = I18n.createInstance();
|
|
2779
|
-
|
|
2780
|
-
instance.createInstance;
|
|
2781
|
-
instance.dir;
|
|
2782
|
-
instance.init;
|
|
2783
|
-
instance.loadResources;
|
|
2784
|
-
instance.reloadResources;
|
|
2785
|
-
instance.use;
|
|
2786
|
-
instance.changeLanguage;
|
|
2787
|
-
instance.getFixedT;
|
|
2788
|
-
instance.t;
|
|
2789
|
-
instance.exists;
|
|
2790
|
-
instance.setDefaultNamespace;
|
|
2791
|
-
instance.hasLoadedNamespace;
|
|
2792
|
-
instance.loadNamespaces;
|
|
2793
|
-
instance.loadLanguages;
|
|
2794
2713
|
|
|
2795
2714
|
var locations$1 = {
|
|
2796
2715
|
label: "Location",
|
|
@@ -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) {
|
|
@@ -6603,37 +6628,379 @@ function setMonth(dirtyDate, dirtyMonth) {
|
|
|
6603
6628
|
return date;
|
|
6604
6629
|
}
|
|
6605
6630
|
|
|
6606
|
-
/**
|
|
6607
|
-
* @name setYear
|
|
6608
|
-
* @category Year Helpers
|
|
6609
|
-
* @summary Set the year to the given date.
|
|
6610
|
-
*
|
|
6611
|
-
* @description
|
|
6612
|
-
* Set the year to the given date.
|
|
6613
|
-
*
|
|
6614
|
-
* @param {Date|Number} date - the date to be changed
|
|
6615
|
-
* @param {Number} year - the year of the new date
|
|
6616
|
-
* @returns {Date} the new date with the year set
|
|
6617
|
-
* @throws {TypeError} 2 arguments required
|
|
6618
|
-
*
|
|
6619
|
-
* @example
|
|
6620
|
-
* // Set year 2013 to 1 September 2014:
|
|
6621
|
-
* const result = setYear(new Date(2014, 8, 1), 2013)
|
|
6622
|
-
* //=> Sun Sep 01 2013 00:00:00
|
|
6623
|
-
*/
|
|
6624
|
-
function setYear(dirtyDate, dirtyYear) {
|
|
6625
|
-
requiredArgs(2, arguments);
|
|
6626
|
-
var date = toDate(dirtyDate);
|
|
6627
|
-
var year = toInteger(dirtyYear);
|
|
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
|
|
6642
|
+
* @throws {TypeError} 2 arguments required
|
|
6643
|
+
*
|
|
6644
|
+
* @example
|
|
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
|
|
6648
|
+
*/
|
|
6649
|
+
function setYear(dirtyDate, dirtyYear) {
|
|
6650
|
+
requiredArgs(2, arguments);
|
|
6651
|
+
var date = toDate(dirtyDate);
|
|
6652
|
+
var year = toInteger(dirtyYear);
|
|
6653
|
+
|
|
6654
|
+
// Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date
|
|
6655
|
+
if (isNaN(date.getTime())) {
|
|
6656
|
+
return new Date(NaN);
|
|
6657
|
+
}
|
|
6658
|
+
date.setFullYear(year);
|
|
6659
|
+
return date;
|
|
6660
|
+
}
|
|
6661
|
+
|
|
6662
|
+
var parseGuests = function (_a) {
|
|
6663
|
+
var guestLabel = _a.guestLabel, guestsLabel = _a.guestsLabel, guestsPlaceholder = _a.guestsPlaceholder, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
|
|
6664
|
+
var parsedData = Object.entries(ageCategoryCounts).reduce(function (acc, _a) {
|
|
6665
|
+
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
6666
|
+
var parts = key.split('-');
|
|
6667
|
+
if (parts.length < 2)
|
|
6668
|
+
return acc;
|
|
6669
|
+
var ageCategoryId = parts[1];
|
|
6670
|
+
var ageCategory = ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.find(function (c) { return c.id === ageCategoryId; });
|
|
6671
|
+
if (ageCategory && value) {
|
|
6672
|
+
return {
|
|
6673
|
+
total: acc.total + value,
|
|
6674
|
+
html: __spreadArray$1(__spreadArray$1([], __read(acc.html), false), ["".concat(value)], false),
|
|
6675
|
+
};
|
|
6676
|
+
}
|
|
6677
|
+
return acc;
|
|
6678
|
+
}, { total: 0, html: [] });
|
|
6679
|
+
if (!parsedData.total) {
|
|
6680
|
+
return {
|
|
6681
|
+
content: guestsPlaceholder,
|
|
6682
|
+
data: parsedData,
|
|
6683
|
+
};
|
|
6684
|
+
}
|
|
6685
|
+
var breakdown = parsedData.html.length > 1 ? parsedData.html.join(' + ') : null;
|
|
6686
|
+
return {
|
|
6687
|
+
content: (React__default.createElement(React__default.Fragment, null,
|
|
6688
|
+
React__default.createElement("span", { className: "will-guest-count" }, parsedData.total),
|
|
6689
|
+
' ',
|
|
6690
|
+
parsedData.total > 1 ? guestsLabel : guestLabel,
|
|
6691
|
+
breakdown && React__default.createElement(React__default.Fragment, null,
|
|
6692
|
+
" \u00A0 ( ",
|
|
6693
|
+
breakdown,
|
|
6694
|
+
" )"))),
|
|
6695
|
+
data: parsedData,
|
|
6696
|
+
};
|
|
6697
|
+
};
|
|
6698
|
+
|
|
6699
|
+
var parseLocations = function (_a) {
|
|
6700
|
+
var selectedLocations = _a.selectedLocations, locationsPlaceholder = _a.locationsPlaceholder, _b = _a.locationsSelectedLabel, locationsSelectedLabel = _b === void 0 ? 'locations' : _b;
|
|
6701
|
+
if (!selectedLocations.length) {
|
|
6702
|
+
return locationsPlaceholder;
|
|
6703
|
+
}
|
|
6704
|
+
if (selectedLocations.length === 1) {
|
|
6705
|
+
var singleSelection = selectedLocations[0].label;
|
|
6706
|
+
if (!singleSelection) {
|
|
6707
|
+
return locationsPlaceholder;
|
|
6708
|
+
}
|
|
6709
|
+
return singleSelection;
|
|
6710
|
+
}
|
|
6711
|
+
return "".concat(selectedLocations.length, " ").concat(locationsSelectedLabel);
|
|
6712
|
+
};
|
|
6713
|
+
|
|
6714
|
+
var ageCategoryRules = function (_a) {
|
|
6715
|
+
var ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
|
|
6716
|
+
if (ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.length) {
|
|
6717
|
+
ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.map(function (a) {
|
|
6718
|
+
if (a.minVal) {
|
|
6719
|
+
var ageCategory = ageCategoryCounts["guests-".concat(a.id)];
|
|
6720
|
+
if (!ageCategory) {
|
|
6721
|
+
ageCategoryCounts["guests-".concat(a.id)] = a.minVal;
|
|
6722
|
+
}
|
|
6723
|
+
}
|
|
6724
|
+
});
|
|
6725
|
+
}
|
|
6726
|
+
return Object.entries(ageCategoryCounts).length
|
|
6727
|
+
? JSON.stringify(ageCategoryCounts)
|
|
6728
|
+
: '';
|
|
6729
|
+
};
|
|
6730
|
+
|
|
6731
|
+
var useFilterActions = function (_a) {
|
|
6732
|
+
var tabs = _a.tabs, calendarRange = _a.calendarRange, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories, selectedLocations = _a.selectedLocations, selectedPath = _a.selectedPath, redirectUrl = _a.redirectUrl, setSelectedPath = _a.setSelectedPath, setAgeCategoryCounts = _a.setAgeCategoryCounts, setSelectedFilter = _a.setSelectedFilter, setCalendarRange = _a.setCalendarRange, onSubmit = _a.onSubmit, setInnerLoading = _a.setInnerLoading;
|
|
6733
|
+
useEffect(function () {
|
|
6734
|
+
if (typeof window === 'undefined')
|
|
6735
|
+
return;
|
|
6736
|
+
var defaultTab = (tabs === null || tabs === void 0 ? void 0 : tabs.length) === 1 ? tabs[0] : tabs === null || tabs === void 0 ? void 0 : tabs.find(function (tab) { return tab.default; });
|
|
6737
|
+
var paths = [Pages.EVENTS, Pages.ROOMS, Pages.SALES];
|
|
6738
|
+
var currentPath = paths.find(function (path) { return window.location.pathname.includes(path); }) ||
|
|
6739
|
+
(defaultTab === null || defaultTab === void 0 ? void 0 : defaultTab.path) ||
|
|
6740
|
+
Pages.EVENTS;
|
|
6741
|
+
setSelectedPath(currentPath);
|
|
6742
|
+
}, [tabs]);
|
|
6743
|
+
var updateGuestsCount = function (id, newCount) {
|
|
6744
|
+
setAgeCategoryCounts(function (prev) {
|
|
6745
|
+
var _a;
|
|
6746
|
+
return (__assign$2(__assign$2({}, prev), (_a = {}, _a[id] = newCount, _a)));
|
|
6747
|
+
});
|
|
6748
|
+
};
|
|
6749
|
+
var handleSelectedFilter = function (id) {
|
|
6750
|
+
setSelectedFilter(id);
|
|
6751
|
+
};
|
|
6752
|
+
var handleSubmit = function () {
|
|
6753
|
+
var e_1, _a;
|
|
6754
|
+
if (typeof window === 'undefined')
|
|
6755
|
+
return;
|
|
6756
|
+
var newParams = {
|
|
6757
|
+
startDate: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
6758
|
+
? format(calendarRange.from, 'yyyy-MM-dd')
|
|
6759
|
+
: '',
|
|
6760
|
+
endDate: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? format(calendarRange.to, 'yyyy-MM-dd') : '',
|
|
6761
|
+
ageCategoryCounts: ageCategoryRules({
|
|
6762
|
+
ageCategoryCounts: ageCategoryCounts,
|
|
6763
|
+
ageCategories: ageCategories,
|
|
6764
|
+
}),
|
|
6765
|
+
selectedLocations: selectedLocations
|
|
6766
|
+
.map(function (l) { return l.id.toString(); })
|
|
6767
|
+
.join(','),
|
|
6768
|
+
};
|
|
6769
|
+
var querySearchParams = new URLSearchParams();
|
|
6770
|
+
try {
|
|
6771
|
+
for (var _b = __values(Object.entries(newParams)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
6772
|
+
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
6773
|
+
if (!value)
|
|
6774
|
+
continue;
|
|
6775
|
+
if (key === 'selectedLocations' && selectedLocations.length) {
|
|
6776
|
+
selectedLocations.forEach(function (location) {
|
|
6777
|
+
return querySearchParams.append('locationId', location.id.toString());
|
|
6778
|
+
});
|
|
6779
|
+
}
|
|
6780
|
+
else {
|
|
6781
|
+
querySearchParams.append(key, value.toString());
|
|
6782
|
+
}
|
|
6783
|
+
}
|
|
6784
|
+
}
|
|
6785
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
6786
|
+
finally {
|
|
6787
|
+
try {
|
|
6788
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
6789
|
+
}
|
|
6790
|
+
finally { if (e_1) throw e_1.error; }
|
|
6791
|
+
}
|
|
6792
|
+
setSelectedFilter(false);
|
|
6793
|
+
if (onSubmit && window.location.href.includes(selectedPath)) {
|
|
6794
|
+
onSubmit(newParams);
|
|
6795
|
+
return;
|
|
6796
|
+
}
|
|
6797
|
+
var paramString = querySearchParams.toString();
|
|
6798
|
+
var path = "".concat(redirectUrl).concat(selectedPath);
|
|
6799
|
+
setInnerLoading(true);
|
|
6800
|
+
window.location.href = paramString ? "".concat(path, "?").concat(paramString) : path;
|
|
6801
|
+
};
|
|
6802
|
+
var handleResetFilters = function () {
|
|
6803
|
+
setAgeCategoryCounts({});
|
|
6804
|
+
setCalendarRange(undefined);
|
|
6805
|
+
};
|
|
6806
|
+
return {
|
|
6807
|
+
updateGuestsCount: updateGuestsCount,
|
|
6808
|
+
handleSelectedFilter: handleSelectedFilter,
|
|
6809
|
+
handleSubmit: handleSubmit,
|
|
6810
|
+
handleResetFilters: handleResetFilters,
|
|
6811
|
+
};
|
|
6812
|
+
};
|
|
6813
|
+
|
|
6814
|
+
var useFilterUi = function (selectedFilter) {
|
|
6815
|
+
var buttonRefs = useRef({});
|
|
6816
|
+
var panelRef = useRef(null);
|
|
6817
|
+
var previouslyFocusedButtonRef = useRef(null);
|
|
6818
|
+
var _a = useScrollInToView({ selectedFilter: selectedFilter }), isMobile = _a.isMobile, targetFilterBarRef = _a.targetFilterBarRef;
|
|
6819
|
+
return {
|
|
6820
|
+
previouslyFocusedButtonRef: previouslyFocusedButtonRef,
|
|
6821
|
+
isMobile: isMobile,
|
|
6822
|
+
targetFilterBarRef: targetFilterBarRef,
|
|
6823
|
+
panelRef: panelRef,
|
|
6824
|
+
buttonRefs: buttonRefs,
|
|
6825
|
+
};
|
|
6826
|
+
};
|
|
6827
|
+
|
|
6828
|
+
var usePanelPosition = function (_a) {
|
|
6829
|
+
var selectedFilter = _a.selectedFilter, panelRef = _a.panelRef, targetFilterBarRef = _a.targetFilterBarRef, buttonRefs = _a.buttonRefs, isMobile = _a.isMobile;
|
|
6830
|
+
var _b = __read(useState({}), 2), localStyles = _b[0], setLocalStyles = _b[1];
|
|
6831
|
+
useLayoutEffect(function () {
|
|
6832
|
+
if (!selectedFilter || typeof selectedFilter !== 'string' || isMobile) {
|
|
6833
|
+
setLocalStyles({});
|
|
6834
|
+
return;
|
|
6835
|
+
}
|
|
6836
|
+
var panel = panelRef.current;
|
|
6837
|
+
var container = targetFilterBarRef.current;
|
|
6838
|
+
var button = buttonRefs.current[selectedFilter];
|
|
6839
|
+
if (!panel || !container || !button)
|
|
6840
|
+
return;
|
|
6841
|
+
var panelRect = panel.getBoundingClientRect();
|
|
6842
|
+
var containerRect = container.getBoundingClientRect();
|
|
6843
|
+
var buttonRect = button.getBoundingClientRect();
|
|
6844
|
+
var buttonLeft = buttonRect.left - containerRect.left;
|
|
6845
|
+
var left = Math.max(0, Math.min(buttonLeft, containerRect.width - panelRect.width));
|
|
6846
|
+
setLocalStyles({ left: left });
|
|
6847
|
+
}, [selectedFilter, isMobile]);
|
|
6848
|
+
return { localStyles: localStyles };
|
|
6849
|
+
};
|
|
6850
|
+
|
|
6851
|
+
var FilterBarContext = createContext(undefined);
|
|
6852
|
+
var FilterBarProvider = function (_a) {
|
|
6853
|
+
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;
|
|
6854
|
+
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;
|
|
6855
|
+
var filterActions = useFilterActions({
|
|
6856
|
+
tabs: tabs,
|
|
6857
|
+
ageCategoryCounts: ageCategoryCounts,
|
|
6858
|
+
ageCategories: ageCategories,
|
|
6859
|
+
selectedLocations: selectedLocations,
|
|
6860
|
+
selectedPath: selectedPath,
|
|
6861
|
+
redirectUrl: redirectUrl,
|
|
6862
|
+
setSelectedPath: setSelectedPath,
|
|
6863
|
+
setAgeCategoryCounts: setAgeCategoryCounts,
|
|
6864
|
+
setSelectedFilter: setSelectedFilter,
|
|
6865
|
+
setCalendarRange: setCalendarRange,
|
|
6866
|
+
onSubmit: onSubmit,
|
|
6867
|
+
setInnerLoading: setInnerLoading,
|
|
6868
|
+
});
|
|
6869
|
+
var filterUi = useFilterUi(selectedFilter);
|
|
6870
|
+
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)); }, [
|
|
6871
|
+
selectedFilter,
|
|
6872
|
+
ageCategoryCounts,
|
|
6873
|
+
categories,
|
|
6874
|
+
calendarRange,
|
|
6875
|
+
selectedPath,
|
|
6876
|
+
innerLoading,
|
|
6877
|
+
selectedLocations,
|
|
6878
|
+
language,
|
|
6879
|
+
ageCategories,
|
|
6880
|
+
redirectUrl,
|
|
6881
|
+
palette,
|
|
6882
|
+
onSubmit,
|
|
6883
|
+
fullWidth,
|
|
6884
|
+
disableCalendarDates,
|
|
6885
|
+
mode,
|
|
6886
|
+
tabs,
|
|
6887
|
+
outerLoading,
|
|
6888
|
+
locations,
|
|
6889
|
+
filterUi.isMobile,
|
|
6890
|
+
filterUi.targetFilterBarRef,
|
|
6891
|
+
]);
|
|
6892
|
+
return (React__default.createElement(FilterBarContext.Provider, { value: contextValue }, children));
|
|
6893
|
+
};
|
|
6894
|
+
var useFilterBar = function () {
|
|
6895
|
+
var context = useContext(FilterBarContext);
|
|
6896
|
+
if (!context) {
|
|
6897
|
+
throw new Error('useFilterBar must be used within FilterBarProvider');
|
|
6898
|
+
}
|
|
6899
|
+
return context;
|
|
6900
|
+
};
|
|
6901
|
+
|
|
6902
|
+
var DefaultContext = {
|
|
6903
|
+
color: undefined,
|
|
6904
|
+
size: undefined,
|
|
6905
|
+
className: undefined,
|
|
6906
|
+
style: undefined,
|
|
6907
|
+
attr: undefined
|
|
6908
|
+
};
|
|
6909
|
+
var IconContext = React__default.createContext && React__default.createContext(DefaultContext);
|
|
6910
|
+
|
|
6911
|
+
var __assign$1 = undefined && undefined.__assign || function () {
|
|
6912
|
+
__assign$1 = Object.assign || function (t) {
|
|
6913
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6914
|
+
s = arguments[i];
|
|
6915
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
6916
|
+
}
|
|
6917
|
+
return t;
|
|
6918
|
+
};
|
|
6919
|
+
return __assign$1.apply(this, arguments);
|
|
6920
|
+
};
|
|
6921
|
+
var __rest$1 = undefined && undefined.__rest || function (s, e) {
|
|
6922
|
+
var t = {};
|
|
6923
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6924
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
6925
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
6926
|
+
}
|
|
6927
|
+
return t;
|
|
6928
|
+
};
|
|
6929
|
+
function Tree2Element(tree) {
|
|
6930
|
+
return tree && tree.map(function (node, i) {
|
|
6931
|
+
return React__default.createElement(node.tag, __assign$1({
|
|
6932
|
+
key: i
|
|
6933
|
+
}, node.attr), Tree2Element(node.child));
|
|
6934
|
+
});
|
|
6935
|
+
}
|
|
6936
|
+
function GenIcon(data) {
|
|
6937
|
+
// eslint-disable-next-line react/display-name
|
|
6938
|
+
return function (props) {
|
|
6939
|
+
return React__default.createElement(IconBase, __assign$1({
|
|
6940
|
+
attr: __assign$1({}, data.attr)
|
|
6941
|
+
}, props), Tree2Element(data.child));
|
|
6942
|
+
};
|
|
6943
|
+
}
|
|
6944
|
+
function IconBase(props) {
|
|
6945
|
+
var elem = function (conf) {
|
|
6946
|
+
var attr = props.attr,
|
|
6947
|
+
size = props.size,
|
|
6948
|
+
title = props.title,
|
|
6949
|
+
svgProps = __rest$1(props, ["attr", "size", "title"]);
|
|
6950
|
+
var computedSize = size || conf.size || "1em";
|
|
6951
|
+
var className;
|
|
6952
|
+
if (conf.className) className = conf.className;
|
|
6953
|
+
if (props.className) className = (className ? className + " " : "") + props.className;
|
|
6954
|
+
return React__default.createElement("svg", __assign$1({
|
|
6955
|
+
stroke: "currentColor",
|
|
6956
|
+
fill: "currentColor",
|
|
6957
|
+
strokeWidth: "0"
|
|
6958
|
+
}, conf.attr, attr, svgProps, {
|
|
6959
|
+
className: className,
|
|
6960
|
+
style: __assign$1(__assign$1({
|
|
6961
|
+
color: props.color || conf.color
|
|
6962
|
+
}, conf.style), props.style),
|
|
6963
|
+
height: computedSize,
|
|
6964
|
+
width: computedSize,
|
|
6965
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
6966
|
+
}), title && React__default.createElement("title", null, title), props.children);
|
|
6967
|
+
};
|
|
6968
|
+
return IconContext !== undefined ? React__default.createElement(IconContext.Consumer, null, function (conf) {
|
|
6969
|
+
return elem(conf);
|
|
6970
|
+
}) : elem(DefaultContext);
|
|
6971
|
+
}
|
|
6972
|
+
|
|
6973
|
+
// THIS FILE IS AUTO GENERATED
|
|
6974
|
+
function FaSearch (props) {
|
|
6975
|
+
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);
|
|
6976
|
+
}function FaSpinner (props) {
|
|
6977
|
+
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);
|
|
6978
|
+
}
|
|
6979
|
+
|
|
6980
|
+
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";
|
|
6981
|
+
styleInject(css_248z$g);
|
|
6982
|
+
|
|
6983
|
+
var SubmitButton = function (_a) {
|
|
6984
|
+
var onClick = _a.onClick, startIcon = _a.startIcon, label = _a.label, disabled = _a.disabled, isLoading = _a.isLoading, variant = _a.variant;
|
|
6985
|
+
return (React__default.createElement("button", { className: "will-filter-bar-submit-button ".concat(variant || 'default'), onClick: onClick, disabled: disabled || isLoading },
|
|
6986
|
+
isLoading ? (React__default.createElement("span", null, React__default.createElement(FaSpinner, { style: { animation: 'spin 1s linear infinite' } }))) : (startIcon && React__default.createElement("span", null, startIcon)),
|
|
6987
|
+
label || 'Label'));
|
|
6988
|
+
};
|
|
6628
6989
|
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
|
|
6632
|
-
}
|
|
6633
|
-
date.setFullYear(year);
|
|
6634
|
-
return date;
|
|
6990
|
+
// THIS FILE IS AUTO GENERATED
|
|
6991
|
+
function IoIosCloseCircleOutline (props) {
|
|
6992
|
+
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
6993
|
}
|
|
6636
6994
|
|
|
6995
|
+
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";
|
|
6996
|
+
styleInject(css_248z$f);
|
|
6997
|
+
|
|
6998
|
+
var CloseButton = function (_a) {
|
|
6999
|
+
var handleClose = _a.handleClose;
|
|
7000
|
+
return (React__default.createElement("button", { className: "will-filter-bar-close-button", onClick: handleClose },
|
|
7001
|
+
React__default.createElement(IoIosCloseCircleOutline, null)));
|
|
7002
|
+
};
|
|
7003
|
+
|
|
6637
7004
|
function futureSeconds(text) {
|
|
6638
7005
|
return text.replace(/sekuntia?/, 'sekunnin');
|
|
6639
7006
|
}
|
|
@@ -11476,11 +11843,11 @@ var useUpdateDisabledDates = function (_a) {
|
|
|
11476
11843
|
return { newDisableCalendarDates: newDisableCalendarDates, overlappingDate: overlappingDate, lastPossibleCheckout: lastPossibleCheckout };
|
|
11477
11844
|
};
|
|
11478
11845
|
|
|
11479
|
-
var css_248z$
|
|
11480
|
-
styleInject(css_248z$
|
|
11846
|
+
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}";
|
|
11847
|
+
styleInject(css_248z$e);
|
|
11481
11848
|
|
|
11482
|
-
var css_248z$
|
|
11483
|
-
styleInject(css_248z$
|
|
11849
|
+
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";
|
|
11850
|
+
styleInject(css_248z$d);
|
|
11484
11851
|
|
|
11485
11852
|
var Calendar = forwardRef(function (_a, ref) {
|
|
11486
11853
|
var _b;
|
|
@@ -11550,413 +11917,100 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
11550
11917
|
// No gap between check-in and first possible check-out, nothing to disable
|
|
11551
11918
|
addDays(currentSelectionAvailability.checkIn, 1) >=
|
|
11552
11919
|
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;
|
|
11920
|
+
return [];
|
|
11870
11921
|
}
|
|
11922
|
+
// Disable dates between current check-in and first possible check-out
|
|
11923
|
+
return [
|
|
11924
|
+
{
|
|
11925
|
+
from: addDays(currentSelectionAvailability.checkIn, 1),
|
|
11926
|
+
to: addDays(currentSelectionAvailability.firstCheckOut, -1),
|
|
11927
|
+
},
|
|
11928
|
+
];
|
|
11871
11929
|
};
|
|
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
|
-
|
|
11930
|
+
var base = disabledDatesByPage$1.length
|
|
11931
|
+
? disabledDatesByPage$1
|
|
11932
|
+
: (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
|
|
11933
|
+
? disabledDates
|
|
11934
|
+
: (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [];
|
|
11935
|
+
var disabled = disabledDatesByPage$1.length
|
|
11936
|
+
? base
|
|
11937
|
+
: __spreadArray$1(__spreadArray$1(__spreadArray$1(__spreadArray$1([
|
|
11938
|
+
lastPossibleCheckout
|
|
11939
|
+
], __read(base), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false), __read(disabledInsideSelectableRange()), false);
|
|
11940
|
+
return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
|
|
11941
|
+
React__default.createElement("div", { className: "will-calendar-filter-container", ref: calendarContainerRef },
|
|
11942
|
+
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) ||
|
|
11943
|
+
selectedStartDate ||
|
|
11944
|
+
rangeContextStartDate ||
|
|
11945
|
+
(((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11946
|
+
? newDisableCalendarDates.disabledDates[0].from
|
|
11947
|
+
: today), disabled: disabled, fromMonth: today, onMonthChange: function (val) {
|
|
11948
|
+
requestDates === null || requestDates === void 0 ? void 0 : requestDates(val);
|
|
11949
|
+
setUpdateCalendarMonthNavigation === null || setUpdateCalendarMonthNavigation === void 0 ? void 0 : setUpdateCalendarMonthNavigation(function (prev) { return !prev; });
|
|
11950
|
+
}, classNames: {
|
|
11951
|
+
day_range_start: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ? 'rdp-day_range_start' : '',
|
|
11952
|
+
day_range_end: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? 'rdp-day_range_end' : '',
|
|
11953
|
+
}, modifiersClassNames: {
|
|
11954
|
+
today: 'my-today',
|
|
11955
|
+
booked: 'booked',
|
|
11956
|
+
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
11957
|
+
overlappingDate: 'overlapping-date',
|
|
11958
|
+
noActiveSelectionStart: 'no-active-selection-start',
|
|
11959
|
+
noActiveSelectionMid: 'no-active-selection-mid',
|
|
11960
|
+
noActiveSelectionEnd: 'no-active-selection-end',
|
|
11961
|
+
checkoutOptionsMid: 'rdp-day_selected rdp-day_range_middle checkout-option',
|
|
11962
|
+
checkInOnly: 'check-in-only',
|
|
11963
|
+
checkOutOnly: 'check-out-only',
|
|
11964
|
+
}, modifiers:
|
|
11965
|
+
// This function handles conditions for applying the modifiersClassNames
|
|
11966
|
+
handleCalendarModifiers({
|
|
11967
|
+
calendarRange: calendarRange,
|
|
11968
|
+
disabledDates: disabled,
|
|
11969
|
+
overlappingDate: overlappingDate,
|
|
11970
|
+
rangeContext: rangeContext,
|
|
11971
|
+
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11972
|
+
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11973
|
+
currentSelectionLastCheckoutDate: currentSelectionAvailability,
|
|
11974
|
+
}) }),
|
|
11975
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
11976
|
+
React__default.createElement("div", null, t('noCheckIn'))),
|
|
11977
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
|
|
11978
|
+
React__default.createElement("div", null, t('noCheckOut'))),
|
|
11979
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
|
|
11980
|
+
React__default.createElement("div", null, t('checkOutOnly'))),
|
|
11981
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-check-in-only' },
|
|
11982
|
+
React__default.createElement("div", null, t('checkInOnly'))),
|
|
11983
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out-only' },
|
|
11984
|
+
React__default.createElement("div", null, t('checkOutOnly'))),
|
|
11985
|
+
React__default.createElement("div", { className: 'will-calendar-spinner' },
|
|
11986
|
+
React__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50, icon: "spinner" })))));
|
|
11987
|
+
});
|
|
11914
11988
|
|
|
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 };
|
|
11989
|
+
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";
|
|
11990
|
+
styleInject(css_248z$c);
|
|
11991
|
+
|
|
11992
|
+
var SectionHeader = function (_a) {
|
|
11993
|
+
var title = _a.title, action = _a.action;
|
|
11994
|
+
return (React__default.createElement("div", { className: "will-filter-section-header" },
|
|
11995
|
+
React__default.createElement("h3", { className: "will-filter-section-title" }, title),
|
|
11996
|
+
action && React__default.createElement("div", { className: "will-filter-section-action" }, action)));
|
|
11934
11997
|
};
|
|
11935
11998
|
|
|
11936
|
-
var css_248z$b = ".will-
|
|
11999
|
+
var css_248z$b = ".will-dates-filter-container {\n padding: 0 16px 16px 16px;\n}\n";
|
|
11937
12000
|
styleInject(css_248z$b);
|
|
11938
12001
|
|
|
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 } })))));
|
|
12002
|
+
var Dates = forwardRef(function (_a, ref) {
|
|
12003
|
+
var onClose = _a.onClose, autoFocus = _a.autoFocus, calendarRange = _a.calendarRange, setCalendarRange = _a.setCalendarRange, disableCalendarDates = _a.disableCalendarDates, selectedPath = _a.selectedPath, language = _a.language;
|
|
12004
|
+
return (React__default.createElement("div", { id: "will-filter-bar-dates", ref: ref },
|
|
12005
|
+
React__default.createElement(SectionHeader, { title: '', action: onClose && React__default.createElement(CloseButton, { handleClose: onClose }) }),
|
|
12006
|
+
React__default.createElement("div", { className: "will-dates-filter-container" },
|
|
12007
|
+
React__default.createElement(Calendar, { autoFocus: autoFocus, calendarRange: calendarRange, setCalendarRange: setCalendarRange, disableCalendarDates: disableCalendarDates, selectedPath: selectedPath, language: language }))));
|
|
11946
12008
|
});
|
|
11947
|
-
|
|
12009
|
+
Dates.displayName = 'Dates';
|
|
11948
12010
|
|
|
11949
|
-
var css_248z$a = ".will-filter-
|
|
12011
|
+
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
12012
|
styleInject(css_248z$a);
|
|
11951
12013
|
|
|
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
12014
|
var GuestCount = function (_a) {
|
|
11961
12015
|
var label = _a.label, sortOrder = _a.sortOrder, id = _a.id, updateGuestsCount = _a.updateGuestsCount, count = _a.count, minVal = _a.minVal;
|
|
11962
12016
|
useEffect(function () {
|
|
@@ -11988,65 +12042,21 @@ var GuestCount = function (_a) {
|
|
|
11988
12042
|
React__default.createElement("path", { d: "M10 4V16M4 10H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }))))));
|
|
11989
12043
|
};
|
|
11990
12044
|
|
|
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);
|
|
12045
|
+
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: 0 16px 16px 16px;\n}\n\n@media (max-width: 960px) {\n .will-guests-filter-container {\n min-width: auto;\n }\n}\n\n/**/\n.will-guest-count {\n display: inline-block;\n min-width: 10px;\n}\n";
|
|
12046
|
+
styleInject(css_248z$9);
|
|
12003
12047
|
|
|
12004
12048
|
var Guests = forwardRef(function (_a, ref) {
|
|
12005
12049
|
var ageCategories = _a.ageCategories, updateGuestsCount = _a.updateGuestsCount, ageCategoryCounts = _a.ageCategoryCounts, autoFocus = _a.autoFocus, onClose = _a.onClose;
|
|
12006
12050
|
var t = useTranslation('filterBar').t;
|
|
12007
12051
|
var containerRef = useAutoFocus(autoFocus);
|
|
12008
|
-
return (React__default.createElement("div", {
|
|
12009
|
-
React__default.createElement(
|
|
12052
|
+
return (React__default.createElement("div", { id: "will-filter-bar-guests", ref: ref },
|
|
12053
|
+
React__default.createElement(SectionHeader, { title: t('guests.title'), action: onClose && React__default.createElement(CloseButton, { handleClose: onClose }) }),
|
|
12010
12054
|
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
12055
|
});
|
|
12012
12056
|
Guests.displayName = 'Guests';
|
|
12013
12057
|
|
|
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);
|
|
12058
|
+
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";
|
|
12059
|
+
styleInject(css_248z$8);
|
|
12050
12060
|
|
|
12051
12061
|
var ImageCard = forwardRef(function (_a, ref) {
|
|
12052
12062
|
var title = _a.title, description = _a.description, imageUrl = _a.imageUrl, isSelected = _a.isSelected, onClick = _a.onClick;
|
|
@@ -12064,6 +12074,9 @@ var ImageCard = forwardRef(function (_a, ref) {
|
|
|
12064
12074
|
});
|
|
12065
12075
|
ImageCard.displayName = 'ImageCard';
|
|
12066
12076
|
|
|
12077
|
+
var css_248z$7 = "#will-filter-bar-locations {\n text-align: initial;\n}\n\n.will-locations-filter-container {\n display: flex;\n flex-direction: column;\n min-width: 400px;\n padding-bottom: 16px;\n}\n\n@media (max-width: 960px) {\n .will-locations-filter-container {\n margin-top: 15px;\n min-width: 100%;\n }\n}\n";
|
|
12078
|
+
styleInject(css_248z$7);
|
|
12079
|
+
|
|
12067
12080
|
var Locations = forwardRef(function (_a, ref) {
|
|
12068
12081
|
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
12082
|
var t = useTranslation('filterBar').t;
|
|
@@ -12092,8 +12105,8 @@ var Locations = forwardRef(function (_a, ref) {
|
|
|
12092
12105
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
12093
12106
|
}
|
|
12094
12107
|
};
|
|
12095
|
-
return (React__default.createElement("div", {
|
|
12096
|
-
React__default.createElement(
|
|
12108
|
+
return (React__default.createElement("div", { id: "will-filter-bar-locations", ref: ref },
|
|
12109
|
+
React__default.createElement(SectionHeader, { title: t('locations.title'), action: onClose && React__default.createElement(CloseButton, { handleClose: onClose }) }),
|
|
12097
12110
|
React__default.createElement("div", { className: "will-locations-filter-container" }, !!((locations === null || locations === void 0 ? void 0 : locations.length) && language) &&
|
|
12098
12111
|
locations.map(function (location, index) {
|
|
12099
12112
|
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 +12114,75 @@ var Locations = forwardRef(function (_a, ref) {
|
|
|
12101
12114
|
});
|
|
12102
12115
|
Locations.displayName = 'Locations';
|
|
12103
12116
|
|
|
12104
|
-
var css_248z$
|
|
12105
|
-
styleInject(css_248z$
|
|
12117
|
+
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";
|
|
12118
|
+
styleInject(css_248z$6);
|
|
12106
12119
|
|
|
12107
|
-
var
|
|
12108
|
-
|
|
12120
|
+
var Categories = function (_a) {
|
|
12121
|
+
_a.categories; var setCategories = _a.setCategories;
|
|
12122
|
+
var t = useTranslation('filterBar').t;
|
|
12123
|
+
var categoriesPlaceholder = [
|
|
12124
|
+
'Weekend',
|
|
12125
|
+
'Week',
|
|
12126
|
+
'Summer camp',
|
|
12127
|
+
'Winter camp',
|
|
12128
|
+
];
|
|
12129
|
+
var _b = __read(useState(''), 2), selectedCategory = _b[0], setSelectedCategory = _b[1];
|
|
12130
|
+
var handleCategoryChange = function (selectedCategory) {
|
|
12131
|
+
setSelectedCategory(selectedCategory);
|
|
12132
|
+
setCategories(selectedCategory);
|
|
12133
|
+
};
|
|
12134
|
+
return (React__default.createElement("div", { id: "will-filter-bar-categories" },
|
|
12135
|
+
React__default.createElement("h3", { className: "will-categories-filter-title" }, t('categories.label')),
|
|
12136
|
+
React__default.createElement("div", { className: "will-categories-filter-inner" }, categoriesPlaceholder.map(function (itm, idx) { return (React__default.createElement("div", { key: idx },
|
|
12137
|
+
React__default.createElement("input", { type: "radio", value: itm, checked: selectedCategory === itm, onChange: function () { return handleCategoryChange(itm); } }),
|
|
12138
|
+
React__default.createElement("span", null, itm))); }))));
|
|
12139
|
+
};
|
|
12140
|
+
Categories.displayName = 'Categories';
|
|
12109
12141
|
|
|
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';
|
|
12142
|
+
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";
|
|
12143
|
+
styleInject(css_248z$5);
|
|
12118
12144
|
|
|
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;
|
|
12145
|
+
var FilterPanels = function () {
|
|
12146
|
+
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
12147
|
// Handle close filter section
|
|
12145
12148
|
var filtersRef = useCloseFilterSection({ handleSelectedFilter: handleSelectedFilter }).filtersRef;
|
|
12146
|
-
|
|
12147
|
-
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
|
|
12155
|
-
|
|
12156
|
-
|
|
12157
|
-
|
|
12149
|
+
var localStyles = usePanelPosition({
|
|
12150
|
+
selectedFilter: selectedFilter,
|
|
12151
|
+
panelRef: panelRef,
|
|
12152
|
+
targetFilterBarRef: targetFilterBarRef,
|
|
12153
|
+
buttonRefs: buttonRefs,
|
|
12154
|
+
isMobile: isMobile,
|
|
12155
|
+
}).localStyles;
|
|
12156
|
+
var renderContent = function () {
|
|
12157
|
+
switch (selectedFilter) {
|
|
12158
|
+
case FilterSections.CALENDAR:
|
|
12159
|
+
return (React__default.createElement(Dates, { autoFocus: true, ref: filtersRef, onClose: function () { return handleSelectedFilter(false); }, calendarRange: calendarRange, setCalendarRange: setCalendarRange, disableCalendarDates: disableCalendarDates, selectedPath: selectedPath, language: language }));
|
|
12160
|
+
case FilterSections.GUESTS:
|
|
12161
|
+
return (React__default.createElement(Guests, { autoFocus: true, ref: filtersRef, ageCategories: ageCategories, ageCategoryCounts: ageCategoryCounts, updateGuestsCount: updateGuestsCount, onClose: function () { return handleSelectedFilter(false); } }));
|
|
12162
|
+
case FilterSections.CATEGORIES:
|
|
12163
|
+
return (React__default.createElement(Categories, { categories: categories, setCategories: setCategories }));
|
|
12164
|
+
case FilterSections.LOCATIONS:
|
|
12165
|
+
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); } }));
|
|
12166
|
+
default:
|
|
12167
|
+
return null;
|
|
12158
12168
|
}
|
|
12159
|
-
handleSelectedFilter(filter);
|
|
12160
12169
|
};
|
|
12170
|
+
return (selectedFilter && (React__default.createElement("div", { ref: panelRef, className: "will-filter-bar-panels ".concat(mode || 'light'), style: (!tabs || tabs.length < 2) && !isMobile
|
|
12171
|
+
? { top: 66 }
|
|
12172
|
+
: __assign$2({}, localStyles) }, renderContent())));
|
|
12173
|
+
};
|
|
12174
|
+
|
|
12175
|
+
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";
|
|
12176
|
+
styleInject(css_248z$4);
|
|
12177
|
+
|
|
12178
|
+
var FilterControls = function () {
|
|
12179
|
+
var _a;
|
|
12180
|
+
var t = useTranslation('filterBar').t;
|
|
12181
|
+
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,
|
|
12182
|
+
// Refs
|
|
12183
|
+
previouslyFocusedButtonRef = _b.previouslyFocusedButtonRef, buttonRefs = _b.buttonRefs,
|
|
12184
|
+
//
|
|
12185
|
+
targetFilterBarRef = _b.targetFilterBarRef;
|
|
12161
12186
|
// Store previously focused button and restore focus when closing
|
|
12162
12187
|
useEffect(function () {
|
|
12163
12188
|
if (!selectedFilter && previouslyFocusedButtonRef.current) {
|
|
@@ -12165,8 +12190,6 @@ function FilterBar(_a) {
|
|
|
12165
12190
|
previouslyFocusedButtonRef.current = null;
|
|
12166
12191
|
}
|
|
12167
12192
|
}, [selectedFilter]);
|
|
12168
|
-
// Display component after fully loaded
|
|
12169
|
-
useAwaitRender();
|
|
12170
12193
|
// Parsed data for filter section description
|
|
12171
12194
|
var parsedDates = parseDates({ calendarRange: calendarRange });
|
|
12172
12195
|
var parsedGuests = parseGuests({
|
|
@@ -12181,66 +12204,68 @@ function FilterBar(_a) {
|
|
|
12181
12204
|
locationsPlaceholder: t('locations.placeholder'),
|
|
12182
12205
|
locationsSelectedLabel: t('locations.selected'),
|
|
12183
12206
|
});
|
|
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
|
-
|
|
12207
|
+
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 },
|
|
12208
|
+
!!((_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,
|
|
12209
|
+
React__default.createElement(SelectButton, { ref: function (el) { return (buttonRefs.current[FilterSections.LOCATIONS] = el); }, label: t('locations.label'), description: parsedLocations, onClick: function (e) {
|
|
12210
|
+
previouslyFocusedButtonRef.current = e.currentTarget;
|
|
12211
|
+
handleSelectedFilter(FilterSections.LOCATIONS);
|
|
12212
|
+
}, active: !!selectedLocations.length, disabled: locations === null || locations === void 0 ? void 0 : locations.disabled, ariaExpanded: selectedFilter === FilterSections.LOCATIONS, ariaControls: "will-filter-bar-locations" }),
|
|
12213
|
+
React__default.createElement(Divider, null))),
|
|
12214
|
+
React__default.createElement(SelectButton, { ref: function (el) { return (buttonRefs.current[FilterSections.CALENDAR] = el); }, label: t('calendar.label'), description: parsedDates
|
|
12215
|
+
? parsedDates
|
|
12216
|
+
: selectedPath === Pages.ROOMS
|
|
12217
|
+
? t('calendar.roomsLabelPlaceholder')
|
|
12218
|
+
: t('calendar.eventsLabelPlaceholder'), onClick: function (e) {
|
|
12219
|
+
previouslyFocusedButtonRef.current = e.currentTarget;
|
|
12220
|
+
handleSelectedFilter(FilterSections.CALENDAR);
|
|
12221
|
+
}, active: !!parsedDates, ariaExpanded: selectedFilter === FilterSections.CALENDAR, ariaControls: "will-filter-bar-dates" }),
|
|
12222
|
+
selectedPath !== Pages.EVENTS && (React__default.createElement(React__default.Fragment, null,
|
|
12223
|
+
React__default.createElement(Divider, null),
|
|
12224
|
+
React__default.createElement(SelectButton, { ref: function (el) { return (buttonRefs.current[FilterSections.GUESTS] = el); }, label: t('guests.label'), description: parsedGuests.content, onClick: function (e) {
|
|
12225
|
+
previouslyFocusedButtonRef.current = e.currentTarget;
|
|
12226
|
+
handleSelectedFilter(FilterSections.GUESTS);
|
|
12227
|
+
}, active: !!parsedGuests.data.total, ariaExpanded: selectedFilter === FilterSections.GUESTS, ariaControls: "will-guests-filter" }))),
|
|
12228
|
+
React__default.createElement(SubmitButton, { onClick: handleSubmit, startIcon: React__default.createElement(FaSearch, null), label: t('common:search'), isLoading: innerLoading || outerLoading })));
|
|
12229
|
+
};
|
|
12230
|
+
|
|
12231
|
+
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";
|
|
12232
|
+
styleInject(css_248z$3);
|
|
12233
|
+
|
|
12234
|
+
var FilterTabs = function () {
|
|
12235
|
+
var t = useTranslation('filterBar').t;
|
|
12236
|
+
var _a = useFilterBar(), selectedPath = _a.selectedPath, mode = _a.mode, tabs = _a.tabs, handleSelectedFilter = _a.handleSelectedFilter, setSelectedPath = _a.setSelectedPath, handleResetFilters = _a.handleResetFilters,
|
|
12237
|
+
//
|
|
12238
|
+
targetFilterBarRef = _a.targetFilterBarRef;
|
|
12239
|
+
return (tabs &&
|
|
12240
|
+
tabs.length > 1 && (React__default.createElement("div", { className: "will-filter-bar-tabs", ref: targetFilterBarRef }, tabs
|
|
12241
|
+
.sort(function (a, b) { return a.order - b.order; })
|
|
12242
|
+
.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 () {
|
|
12243
|
+
setSelectedPath(tab.path);
|
|
12244
|
+
handleResetFilters();
|
|
12245
|
+
handleSelectedFilter(false);
|
|
12246
|
+
}, active: selectedPath === tab.path, mode: mode })); }))));
|
|
12247
|
+
};
|
|
12248
|
+
|
|
12249
|
+
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";
|
|
12250
|
+
styleInject(css_248z$2);
|
|
12251
|
+
|
|
12252
|
+
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";
|
|
12253
|
+
styleInject(css_248z$1);
|
|
12254
|
+
|
|
12255
|
+
var FilterBar = function (_a) {
|
|
12256
|
+
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;
|
|
12257
|
+
var themePalette = useTheme({ palette: palette });
|
|
12258
|
+
// Translations
|
|
12259
|
+
useUpdateTranslations({ language: language });
|
|
12260
|
+
// Display component after fully loaded
|
|
12261
|
+
useAwaitRender();
|
|
12262
|
+
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 },
|
|
12263
|
+
React__default.createElement("div", { className: "will-root ".concat(fullWidth ? 'is-full-width' : ''), style: themePalette },
|
|
12264
|
+
React__default.createElement(FilterTabs, null),
|
|
12265
|
+
React__default.createElement(FilterControls, null),
|
|
12266
|
+
React__default.createElement(FilterPanels, null))));
|
|
12267
|
+
};
|
|
12229
12268
|
////////////
|
|
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
12269
|
var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
|
|
12245
12270
|
var LANGUAGE_FALLBACK = 'en';
|
|
12246
12271
|
|