willba-component-library 0.2.54 → 0.2.56
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/lib/assets/IconsSvg.d.ts +9 -0
- package/lib/components/FilterBar/FilterBar.stories.d.ts +1 -1
- package/lib/components/FilterCalendar/FilterCalendar.d.ts +1 -1
- package/lib/components/FilterCalendar/FilterCalendar.stories.d.ts +2 -1
- package/lib/components/FilterCalendar/hooks/useFilterCalendar.d.ts +3 -3
- package/lib/core/components/calendar/CalendarTypes.d.ts +8 -6
- package/lib/core/components/calendar/hooks/index.d.ts +3 -0
- package/lib/core/components/calendar/hooks/useCalendarLoadingSpinner.d.ts +7 -0
- package/lib/core/components/calendar/hooks/useCalendarTooltips.d.ts +10 -0
- package/lib/core/components/calendar/hooks/useUpdateDisabledDates.d.ts +13 -0
- package/lib/core/components/calendar/utils/calendarSelectionRules.d.ts +15 -0
- package/lib/core/components/calendar/utils/checkForContinuousSelection.d.ts +10 -0
- package/lib/core/components/calendar/utils/disabledDatesByPage.d.ts +9 -0
- package/lib/core/components/calendar/utils/handleCalendarModifiers.d.ts +46 -0
- package/lib/core/components/calendar/utils/handleRangeContextDisabledDates.d.ts +27 -0
- package/lib/core/components/calendar/utils/index.d.ts +8 -0
- package/lib/core/components/calendar/utils/nightsCount.d.ts +6 -0
- package/lib/core/components/calendar/utils/parseDate.d.ts +7 -0
- package/lib/core/components/calendar/utils/parseDates.d.ts +6 -0
- package/lib/index.d.ts +10 -7
- package/lib/index.esm.js +646 -272
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +646 -272
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +646 -272
- package/lib/index.umd.js.map +1 -1
- package/lib/themes/useTheme.d.ts +2 -0
- package/package.json +1 -1
- package/src/assets/IconsSvg.tsx +66 -0
- package/src/components/FilterBar/FilterBar.stories.tsx +2 -1
- package/src/components/FilterBar/FilterBar.tsx +1 -1
- package/src/components/FilterCalendar/FilterCalendar.css +8 -9
- package/src/components/FilterCalendar/FilterCalendar.stories.tsx +345 -158
- package/src/components/FilterCalendar/FilterCalendar.tsx +69 -52
- package/src/components/FilterCalendar/FilterCalendarTypes.ts +0 -1
- package/src/components/FilterCalendar/hooks/useFilterCalendar.ts +44 -4
- package/src/core/components/buttons/submit-button/SubmitButton.tsx +1 -4
- package/src/core/components/calendar/Calendar.css +24 -6
- package/src/core/components/calendar/Calendar.tsx +127 -376
- package/src/core/components/calendar/CalendarTypes.ts +9 -4
- package/src/core/components/calendar/hooks/index.ts +3 -0
- package/src/core/components/calendar/hooks/useCalendarLoadingSpinner.tsx +25 -0
- package/src/core/components/calendar/hooks/useCalendarTooltips.tsx +139 -0
- package/src/core/components/calendar/hooks/useUpdateDisabledDates.tsx +94 -0
- package/src/core/components/calendar/utils/calendarSelectionRules.tsx +163 -0
- package/src/core/components/calendar/utils/checkForContinuousSelection.tsx +50 -0
- package/src/core/components/calendar/utils/disabledDatesByPage.tsx +36 -0
- package/src/core/components/calendar/utils/handleCalendarModifiers.tsx +151 -0
- package/src/core/components/calendar/utils/handleRangeContextDisabledDates.tsx +70 -0
- package/src/core/components/calendar/utils/index.ts +8 -0
- package/src/themes/Default.css +6 -0
- package/src/themes/useTheme.tsx +3 -0
- package/src/assets/SpinnerSvg.tsx +0 -40
- package/src/core/utils/handleOverlappingDates.tsx +0 -3
- package/src/core/utils/index.ts +0 -3
- /package/src/core/{utils → components/calendar/utils}/nightsCount.tsx +0 -0
- /package/src/core/{utils → components/calendar/utils}/parseDate.tsx +0 -0
- /package/src/core/{utils → components/calendar/utils}/parseDates.tsx +0 -0
package/lib/index.esm.js
CHANGED
|
@@ -522,11 +522,12 @@ function useTheme(_a) {
|
|
|
522
522
|
var themePalette = {
|
|
523
523
|
'--will-primary': palette === null || palette === void 0 ? void 0 : palette.primary,
|
|
524
524
|
'--will-secondary': palette === null || palette === void 0 ? void 0 : palette.secondary,
|
|
525
|
+
'--will-error': palette === null || palette === void 0 ? void 0 : palette.error,
|
|
525
526
|
};
|
|
526
527
|
return themePalette;
|
|
527
528
|
}
|
|
528
529
|
|
|
529
|
-
var css_248z$c = "@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-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-transparent-white: rgba(255, 255, 255, 0.30);\n --will-transparent-black: rgba(171, 167, 175, 0.30);\n\n /* Confines */\n --will-box-shadow-dark: 0px 2px 12px 2px #a1a1a180;\n --will-box-shadow-light: 0px 2px 12px 2px #bcb9b980;\n\n /* Breakpoints */\n\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";
|
|
530
|
+
var css_248z$c = "@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-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-transparent-white: rgba(255, 255, 255, 0.30);\n --will-transparent-black: rgba(171, 167, 175, 0.30);\n --will-error: #d32f2f;\n\n /*Color mix*/\n --will-primary-lighter: color-mix(in srgb, var(--will-primary), white 20%);\n --will-primary-lightest: color-mix(in srgb, var(--will-primary), white 80%);\n\n\n /* Confines */\n --will-box-shadow-dark: 0px 2px 12px 2px #a1a1a180;\n --will-box-shadow-light: 0px 2px 12px 2px #bcb9b980;\n\n /* Breakpoints */\n\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";
|
|
530
531
|
styleInject(css_248z$c);
|
|
531
532
|
|
|
532
533
|
var useAwaitRender = function () {
|
|
@@ -3757,6 +3758,111 @@ function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {
|
|
|
3757
3758
|
return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK$4);
|
|
3758
3759
|
}
|
|
3759
3760
|
|
|
3761
|
+
// for accurate equality comparisons of UTC timestamps that end up
|
|
3762
|
+
// having the same representation in local time, e.g. one hour before
|
|
3763
|
+
// DST ends vs. the instant that DST ends.
|
|
3764
|
+
function compareLocalAsc(dateLeft, dateRight) {
|
|
3765
|
+
var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();
|
|
3766
|
+
if (diff < 0) {
|
|
3767
|
+
return -1;
|
|
3768
|
+
} else if (diff > 0) {
|
|
3769
|
+
return 1;
|
|
3770
|
+
// Return 0 if diff is 0; return NaN if diff is NaN
|
|
3771
|
+
} else {
|
|
3772
|
+
return diff;
|
|
3773
|
+
}
|
|
3774
|
+
}
|
|
3775
|
+
|
|
3776
|
+
/**
|
|
3777
|
+
* @name differenceInDays
|
|
3778
|
+
* @category Day Helpers
|
|
3779
|
+
* @summary Get the number of full days between the given dates.
|
|
3780
|
+
*
|
|
3781
|
+
* @description
|
|
3782
|
+
* Get the number of full day periods between two dates. Fractional days are
|
|
3783
|
+
* truncated towards zero.
|
|
3784
|
+
*
|
|
3785
|
+
* One "full day" is the distance between a local time in one day to the same
|
|
3786
|
+
* local time on the next or previous day. A full day can sometimes be less than
|
|
3787
|
+
* or more than 24 hours if a daylight savings change happens between two dates.
|
|
3788
|
+
*
|
|
3789
|
+
* To ignore DST and only measure exact 24-hour periods, use this instead:
|
|
3790
|
+
* `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.
|
|
3791
|
+
*
|
|
3792
|
+
*
|
|
3793
|
+
* @param {Date|Number} dateLeft - the later date
|
|
3794
|
+
* @param {Date|Number} dateRight - the earlier date
|
|
3795
|
+
* @returns {Number} the number of full days according to the local timezone
|
|
3796
|
+
* @throws {TypeError} 2 arguments required
|
|
3797
|
+
*
|
|
3798
|
+
* @example
|
|
3799
|
+
* // How many full days are between
|
|
3800
|
+
* // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?
|
|
3801
|
+
* const result = differenceInDays(
|
|
3802
|
+
* new Date(2012, 6, 2, 0, 0),
|
|
3803
|
+
* new Date(2011, 6, 2, 23, 0)
|
|
3804
|
+
* )
|
|
3805
|
+
* //=> 365
|
|
3806
|
+
* // How many full days are between
|
|
3807
|
+
* // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?
|
|
3808
|
+
* const result = differenceInDays(
|
|
3809
|
+
* new Date(2011, 6, 3, 0, 1),
|
|
3810
|
+
* new Date(2011, 6, 2, 23, 59)
|
|
3811
|
+
* )
|
|
3812
|
+
* //=> 0
|
|
3813
|
+
* // How many full days are between
|
|
3814
|
+
* // 1 March 2020 0:00 and 1 June 2020 0:00 ?
|
|
3815
|
+
* // Note: because local time is used, the
|
|
3816
|
+
* // result will always be 92 days, even in
|
|
3817
|
+
* // time zones where DST starts and the
|
|
3818
|
+
* // period has only 92*24-1 hours.
|
|
3819
|
+
* const result = differenceInDays(
|
|
3820
|
+
* new Date(2020, 5, 1),
|
|
3821
|
+
* new Date(2020, 2, 1)
|
|
3822
|
+
* )
|
|
3823
|
+
//=> 92
|
|
3824
|
+
*/
|
|
3825
|
+
function differenceInDays(dirtyDateLeft, dirtyDateRight) {
|
|
3826
|
+
requiredArgs(2, arguments);
|
|
3827
|
+
var dateLeft = toDate(dirtyDateLeft);
|
|
3828
|
+
var dateRight = toDate(dirtyDateRight);
|
|
3829
|
+
var sign = compareLocalAsc(dateLeft, dateRight);
|
|
3830
|
+
var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));
|
|
3831
|
+
dateLeft.setDate(dateLeft.getDate() - sign * difference);
|
|
3832
|
+
|
|
3833
|
+
// Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full
|
|
3834
|
+
// If so, result must be decreased by 1 in absolute value
|
|
3835
|
+
var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);
|
|
3836
|
+
var result = sign * (difference - isLastDayNotFull);
|
|
3837
|
+
// Prevent negative zero
|
|
3838
|
+
return result === 0 ? 0 : result;
|
|
3839
|
+
}
|
|
3840
|
+
|
|
3841
|
+
/**
|
|
3842
|
+
* @name endOfDay
|
|
3843
|
+
* @category Day Helpers
|
|
3844
|
+
* @summary Return the end of a day for the given date.
|
|
3845
|
+
*
|
|
3846
|
+
* @description
|
|
3847
|
+
* Return the end of a day for the given date.
|
|
3848
|
+
* The result will be in the local timezone.
|
|
3849
|
+
*
|
|
3850
|
+
* @param {Date|Number} date - the original date
|
|
3851
|
+
* @returns {Date} the end of a day
|
|
3852
|
+
* @throws {TypeError} 1 argument required
|
|
3853
|
+
*
|
|
3854
|
+
* @example
|
|
3855
|
+
* // The end of a day for 2 September 2014 11:55:00:
|
|
3856
|
+
* const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))
|
|
3857
|
+
* //=> Tue Sep 02 2014 23:59:59.999
|
|
3858
|
+
*/
|
|
3859
|
+
function endOfDay(dirtyDate) {
|
|
3860
|
+
requiredArgs(1, arguments);
|
|
3861
|
+
var date = toDate(dirtyDate);
|
|
3862
|
+
date.setHours(23, 59, 59, 999);
|
|
3863
|
+
return date;
|
|
3864
|
+
}
|
|
3865
|
+
|
|
3760
3866
|
/**
|
|
3761
3867
|
* @name endOfMonth
|
|
3762
3868
|
* @category Month Helpers
|
|
@@ -10817,83 +10923,304 @@ var reactResponsive = {exports: {}};
|
|
|
10817
10923
|
|
|
10818
10924
|
var reactResponsiveExports = reactResponsive.exports;
|
|
10819
10925
|
|
|
10820
|
-
var
|
|
10821
|
-
var fill = _a.fill, size = _a.size;
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
|
|
10825
|
-
|
|
10926
|
+
var IconsSvg = function (_a) {
|
|
10927
|
+
var fill = _a.fill, size = _a.size, icon = _a.icon;
|
|
10928
|
+
switch (icon) {
|
|
10929
|
+
case 'spinner':
|
|
10930
|
+
return (React__default__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), viewBox: "0 0 24 24" },
|
|
10931
|
+
React__default__default.createElement("style", null, "\n .spinner_z9k8 {\n transform-origin: center;\n animation: spinner_StKS .75s infinite linear;\n }\n @keyframes spinner_StKS {\n 100% {\n transform: rotate(360deg);\n }\n }\n "),
|
|
10932
|
+
React__default__default.createElement("path", { d: "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z", opacity: ".25", fill: fill }),
|
|
10933
|
+
React__default__default.createElement("path", { d: "M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z", className: "spinner_z9k8", fill: fill })));
|
|
10934
|
+
case 'warning':
|
|
10935
|
+
return (React__default__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), className: "svg-icon", style: {
|
|
10936
|
+
verticalAlign: 'middle',
|
|
10937
|
+
fill: fill,
|
|
10938
|
+
overflow: 'hidden',
|
|
10939
|
+
}, viewBox: "0 0 1024 1024", version: "1.1" },
|
|
10940
|
+
React__default__default.createElement("path", { d: "M42.666667 896h938.666666L512 85.333333 42.666667 896z m512-128h-85.333334v-85.333333h85.333334v85.333333z m0-170.666667h-85.333334v-170.666666h85.333334v170.666666z" })));
|
|
10941
|
+
}
|
|
10826
10942
|
};
|
|
10827
10943
|
|
|
10828
|
-
var
|
|
10829
|
-
|
|
10944
|
+
var parseDates = function (_a) {
|
|
10945
|
+
var calendarRange = _a.calendarRange;
|
|
10946
|
+
return (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
10947
|
+
? "".concat(format(calendarRange.from, 'dd.MM.yyyy'), " -\n").concat(format(calendarRange.to, 'dd.MM.yyyy'))
|
|
10948
|
+
: null;
|
|
10949
|
+
};
|
|
10830
10950
|
|
|
10831
|
-
var
|
|
10832
|
-
|
|
10951
|
+
var parseDate = function (_a) {
|
|
10952
|
+
var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b, language = _a.language;
|
|
10953
|
+
return date
|
|
10954
|
+
? format(date, dateFormat, { locale: language === 'en' ? enUS : fi })
|
|
10955
|
+
: null;
|
|
10956
|
+
};
|
|
10833
10957
|
|
|
10834
|
-
var
|
|
10958
|
+
var nightsCount = function (_a) {
|
|
10959
|
+
var calendarRange = _a.calendarRange;
|
|
10960
|
+
if (!calendarRange || !calendarRange.from || !calendarRange.to) {
|
|
10961
|
+
return undefined;
|
|
10962
|
+
}
|
|
10963
|
+
var diffDays = differenceInCalendarDays(calendarRange.to, calendarRange.from);
|
|
10964
|
+
return diffDays;
|
|
10965
|
+
};
|
|
10966
|
+
|
|
10967
|
+
var calendarSelectionRules = function (_a) {
|
|
10835
10968
|
var _b;
|
|
10836
|
-
var
|
|
10837
|
-
//
|
|
10838
|
-
var
|
|
10839
|
-
var
|
|
10840
|
-
var
|
|
10841
|
-
var
|
|
10842
|
-
|
|
10843
|
-
|
|
10844
|
-
|
|
10845
|
-
|
|
10846
|
-
|
|
10847
|
-
|
|
10848
|
-
|
|
10849
|
-
|
|
10850
|
-
|
|
10851
|
-
|
|
10852
|
-
|
|
10853
|
-
|
|
10854
|
-
|
|
10855
|
-
|
|
10856
|
-
|
|
10857
|
-
|
|
10858
|
-
|
|
10859
|
-
|
|
10860
|
-
|
|
10861
|
-
|
|
10862
|
-
|
|
10863
|
-
|
|
10864
|
-
|
|
10865
|
-
|
|
10866
|
-
|
|
10867
|
-
else {
|
|
10868
|
-
acc.updatedDisabledDates.push(dateRange);
|
|
10869
|
-
}
|
|
10870
|
-
return acc;
|
|
10871
|
-
}, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _a.updatedDisabledDates, newOverlappingDates_1 = _a.newOverlappingDates;
|
|
10872
|
-
if (newOverlappingDates_1.length) {
|
|
10873
|
-
setOverlappingDate(function (prev) {
|
|
10874
|
-
if (prev === void 0) { prev = []; }
|
|
10875
|
-
return __spreadArray$1(__spreadArray$1([], __read(prev), false), __read(newOverlappingDates_1), false);
|
|
10876
|
-
});
|
|
10877
|
-
}
|
|
10878
|
-
var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
|
|
10879
|
-
return newDisableCalendarDates_1;
|
|
10880
|
-
}
|
|
10881
|
-
return disableCalendarDates;
|
|
10882
|
-
}, [
|
|
10883
|
-
disableCalendarDates,
|
|
10884
|
-
calendarRange,
|
|
10885
|
-
updateCalendarMonthNavigation,
|
|
10886
|
-
initialCalendarRange,
|
|
10887
|
-
updateCalendarDefaultMoth,
|
|
10888
|
-
]);
|
|
10889
|
-
// Handle disable dates by page
|
|
10890
|
-
var disabledDatesByPage = handleDisabledDatesByPage({
|
|
10891
|
-
today: today,
|
|
10892
|
-
selectedPath: selectedPath,
|
|
10969
|
+
var range = _a.range, newDisableCalendarDates = _a.newDisableCalendarDates, setCalendarRange = _a.setCalendarRange, setDisabledDates = _a.setDisabledDates, calendarRange = _a.calendarRange, overlappingDate = _a.overlappingDate, setCalendarHasError = _a.setCalendarHasError, rangeContext = _a.rangeContext;
|
|
10970
|
+
// Get and parse needed data
|
|
10971
|
+
var dateFormat = 'dd-MM-yyyy';
|
|
10972
|
+
var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? format(range.from, dateFormat) : null;
|
|
10973
|
+
var rangeTo = (range === null || range === void 0 ? void 0 : range.to) ? format(range.to, dateFormat) : null;
|
|
10974
|
+
var calendarFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
10975
|
+
? format(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from, dateFormat)
|
|
10976
|
+
: null;
|
|
10977
|
+
(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to)
|
|
10978
|
+
? format(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to, dateFormat)
|
|
10979
|
+
: null;
|
|
10980
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from)
|
|
10981
|
+
? format(rangeContext.from, dateFormat)
|
|
10982
|
+
: null;
|
|
10983
|
+
var overlappingDateFrom = (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length)
|
|
10984
|
+
? overlappingDate.find(function (date) {
|
|
10985
|
+
return date.from ? format(date.from, dateFormat) === rangeFrom : false;
|
|
10986
|
+
})
|
|
10987
|
+
: null;
|
|
10988
|
+
var checkOutRange = ((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
10989
|
+
? newDisableCalendarDates.availableDates.find(function (checkInDate) {
|
|
10990
|
+
return format(checkInDate.checkIn || 1, dateFormat) ===
|
|
10991
|
+
format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
|
|
10992
|
+
})
|
|
10993
|
+
: null;
|
|
10994
|
+
// On check-in, disable future dates that are unavailable for checkout
|
|
10995
|
+
disableFutureDates({
|
|
10996
|
+
rangeFrom: rangeFrom,
|
|
10997
|
+
checkOutRange: checkOutRange,
|
|
10998
|
+
setDisabledDates: setDisabledDates,
|
|
10999
|
+
dateFormat: dateFormat,
|
|
10893
11000
|
newDisableCalendarDates: newDisableCalendarDates,
|
|
10894
11001
|
});
|
|
10895
|
-
//
|
|
10896
|
-
|
|
11002
|
+
// Calendar selection rules
|
|
11003
|
+
switch (true) {
|
|
11004
|
+
case !!overlappingDateFrom:
|
|
11005
|
+
// Clear the selection when overlapping dates are detected
|
|
11006
|
+
return setCalendarRange(undefined);
|
|
11007
|
+
case !!((!rangeTo && !rangeFrom && calendarFrom) || rangeTo === rangeFrom):
|
|
11008
|
+
// Handle double-click on the same date
|
|
11009
|
+
return setCalendarRange({ from: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from, to: undefined });
|
|
11010
|
+
case (range === null || range === void 0 ? void 0 : range.to) &&
|
|
11011
|
+
(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) &&
|
|
11012
|
+
isAfter(endOfDay(range.to), endOfDay(calendarRange.to)) &&
|
|
11013
|
+
!((range === null || range === void 0 ? void 0 : range.to) &&
|
|
11014
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) &&
|
|
11015
|
+
isAfter(startOfDay(range.to), startOfDay(rangeContext.to))):
|
|
11016
|
+
// Handle checkout selection greater than current checkout
|
|
11017
|
+
return setCalendarRange({ from: range === null || range === void 0 ? void 0 : range.to, to: undefined });
|
|
11018
|
+
case calendarFrom && rangeFrom && rangeFrom !== calendarFrom:
|
|
11019
|
+
// Handle check-in selection prior to current check-in
|
|
11020
|
+
return setCalendarRange({ from: range === null || range === void 0 ? void 0 : range.from, to: undefined });
|
|
11021
|
+
case checkOutRange && (range === null || range === void 0 ? void 0 : range.to) && checkOutRange.lastCheckOut < range.to:
|
|
11022
|
+
return setCalendarRange({ from: range === null || range === void 0 ? void 0 : range.to, to: undefined });
|
|
11023
|
+
// Handle checkout selection between the range context and first passible check-in
|
|
11024
|
+
case (range === null || range === void 0 ? void 0 : range.to) &&
|
|
11025
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) &&
|
|
11026
|
+
isBefore(startOfDay(range.to), startOfDay(rangeContext.from)):
|
|
11027
|
+
return setCalendarRange({ from: range === null || range === void 0 ? void 0 : range.to, to: undefined });
|
|
11028
|
+
case (range === null || range === void 0 ? void 0 : range.from) &&
|
|
11029
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) &&
|
|
11030
|
+
isAfter(startOfDay(range.from), startOfDay(rangeContext.to)):
|
|
11031
|
+
return (setCalendarRange(undefined),
|
|
11032
|
+
setCalendarHasError && setCalendarHasError(true));
|
|
11033
|
+
//
|
|
11034
|
+
default:
|
|
11035
|
+
// Apply the given range
|
|
11036
|
+
return setCalendarRange(range);
|
|
11037
|
+
}
|
|
11038
|
+
};
|
|
11039
|
+
/////////
|
|
11040
|
+
var disableFutureDates = function (_a) {
|
|
11041
|
+
var rangeFrom = _a.rangeFrom, checkOutRange = _a.checkOutRange, setDisabledDates = _a.setDisabledDates, dateFormat = _a.dateFormat, newDisableCalendarDates = _a.newDisableCalendarDates;
|
|
11042
|
+
if (rangeFrom && checkOutRange && setDisabledDates) {
|
|
11043
|
+
// Get and parse data
|
|
11044
|
+
var checkIn = addDays(checkOutRange.checkIn, 1);
|
|
11045
|
+
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
11046
|
+
var noDatesRange = format(checkIn, dateFormat) ===
|
|
11047
|
+
format(checkOutRange.firstCheckOut, dateFormat);
|
|
11048
|
+
// -------------------
|
|
11049
|
+
setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [])), false), [
|
|
11050
|
+
{
|
|
11051
|
+
from: noDatesRange ? undefined : checkIn,
|
|
11052
|
+
to: noDatesRange ? undefined : firstCheckOut,
|
|
11053
|
+
},
|
|
11054
|
+
], false));
|
|
11055
|
+
}
|
|
11056
|
+
};
|
|
11057
|
+
|
|
11058
|
+
var disabledDatesByPage = function (_a) {
|
|
11059
|
+
var _b, _c, _d;
|
|
11060
|
+
var newDisableCalendarDates = _a.newDisableCalendarDates, selectedPath = _a.selectedPath, today = _a.today;
|
|
11061
|
+
var daysToOffsetCalendar = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) && selectedPath
|
|
11062
|
+
? [
|
|
11063
|
+
(_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) === null || _b === void 0 ? void 0 : _b.find(function (item) { return selectedPath === item.page; }),
|
|
11064
|
+
]
|
|
11065
|
+
: [];
|
|
11066
|
+
return daysToOffsetCalendar.length
|
|
11067
|
+
? [
|
|
11068
|
+
{
|
|
11069
|
+
from: addDays(today, daysToOffsetCalendar.length && ((_c = daysToOffsetCalendar[0]) === null || _c === void 0 ? void 0 : _c.offset)
|
|
11070
|
+
? (_d = daysToOffsetCalendar[0]) === null || _d === void 0 ? void 0 : _d.offset
|
|
11071
|
+
: -2),
|
|
11072
|
+
to: addDays(today, -100),
|
|
11073
|
+
},
|
|
11074
|
+
]
|
|
11075
|
+
: [];
|
|
11076
|
+
};
|
|
11077
|
+
|
|
11078
|
+
var handleCalendarModifiers = function (_a) {
|
|
11079
|
+
var _b;
|
|
11080
|
+
var newDisableCalendarDates = _a.newDisableCalendarDates, calendarRange = _a.calendarRange, disabledDatesByPage = _a.disabledDatesByPage, disabledDates = _a.disabledDates, overlappingDate = _a.overlappingDate, rangeContext = _a.rangeContext, firstPossibleRangeContextCheckIn = _a.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _a.lastPossibleRangeContextCheckOut, findFirstPossibleRangeContextCheckIn = _a.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _a.findLastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _a.currentSelectionLastCheckoutDate;
|
|
11081
|
+
// Create range for range context middle selection and current overlapping selection
|
|
11082
|
+
var rangeContextMiddleSelection = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to)
|
|
11083
|
+
? Array.from({ length: differenceInDays(rangeContext.to, rangeContext.from) - 1 }, function (_, i) { return ({
|
|
11084
|
+
from: addDays(rangeContext.from, i + 1),
|
|
11085
|
+
to: addDays(rangeContext.from, i + 1),
|
|
11086
|
+
}); }).filter(function (date) {
|
|
11087
|
+
return !(((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11088
|
+
isEqual(endOfDay(calendarRange.from), endOfDay(date.from))) ||
|
|
11089
|
+
((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) &&
|
|
11090
|
+
isEqual(endOfDay(calendarRange.to), endOfDay(date.from))));
|
|
11091
|
+
})
|
|
11092
|
+
: [];
|
|
11093
|
+
return {
|
|
11094
|
+
booked: disabledDatesByPage.length
|
|
11095
|
+
? disabledDatesByPage
|
|
11096
|
+
: (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
|
|
11097
|
+
? __spreadArray$1(__spreadArray$1(__spreadArray$1([], __read(disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : ((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11098
|
+
? __spreadArray$1(__spreadArray$1(__spreadArray$1([], __read(newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [],
|
|
11099
|
+
disabledAfterCheckIn: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11100
|
+
? [{ after: calendarRange.from }]
|
|
11101
|
+
: [],
|
|
11102
|
+
overlappingDate: __spreadArray$1([], __read((!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && !!(overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length) && !rangeContext
|
|
11103
|
+
? overlappingDate.map(function (date) { return ({ from: date.from }); })
|
|
11104
|
+
: [])), false),
|
|
11105
|
+
noActiveSelectionStart: (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) &&
|
|
11106
|
+
!((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11107
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) &&
|
|
11108
|
+
isEqual(endOfDay(rangeContext.from), endOfDay(calendarRange.from)))
|
|
11109
|
+
? rangeContext.from
|
|
11110
|
+
: [],
|
|
11111
|
+
noActiveSelectionMid: __spreadArray$1([], __read((rangeContextMiddleSelection.length
|
|
11112
|
+
? rangeContextMiddleSelection
|
|
11113
|
+
: [])), false),
|
|
11114
|
+
noActiveSelectionEnd: (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) &&
|
|
11115
|
+
!((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11116
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) &&
|
|
11117
|
+
isEqual(endOfDay(rangeContext.to), endOfDay(calendarRange.from)))
|
|
11118
|
+
? rangeContext.to
|
|
11119
|
+
: [],
|
|
11120
|
+
checkoutOptionsMid: __spreadArray$1([], __read(((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11121
|
+
!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) &&
|
|
11122
|
+
(currentSelectionLastCheckoutDate === null || currentSelectionLastCheckoutDate === void 0 ? void 0 : currentSelectionLastCheckoutDate.lastCheckOut)
|
|
11123
|
+
? [
|
|
11124
|
+
{
|
|
11125
|
+
after: calendarRange.from,
|
|
11126
|
+
before: addDays(currentSelectionLastCheckoutDate.lastCheckOut, 1),
|
|
11127
|
+
},
|
|
11128
|
+
]
|
|
11129
|
+
: [])), false),
|
|
11130
|
+
checkInOnly: __spreadArray$1([], __read(((findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) && rangeContext
|
|
11131
|
+
? [
|
|
11132
|
+
{
|
|
11133
|
+
from: findFirstPossibleRangeContextCheckIn.checkIn,
|
|
11134
|
+
to: addDays(rangeContext.from, -1),
|
|
11135
|
+
},
|
|
11136
|
+
]
|
|
11137
|
+
: [])), false),
|
|
11138
|
+
checkOutOnly: __spreadArray$1([], __read(((findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) &&
|
|
11139
|
+
findLastPossibleRangeContextCheckOut.lastCheckOut
|
|
11140
|
+
? [
|
|
11141
|
+
{
|
|
11142
|
+
from: addDays(findLastPossibleRangeContextCheckOut.checkIn, 1),
|
|
11143
|
+
to: findLastPossibleRangeContextCheckOut.lastCheckOut,
|
|
11144
|
+
},
|
|
11145
|
+
]
|
|
11146
|
+
: [])), false),
|
|
11147
|
+
};
|
|
11148
|
+
};
|
|
11149
|
+
|
|
11150
|
+
var handleRangeContextDisabledDates = function (_a) {
|
|
11151
|
+
var rangeContext = _a.rangeContext, availableDates = _a.availableDates, calendarRange = _a.calendarRange;
|
|
11152
|
+
var findFirstPossibleRangeContextCheckIn;
|
|
11153
|
+
var findLastPossibleRangeContextCheckOut;
|
|
11154
|
+
var firstPossibleRangeContextCheckIn = [];
|
|
11155
|
+
var lastPossibleRangeContextCheckOut = [];
|
|
11156
|
+
if (rangeContext && (availableDates === null || availableDates === void 0 ? void 0 : availableDates.length)) {
|
|
11157
|
+
// Find the first possible check-in after the last date gap till the range context
|
|
11158
|
+
findFirstPossibleRangeContextCheckIn = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11159
|
+
return date.checkIn < rangeContext.from &&
|
|
11160
|
+
date.lastCheckOut >= rangeContext.from;
|
|
11161
|
+
});
|
|
11162
|
+
if (findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) {
|
|
11163
|
+
firstPossibleRangeContextCheckIn.push({
|
|
11164
|
+
before: findFirstPossibleRangeContextCheckIn.checkIn,
|
|
11165
|
+
});
|
|
11166
|
+
}
|
|
11167
|
+
// Find the last possible checkout before the first date gap till the range context
|
|
11168
|
+
findLastPossibleRangeContextCheckOut = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11169
|
+
return isEqual(rangeContext.to, date.checkIn);
|
|
11170
|
+
});
|
|
11171
|
+
if (findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) {
|
|
11172
|
+
lastPossibleRangeContextCheckOut.push({
|
|
11173
|
+
after: findLastPossibleRangeContextCheckOut.lastCheckOut,
|
|
11174
|
+
});
|
|
11175
|
+
}
|
|
11176
|
+
}
|
|
11177
|
+
// Get last possible check-out dates for current check-in
|
|
11178
|
+
var currentSelectionLastCheckoutDate = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11179
|
+
var calendarCheckIn = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11180
|
+
? format(calendarRange.from, 'dd.MM.yyyy')
|
|
11181
|
+
: null;
|
|
11182
|
+
var itemCheckIn = format(date.checkIn, 'dd.MM.yyyy');
|
|
11183
|
+
return calendarCheckIn ? itemCheckIn === calendarCheckIn : false;
|
|
11184
|
+
});
|
|
11185
|
+
return {
|
|
11186
|
+
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11187
|
+
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11188
|
+
firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
|
|
11189
|
+
lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
|
|
11190
|
+
currentSelectionLastCheckoutDate: currentSelectionLastCheckoutDate,
|
|
11191
|
+
};
|
|
11192
|
+
};
|
|
11193
|
+
|
|
11194
|
+
// Case: If the selected dates do not overlap with the rangeContext during continuous selection,
|
|
11195
|
+
// set setCalendarHasError to true. This will display an error message and
|
|
11196
|
+
// prevent the submission of the selected dates.
|
|
11197
|
+
var checkForContinuousSelection = function (_a) {
|
|
11198
|
+
var setCalendarHasError = _a.setCalendarHasError, rangeContext = _a.rangeContext, calendarRange = _a.calendarRange, calendarHasError = _a.calendarHasError;
|
|
11199
|
+
var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) || null;
|
|
11200
|
+
var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) || null;
|
|
11201
|
+
var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) || null;
|
|
11202
|
+
var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) || null;
|
|
11203
|
+
// Checking if rangeFrom is equal to or before rangeContextTo
|
|
11204
|
+
var startIsEqualOrBeforeRangeContextEnd = calendarRangeFrom && rangeContextTo
|
|
11205
|
+
? isBefore(endOfDay(calendarRangeFrom), endOfDay(rangeContextTo)) ||
|
|
11206
|
+
isEqual(endOfDay(calendarRangeFrom), endOfDay(rangeContextTo))
|
|
11207
|
+
: null;
|
|
11208
|
+
// Checking if rangeTo is equal to or after rangeContextFrom
|
|
11209
|
+
var endIsEqualOrAfterRangeContextStart = calendarRangeTo && rangeContextFrom && rangeContextTo
|
|
11210
|
+
? isAfter(endOfDay(calendarRangeTo), endOfDay(rangeContextFrom)) ||
|
|
11211
|
+
isEqual(endOfDay(calendarRangeTo), endOfDay(rangeContextFrom))
|
|
11212
|
+
: null;
|
|
11213
|
+
if ((rangeContext &&
|
|
11214
|
+
calendarRangeFrom &&
|
|
11215
|
+
!startIsEqualOrBeforeRangeContextEnd) ||
|
|
11216
|
+
(rangeContext && calendarRangeTo && !endIsEqualOrAfterRangeContextStart)) {
|
|
11217
|
+
setCalendarHasError && !calendarHasError && setCalendarHasError(true);
|
|
11218
|
+
}
|
|
11219
|
+
};
|
|
11220
|
+
|
|
11221
|
+
var useCalendarTooltips = function (_a) {
|
|
11222
|
+
var calendarRange = _a.calendarRange, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, overlappingDate = _a.overlappingDate, updateCalendarDefaultMoth = _a.updateCalendarDefaultMoth, showFeedback = _a.showFeedback;
|
|
11223
|
+
return useEffect(function () {
|
|
10897
11224
|
if (typeof document === 'undefined' || !showFeedback)
|
|
10898
11225
|
return;
|
|
10899
11226
|
// Children
|
|
@@ -10901,11 +11228,16 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10901
11228
|
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
10902
11229
|
var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
10903
11230
|
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
11231
|
+
var calendarTooltipCheckInOnly = document.querySelector('.will-calendar-tooltip-check-in-only');
|
|
11232
|
+
var calendarTooltipCheckOutOnly = document.querySelector('.will-calendar-tooltip-check-out-only');
|
|
10904
11233
|
// Parents
|
|
10905
11234
|
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
10906
11235
|
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
10907
11236
|
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
10908
11237
|
var calendarOverlappingDate = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
11238
|
+
var calendarCheckInOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-in-only)');
|
|
11239
|
+
var calendarCheckOutOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-out-only)');
|
|
11240
|
+
// Append children to parents
|
|
10909
11241
|
var tooltipClonesCheckIn = [];
|
|
10910
11242
|
var tooltipClonesCheckOut = [];
|
|
10911
11243
|
var tooltipClonesSpinner = [];
|
|
@@ -10924,13 +11256,24 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10924
11256
|
tooltipClonesCheckOut.push(tooltipClone);
|
|
10925
11257
|
});
|
|
10926
11258
|
}
|
|
11259
|
+
if (calendarTooltipCheckOutOnly && calendarCheckOutOnly.length > 0) {
|
|
11260
|
+
calendarCheckOutOnly.forEach(function (element) {
|
|
11261
|
+
var tooltipClone = calendarTooltipCheckOutOnly.cloneNode(true);
|
|
11262
|
+
element.appendChild(tooltipClone);
|
|
11263
|
+
});
|
|
11264
|
+
}
|
|
11265
|
+
if (calendarTooltipCheckInOnly && calendarCheckInOnly.length > 0) {
|
|
11266
|
+
calendarCheckInOnly.forEach(function (element) {
|
|
11267
|
+
var tooltipClone = calendarTooltipCheckInOnly.cloneNode(true);
|
|
11268
|
+
element.appendChild(tooltipClone);
|
|
11269
|
+
});
|
|
11270
|
+
}
|
|
10927
11271
|
if (loadingSpinner && calendarMonthContainer) {
|
|
10928
11272
|
var tooltipClone = loadingSpinner.cloneNode(true);
|
|
10929
11273
|
calendarMonthContainer.appendChild(tooltipClone);
|
|
10930
11274
|
tooltipClonesSpinner.push(tooltipClone);
|
|
10931
11275
|
}
|
|
10932
|
-
if (calendarTooltipOverlappingDate &&
|
|
10933
|
-
calendarOverlappingDate.length > 0) {
|
|
11276
|
+
if (calendarTooltipOverlappingDate && calendarOverlappingDate.length > 0) {
|
|
10934
11277
|
calendarOverlappingDate.forEach(function (element) {
|
|
10935
11278
|
var tooltipClone = calendarTooltipOverlappingDate.cloneNode(true);
|
|
10936
11279
|
element.appendChild(tooltipClone);
|
|
@@ -10947,11 +11290,13 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10947
11290
|
calendarRange,
|
|
10948
11291
|
updateCalendarMonthNavigation,
|
|
10949
11292
|
overlappingDate,
|
|
10950
|
-
initialCalendarRange,
|
|
10951
11293
|
updateCalendarDefaultMoth,
|
|
10952
11294
|
]);
|
|
10953
|
-
|
|
10954
|
-
|
|
11295
|
+
};
|
|
11296
|
+
|
|
11297
|
+
var useCalendarLoadingSpinner = function (_a) {
|
|
11298
|
+
var loadingData = _a.loadingData, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, updateCalendarDefaultMoth = _a.updateCalendarDefaultMoth;
|
|
11299
|
+
return useEffect(function () {
|
|
10955
11300
|
if (typeof document === 'undefined')
|
|
10956
11301
|
return;
|
|
10957
11302
|
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .rdp-months .will-calendar-spinner');
|
|
@@ -10964,195 +11309,186 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10964
11309
|
loadingSpinner.style.display = 'none';
|
|
10965
11310
|
}
|
|
10966
11311
|
}, [loadingData, updateCalendarMonthNavigation, updateCalendarDefaultMoth]);
|
|
11312
|
+
};
|
|
11313
|
+
|
|
11314
|
+
var useUpdateDisabledDates = function (_a) {
|
|
11315
|
+
var disableCalendarDates = _a.disableCalendarDates, calendarRange = _a.calendarRange, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, updateCalendarDefaultMoth = _a.updateCalendarDefaultMoth;
|
|
11316
|
+
var _b = __read(useState(undefined), 2), overlappingDate = _b[0], setOverlappingDate = _b[1];
|
|
11317
|
+
var newDisableCalendarDates = useMemo(function () {
|
|
11318
|
+
if (disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.availableDates) {
|
|
11319
|
+
var dateFormat_1 = 'dd-MM-yyyy';
|
|
11320
|
+
var disabledDates = disableCalendarDates.disabledDates;
|
|
11321
|
+
var _a = (disabledDates || []).reduce(function (acc, dateRange) {
|
|
11322
|
+
var _a, _b;
|
|
11323
|
+
var formattedFromDate = format(dateRange.from, dateFormat_1);
|
|
11324
|
+
var formattedToDate = format(dateRange.to, dateFormat_1);
|
|
11325
|
+
var hasTwoOverlappingDates = (_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.some(function (item) {
|
|
11326
|
+
return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
|
|
11327
|
+
format(item.lastCheckOut, dateFormat_1) === formattedToDate;
|
|
11328
|
+
});
|
|
11329
|
+
var hasOneOverlappingDate = (_b = disableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.some(function (item) {
|
|
11330
|
+
return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
|
|
11331
|
+
format(item.lastCheckOut, dateFormat_1) !== formattedToDate;
|
|
11332
|
+
});
|
|
11333
|
+
if (hasTwoOverlappingDates) {
|
|
11334
|
+
acc.newOverlappingDates.push(dateRange);
|
|
11335
|
+
}
|
|
11336
|
+
else if (hasOneOverlappingDate) {
|
|
11337
|
+
acc.newOverlappingDates.push(dateRange);
|
|
11338
|
+
acc.updatedDisabledDates.push(__assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) }));
|
|
11339
|
+
}
|
|
11340
|
+
else {
|
|
11341
|
+
acc.updatedDisabledDates.push(dateRange);
|
|
11342
|
+
}
|
|
11343
|
+
return acc;
|
|
11344
|
+
}, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _a.updatedDisabledDates, newOverlappingDates_1 = _a.newOverlappingDates;
|
|
11345
|
+
if (newOverlappingDates_1.length) {
|
|
11346
|
+
setOverlappingDate(function (prev) {
|
|
11347
|
+
if (prev === void 0) { prev = []; }
|
|
11348
|
+
return __spreadArray$1(__spreadArray$1([], __read(prev), false), __read(newOverlappingDates_1), false);
|
|
11349
|
+
});
|
|
11350
|
+
}
|
|
11351
|
+
var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
|
|
11352
|
+
return newDisableCalendarDates_1;
|
|
11353
|
+
}
|
|
11354
|
+
return disableCalendarDates;
|
|
11355
|
+
}, [
|
|
11356
|
+
disableCalendarDates,
|
|
11357
|
+
calendarRange,
|
|
11358
|
+
updateCalendarMonthNavigation,
|
|
11359
|
+
updateCalendarDefaultMoth,
|
|
11360
|
+
]);
|
|
11361
|
+
return { newDisableCalendarDates: newDisableCalendarDates, overlappingDate: overlappingDate };
|
|
11362
|
+
};
|
|
11363
|
+
|
|
11364
|
+
var css_248z$9 = ".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}";
|
|
11365
|
+
styleInject(css_248z$9);
|
|
11366
|
+
|
|
11367
|
+
var css_248z$8 = ".will-calendar-filter-container {\n display: flex;\n justify-content: center;\n user-select: none;\n}\n\n/* Calendar overrides */\n\n\n.will-calendar-filter-container .DayPicker {\n font-size: 25px; /* Adjust this value to make the DayPicker bigger */\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\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: .6;\n}\n\n.will-calendar-filter-container .rdp-button_reset.rdp-button.rdp-day.rdp-day_selected {\n background-color: var(--will-primary);\n opacity: 1;\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 opacity: 0.5;\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/* Tooltip */\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 .will-calendar-filter-container .will-calendar-tooltip-overlapping-date,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out-only,\n.will-root .will-calendar-filter-container .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 .will-calendar-filter-container .will-calendar-tooltip-check-out > div,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-overlapping-date > div,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out-only > div,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-in-only > 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 .will-calendar-filter-container .will-calendar-tooltip-check-out::before,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-overlapping-date::before,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out-only::before,\n.will-root .will-calendar-filter-container .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 .will-calendar-filter-container .rdp-cell:hover .will-calendar-tooltip,\n.will-root .will-calendar-filter-container .rdp-cell:hover .will-calendar-tooltip-check-out,\n.will-root .will-calendar-filter-container .rdp-cell:hover .will-calendar-tooltip-overlapping-date,\n.will-root .will-calendar-filter-container .rdp-cell:hover .will-calendar-tooltip-check-out-only,\n.will-root .will-calendar-filter-container .rdp-cell:hover .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 .rdp-day_selected.rdp-day_range_start.no-active-selection,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_middle.no-active-selection,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_end.no-active-selection,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_start.no-active-selection.checkout-option,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_middle.no-active-selection.checkout-option,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_end.no-active-selection.checkout-option {\n background-color: var(--rdp-background-color);\n color: inherit;\n}\n\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_start.no-active-selection:hover,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_middle.no-active-selection:hover,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_end.no-active-selection:hover {\n background-color: var(--rdp-background-color);\n}\n\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_middle.checkout-option {\n background-color: var(--will-primary-lightest);\n color: inherit;\n}\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\n.will-root .will-calendar-filter-container .overlapping-date:hover {\n cursor: not-allowed;\n}\n\n\n";
|
|
11368
|
+
styleInject(css_248z$8);
|
|
11369
|
+
|
|
11370
|
+
var Calendar = forwardRef(function (_a, ref) {
|
|
11371
|
+
var _b, _c;
|
|
11372
|
+
var selectedPath = _a.selectedPath, calendarRange = _a.calendarRange, setCalendarRange = _a.setCalendarRange, language = _a.language, disableCalendarDates = _a.disableCalendarDates, requestDates = _a.requestDates, disabledDates = _a.disabledDates, setDisabledDates = _a.setDisabledDates, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation = _a.setUpdateCalendarMonthNavigation, updateCalendarDefaultMoth = _a.updateCalendarDefaultMoth, loadingData = _a.loadingData, showFeedback = _a.showFeedback, palette = _a.palette, setCalendarHasError = _a.setCalendarHasError, setUpdatedForSubmit = _a.setUpdatedForSubmit, rangeContext = _a.rangeContext, calendarHasError = _a.calendarHasError;
|
|
11373
|
+
// Translations
|
|
11374
|
+
var t = useTranslation('common').t;
|
|
11375
|
+
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
11376
|
+
var today = startOfDay(new Date());
|
|
11377
|
+
var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
|
|
11378
|
+
var rangeContextStartDate = rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from;
|
|
11379
|
+
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
11380
|
+
var _d = useUpdateDisabledDates({
|
|
11381
|
+
disableCalendarDates: disableCalendarDates,
|
|
11382
|
+
calendarRange: calendarRange,
|
|
11383
|
+
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11384
|
+
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11385
|
+
}), newDisableCalendarDates = _d.newDisableCalendarDates, overlappingDate = _d.overlappingDate;
|
|
11386
|
+
// Handle disable dates by page
|
|
11387
|
+
var disabledDatesByPage$1 = disabledDatesByPage({
|
|
11388
|
+
today: today,
|
|
11389
|
+
selectedPath: selectedPath,
|
|
11390
|
+
newDisableCalendarDates: newDisableCalendarDates,
|
|
11391
|
+
});
|
|
11392
|
+
// Handle tooltip
|
|
11393
|
+
useCalendarTooltips({
|
|
11394
|
+
calendarRange: calendarRange,
|
|
11395
|
+
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11396
|
+
overlappingDate: overlappingDate,
|
|
11397
|
+
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11398
|
+
showFeedback: showFeedback,
|
|
11399
|
+
});
|
|
11400
|
+
// Handle loading spinner
|
|
11401
|
+
useCalendarLoadingSpinner({
|
|
11402
|
+
loadingData: loadingData,
|
|
11403
|
+
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11404
|
+
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11405
|
+
});
|
|
11406
|
+
// Handle the date selection and availability for selection logic.
|
|
11407
|
+
var handleOnSelect = function (range) {
|
|
11408
|
+
setCalendarHasError && calendarHasError && setCalendarHasError(false);
|
|
11409
|
+
calendarSelectionRules({
|
|
11410
|
+
range: range,
|
|
11411
|
+
newDisableCalendarDates: newDisableCalendarDates,
|
|
11412
|
+
setCalendarRange: setCalendarRange,
|
|
11413
|
+
setDisabledDates: setDisabledDates,
|
|
11414
|
+
calendarRange: calendarRange,
|
|
11415
|
+
overlappingDate: overlappingDate,
|
|
11416
|
+
setCalendarHasError: setCalendarHasError,
|
|
11417
|
+
rangeContext: rangeContext,
|
|
11418
|
+
});
|
|
11419
|
+
setUpdatedForSubmit && setUpdatedForSubmit(true);
|
|
11420
|
+
};
|
|
11421
|
+
// Handle disabled dates for range context
|
|
11422
|
+
var _e = handleRangeContextDisabledDates({
|
|
11423
|
+
rangeContext: rangeContext,
|
|
11424
|
+
availableDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates,
|
|
11425
|
+
calendarRange: calendarRange,
|
|
11426
|
+
}), findFirstPossibleRangeContextCheckIn = _e.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _e.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _e.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _e.lastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _e.currentSelectionLastCheckoutDate;
|
|
11427
|
+
// Handle check for continuous selection in the range context
|
|
11428
|
+
checkForContinuousSelection({
|
|
11429
|
+
setCalendarHasError: setCalendarHasError,
|
|
11430
|
+
rangeContext: rangeContext,
|
|
11431
|
+
calendarRange: calendarRange,
|
|
11432
|
+
calendarHasError: calendarHasError,
|
|
11433
|
+
});
|
|
10967
11434
|
return (React__default__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
|
|
10968
11435
|
React__default__default.createElement("div", { className: "will-calendar-filter-container" },
|
|
10969
|
-
React__default__default.createElement(DayPicker, { key: updateCalendarDefaultMoth, id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) {
|
|
10970
|
-
return handleSelectedCheckIn({
|
|
10971
|
-
range: range,
|
|
10972
|
-
newDisableCalendarDates: newDisableCalendarDates,
|
|
10973
|
-
setCalendarRange: setCalendarRange,
|
|
10974
|
-
setDisabledDates: setDisabledDates,
|
|
10975
|
-
calendarRange: calendarRange,
|
|
10976
|
-
overlappingDate: overlappingDate,
|
|
10977
|
-
setOverlappingDates: setOverlappingDates,
|
|
10978
|
-
});
|
|
10979
|
-
}, captionLayout: "dropdown-buttons", defaultMonth: (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) ||
|
|
11436
|
+
React__default__default.createElement(DayPicker, { key: updateCalendarDefaultMoth, 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) ||
|
|
10980
11437
|
selectedStartDate ||
|
|
11438
|
+
rangeContextStartDate ||
|
|
10981
11439
|
(((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
10982
11440
|
? newDisableCalendarDates.disabledDates[0].from
|
|
10983
|
-
: today), disabled: disabledDatesByPage.length
|
|
10984
|
-
? disabledDatesByPage
|
|
11441
|
+
: today), disabled: disabledDatesByPage$1.length
|
|
11442
|
+
? disabledDatesByPage$1
|
|
10985
11443
|
: (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
|
|
10986
|
-
? disabledDates
|
|
10987
|
-
|
|
11444
|
+
? __spreadArray$1(__spreadArray$1(__spreadArray$1([], __read(disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : ((_c = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _c === void 0 ? void 0 : _c.length)
|
|
11445
|
+
? __spreadArray$1(__spreadArray$1(__spreadArray$1([], __read(newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [], fromMonth: today, onMonthChange: function (val) {
|
|
10988
11446
|
requestDates && setUpdateCalendarMonthNavigation
|
|
10989
11447
|
? (requestDates(val),
|
|
10990
11448
|
setUpdateCalendarMonthNavigation(function (prev) { return !prev; }))
|
|
10991
11449
|
: null;
|
|
11450
|
+
}, classNames: {
|
|
11451
|
+
day_range_start: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ? 'rdp-day_range_start' : '',
|
|
11452
|
+
day_range_end: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? 'rdp-day_range_end' : '',
|
|
10992
11453
|
}, modifiersClassNames: {
|
|
10993
11454
|
today: 'my-today',
|
|
10994
11455
|
booked: 'booked',
|
|
10995
11456
|
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
10996
11457
|
overlappingDate: 'overlapping-date',
|
|
10997
|
-
noActiveSelectionStart: 'rdp-day_selected rdp-day_range_start no-active-selection
|
|
11458
|
+
noActiveSelectionStart: 'rdp-day_selected rdp-day_range_start no-active-selection',
|
|
10998
11459
|
noActiveSelectionMid: 'rdp-day_selected rdp-day_range_middle no-active-selection',
|
|
10999
11460
|
noActiveSelectionEnd: 'rdp-day_selected rdp-day_range_end no-active-selection',
|
|
11000
|
-
|
|
11001
|
-
|
|
11002
|
-
|
|
11003
|
-
|
|
11004
|
-
|
|
11005
|
-
|
|
11006
|
-
|
|
11007
|
-
|
|
11008
|
-
|
|
11009
|
-
|
|
11010
|
-
|
|
11011
|
-
|
|
11012
|
-
|
|
11013
|
-
|
|
11014
|
-
|
|
11015
|
-
|
|
11016
|
-
|
|
11017
|
-
|
|
11018
|
-
before: initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to,
|
|
11019
|
-
},
|
|
11020
|
-
]
|
|
11021
|
-
: [],
|
|
11022
|
-
noActiveSelectionEnd: !calendarRange
|
|
11023
|
-
? (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to) || []
|
|
11024
|
-
: [],
|
|
11025
|
-
overlappingDate: (!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11026
|
-
(overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.map(function (item) { return ({
|
|
11027
|
-
from: item.from,
|
|
11028
|
-
}); }))) ||
|
|
11029
|
-
[],
|
|
11030
|
-
} }),
|
|
11461
|
+
checkoutOptionsMid: 'rdp-day_selected rdp-day_range_middle checkout-option',
|
|
11462
|
+
checkInOnly: 'check-in-only',
|
|
11463
|
+
checkOutOnly: 'check-out-only',
|
|
11464
|
+
}, modifiers:
|
|
11465
|
+
// This function handles conditions for applying the modifiersClassNames
|
|
11466
|
+
handleCalendarModifiers({
|
|
11467
|
+
newDisableCalendarDates: newDisableCalendarDates,
|
|
11468
|
+
calendarRange: calendarRange,
|
|
11469
|
+
disabledDatesByPage: disabledDatesByPage$1,
|
|
11470
|
+
disabledDates: disabledDates,
|
|
11471
|
+
overlappingDate: overlappingDate,
|
|
11472
|
+
rangeContext: rangeContext,
|
|
11473
|
+
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11474
|
+
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11475
|
+
firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
|
|
11476
|
+
lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
|
|
11477
|
+
currentSelectionLastCheckoutDate: currentSelectionLastCheckoutDate,
|
|
11478
|
+
}) }),
|
|
11031
11479
|
React__default__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
11032
11480
|
React__default__default.createElement("div", null, t('noCheckIn'))),
|
|
11033
11481
|
React__default__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
|
|
11034
11482
|
React__default__default.createElement("div", null, t('noCheckOut'))),
|
|
11035
11483
|
React__default__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
|
|
11036
11484
|
React__default__default.createElement("div", null, t('checkOutOnly'))),
|
|
11485
|
+
React__default__default.createElement("div", { className: 'will-calendar-tooltip-check-in-only' },
|
|
11486
|
+
React__default__default.createElement("div", null, "Check-in Only")),
|
|
11487
|
+
React__default__default.createElement("div", { className: 'will-calendar-tooltip-check-out-only' },
|
|
11488
|
+
React__default__default.createElement("div", null, "Checkout Only")),
|
|
11037
11489
|
React__default__default.createElement("div", { className: 'will-calendar-spinner' },
|
|
11038
|
-
React__default__default.createElement(
|
|
11490
|
+
React__default__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50, icon: "spinner" })))));
|
|
11039
11491
|
});
|
|
11040
|
-
/////////
|
|
11041
|
-
var handleSelectedCheckIn = function (_a) {
|
|
11042
|
-
var _b, _c, _d;
|
|
11043
|
-
var range = _a.range, newDisableCalendarDates = _a.newDisableCalendarDates, setCalendarRange = _a.setCalendarRange, setDisabledDates = _a.setDisabledDates, calendarRange = _a.calendarRange, overlappingDate = _a.overlappingDate, setOverlappingDates = _a.setOverlappingDates;
|
|
11044
|
-
// Calendar dates select logic
|
|
11045
|
-
var dateFormat = 'dd-MM-yyyy';
|
|
11046
|
-
var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? format(range.from, dateFormat) : null;
|
|
11047
|
-
var rangeTo = (range === null || range === void 0 ? void 0 : range.to) ? format(range.to, dateFormat) : null;
|
|
11048
|
-
var calendarFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11049
|
-
? format(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from, dateFormat)
|
|
11050
|
-
: null;
|
|
11051
|
-
var overlappingDateFrom = (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length)
|
|
11052
|
-
? overlappingDate.find(function (date) { return format(date.from || 1, dateFormat) === rangeFrom; })
|
|
11053
|
-
: null;
|
|
11054
|
-
var checkOutRange = ((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11055
|
-
? newDisableCalendarDates.availableDates.find(function (checkInDate) {
|
|
11056
|
-
return format(checkInDate.checkIn || 1, dateFormat) ===
|
|
11057
|
-
format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
|
|
11058
|
-
})
|
|
11059
|
-
: null;
|
|
11060
|
-
// Case: Set the calendar range only if it overlaps with the previously selected dates.
|
|
11061
|
-
// The selection must remain continuous, meaning no gaps between days are allowed.
|
|
11062
|
-
// Whether selecting forwards or backwards from the initially chosen dates,
|
|
11063
|
-
// the new range must be directly adjacent to or overlap with the current selection.
|
|
11064
|
-
var selectedDates = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) || null;
|
|
11065
|
-
var rowRangeFrom = range === null || range === void 0 ? void 0 : range.from;
|
|
11066
|
-
var rowRangeTo = range === null || range === void 0 ? void 0 : range.to;
|
|
11067
|
-
var selectedDatesFrom = ((_c = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) === null || _c === void 0 ? void 0 : _c.from) || null;
|
|
11068
|
-
var selectedDatesTo = ((_d = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) === null || _d === void 0 ? void 0 : _d.to) || null;
|
|
11069
|
-
// Checking if rowRangeFrom is equal to or before selectedDatesTo
|
|
11070
|
-
var startIsEqualOrBeforeSelectedEnd = rowRangeFrom && selectedDatesFrom && selectedDatesTo
|
|
11071
|
-
? isBefore(startOfDay(rowRangeFrom), startOfDay(selectedDatesTo)) ||
|
|
11072
|
-
isEqual(startOfDay(rowRangeFrom), startOfDay(selectedDatesTo))
|
|
11073
|
-
: null;
|
|
11074
|
-
// Checking if rowRangeTo is equal to or after selectedDatesFrom
|
|
11075
|
-
var endIsEqualOrAfterSelectedStart = rowRangeTo && selectedDatesFrom && selectedDatesTo
|
|
11076
|
-
? isAfter(startOfDay(rowRangeTo), startOfDay(selectedDatesFrom)) ||
|
|
11077
|
-
isEqual(startOfDay(rowRangeTo), startOfDay(selectedDatesFrom))
|
|
11078
|
-
: null;
|
|
11079
|
-
if (rangeFrom && checkOutRange && setDisabledDates) {
|
|
11080
|
-
var checkIn = addDays(checkOutRange.checkIn, 1);
|
|
11081
|
-
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
11082
|
-
var noDatesRange = format(checkIn, dateFormat) ===
|
|
11083
|
-
format(checkOutRange.firstCheckOut, dateFormat);
|
|
11084
|
-
setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [])), false), [
|
|
11085
|
-
{
|
|
11086
|
-
from: noDatesRange ? undefined : checkIn,
|
|
11087
|
-
to: noDatesRange ? undefined : firstCheckOut,
|
|
11088
|
-
},
|
|
11089
|
-
{ after: checkOutRange === null || checkOutRange === void 0 ? void 0 : checkOutRange.lastCheckOut },
|
|
11090
|
-
], false));
|
|
11091
|
-
}
|
|
11092
|
-
setOverlappingDates(false);
|
|
11093
|
-
if ((selectedDates && !startIsEqualOrBeforeSelectedEnd) ||
|
|
11094
|
-
(selectedDates && (range === null || range === void 0 ? void 0 : range.to) && !endIsEqualOrAfterSelectedStart)) {
|
|
11095
|
-
setCalendarRange(undefined);
|
|
11096
|
-
setOverlappingDates(true);
|
|
11097
|
-
}
|
|
11098
|
-
else if ((rangeTo && rangeFrom && rangeFrom === rangeTo) ||
|
|
11099
|
-
(!rangeTo && !rangeFrom) ||
|
|
11100
|
-
overlappingDateFrom) {
|
|
11101
|
-
setCalendarRange(undefined);
|
|
11102
|
-
setDisabledDates && setDisabledDates([]);
|
|
11103
|
-
}
|
|
11104
|
-
else if (calendarFrom && rangeFrom && rangeFrom !== calendarFrom) {
|
|
11105
|
-
setCalendarRange({
|
|
11106
|
-
from: range === null || range === void 0 ? void 0 : range.from,
|
|
11107
|
-
to: undefined,
|
|
11108
|
-
});
|
|
11109
|
-
}
|
|
11110
|
-
else {
|
|
11111
|
-
setCalendarRange(range);
|
|
11112
|
-
}
|
|
11113
|
-
};
|
|
11114
|
-
var handleDisabledDatesByPage = function (_a) {
|
|
11115
|
-
var _b, _c, _d;
|
|
11116
|
-
var newDisableCalendarDates = _a.newDisableCalendarDates, selectedPath = _a.selectedPath, today = _a.today;
|
|
11117
|
-
var daysToOffsetCalendar = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) && selectedPath
|
|
11118
|
-
? [
|
|
11119
|
-
(_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) === null || _b === void 0 ? void 0 : _b.find(function (item) { return selectedPath === item.page; }),
|
|
11120
|
-
]
|
|
11121
|
-
: [];
|
|
11122
|
-
return daysToOffsetCalendar.length
|
|
11123
|
-
? [
|
|
11124
|
-
{
|
|
11125
|
-
from: addDays(today, daysToOffsetCalendar.length && ((_c = daysToOffsetCalendar[0]) === null || _c === void 0 ? void 0 : _c.offset)
|
|
11126
|
-
? (_d = daysToOffsetCalendar[0]) === null || _d === void 0 ? void 0 : _d.offset
|
|
11127
|
-
: -2),
|
|
11128
|
-
to: addDays(today, -100),
|
|
11129
|
-
},
|
|
11130
|
-
]
|
|
11131
|
-
: [];
|
|
11132
|
-
};
|
|
11133
|
-
|
|
11134
|
-
var parseDates = function (_a) {
|
|
11135
|
-
var calendarRange = _a.calendarRange;
|
|
11136
|
-
return (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11137
|
-
? "".concat(format(calendarRange.from, 'dd.MM.yyyy'), " -\n").concat(format(calendarRange.to, 'dd.MM.yyyy'))
|
|
11138
|
-
: null;
|
|
11139
|
-
};
|
|
11140
|
-
|
|
11141
|
-
var parseDate = function (_a) {
|
|
11142
|
-
var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b, language = _a.language;
|
|
11143
|
-
return date
|
|
11144
|
-
? format(date, dateFormat, { locale: language === 'en' ? enUS : fi })
|
|
11145
|
-
: null;
|
|
11146
|
-
};
|
|
11147
|
-
|
|
11148
|
-
var nightsCount = function (_a) {
|
|
11149
|
-
var calendarRange = _a.calendarRange;
|
|
11150
|
-
if (!calendarRange || !calendarRange.from || !calendarRange.to) {
|
|
11151
|
-
return undefined;
|
|
11152
|
-
}
|
|
11153
|
-
var diffDays = differenceInCalendarDays(calendarRange.to, calendarRange.from);
|
|
11154
|
-
return diffDays;
|
|
11155
|
-
};
|
|
11156
11492
|
|
|
11157
11493
|
var parseGuests = function (_a) {
|
|
11158
11494
|
var guestLabel = _a.guestLabel, guestsLabel = _a.guestsLabel, guestsPlaceholder = _a.guestsPlaceholder, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
|
|
@@ -11524,12 +11860,15 @@ var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
|
|
|
11524
11860
|
|
|
11525
11861
|
var useFilterCalendar = function (_a) {
|
|
11526
11862
|
var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar, noActiveSelection = _a.noActiveSelection, toggleCalendar = _a.toggleCalendar;
|
|
11863
|
+
// State
|
|
11527
11864
|
var _b = __read(useState(), 2), calendarRange = _b[0], setCalendarRange = _b[1];
|
|
11528
11865
|
var _c = __read(useState(), 2), initialCalendarRange = _c[0], setInitialCalendarRange = _c[1];
|
|
11529
11866
|
var _d = __read(useState([]), 2), disabledDates = _d[0], setDisabledDates = _d[1];
|
|
11530
11867
|
var _e = __read(useState(false), 2), updateCalendarMonthNavigation = _e[0], setUpdateCalendarMonthNavigation = _e[1];
|
|
11531
11868
|
var _f = __read(useState(0), 2), updateCalendarDefaultMoth = _f[0], setUpdateCalendarDefaultMoth = _f[1];
|
|
11532
|
-
var _g = __read(useState(false), 2),
|
|
11869
|
+
var _g = __read(useState(false), 2), calendarHasError = _g[0], setCalendarHasError = _g[1];
|
|
11870
|
+
var _h = __read(useState(false), 2), updatedForSubmit = _h[0], setUpdatedForSubmit = _h[1];
|
|
11871
|
+
// Lifecycle
|
|
11533
11872
|
useEffect(function () {
|
|
11534
11873
|
if (typeof window === 'undefined')
|
|
11535
11874
|
return;
|
|
@@ -11540,10 +11879,15 @@ var useFilterCalendar = function (_a) {
|
|
|
11540
11879
|
if (noActiveSelection) {
|
|
11541
11880
|
handleClearDates();
|
|
11542
11881
|
setUpdateCalendarDefaultMoth(function (prev) { return prev + 1; });
|
|
11882
|
+
setUpdatedForSubmit(false);
|
|
11543
11883
|
setInitialCalendarRange({
|
|
11544
11884
|
from: new Date(startDateParam),
|
|
11545
11885
|
to: new Date(endDateParam),
|
|
11546
11886
|
});
|
|
11887
|
+
setCalendarRange({
|
|
11888
|
+
from: new Date(startDateParam),
|
|
11889
|
+
to: new Date(endDateParam),
|
|
11890
|
+
});
|
|
11547
11891
|
}
|
|
11548
11892
|
else {
|
|
11549
11893
|
setCalendarRange({
|
|
@@ -11553,6 +11897,31 @@ var useFilterCalendar = function (_a) {
|
|
|
11553
11897
|
}
|
|
11554
11898
|
}
|
|
11555
11899
|
}, [toggleCalendar]);
|
|
11900
|
+
useEffect(function () {
|
|
11901
|
+
var formatString = 'dd.MM.yyyy';
|
|
11902
|
+
var initialRangeTo = (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to)
|
|
11903
|
+
? format(initialCalendarRange.to, formatString)
|
|
11904
|
+
: null;
|
|
11905
|
+
var initialRangeFrom = (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from)
|
|
11906
|
+
? format(initialCalendarRange.from, formatString)
|
|
11907
|
+
: null;
|
|
11908
|
+
var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to)
|
|
11909
|
+
? format(calendarRange.to, formatString)
|
|
11910
|
+
: null;
|
|
11911
|
+
var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11912
|
+
? format(calendarRange.from, formatString)
|
|
11913
|
+
: null;
|
|
11914
|
+
if (!!(calendarRangeTo && calendarRangeFrom && updatedForSubmit)) {
|
|
11915
|
+
if (!!(calendarRangeTo !== initialRangeTo) ||
|
|
11916
|
+
!!(calendarRangeFrom !== initialRangeFrom)) {
|
|
11917
|
+
handleSubmit();
|
|
11918
|
+
}
|
|
11919
|
+
else {
|
|
11920
|
+
setToggleCalendar(false);
|
|
11921
|
+
}
|
|
11922
|
+
}
|
|
11923
|
+
}, [calendarRange]);
|
|
11924
|
+
// Methods
|
|
11556
11925
|
var handleSubmit = function () {
|
|
11557
11926
|
setToggleCalendar(false);
|
|
11558
11927
|
return onSubmit(calendarRange);
|
|
@@ -11560,6 +11929,8 @@ var useFilterCalendar = function (_a) {
|
|
|
11560
11929
|
var handleClearDates = function () {
|
|
11561
11930
|
setDisabledDates([]);
|
|
11562
11931
|
setCalendarRange(undefined);
|
|
11932
|
+
setCalendarHasError(false);
|
|
11933
|
+
setInitialCalendarRange(undefined);
|
|
11563
11934
|
};
|
|
11564
11935
|
return {
|
|
11565
11936
|
handleSubmit: handleSubmit,
|
|
@@ -11571,17 +11942,17 @@ var useFilterCalendar = function (_a) {
|
|
|
11571
11942
|
disabledDates: disabledDates,
|
|
11572
11943
|
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11573
11944
|
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11574
|
-
|
|
11575
|
-
|
|
11576
|
-
|
|
11945
|
+
calendarHasError: calendarHasError,
|
|
11946
|
+
setCalendarHasError: setCalendarHasError,
|
|
11947
|
+
setUpdatedForSubmit: setUpdatedForSubmit,
|
|
11577
11948
|
};
|
|
11578
11949
|
};
|
|
11579
11950
|
|
|
11580
|
-
var css_248z = ".will-root .will-calendar-wrapper {\n box-shadow: var(--will-box-shadow-dark);\n border-radius: 20px;\n background-color: var(--will-white);\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-header,\n.will-root .will-calendar-wrapper .will-calendar-main,\n.will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px;\n}\n\n/* Header */\n\n.will-root .will-calendar-wrapper .will-calendar-header {\n border-bottom: 1px solid var(--will-grey);\n}\n\n.will-root .will-calendar-wrapper .will-calendar-
|
|
11951
|
+
var css_248z = ".will-root .will-calendar-wrapper {\n box-shadow: var(--will-box-shadow-dark);\n border-radius: 20px;\n background-color: var(--will-white);\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-header,\n.will-root .will-calendar-wrapper .will-calendar-main,\n.will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px;\n}\n\n/* Header */\n\n.will-root .will-calendar-wrapper .will-calendar-header {\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid var(--will-grey);\n align-items: center;\n}\n\n/* Footer */\n\n.will-root .will-calendar-wrapper .will-calendar-footer {\n border-top: 1px solid var(--will-grey);\n}\n\n/* Footer actions */\n\n.will-root .will-calendar-wrapper .will-calendar-footer-actions-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates > div {\n margin-bottom: 5px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates-separator {\n margin: 0 15px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n display: flex;\n min-height: 20.5px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-actions {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n@media (max-width: 960px) {\n .will-root .will-calendar-wrapper {\n width: -webkit-fill-available;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-header,\n .will-root .will-calendar-wrapper .will-calendar-main,\n .will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px 10px;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer {\n flex-direction: column;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates {\n margin-bottom: 12px;\n text-align: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n justify-content: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions {\n flex-direction: column;\n width: 100%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions button{\n width: 100%;\n }\n }\n\n.will-root .will-calendar-wrapper .will-calendar-header .will-filter-bar-close-button {\n position: initial;\n}";
|
|
11581
11952
|
styleInject(css_248z);
|
|
11582
11953
|
|
|
11583
11954
|
function FilterCalendar(_a) {
|
|
11584
|
-
var calendarOffset = _a.calendarOffset, language = _a.language, palette = _a.palette, onSubmit = _a.onSubmit, disableCalendarDates = _a.disableCalendarDates, toggleCalendar = _a.toggleCalendar, loadingData = _a.loadingData, setToggleCalendar = _a.setToggleCalendar, requestDates = _a.requestDates, showFeedback = _a.showFeedback, noActiveSelection = _a.noActiveSelection;
|
|
11955
|
+
var calendarOffset = _a.calendarOffset, language = _a.language, palette = _a.palette, onSubmit = _a.onSubmit, disableCalendarDates = _a.disableCalendarDates, toggleCalendar = _a.toggleCalendar, loadingData = _a.loadingData, setToggleCalendar = _a.setToggleCalendar, requestDates = _a.requestDates, showFeedback = _a.showFeedback, noActiveSelection = _a.noActiveSelection, rangeContext = _a.rangeContext;
|
|
11585
11956
|
var themePalette = useTheme({ palette: palette });
|
|
11586
11957
|
// Translations
|
|
11587
11958
|
useUpdateTranslations({ language: language });
|
|
@@ -11591,7 +11962,7 @@ function FilterCalendar(_a) {
|
|
|
11591
11962
|
setToggleCalendar: setToggleCalendar,
|
|
11592
11963
|
noActiveSelection: noActiveSelection,
|
|
11593
11964
|
toggleCalendar: toggleCalendar,
|
|
11594
|
-
}),
|
|
11965
|
+
}), setCalendarRange = _b.setCalendarRange, handleClearDates = _b.handleClearDates, calendarRange = _b.calendarRange, disabledDates = _b.disabledDates, setDisabledDates = _b.setDisabledDates, updateCalendarMonthNavigation = _b.updateCalendarMonthNavigation, updateCalendarDefaultMoth = _b.updateCalendarDefaultMoth, setUpdateCalendarMonthNavigation = _b.setUpdateCalendarMonthNavigation, calendarHasError = _b.calendarHasError, setCalendarHasError = _b.setCalendarHasError, setUpdatedForSubmit = _b.setUpdatedForSubmit;
|
|
11595
11966
|
// Display component after fully loaded
|
|
11596
11967
|
useAwaitRender();
|
|
11597
11968
|
// Handle close filter section
|
|
@@ -11599,36 +11970,39 @@ function FilterCalendar(_a) {
|
|
|
11599
11970
|
handleSelectedFilter: setToggleCalendar,
|
|
11600
11971
|
}).filtersRef;
|
|
11601
11972
|
var nights = nightsCount({
|
|
11602
|
-
calendarRange: calendarRange
|
|
11973
|
+
calendarRange: calendarRange,
|
|
11603
11974
|
});
|
|
11604
11975
|
return (React__default__default.createElement("div", { className: "will-root", style: themePalette }, toggleCalendar && (React__default__default.createElement("div", { className: "will-calendar-wrapper", ref: filtersRef },
|
|
11605
11976
|
React__default__default.createElement("div", { className: "will-calendar-header" },
|
|
11606
|
-
React__default__default.createElement("
|
|
11607
|
-
|
|
11608
|
-
React__default__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
11609
|
-
overlappingDates && React__default__default.createElement("div", null, "Chose other dates")),
|
|
11977
|
+
React__default__default.createElement("h2", null, t('filterBar:calendar.title')),
|
|
11978
|
+
React__default__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
11610
11979
|
React__default__default.createElement("div", { className: "will-calendar-main" },
|
|
11611
|
-
React__default__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, setDisabledDates: setDisabledDates, updateCalendarMonthNavigation: updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation: setUpdateCalendarMonthNavigation, updateCalendarDefaultMoth: updateCalendarDefaultMoth, loadingData: loadingData,
|
|
11980
|
+
React__default__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, setDisabledDates: setDisabledDates, updateCalendarMonthNavigation: updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation: setUpdateCalendarMonthNavigation, updateCalendarDefaultMoth: updateCalendarDefaultMoth, loadingData: loadingData, showFeedback: showFeedback, noActiveSelection: noActiveSelection, palette: palette, setCalendarHasError: setCalendarHasError, setUpdatedForSubmit: setUpdatedForSubmit, rangeContext: rangeContext, calendarHasError: calendarHasError })),
|
|
11612
11981
|
React__default__default.createElement("div", { className: "will-calendar-footer" },
|
|
11613
|
-
React__default__default.createElement("div", { className: "will-calendar-footer-
|
|
11614
|
-
React__default__default.createElement("div",
|
|
11615
|
-
React__default__default.createElement("span", null,
|
|
11616
|
-
|
|
11617
|
-
|
|
11618
|
-
|
|
11619
|
-
|
|
11620
|
-
|
|
11621
|
-
|
|
11622
|
-
|
|
11623
|
-
|
|
11624
|
-
|
|
11625
|
-
|
|
11626
|
-
|
|
11627
|
-
|
|
11628
|
-
|
|
11629
|
-
|
|
11630
|
-
|
|
11631
|
-
|
|
11982
|
+
React__default__default.createElement("div", { className: "will-calendar-footer-actions-wrapper" },
|
|
11983
|
+
React__default__default.createElement("div", { className: "will-calendar-footer-dates" },
|
|
11984
|
+
calendarHasError ? (React__default__default.createElement("span", null, "Start or end day need connection for previous reservation")) : (React__default__default.createElement("div", null,
|
|
11985
|
+
React__default__default.createElement("span", null, parseDate({
|
|
11986
|
+
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from,
|
|
11987
|
+
dateFormat: 'EEEEEE d.M.yyyy',
|
|
11988
|
+
language: language,
|
|
11989
|
+
}) || t('common:checkIn')),
|
|
11990
|
+
React__default__default.createElement("span", { className: "will-calendar-footer-dates-separator" }, "-"),
|
|
11991
|
+
React__default__default.createElement("span", null, parseDate({
|
|
11992
|
+
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to,
|
|
11993
|
+
dateFormat: 'EEEEEE d.M.yyyy',
|
|
11994
|
+
language: language,
|
|
11995
|
+
}) || t('common:checkOut')))),
|
|
11996
|
+
React__default__default.createElement("span", { className: "will-calendar-footer-booked" }, calendarHasError
|
|
11997
|
+
? '2 nights min'
|
|
11998
|
+
: nights
|
|
11999
|
+
? "".concat(nights, " ").concat(t("common:".concat(nights === 1 ? 'night' : 'nights')))
|
|
12000
|
+
: '')),
|
|
12001
|
+
React__default__default.createElement("div", { className: "will-calendar-footer-actions" },
|
|
12002
|
+
React__default__default.createElement(SubmitButton, { onClick: handleClearDates, disabled: !(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from), label: t("common:clearDates") }))),
|
|
12003
|
+
calendarHasError && (React__default__default.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
|
|
12004
|
+
React__default__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.error) || 'inherit', size: 25, icon: "warning" }),
|
|
12005
|
+
React__default__default.createElement("span", { style: { marginLeft: '10px' } }, "Check-in available for second room only with connection dates"))))))));
|
|
11632
12006
|
}
|
|
11633
12007
|
|
|
11634
12008
|
export { Button$1 as Button, FilterBar, FilterCalendar };
|