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