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.js
CHANGED
|
@@ -542,11 +542,12 @@ function useTheme(_a) {
|
|
|
542
542
|
var themePalette = {
|
|
543
543
|
'--will-primary': palette === null || palette === void 0 ? void 0 : palette.primary,
|
|
544
544
|
'--will-secondary': palette === null || palette === void 0 ? void 0 : palette.secondary,
|
|
545
|
+
'--will-error': palette === null || palette === void 0 ? void 0 : palette.error,
|
|
545
546
|
};
|
|
546
547
|
return themePalette;
|
|
547
548
|
}
|
|
548
549
|
|
|
549
|
-
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";
|
|
550
|
+
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";
|
|
550
551
|
styleInject(css_248z$c);
|
|
551
552
|
|
|
552
553
|
var useAwaitRender = function () {
|
|
@@ -3777,6 +3778,111 @@ function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {
|
|
|
3777
3778
|
return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK$4);
|
|
3778
3779
|
}
|
|
3779
3780
|
|
|
3781
|
+
// for accurate equality comparisons of UTC timestamps that end up
|
|
3782
|
+
// having the same representation in local time, e.g. one hour before
|
|
3783
|
+
// DST ends vs. the instant that DST ends.
|
|
3784
|
+
function compareLocalAsc(dateLeft, dateRight) {
|
|
3785
|
+
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();
|
|
3786
|
+
if (diff < 0) {
|
|
3787
|
+
return -1;
|
|
3788
|
+
} else if (diff > 0) {
|
|
3789
|
+
return 1;
|
|
3790
|
+
// Return 0 if diff is 0; return NaN if diff is NaN
|
|
3791
|
+
} else {
|
|
3792
|
+
return diff;
|
|
3793
|
+
}
|
|
3794
|
+
}
|
|
3795
|
+
|
|
3796
|
+
/**
|
|
3797
|
+
* @name differenceInDays
|
|
3798
|
+
* @category Day Helpers
|
|
3799
|
+
* @summary Get the number of full days between the given dates.
|
|
3800
|
+
*
|
|
3801
|
+
* @description
|
|
3802
|
+
* Get the number of full day periods between two dates. Fractional days are
|
|
3803
|
+
* truncated towards zero.
|
|
3804
|
+
*
|
|
3805
|
+
* One "full day" is the distance between a local time in one day to the same
|
|
3806
|
+
* local time on the next or previous day. A full day can sometimes be less than
|
|
3807
|
+
* or more than 24 hours if a daylight savings change happens between two dates.
|
|
3808
|
+
*
|
|
3809
|
+
* To ignore DST and only measure exact 24-hour periods, use this instead:
|
|
3810
|
+
* `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.
|
|
3811
|
+
*
|
|
3812
|
+
*
|
|
3813
|
+
* @param {Date|Number} dateLeft - the later date
|
|
3814
|
+
* @param {Date|Number} dateRight - the earlier date
|
|
3815
|
+
* @returns {Number} the number of full days according to the local timezone
|
|
3816
|
+
* @throws {TypeError} 2 arguments required
|
|
3817
|
+
*
|
|
3818
|
+
* @example
|
|
3819
|
+
* // How many full days are between
|
|
3820
|
+
* // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?
|
|
3821
|
+
* const result = differenceInDays(
|
|
3822
|
+
* new Date(2012, 6, 2, 0, 0),
|
|
3823
|
+
* new Date(2011, 6, 2, 23, 0)
|
|
3824
|
+
* )
|
|
3825
|
+
* //=> 365
|
|
3826
|
+
* // How many full days are between
|
|
3827
|
+
* // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?
|
|
3828
|
+
* const result = differenceInDays(
|
|
3829
|
+
* new Date(2011, 6, 3, 0, 1),
|
|
3830
|
+
* new Date(2011, 6, 2, 23, 59)
|
|
3831
|
+
* )
|
|
3832
|
+
* //=> 0
|
|
3833
|
+
* // How many full days are between
|
|
3834
|
+
* // 1 March 2020 0:00 and 1 June 2020 0:00 ?
|
|
3835
|
+
* // Note: because local time is used, the
|
|
3836
|
+
* // result will always be 92 days, even in
|
|
3837
|
+
* // time zones where DST starts and the
|
|
3838
|
+
* // period has only 92*24-1 hours.
|
|
3839
|
+
* const result = differenceInDays(
|
|
3840
|
+
* new Date(2020, 5, 1),
|
|
3841
|
+
* new Date(2020, 2, 1)
|
|
3842
|
+
* )
|
|
3843
|
+
//=> 92
|
|
3844
|
+
*/
|
|
3845
|
+
function differenceInDays(dirtyDateLeft, dirtyDateRight) {
|
|
3846
|
+
requiredArgs(2, arguments);
|
|
3847
|
+
var dateLeft = toDate(dirtyDateLeft);
|
|
3848
|
+
var dateRight = toDate(dirtyDateRight);
|
|
3849
|
+
var sign = compareLocalAsc(dateLeft, dateRight);
|
|
3850
|
+
var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));
|
|
3851
|
+
dateLeft.setDate(dateLeft.getDate() - sign * difference);
|
|
3852
|
+
|
|
3853
|
+
// Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full
|
|
3854
|
+
// If so, result must be decreased by 1 in absolute value
|
|
3855
|
+
var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);
|
|
3856
|
+
var result = sign * (difference - isLastDayNotFull);
|
|
3857
|
+
// Prevent negative zero
|
|
3858
|
+
return result === 0 ? 0 : result;
|
|
3859
|
+
}
|
|
3860
|
+
|
|
3861
|
+
/**
|
|
3862
|
+
* @name endOfDay
|
|
3863
|
+
* @category Day Helpers
|
|
3864
|
+
* @summary Return the end of a day for the given date.
|
|
3865
|
+
*
|
|
3866
|
+
* @description
|
|
3867
|
+
* Return the end of a day for the given date.
|
|
3868
|
+
* The result will be in the local timezone.
|
|
3869
|
+
*
|
|
3870
|
+
* @param {Date|Number} date - the original date
|
|
3871
|
+
* @returns {Date} the end of a day
|
|
3872
|
+
* @throws {TypeError} 1 argument required
|
|
3873
|
+
*
|
|
3874
|
+
* @example
|
|
3875
|
+
* // The end of a day for 2 September 2014 11:55:00:
|
|
3876
|
+
* const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))
|
|
3877
|
+
* //=> Tue Sep 02 2014 23:59:59.999
|
|
3878
|
+
*/
|
|
3879
|
+
function endOfDay(dirtyDate) {
|
|
3880
|
+
requiredArgs(1, arguments);
|
|
3881
|
+
var date = toDate(dirtyDate);
|
|
3882
|
+
date.setHours(23, 59, 59, 999);
|
|
3883
|
+
return date;
|
|
3884
|
+
}
|
|
3885
|
+
|
|
3780
3886
|
/**
|
|
3781
3887
|
* @name endOfMonth
|
|
3782
3888
|
* @category Month Helpers
|
|
@@ -10837,83 +10943,304 @@ var reactResponsive = {exports: {}};
|
|
|
10837
10943
|
|
|
10838
10944
|
var reactResponsiveExports = reactResponsive.exports;
|
|
10839
10945
|
|
|
10840
|
-
var
|
|
10841
|
-
var fill = _a.fill, size = _a.size;
|
|
10842
|
-
|
|
10843
|
-
|
|
10844
|
-
|
|
10845
|
-
|
|
10946
|
+
var IconsSvg = function (_a) {
|
|
10947
|
+
var fill = _a.fill, size = _a.size, icon = _a.icon;
|
|
10948
|
+
switch (icon) {
|
|
10949
|
+
case 'spinner':
|
|
10950
|
+
return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), viewBox: "0 0 24 24" },
|
|
10951
|
+
React__default.createElement("style", null, "\n .spinner_z9k8 {\n transform-origin: center;\n animation: spinner_StKS .75s infinite linear;\n }\n @keyframes spinner_StKS {\n 100% {\n transform: rotate(360deg);\n }\n }\n "),
|
|
10952
|
+
React__default.createElement("path", { d: "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z", opacity: ".25", fill: fill }),
|
|
10953
|
+
React__default.createElement("path", { d: "M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z", className: "spinner_z9k8", fill: fill })));
|
|
10954
|
+
case 'warning':
|
|
10955
|
+
return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), className: "svg-icon", style: {
|
|
10956
|
+
verticalAlign: 'middle',
|
|
10957
|
+
fill: fill,
|
|
10958
|
+
overflow: 'hidden',
|
|
10959
|
+
}, viewBox: "0 0 1024 1024", version: "1.1" },
|
|
10960
|
+
React__default.createElement("path", { d: "M42.666667 896h938.666666L512 85.333333 42.666667 896z m512-128h-85.333334v-85.333333h85.333334v85.333333z m0-170.666667h-85.333334v-170.666666h85.333334v170.666666z" })));
|
|
10961
|
+
}
|
|
10846
10962
|
};
|
|
10847
10963
|
|
|
10848
|
-
var
|
|
10849
|
-
|
|
10964
|
+
var parseDates = function (_a) {
|
|
10965
|
+
var calendarRange = _a.calendarRange;
|
|
10966
|
+
return (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
10967
|
+
? "".concat(format(calendarRange.from, 'dd.MM.yyyy'), " -\n").concat(format(calendarRange.to, 'dd.MM.yyyy'))
|
|
10968
|
+
: null;
|
|
10969
|
+
};
|
|
10850
10970
|
|
|
10851
|
-
var
|
|
10852
|
-
|
|
10971
|
+
var parseDate = function (_a) {
|
|
10972
|
+
var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b, language = _a.language;
|
|
10973
|
+
return date
|
|
10974
|
+
? format(date, dateFormat, { locale: language === 'en' ? enUS : fi })
|
|
10975
|
+
: null;
|
|
10976
|
+
};
|
|
10853
10977
|
|
|
10854
|
-
var
|
|
10978
|
+
var nightsCount = function (_a) {
|
|
10979
|
+
var calendarRange = _a.calendarRange;
|
|
10980
|
+
if (!calendarRange || !calendarRange.from || !calendarRange.to) {
|
|
10981
|
+
return undefined;
|
|
10982
|
+
}
|
|
10983
|
+
var diffDays = differenceInCalendarDays(calendarRange.to, calendarRange.from);
|
|
10984
|
+
return diffDays;
|
|
10985
|
+
};
|
|
10986
|
+
|
|
10987
|
+
var calendarSelectionRules = function (_a) {
|
|
10855
10988
|
var _b;
|
|
10856
|
-
var
|
|
10857
|
-
//
|
|
10858
|
-
var
|
|
10859
|
-
var
|
|
10860
|
-
var
|
|
10861
|
-
var
|
|
10862
|
-
|
|
10863
|
-
|
|
10864
|
-
|
|
10865
|
-
|
|
10866
|
-
|
|
10867
|
-
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10872
|
-
|
|
10873
|
-
|
|
10874
|
-
|
|
10875
|
-
|
|
10876
|
-
|
|
10877
|
-
|
|
10878
|
-
|
|
10879
|
-
|
|
10880
|
-
|
|
10881
|
-
|
|
10882
|
-
|
|
10883
|
-
|
|
10884
|
-
|
|
10885
|
-
|
|
10886
|
-
|
|
10887
|
-
else {
|
|
10888
|
-
acc.updatedDisabledDates.push(dateRange);
|
|
10889
|
-
}
|
|
10890
|
-
return acc;
|
|
10891
|
-
}, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _a.updatedDisabledDates, newOverlappingDates_1 = _a.newOverlappingDates;
|
|
10892
|
-
if (newOverlappingDates_1.length) {
|
|
10893
|
-
setOverlappingDate(function (prev) {
|
|
10894
|
-
if (prev === void 0) { prev = []; }
|
|
10895
|
-
return __spreadArray$1(__spreadArray$1([], __read(prev), false), __read(newOverlappingDates_1), false);
|
|
10896
|
-
});
|
|
10897
|
-
}
|
|
10898
|
-
var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
|
|
10899
|
-
return newDisableCalendarDates_1;
|
|
10900
|
-
}
|
|
10901
|
-
return disableCalendarDates;
|
|
10902
|
-
}, [
|
|
10903
|
-
disableCalendarDates,
|
|
10904
|
-
calendarRange,
|
|
10905
|
-
updateCalendarMonthNavigation,
|
|
10906
|
-
initialCalendarRange,
|
|
10907
|
-
updateCalendarDefaultMoth,
|
|
10908
|
-
]);
|
|
10909
|
-
// Handle disable dates by page
|
|
10910
|
-
var disabledDatesByPage = handleDisabledDatesByPage({
|
|
10911
|
-
today: today,
|
|
10912
|
-
selectedPath: selectedPath,
|
|
10989
|
+
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;
|
|
10990
|
+
// Get and parse needed data
|
|
10991
|
+
var dateFormat = 'dd-MM-yyyy';
|
|
10992
|
+
var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? format(range.from, dateFormat) : null;
|
|
10993
|
+
var rangeTo = (range === null || range === void 0 ? void 0 : range.to) ? format(range.to, dateFormat) : null;
|
|
10994
|
+
var calendarFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
10995
|
+
? format(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from, dateFormat)
|
|
10996
|
+
: null;
|
|
10997
|
+
(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to)
|
|
10998
|
+
? format(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to, dateFormat)
|
|
10999
|
+
: null;
|
|
11000
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from)
|
|
11001
|
+
? format(rangeContext.from, dateFormat)
|
|
11002
|
+
: null;
|
|
11003
|
+
var overlappingDateFrom = (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length)
|
|
11004
|
+
? overlappingDate.find(function (date) {
|
|
11005
|
+
return date.from ? format(date.from, dateFormat) === rangeFrom : false;
|
|
11006
|
+
})
|
|
11007
|
+
: null;
|
|
11008
|
+
var checkOutRange = ((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11009
|
+
? newDisableCalendarDates.availableDates.find(function (checkInDate) {
|
|
11010
|
+
return format(checkInDate.checkIn || 1, dateFormat) ===
|
|
11011
|
+
format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
|
|
11012
|
+
})
|
|
11013
|
+
: null;
|
|
11014
|
+
// On check-in, disable future dates that are unavailable for checkout
|
|
11015
|
+
disableFutureDates({
|
|
11016
|
+
rangeFrom: rangeFrom,
|
|
11017
|
+
checkOutRange: checkOutRange,
|
|
11018
|
+
setDisabledDates: setDisabledDates,
|
|
11019
|
+
dateFormat: dateFormat,
|
|
10913
11020
|
newDisableCalendarDates: newDisableCalendarDates,
|
|
10914
11021
|
});
|
|
10915
|
-
//
|
|
10916
|
-
|
|
11022
|
+
// Calendar selection rules
|
|
11023
|
+
switch (true) {
|
|
11024
|
+
case !!overlappingDateFrom:
|
|
11025
|
+
// Clear the selection when overlapping dates are detected
|
|
11026
|
+
return setCalendarRange(undefined);
|
|
11027
|
+
case !!((!rangeTo && !rangeFrom && calendarFrom) || rangeTo === rangeFrom):
|
|
11028
|
+
// Handle double-click on the same date
|
|
11029
|
+
return setCalendarRange({ from: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from, to: undefined });
|
|
11030
|
+
case (range === null || range === void 0 ? void 0 : range.to) &&
|
|
11031
|
+
(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) &&
|
|
11032
|
+
isAfter(endOfDay(range.to), endOfDay(calendarRange.to)) &&
|
|
11033
|
+
!((range === null || range === void 0 ? void 0 : range.to) &&
|
|
11034
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) &&
|
|
11035
|
+
isAfter(startOfDay(range.to), startOfDay(rangeContext.to))):
|
|
11036
|
+
// Handle checkout selection greater than current checkout
|
|
11037
|
+
return setCalendarRange({ from: range === null || range === void 0 ? void 0 : range.to, to: undefined });
|
|
11038
|
+
case calendarFrom && rangeFrom && rangeFrom !== calendarFrom:
|
|
11039
|
+
// Handle check-in selection prior to current check-in
|
|
11040
|
+
return setCalendarRange({ from: range === null || range === void 0 ? void 0 : range.from, to: undefined });
|
|
11041
|
+
case checkOutRange && (range === null || range === void 0 ? void 0 : range.to) && checkOutRange.lastCheckOut < range.to:
|
|
11042
|
+
return setCalendarRange({ from: range === null || range === void 0 ? void 0 : range.to, to: undefined });
|
|
11043
|
+
// Handle checkout selection between the range context and first passible check-in
|
|
11044
|
+
case (range === null || range === void 0 ? void 0 : range.to) &&
|
|
11045
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) &&
|
|
11046
|
+
isBefore(startOfDay(range.to), startOfDay(rangeContext.from)):
|
|
11047
|
+
return setCalendarRange({ from: range === null || range === void 0 ? void 0 : range.to, to: undefined });
|
|
11048
|
+
case (range === null || range === void 0 ? void 0 : range.from) &&
|
|
11049
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) &&
|
|
11050
|
+
isAfter(startOfDay(range.from), startOfDay(rangeContext.to)):
|
|
11051
|
+
return (setCalendarRange(undefined),
|
|
11052
|
+
setCalendarHasError && setCalendarHasError(true));
|
|
11053
|
+
//
|
|
11054
|
+
default:
|
|
11055
|
+
// Apply the given range
|
|
11056
|
+
return setCalendarRange(range);
|
|
11057
|
+
}
|
|
11058
|
+
};
|
|
11059
|
+
/////////
|
|
11060
|
+
var disableFutureDates = function (_a) {
|
|
11061
|
+
var rangeFrom = _a.rangeFrom, checkOutRange = _a.checkOutRange, setDisabledDates = _a.setDisabledDates, dateFormat = _a.dateFormat, newDisableCalendarDates = _a.newDisableCalendarDates;
|
|
11062
|
+
if (rangeFrom && checkOutRange && setDisabledDates) {
|
|
11063
|
+
// Get and parse data
|
|
11064
|
+
var checkIn = addDays(checkOutRange.checkIn, 1);
|
|
11065
|
+
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
11066
|
+
var noDatesRange = format(checkIn, dateFormat) ===
|
|
11067
|
+
format(checkOutRange.firstCheckOut, dateFormat);
|
|
11068
|
+
// -------------------
|
|
11069
|
+
setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [])), false), [
|
|
11070
|
+
{
|
|
11071
|
+
from: noDatesRange ? undefined : checkIn,
|
|
11072
|
+
to: noDatesRange ? undefined : firstCheckOut,
|
|
11073
|
+
},
|
|
11074
|
+
], false));
|
|
11075
|
+
}
|
|
11076
|
+
};
|
|
11077
|
+
|
|
11078
|
+
var disabledDatesByPage = function (_a) {
|
|
11079
|
+
var _b, _c, _d;
|
|
11080
|
+
var newDisableCalendarDates = _a.newDisableCalendarDates, selectedPath = _a.selectedPath, today = _a.today;
|
|
11081
|
+
var daysToOffsetCalendar = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) && selectedPath
|
|
11082
|
+
? [
|
|
11083
|
+
(_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) === null || _b === void 0 ? void 0 : _b.find(function (item) { return selectedPath === item.page; }),
|
|
11084
|
+
]
|
|
11085
|
+
: [];
|
|
11086
|
+
return daysToOffsetCalendar.length
|
|
11087
|
+
? [
|
|
11088
|
+
{
|
|
11089
|
+
from: addDays(today, daysToOffsetCalendar.length && ((_c = daysToOffsetCalendar[0]) === null || _c === void 0 ? void 0 : _c.offset)
|
|
11090
|
+
? (_d = daysToOffsetCalendar[0]) === null || _d === void 0 ? void 0 : _d.offset
|
|
11091
|
+
: -2),
|
|
11092
|
+
to: addDays(today, -100),
|
|
11093
|
+
},
|
|
11094
|
+
]
|
|
11095
|
+
: [];
|
|
11096
|
+
};
|
|
11097
|
+
|
|
11098
|
+
var handleCalendarModifiers = function (_a) {
|
|
11099
|
+
var _b;
|
|
11100
|
+
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;
|
|
11101
|
+
// Create range for range context middle selection and current overlapping selection
|
|
11102
|
+
var rangeContextMiddleSelection = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to)
|
|
11103
|
+
? Array.from({ length: differenceInDays(rangeContext.to, rangeContext.from) - 1 }, function (_, i) { return ({
|
|
11104
|
+
from: addDays(rangeContext.from, i + 1),
|
|
11105
|
+
to: addDays(rangeContext.from, i + 1),
|
|
11106
|
+
}); }).filter(function (date) {
|
|
11107
|
+
return !(((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11108
|
+
isEqual(endOfDay(calendarRange.from), endOfDay(date.from))) ||
|
|
11109
|
+
((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) &&
|
|
11110
|
+
isEqual(endOfDay(calendarRange.to), endOfDay(date.from))));
|
|
11111
|
+
})
|
|
11112
|
+
: [];
|
|
11113
|
+
return {
|
|
11114
|
+
booked: disabledDatesByPage.length
|
|
11115
|
+
? disabledDatesByPage
|
|
11116
|
+
: (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
|
|
11117
|
+
? __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)
|
|
11118
|
+
? __spreadArray$1(__spreadArray$1(__spreadArray$1([], __read(newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [],
|
|
11119
|
+
disabledAfterCheckIn: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11120
|
+
? [{ after: calendarRange.from }]
|
|
11121
|
+
: [],
|
|
11122
|
+
overlappingDate: __spreadArray$1([], __read((!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && !!(overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length) && !rangeContext
|
|
11123
|
+
? overlappingDate.map(function (date) { return ({ from: date.from }); })
|
|
11124
|
+
: [])), false),
|
|
11125
|
+
noActiveSelectionStart: (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) &&
|
|
11126
|
+
!((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11127
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) &&
|
|
11128
|
+
isEqual(endOfDay(rangeContext.from), endOfDay(calendarRange.from)))
|
|
11129
|
+
? rangeContext.from
|
|
11130
|
+
: [],
|
|
11131
|
+
noActiveSelectionMid: __spreadArray$1([], __read((rangeContextMiddleSelection.length
|
|
11132
|
+
? rangeContextMiddleSelection
|
|
11133
|
+
: [])), false),
|
|
11134
|
+
noActiveSelectionEnd: (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) &&
|
|
11135
|
+
!((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11136
|
+
(rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) &&
|
|
11137
|
+
isEqual(endOfDay(rangeContext.to), endOfDay(calendarRange.from)))
|
|
11138
|
+
? rangeContext.to
|
|
11139
|
+
: [],
|
|
11140
|
+
checkoutOptionsMid: __spreadArray$1([], __read(((calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11141
|
+
!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) &&
|
|
11142
|
+
(currentSelectionLastCheckoutDate === null || currentSelectionLastCheckoutDate === void 0 ? void 0 : currentSelectionLastCheckoutDate.lastCheckOut)
|
|
11143
|
+
? [
|
|
11144
|
+
{
|
|
11145
|
+
after: calendarRange.from,
|
|
11146
|
+
before: addDays(currentSelectionLastCheckoutDate.lastCheckOut, 1),
|
|
11147
|
+
},
|
|
11148
|
+
]
|
|
11149
|
+
: [])), false),
|
|
11150
|
+
checkInOnly: __spreadArray$1([], __read(((findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) && rangeContext
|
|
11151
|
+
? [
|
|
11152
|
+
{
|
|
11153
|
+
from: findFirstPossibleRangeContextCheckIn.checkIn,
|
|
11154
|
+
to: addDays(rangeContext.from, -1),
|
|
11155
|
+
},
|
|
11156
|
+
]
|
|
11157
|
+
: [])), false),
|
|
11158
|
+
checkOutOnly: __spreadArray$1([], __read(((findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) &&
|
|
11159
|
+
findLastPossibleRangeContextCheckOut.lastCheckOut
|
|
11160
|
+
? [
|
|
11161
|
+
{
|
|
11162
|
+
from: addDays(findLastPossibleRangeContextCheckOut.checkIn, 1),
|
|
11163
|
+
to: findLastPossibleRangeContextCheckOut.lastCheckOut,
|
|
11164
|
+
},
|
|
11165
|
+
]
|
|
11166
|
+
: [])), false),
|
|
11167
|
+
};
|
|
11168
|
+
};
|
|
11169
|
+
|
|
11170
|
+
var handleRangeContextDisabledDates = function (_a) {
|
|
11171
|
+
var rangeContext = _a.rangeContext, availableDates = _a.availableDates, calendarRange = _a.calendarRange;
|
|
11172
|
+
var findFirstPossibleRangeContextCheckIn;
|
|
11173
|
+
var findLastPossibleRangeContextCheckOut;
|
|
11174
|
+
var firstPossibleRangeContextCheckIn = [];
|
|
11175
|
+
var lastPossibleRangeContextCheckOut = [];
|
|
11176
|
+
if (rangeContext && (availableDates === null || availableDates === void 0 ? void 0 : availableDates.length)) {
|
|
11177
|
+
// Find the first possible check-in after the last date gap till the range context
|
|
11178
|
+
findFirstPossibleRangeContextCheckIn = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11179
|
+
return date.checkIn < rangeContext.from &&
|
|
11180
|
+
date.lastCheckOut >= rangeContext.from;
|
|
11181
|
+
});
|
|
11182
|
+
if (findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) {
|
|
11183
|
+
firstPossibleRangeContextCheckIn.push({
|
|
11184
|
+
before: findFirstPossibleRangeContextCheckIn.checkIn,
|
|
11185
|
+
});
|
|
11186
|
+
}
|
|
11187
|
+
// Find the last possible checkout before the first date gap till the range context
|
|
11188
|
+
findLastPossibleRangeContextCheckOut = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11189
|
+
return isEqual(rangeContext.to, date.checkIn);
|
|
11190
|
+
});
|
|
11191
|
+
if (findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) {
|
|
11192
|
+
lastPossibleRangeContextCheckOut.push({
|
|
11193
|
+
after: findLastPossibleRangeContextCheckOut.lastCheckOut,
|
|
11194
|
+
});
|
|
11195
|
+
}
|
|
11196
|
+
}
|
|
11197
|
+
// Get last possible check-out dates for current check-in
|
|
11198
|
+
var currentSelectionLastCheckoutDate = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
|
|
11199
|
+
var calendarCheckIn = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11200
|
+
? format(calendarRange.from, 'dd.MM.yyyy')
|
|
11201
|
+
: null;
|
|
11202
|
+
var itemCheckIn = format(date.checkIn, 'dd.MM.yyyy');
|
|
11203
|
+
return calendarCheckIn ? itemCheckIn === calendarCheckIn : false;
|
|
11204
|
+
});
|
|
11205
|
+
return {
|
|
11206
|
+
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11207
|
+
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11208
|
+
firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
|
|
11209
|
+
lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
|
|
11210
|
+
currentSelectionLastCheckoutDate: currentSelectionLastCheckoutDate,
|
|
11211
|
+
};
|
|
11212
|
+
};
|
|
11213
|
+
|
|
11214
|
+
// Case: If the selected dates do not overlap with the rangeContext during continuous selection,
|
|
11215
|
+
// set setCalendarHasError to true. This will display an error message and
|
|
11216
|
+
// prevent the submission of the selected dates.
|
|
11217
|
+
var checkForContinuousSelection = function (_a) {
|
|
11218
|
+
var setCalendarHasError = _a.setCalendarHasError, rangeContext = _a.rangeContext, calendarRange = _a.calendarRange, calendarHasError = _a.calendarHasError;
|
|
11219
|
+
var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) || null;
|
|
11220
|
+
var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) || null;
|
|
11221
|
+
var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) || null;
|
|
11222
|
+
var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) || null;
|
|
11223
|
+
// Checking if rangeFrom is equal to or before rangeContextTo
|
|
11224
|
+
var startIsEqualOrBeforeRangeContextEnd = calendarRangeFrom && rangeContextTo
|
|
11225
|
+
? isBefore(endOfDay(calendarRangeFrom), endOfDay(rangeContextTo)) ||
|
|
11226
|
+
isEqual(endOfDay(calendarRangeFrom), endOfDay(rangeContextTo))
|
|
11227
|
+
: null;
|
|
11228
|
+
// Checking if rangeTo is equal to or after rangeContextFrom
|
|
11229
|
+
var endIsEqualOrAfterRangeContextStart = calendarRangeTo && rangeContextFrom && rangeContextTo
|
|
11230
|
+
? isAfter(endOfDay(calendarRangeTo), endOfDay(rangeContextFrom)) ||
|
|
11231
|
+
isEqual(endOfDay(calendarRangeTo), endOfDay(rangeContextFrom))
|
|
11232
|
+
: null;
|
|
11233
|
+
if ((rangeContext &&
|
|
11234
|
+
calendarRangeFrom &&
|
|
11235
|
+
!startIsEqualOrBeforeRangeContextEnd) ||
|
|
11236
|
+
(rangeContext && calendarRangeTo && !endIsEqualOrAfterRangeContextStart)) {
|
|
11237
|
+
setCalendarHasError && !calendarHasError && setCalendarHasError(true);
|
|
11238
|
+
}
|
|
11239
|
+
};
|
|
11240
|
+
|
|
11241
|
+
var useCalendarTooltips = function (_a) {
|
|
11242
|
+
var calendarRange = _a.calendarRange, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, overlappingDate = _a.overlappingDate, updateCalendarDefaultMoth = _a.updateCalendarDefaultMoth, showFeedback = _a.showFeedback;
|
|
11243
|
+
return React__default.useEffect(function () {
|
|
10917
11244
|
if (typeof document === 'undefined' || !showFeedback)
|
|
10918
11245
|
return;
|
|
10919
11246
|
// Children
|
|
@@ -10921,11 +11248,16 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
|
10921
11248
|
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
10922
11249
|
var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
10923
11250
|
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
11251
|
+
var calendarTooltipCheckInOnly = document.querySelector('.will-calendar-tooltip-check-in-only');
|
|
11252
|
+
var calendarTooltipCheckOutOnly = document.querySelector('.will-calendar-tooltip-check-out-only');
|
|
10924
11253
|
// Parents
|
|
10925
11254
|
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
10926
11255
|
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
10927
11256
|
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
10928
11257
|
var calendarOverlappingDate = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
11258
|
+
var calendarCheckInOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-in-only)');
|
|
11259
|
+
var calendarCheckOutOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-out-only)');
|
|
11260
|
+
// Append children to parents
|
|
10929
11261
|
var tooltipClonesCheckIn = [];
|
|
10930
11262
|
var tooltipClonesCheckOut = [];
|
|
10931
11263
|
var tooltipClonesSpinner = [];
|
|
@@ -10944,13 +11276,24 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
|
10944
11276
|
tooltipClonesCheckOut.push(tooltipClone);
|
|
10945
11277
|
});
|
|
10946
11278
|
}
|
|
11279
|
+
if (calendarTooltipCheckOutOnly && calendarCheckOutOnly.length > 0) {
|
|
11280
|
+
calendarCheckOutOnly.forEach(function (element) {
|
|
11281
|
+
var tooltipClone = calendarTooltipCheckOutOnly.cloneNode(true);
|
|
11282
|
+
element.appendChild(tooltipClone);
|
|
11283
|
+
});
|
|
11284
|
+
}
|
|
11285
|
+
if (calendarTooltipCheckInOnly && calendarCheckInOnly.length > 0) {
|
|
11286
|
+
calendarCheckInOnly.forEach(function (element) {
|
|
11287
|
+
var tooltipClone = calendarTooltipCheckInOnly.cloneNode(true);
|
|
11288
|
+
element.appendChild(tooltipClone);
|
|
11289
|
+
});
|
|
11290
|
+
}
|
|
10947
11291
|
if (loadingSpinner && calendarMonthContainer) {
|
|
10948
11292
|
var tooltipClone = loadingSpinner.cloneNode(true);
|
|
10949
11293
|
calendarMonthContainer.appendChild(tooltipClone);
|
|
10950
11294
|
tooltipClonesSpinner.push(tooltipClone);
|
|
10951
11295
|
}
|
|
10952
|
-
if (calendarTooltipOverlappingDate &&
|
|
10953
|
-
calendarOverlappingDate.length > 0) {
|
|
11296
|
+
if (calendarTooltipOverlappingDate && calendarOverlappingDate.length > 0) {
|
|
10954
11297
|
calendarOverlappingDate.forEach(function (element) {
|
|
10955
11298
|
var tooltipClone = calendarTooltipOverlappingDate.cloneNode(true);
|
|
10956
11299
|
element.appendChild(tooltipClone);
|
|
@@ -10967,11 +11310,13 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
|
10967
11310
|
calendarRange,
|
|
10968
11311
|
updateCalendarMonthNavigation,
|
|
10969
11312
|
overlappingDate,
|
|
10970
|
-
initialCalendarRange,
|
|
10971
11313
|
updateCalendarDefaultMoth,
|
|
10972
11314
|
]);
|
|
10973
|
-
|
|
10974
|
-
|
|
11315
|
+
};
|
|
11316
|
+
|
|
11317
|
+
var useCalendarLoadingSpinner = function (_a) {
|
|
11318
|
+
var loadingData = _a.loadingData, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, updateCalendarDefaultMoth = _a.updateCalendarDefaultMoth;
|
|
11319
|
+
return React__default.useEffect(function () {
|
|
10975
11320
|
if (typeof document === 'undefined')
|
|
10976
11321
|
return;
|
|
10977
11322
|
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .rdp-months .will-calendar-spinner');
|
|
@@ -10984,195 +11329,186 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
|
10984
11329
|
loadingSpinner.style.display = 'none';
|
|
10985
11330
|
}
|
|
10986
11331
|
}, [loadingData, updateCalendarMonthNavigation, updateCalendarDefaultMoth]);
|
|
11332
|
+
};
|
|
11333
|
+
|
|
11334
|
+
var useUpdateDisabledDates = function (_a) {
|
|
11335
|
+
var disableCalendarDates = _a.disableCalendarDates, calendarRange = _a.calendarRange, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, updateCalendarDefaultMoth = _a.updateCalendarDefaultMoth;
|
|
11336
|
+
var _b = __read(React__default.useState(undefined), 2), overlappingDate = _b[0], setOverlappingDate = _b[1];
|
|
11337
|
+
var newDisableCalendarDates = React__default.useMemo(function () {
|
|
11338
|
+
if (disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.availableDates) {
|
|
11339
|
+
var dateFormat_1 = 'dd-MM-yyyy';
|
|
11340
|
+
var disabledDates = disableCalendarDates.disabledDates;
|
|
11341
|
+
var _a = (disabledDates || []).reduce(function (acc, dateRange) {
|
|
11342
|
+
var _a, _b;
|
|
11343
|
+
var formattedFromDate = format(dateRange.from, dateFormat_1);
|
|
11344
|
+
var formattedToDate = format(dateRange.to, dateFormat_1);
|
|
11345
|
+
var hasTwoOverlappingDates = (_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.some(function (item) {
|
|
11346
|
+
return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
|
|
11347
|
+
format(item.lastCheckOut, dateFormat_1) === formattedToDate;
|
|
11348
|
+
});
|
|
11349
|
+
var hasOneOverlappingDate = (_b = disableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.some(function (item) {
|
|
11350
|
+
return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
|
|
11351
|
+
format(item.lastCheckOut, dateFormat_1) !== formattedToDate;
|
|
11352
|
+
});
|
|
11353
|
+
if (hasTwoOverlappingDates) {
|
|
11354
|
+
acc.newOverlappingDates.push(dateRange);
|
|
11355
|
+
}
|
|
11356
|
+
else if (hasOneOverlappingDate) {
|
|
11357
|
+
acc.newOverlappingDates.push(dateRange);
|
|
11358
|
+
acc.updatedDisabledDates.push(__assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) }));
|
|
11359
|
+
}
|
|
11360
|
+
else {
|
|
11361
|
+
acc.updatedDisabledDates.push(dateRange);
|
|
11362
|
+
}
|
|
11363
|
+
return acc;
|
|
11364
|
+
}, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _a.updatedDisabledDates, newOverlappingDates_1 = _a.newOverlappingDates;
|
|
11365
|
+
if (newOverlappingDates_1.length) {
|
|
11366
|
+
setOverlappingDate(function (prev) {
|
|
11367
|
+
if (prev === void 0) { prev = []; }
|
|
11368
|
+
return __spreadArray$1(__spreadArray$1([], __read(prev), false), __read(newOverlappingDates_1), false);
|
|
11369
|
+
});
|
|
11370
|
+
}
|
|
11371
|
+
var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
|
|
11372
|
+
return newDisableCalendarDates_1;
|
|
11373
|
+
}
|
|
11374
|
+
return disableCalendarDates;
|
|
11375
|
+
}, [
|
|
11376
|
+
disableCalendarDates,
|
|
11377
|
+
calendarRange,
|
|
11378
|
+
updateCalendarMonthNavigation,
|
|
11379
|
+
updateCalendarDefaultMoth,
|
|
11380
|
+
]);
|
|
11381
|
+
return { newDisableCalendarDates: newDisableCalendarDates, overlappingDate: overlappingDate };
|
|
11382
|
+
};
|
|
11383
|
+
|
|
11384
|
+
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}";
|
|
11385
|
+
styleInject(css_248z$9);
|
|
11386
|
+
|
|
11387
|
+
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";
|
|
11388
|
+
styleInject(css_248z$8);
|
|
11389
|
+
|
|
11390
|
+
var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
11391
|
+
var _b, _c;
|
|
11392
|
+
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;
|
|
11393
|
+
// Translations
|
|
11394
|
+
var t = useTranslation('common').t;
|
|
11395
|
+
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
11396
|
+
var today = startOfDay(new Date());
|
|
11397
|
+
var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
|
|
11398
|
+
var rangeContextStartDate = rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from;
|
|
11399
|
+
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
11400
|
+
var _d = useUpdateDisabledDates({
|
|
11401
|
+
disableCalendarDates: disableCalendarDates,
|
|
11402
|
+
calendarRange: calendarRange,
|
|
11403
|
+
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11404
|
+
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11405
|
+
}), newDisableCalendarDates = _d.newDisableCalendarDates, overlappingDate = _d.overlappingDate;
|
|
11406
|
+
// Handle disable dates by page
|
|
11407
|
+
var disabledDatesByPage$1 = disabledDatesByPage({
|
|
11408
|
+
today: today,
|
|
11409
|
+
selectedPath: selectedPath,
|
|
11410
|
+
newDisableCalendarDates: newDisableCalendarDates,
|
|
11411
|
+
});
|
|
11412
|
+
// Handle tooltip
|
|
11413
|
+
useCalendarTooltips({
|
|
11414
|
+
calendarRange: calendarRange,
|
|
11415
|
+
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11416
|
+
overlappingDate: overlappingDate,
|
|
11417
|
+
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11418
|
+
showFeedback: showFeedback,
|
|
11419
|
+
});
|
|
11420
|
+
// Handle loading spinner
|
|
11421
|
+
useCalendarLoadingSpinner({
|
|
11422
|
+
loadingData: loadingData,
|
|
11423
|
+
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11424
|
+
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11425
|
+
});
|
|
11426
|
+
// Handle the date selection and availability for selection logic.
|
|
11427
|
+
var handleOnSelect = function (range) {
|
|
11428
|
+
setCalendarHasError && calendarHasError && setCalendarHasError(false);
|
|
11429
|
+
calendarSelectionRules({
|
|
11430
|
+
range: range,
|
|
11431
|
+
newDisableCalendarDates: newDisableCalendarDates,
|
|
11432
|
+
setCalendarRange: setCalendarRange,
|
|
11433
|
+
setDisabledDates: setDisabledDates,
|
|
11434
|
+
calendarRange: calendarRange,
|
|
11435
|
+
overlappingDate: overlappingDate,
|
|
11436
|
+
setCalendarHasError: setCalendarHasError,
|
|
11437
|
+
rangeContext: rangeContext,
|
|
11438
|
+
});
|
|
11439
|
+
setUpdatedForSubmit && setUpdatedForSubmit(true);
|
|
11440
|
+
};
|
|
11441
|
+
// Handle disabled dates for range context
|
|
11442
|
+
var _e = handleRangeContextDisabledDates({
|
|
11443
|
+
rangeContext: rangeContext,
|
|
11444
|
+
availableDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates,
|
|
11445
|
+
calendarRange: calendarRange,
|
|
11446
|
+
}), findFirstPossibleRangeContextCheckIn = _e.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _e.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _e.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _e.lastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _e.currentSelectionLastCheckoutDate;
|
|
11447
|
+
// Handle check for continuous selection in the range context
|
|
11448
|
+
checkForContinuousSelection({
|
|
11449
|
+
setCalendarHasError: setCalendarHasError,
|
|
11450
|
+
rangeContext: rangeContext,
|
|
11451
|
+
calendarRange: calendarRange,
|
|
11452
|
+
calendarHasError: calendarHasError,
|
|
11453
|
+
});
|
|
10987
11454
|
return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
|
|
10988
11455
|
React__default.createElement("div", { className: "will-calendar-filter-container" },
|
|
10989
|
-
React__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) {
|
|
10990
|
-
return handleSelectedCheckIn({
|
|
10991
|
-
range: range,
|
|
10992
|
-
newDisableCalendarDates: newDisableCalendarDates,
|
|
10993
|
-
setCalendarRange: setCalendarRange,
|
|
10994
|
-
setDisabledDates: setDisabledDates,
|
|
10995
|
-
calendarRange: calendarRange,
|
|
10996
|
-
overlappingDate: overlappingDate,
|
|
10997
|
-
setOverlappingDates: setOverlappingDates,
|
|
10998
|
-
});
|
|
10999
|
-
}, captionLayout: "dropdown-buttons", defaultMonth: (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) ||
|
|
11456
|
+
React__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) ||
|
|
11000
11457
|
selectedStartDate ||
|
|
11458
|
+
rangeContextStartDate ||
|
|
11001
11459
|
(((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11002
11460
|
? newDisableCalendarDates.disabledDates[0].from
|
|
11003
|
-
: today), disabled: disabledDatesByPage.length
|
|
11004
|
-
? disabledDatesByPage
|
|
11461
|
+
: today), disabled: disabledDatesByPage$1.length
|
|
11462
|
+
? disabledDatesByPage$1
|
|
11005
11463
|
: (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
|
|
11006
|
-
? disabledDates
|
|
11007
|
-
|
|
11464
|
+
? __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)
|
|
11465
|
+
? __spreadArray$1(__spreadArray$1(__spreadArray$1([], __read(newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [], fromMonth: today, onMonthChange: function (val) {
|
|
11008
11466
|
requestDates && setUpdateCalendarMonthNavigation
|
|
11009
11467
|
? (requestDates(val),
|
|
11010
11468
|
setUpdateCalendarMonthNavigation(function (prev) { return !prev; }))
|
|
11011
11469
|
: null;
|
|
11470
|
+
}, classNames: {
|
|
11471
|
+
day_range_start: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ? 'rdp-day_range_start' : '',
|
|
11472
|
+
day_range_end: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? 'rdp-day_range_end' : '',
|
|
11012
11473
|
}, modifiersClassNames: {
|
|
11013
11474
|
today: 'my-today',
|
|
11014
11475
|
booked: 'booked',
|
|
11015
11476
|
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
11016
11477
|
overlappingDate: 'overlapping-date',
|
|
11017
|
-
noActiveSelectionStart: 'rdp-day_selected rdp-day_range_start no-active-selection
|
|
11478
|
+
noActiveSelectionStart: 'rdp-day_selected rdp-day_range_start no-active-selection',
|
|
11018
11479
|
noActiveSelectionMid: 'rdp-day_selected rdp-day_range_middle no-active-selection',
|
|
11019
11480
|
noActiveSelectionEnd: 'rdp-day_selected rdp-day_range_end no-active-selection',
|
|
11020
|
-
|
|
11021
|
-
|
|
11022
|
-
|
|
11023
|
-
|
|
11024
|
-
|
|
11025
|
-
|
|
11026
|
-
|
|
11027
|
-
|
|
11028
|
-
|
|
11029
|
-
|
|
11030
|
-
|
|
11031
|
-
|
|
11032
|
-
|
|
11033
|
-
|
|
11034
|
-
|
|
11035
|
-
|
|
11036
|
-
|
|
11037
|
-
|
|
11038
|
-
before: initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to,
|
|
11039
|
-
},
|
|
11040
|
-
]
|
|
11041
|
-
: [],
|
|
11042
|
-
noActiveSelectionEnd: !calendarRange
|
|
11043
|
-
? (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to) || []
|
|
11044
|
-
: [],
|
|
11045
|
-
overlappingDate: (!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
|
|
11046
|
-
(overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.map(function (item) { return ({
|
|
11047
|
-
from: item.from,
|
|
11048
|
-
}); }))) ||
|
|
11049
|
-
[],
|
|
11050
|
-
} }),
|
|
11481
|
+
checkoutOptionsMid: 'rdp-day_selected rdp-day_range_middle checkout-option',
|
|
11482
|
+
checkInOnly: 'check-in-only',
|
|
11483
|
+
checkOutOnly: 'check-out-only',
|
|
11484
|
+
}, modifiers:
|
|
11485
|
+
// This function handles conditions for applying the modifiersClassNames
|
|
11486
|
+
handleCalendarModifiers({
|
|
11487
|
+
newDisableCalendarDates: newDisableCalendarDates,
|
|
11488
|
+
calendarRange: calendarRange,
|
|
11489
|
+
disabledDatesByPage: disabledDatesByPage$1,
|
|
11490
|
+
disabledDates: disabledDates,
|
|
11491
|
+
overlappingDate: overlappingDate,
|
|
11492
|
+
rangeContext: rangeContext,
|
|
11493
|
+
findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
|
|
11494
|
+
findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
|
|
11495
|
+
firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
|
|
11496
|
+
lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
|
|
11497
|
+
currentSelectionLastCheckoutDate: currentSelectionLastCheckoutDate,
|
|
11498
|
+
}) }),
|
|
11051
11499
|
React__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
11052
11500
|
React__default.createElement("div", null, t('noCheckIn'))),
|
|
11053
11501
|
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
|
|
11054
11502
|
React__default.createElement("div", null, t('noCheckOut'))),
|
|
11055
11503
|
React__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
|
|
11056
11504
|
React__default.createElement("div", null, t('checkOutOnly'))),
|
|
11505
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-check-in-only' },
|
|
11506
|
+
React__default.createElement("div", null, "Check-in Only")),
|
|
11507
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out-only' },
|
|
11508
|
+
React__default.createElement("div", null, "Checkout Only")),
|
|
11057
11509
|
React__default.createElement("div", { className: 'will-calendar-spinner' },
|
|
11058
|
-
React__default.createElement(
|
|
11510
|
+
React__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50, icon: "spinner" })))));
|
|
11059
11511
|
});
|
|
11060
|
-
/////////
|
|
11061
|
-
var handleSelectedCheckIn = function (_a) {
|
|
11062
|
-
var _b, _c, _d;
|
|
11063
|
-
var range = _a.range, newDisableCalendarDates = _a.newDisableCalendarDates, setCalendarRange = _a.setCalendarRange, setDisabledDates = _a.setDisabledDates, calendarRange = _a.calendarRange, overlappingDate = _a.overlappingDate, setOverlappingDates = _a.setOverlappingDates;
|
|
11064
|
-
// Calendar dates select logic
|
|
11065
|
-
var dateFormat = 'dd-MM-yyyy';
|
|
11066
|
-
var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? format(range.from, dateFormat) : null;
|
|
11067
|
-
var rangeTo = (range === null || range === void 0 ? void 0 : range.to) ? format(range.to, dateFormat) : null;
|
|
11068
|
-
var calendarFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11069
|
-
? format(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from, dateFormat)
|
|
11070
|
-
: null;
|
|
11071
|
-
var overlappingDateFrom = (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length)
|
|
11072
|
-
? overlappingDate.find(function (date) { return format(date.from || 1, dateFormat) === rangeFrom; })
|
|
11073
|
-
: null;
|
|
11074
|
-
var checkOutRange = ((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
11075
|
-
? newDisableCalendarDates.availableDates.find(function (checkInDate) {
|
|
11076
|
-
return format(checkInDate.checkIn || 1, dateFormat) ===
|
|
11077
|
-
format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
|
|
11078
|
-
})
|
|
11079
|
-
: null;
|
|
11080
|
-
// Case: Set the calendar range only if it overlaps with the previously selected dates.
|
|
11081
|
-
// The selection must remain continuous, meaning no gaps between days are allowed.
|
|
11082
|
-
// Whether selecting forwards or backwards from the initially chosen dates,
|
|
11083
|
-
// the new range must be directly adjacent to or overlap with the current selection.
|
|
11084
|
-
var selectedDates = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) || null;
|
|
11085
|
-
var rowRangeFrom = range === null || range === void 0 ? void 0 : range.from;
|
|
11086
|
-
var rowRangeTo = range === null || range === void 0 ? void 0 : range.to;
|
|
11087
|
-
var selectedDatesFrom = ((_c = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) === null || _c === void 0 ? void 0 : _c.from) || null;
|
|
11088
|
-
var selectedDatesTo = ((_d = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) === null || _d === void 0 ? void 0 : _d.to) || null;
|
|
11089
|
-
// Checking if rowRangeFrom is equal to or before selectedDatesTo
|
|
11090
|
-
var startIsEqualOrBeforeSelectedEnd = rowRangeFrom && selectedDatesFrom && selectedDatesTo
|
|
11091
|
-
? isBefore(startOfDay(rowRangeFrom), startOfDay(selectedDatesTo)) ||
|
|
11092
|
-
isEqual(startOfDay(rowRangeFrom), startOfDay(selectedDatesTo))
|
|
11093
|
-
: null;
|
|
11094
|
-
// Checking if rowRangeTo is equal to or after selectedDatesFrom
|
|
11095
|
-
var endIsEqualOrAfterSelectedStart = rowRangeTo && selectedDatesFrom && selectedDatesTo
|
|
11096
|
-
? isAfter(startOfDay(rowRangeTo), startOfDay(selectedDatesFrom)) ||
|
|
11097
|
-
isEqual(startOfDay(rowRangeTo), startOfDay(selectedDatesFrom))
|
|
11098
|
-
: null;
|
|
11099
|
-
if (rangeFrom && checkOutRange && setDisabledDates) {
|
|
11100
|
-
var checkIn = addDays(checkOutRange.checkIn, 1);
|
|
11101
|
-
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
11102
|
-
var noDatesRange = format(checkIn, dateFormat) ===
|
|
11103
|
-
format(checkOutRange.firstCheckOut, dateFormat);
|
|
11104
|
-
setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [])), false), [
|
|
11105
|
-
{
|
|
11106
|
-
from: noDatesRange ? undefined : checkIn,
|
|
11107
|
-
to: noDatesRange ? undefined : firstCheckOut,
|
|
11108
|
-
},
|
|
11109
|
-
{ after: checkOutRange === null || checkOutRange === void 0 ? void 0 : checkOutRange.lastCheckOut },
|
|
11110
|
-
], false));
|
|
11111
|
-
}
|
|
11112
|
-
setOverlappingDates(false);
|
|
11113
|
-
if ((selectedDates && !startIsEqualOrBeforeSelectedEnd) ||
|
|
11114
|
-
(selectedDates && (range === null || range === void 0 ? void 0 : range.to) && !endIsEqualOrAfterSelectedStart)) {
|
|
11115
|
-
setCalendarRange(undefined);
|
|
11116
|
-
setOverlappingDates(true);
|
|
11117
|
-
}
|
|
11118
|
-
else if ((rangeTo && rangeFrom && rangeFrom === rangeTo) ||
|
|
11119
|
-
(!rangeTo && !rangeFrom) ||
|
|
11120
|
-
overlappingDateFrom) {
|
|
11121
|
-
setCalendarRange(undefined);
|
|
11122
|
-
setDisabledDates && setDisabledDates([]);
|
|
11123
|
-
}
|
|
11124
|
-
else if (calendarFrom && rangeFrom && rangeFrom !== calendarFrom) {
|
|
11125
|
-
setCalendarRange({
|
|
11126
|
-
from: range === null || range === void 0 ? void 0 : range.from,
|
|
11127
|
-
to: undefined,
|
|
11128
|
-
});
|
|
11129
|
-
}
|
|
11130
|
-
else {
|
|
11131
|
-
setCalendarRange(range);
|
|
11132
|
-
}
|
|
11133
|
-
};
|
|
11134
|
-
var handleDisabledDatesByPage = function (_a) {
|
|
11135
|
-
var _b, _c, _d;
|
|
11136
|
-
var newDisableCalendarDates = _a.newDisableCalendarDates, selectedPath = _a.selectedPath, today = _a.today;
|
|
11137
|
-
var daysToOffsetCalendar = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) && selectedPath
|
|
11138
|
-
? [
|
|
11139
|
-
(_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) === null || _b === void 0 ? void 0 : _b.find(function (item) { return selectedPath === item.page; }),
|
|
11140
|
-
]
|
|
11141
|
-
: [];
|
|
11142
|
-
return daysToOffsetCalendar.length
|
|
11143
|
-
? [
|
|
11144
|
-
{
|
|
11145
|
-
from: addDays(today, daysToOffsetCalendar.length && ((_c = daysToOffsetCalendar[0]) === null || _c === void 0 ? void 0 : _c.offset)
|
|
11146
|
-
? (_d = daysToOffsetCalendar[0]) === null || _d === void 0 ? void 0 : _d.offset
|
|
11147
|
-
: -2),
|
|
11148
|
-
to: addDays(today, -100),
|
|
11149
|
-
},
|
|
11150
|
-
]
|
|
11151
|
-
: [];
|
|
11152
|
-
};
|
|
11153
|
-
|
|
11154
|
-
var parseDates = function (_a) {
|
|
11155
|
-
var calendarRange = _a.calendarRange;
|
|
11156
|
-
return (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11157
|
-
? "".concat(format(calendarRange.from, 'dd.MM.yyyy'), " -\n").concat(format(calendarRange.to, 'dd.MM.yyyy'))
|
|
11158
|
-
: null;
|
|
11159
|
-
};
|
|
11160
|
-
|
|
11161
|
-
var parseDate = function (_a) {
|
|
11162
|
-
var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b, language = _a.language;
|
|
11163
|
-
return date
|
|
11164
|
-
? format(date, dateFormat, { locale: language === 'en' ? enUS : fi })
|
|
11165
|
-
: null;
|
|
11166
|
-
};
|
|
11167
|
-
|
|
11168
|
-
var nightsCount = function (_a) {
|
|
11169
|
-
var calendarRange = _a.calendarRange;
|
|
11170
|
-
if (!calendarRange || !calendarRange.from || !calendarRange.to) {
|
|
11171
|
-
return undefined;
|
|
11172
|
-
}
|
|
11173
|
-
var diffDays = differenceInCalendarDays(calendarRange.to, calendarRange.from);
|
|
11174
|
-
return diffDays;
|
|
11175
|
-
};
|
|
11176
11512
|
|
|
11177
11513
|
var parseGuests = function (_a) {
|
|
11178
11514
|
var guestLabel = _a.guestLabel, guestsLabel = _a.guestsLabel, guestsPlaceholder = _a.guestsPlaceholder, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
|
|
@@ -11544,12 +11880,15 @@ var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
|
|
|
11544
11880
|
|
|
11545
11881
|
var useFilterCalendar = function (_a) {
|
|
11546
11882
|
var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar, noActiveSelection = _a.noActiveSelection, toggleCalendar = _a.toggleCalendar;
|
|
11883
|
+
// State
|
|
11547
11884
|
var _b = __read(React__default.useState(), 2), calendarRange = _b[0], setCalendarRange = _b[1];
|
|
11548
11885
|
var _c = __read(React__default.useState(), 2), initialCalendarRange = _c[0], setInitialCalendarRange = _c[1];
|
|
11549
11886
|
var _d = __read(React__default.useState([]), 2), disabledDates = _d[0], setDisabledDates = _d[1];
|
|
11550
11887
|
var _e = __read(React__default.useState(false), 2), updateCalendarMonthNavigation = _e[0], setUpdateCalendarMonthNavigation = _e[1];
|
|
11551
11888
|
var _f = __read(React__default.useState(0), 2), updateCalendarDefaultMoth = _f[0], setUpdateCalendarDefaultMoth = _f[1];
|
|
11552
|
-
var _g = __read(React__default.useState(false), 2),
|
|
11889
|
+
var _g = __read(React__default.useState(false), 2), calendarHasError = _g[0], setCalendarHasError = _g[1];
|
|
11890
|
+
var _h = __read(React__default.useState(false), 2), updatedForSubmit = _h[0], setUpdatedForSubmit = _h[1];
|
|
11891
|
+
// Lifecycle
|
|
11553
11892
|
React__default.useEffect(function () {
|
|
11554
11893
|
if (typeof window === 'undefined')
|
|
11555
11894
|
return;
|
|
@@ -11560,10 +11899,15 @@ var useFilterCalendar = function (_a) {
|
|
|
11560
11899
|
if (noActiveSelection) {
|
|
11561
11900
|
handleClearDates();
|
|
11562
11901
|
setUpdateCalendarDefaultMoth(function (prev) { return prev + 1; });
|
|
11902
|
+
setUpdatedForSubmit(false);
|
|
11563
11903
|
setInitialCalendarRange({
|
|
11564
11904
|
from: new Date(startDateParam),
|
|
11565
11905
|
to: new Date(endDateParam),
|
|
11566
11906
|
});
|
|
11907
|
+
setCalendarRange({
|
|
11908
|
+
from: new Date(startDateParam),
|
|
11909
|
+
to: new Date(endDateParam),
|
|
11910
|
+
});
|
|
11567
11911
|
}
|
|
11568
11912
|
else {
|
|
11569
11913
|
setCalendarRange({
|
|
@@ -11573,6 +11917,31 @@ var useFilterCalendar = function (_a) {
|
|
|
11573
11917
|
}
|
|
11574
11918
|
}
|
|
11575
11919
|
}, [toggleCalendar]);
|
|
11920
|
+
React__default.useEffect(function () {
|
|
11921
|
+
var formatString = 'dd.MM.yyyy';
|
|
11922
|
+
var initialRangeTo = (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to)
|
|
11923
|
+
? format(initialCalendarRange.to, formatString)
|
|
11924
|
+
: null;
|
|
11925
|
+
var initialRangeFrom = (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from)
|
|
11926
|
+
? format(initialCalendarRange.from, formatString)
|
|
11927
|
+
: null;
|
|
11928
|
+
var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to)
|
|
11929
|
+
? format(calendarRange.to, formatString)
|
|
11930
|
+
: null;
|
|
11931
|
+
var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
11932
|
+
? format(calendarRange.from, formatString)
|
|
11933
|
+
: null;
|
|
11934
|
+
if (!!(calendarRangeTo && calendarRangeFrom && updatedForSubmit)) {
|
|
11935
|
+
if (!!(calendarRangeTo !== initialRangeTo) ||
|
|
11936
|
+
!!(calendarRangeFrom !== initialRangeFrom)) {
|
|
11937
|
+
handleSubmit();
|
|
11938
|
+
}
|
|
11939
|
+
else {
|
|
11940
|
+
setToggleCalendar(false);
|
|
11941
|
+
}
|
|
11942
|
+
}
|
|
11943
|
+
}, [calendarRange]);
|
|
11944
|
+
// Methods
|
|
11576
11945
|
var handleSubmit = function () {
|
|
11577
11946
|
setToggleCalendar(false);
|
|
11578
11947
|
return onSubmit(calendarRange);
|
|
@@ -11580,6 +11949,8 @@ var useFilterCalendar = function (_a) {
|
|
|
11580
11949
|
var handleClearDates = function () {
|
|
11581
11950
|
setDisabledDates([]);
|
|
11582
11951
|
setCalendarRange(undefined);
|
|
11952
|
+
setCalendarHasError(false);
|
|
11953
|
+
setInitialCalendarRange(undefined);
|
|
11583
11954
|
};
|
|
11584
11955
|
return {
|
|
11585
11956
|
handleSubmit: handleSubmit,
|
|
@@ -11591,17 +11962,17 @@ var useFilterCalendar = function (_a) {
|
|
|
11591
11962
|
disabledDates: disabledDates,
|
|
11592
11963
|
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11593
11964
|
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11594
|
-
|
|
11595
|
-
|
|
11596
|
-
|
|
11965
|
+
calendarHasError: calendarHasError,
|
|
11966
|
+
setCalendarHasError: setCalendarHasError,
|
|
11967
|
+
setUpdatedForSubmit: setUpdatedForSubmit,
|
|
11597
11968
|
};
|
|
11598
11969
|
};
|
|
11599
11970
|
|
|
11600
|
-
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-
|
|
11971
|
+
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}";
|
|
11601
11972
|
styleInject(css_248z);
|
|
11602
11973
|
|
|
11603
11974
|
function FilterCalendar(_a) {
|
|
11604
|
-
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;
|
|
11975
|
+
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;
|
|
11605
11976
|
var themePalette = useTheme({ palette: palette });
|
|
11606
11977
|
// Translations
|
|
11607
11978
|
useUpdateTranslations({ language: language });
|
|
@@ -11611,7 +11982,7 @@ function FilterCalendar(_a) {
|
|
|
11611
11982
|
setToggleCalendar: setToggleCalendar,
|
|
11612
11983
|
noActiveSelection: noActiveSelection,
|
|
11613
11984
|
toggleCalendar: toggleCalendar,
|
|
11614
|
-
}),
|
|
11985
|
+
}), 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;
|
|
11615
11986
|
// Display component after fully loaded
|
|
11616
11987
|
useAwaitRender();
|
|
11617
11988
|
// Handle close filter section
|
|
@@ -11619,36 +11990,39 @@ function FilterCalendar(_a) {
|
|
|
11619
11990
|
handleSelectedFilter: setToggleCalendar,
|
|
11620
11991
|
}).filtersRef;
|
|
11621
11992
|
var nights = nightsCount({
|
|
11622
|
-
calendarRange: calendarRange
|
|
11993
|
+
calendarRange: calendarRange,
|
|
11623
11994
|
});
|
|
11624
11995
|
return (React__default.createElement("div", { className: "will-root", style: themePalette }, toggleCalendar && (React__default.createElement("div", { className: "will-calendar-wrapper", ref: filtersRef },
|
|
11625
11996
|
React__default.createElement("div", { className: "will-calendar-header" },
|
|
11626
|
-
React__default.createElement("
|
|
11627
|
-
|
|
11628
|
-
React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
11629
|
-
overlappingDates && React__default.createElement("div", null, "Chose other dates")),
|
|
11997
|
+
React__default.createElement("h2", null, t('filterBar:calendar.title')),
|
|
11998
|
+
React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
11630
11999
|
React__default.createElement("div", { className: "will-calendar-main" },
|
|
11631
|
-
React__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,
|
|
12000
|
+
React__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 })),
|
|
11632
12001
|
React__default.createElement("div", { className: "will-calendar-footer" },
|
|
11633
|
-
React__default.createElement("div", { className: "will-calendar-footer-
|
|
11634
|
-
React__default.createElement("div",
|
|
11635
|
-
React__default.createElement("span", null,
|
|
11636
|
-
|
|
11637
|
-
|
|
11638
|
-
|
|
11639
|
-
|
|
11640
|
-
|
|
11641
|
-
|
|
11642
|
-
|
|
11643
|
-
|
|
11644
|
-
|
|
11645
|
-
|
|
11646
|
-
|
|
11647
|
-
|
|
11648
|
-
|
|
11649
|
-
|
|
11650
|
-
|
|
11651
|
-
|
|
12002
|
+
React__default.createElement("div", { className: "will-calendar-footer-actions-wrapper" },
|
|
12003
|
+
React__default.createElement("div", { className: "will-calendar-footer-dates" },
|
|
12004
|
+
calendarHasError ? (React__default.createElement("span", null, "Start or end day need connection for previous reservation")) : (React__default.createElement("div", null,
|
|
12005
|
+
React__default.createElement("span", null, parseDate({
|
|
12006
|
+
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from,
|
|
12007
|
+
dateFormat: 'EEEEEE d.M.yyyy',
|
|
12008
|
+
language: language,
|
|
12009
|
+
}) || t('common:checkIn')),
|
|
12010
|
+
React__default.createElement("span", { className: "will-calendar-footer-dates-separator" }, "-"),
|
|
12011
|
+
React__default.createElement("span", null, parseDate({
|
|
12012
|
+
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to,
|
|
12013
|
+
dateFormat: 'EEEEEE d.M.yyyy',
|
|
12014
|
+
language: language,
|
|
12015
|
+
}) || t('common:checkOut')))),
|
|
12016
|
+
React__default.createElement("span", { className: "will-calendar-footer-booked" }, calendarHasError
|
|
12017
|
+
? '2 nights min'
|
|
12018
|
+
: nights
|
|
12019
|
+
? "".concat(nights, " ").concat(t("common:".concat(nights === 1 ? 'night' : 'nights')))
|
|
12020
|
+
: '')),
|
|
12021
|
+
React__default.createElement("div", { className: "will-calendar-footer-actions" },
|
|
12022
|
+
React__default.createElement(SubmitButton, { onClick: handleClearDates, disabled: !(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from), label: t("common:clearDates") }))),
|
|
12023
|
+
calendarHasError && (React__default.createElement("div", { style: { display: 'flex', alignItems: 'center' } },
|
|
12024
|
+
React__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.error) || 'inherit', size: 25, icon: "warning" }),
|
|
12025
|
+
React__default.createElement("span", { style: { marginLeft: '10px' } }, "Check-in available for second room only with connection dates"))))))));
|
|
11652
12026
|
}
|
|
11653
12027
|
|
|
11654
12028
|
exports.Button = Button$1;
|