willba-component-library 0.2.23 → 0.2.24
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/index.esm.js +65 -91
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +64 -90
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +64 -90
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/core/components/calendar/Calendar.css +21 -5
- package/src/core/components/calendar/Calendar.tsx +86 -106
- package/src/locales/en/common.json +2 -1
- package/src/locales/fi/common.json +2 -1
package/lib/index.umd.js
CHANGED
|
@@ -2873,6 +2873,7 @@
|
|
|
2873
2873
|
var clearDates$1 = "Clear dates";
|
|
2874
2874
|
var noCheckIn$1 = "Room not available";
|
|
2875
2875
|
var noCheckOut$1 = "Check-out not available";
|
|
2876
|
+
var checkOutOnly$1 = "Check-out only";
|
|
2876
2877
|
var enCommon = {
|
|
2877
2878
|
night: night$1,
|
|
2878
2879
|
nights: nights$1,
|
|
@@ -2882,7 +2883,8 @@
|
|
|
2882
2883
|
apply: apply$1,
|
|
2883
2884
|
clearDates: clearDates$1,
|
|
2884
2885
|
noCheckIn: noCheckIn$1,
|
|
2885
|
-
noCheckOut: noCheckOut$1
|
|
2886
|
+
noCheckOut: noCheckOut$1,
|
|
2887
|
+
checkOutOnly: checkOutOnly$1
|
|
2886
2888
|
};
|
|
2887
2889
|
|
|
2888
2890
|
var calendar = {
|
|
@@ -2930,6 +2932,7 @@
|
|
|
2930
2932
|
var clearDates = "Tyhjennä";
|
|
2931
2933
|
var noCheckIn = "Huone ei saatavilla";
|
|
2932
2934
|
var noCheckOut = "Uloskirjaus ei saatavilla";
|
|
2935
|
+
var checkOutOnly = "Vain uloskirjaus";
|
|
2933
2936
|
var fiCommon = {
|
|
2934
2937
|
night: night,
|
|
2935
2938
|
nights: nights,
|
|
@@ -2939,7 +2942,8 @@
|
|
|
2939
2942
|
apply: apply,
|
|
2940
2943
|
clearDates: clearDates,
|
|
2941
2944
|
noCheckIn: noCheckIn,
|
|
2942
|
-
noCheckOut: noCheckOut
|
|
2945
|
+
noCheckOut: noCheckOut,
|
|
2946
|
+
checkOutOnly: checkOutOnly
|
|
2943
2947
|
};
|
|
2944
2948
|
|
|
2945
2949
|
var urlParams = typeof window !== 'undefined'
|
|
@@ -10808,7 +10812,7 @@
|
|
|
10808
10812
|
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}";
|
|
10809
10813
|
styleInject(css_248z$9);
|
|
10810
10814
|
|
|
10811
|
-
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 position: absolute;\n top: -42px;\n transform: translateX(calc(-50% + 20px));\n display: none;\n white-space: nowrap;\n z-index: 2;\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 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 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 display: block;\n}\n\n/* Loading spinner */\n\n.will-root .will-calendar-filter-container .rdp-months {\n position: relative;\n}\n\n.will-root .will-calendar-filter-container .will-calendar-spinner {\n position: absolute;\n top:0;\n bottom:0;\n left: 0;\n right: 0;\n background-color: var(--will-white-transparent);\n z-index: 3;\n display: none;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n}\n\n/* No active selection */\n\n.will-root .will-calendar-filter-container .no-active-selection {\n background-color:
|
|
10815
|
+
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 position: absolute;\n top: -42px;\n transform: translateX(calc(-50% + 20px));\n display: none;\n white-space: nowrap;\n z-index: 2;\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 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 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 display: block;\n}\n\n/* Loading spinner */\n\n.will-root .will-calendar-filter-container .rdp-months {\n position: relative;\n}\n\n.will-root .will-calendar-filter-container .will-calendar-spinner {\n position: absolute;\n top:0;\n bottom:0;\n left: 0;\n right: 0;\n background-color: var(--will-white-transparent);\n z-index: 3;\n display: none;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n}\n\n/* No active selection */\n\n.will-root .will-calendar-filter-container .no-active-selection {\n background-color: var(--will-onahau);\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";
|
|
10812
10816
|
styleInject(css_248z$8);
|
|
10813
10817
|
|
|
10814
10818
|
var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
@@ -10819,54 +10823,6 @@
|
|
|
10819
10823
|
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
10820
10824
|
var today = startOfDay(new Date());
|
|
10821
10825
|
var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
|
|
10822
|
-
React__default.useEffect(function () {
|
|
10823
|
-
if (!calendarRange) {
|
|
10824
|
-
setCalendarRange(undefined);
|
|
10825
|
-
}
|
|
10826
|
-
else if (calendarRange.from && calendarRange.to) {
|
|
10827
|
-
handleSelectedCheckIn({
|
|
10828
|
-
range: calendarRange,
|
|
10829
|
-
disableCalendarDates: disableCalendarDates,
|
|
10830
|
-
setCalendarRange: setCalendarRange,
|
|
10831
|
-
setDisabledDates: setDisabledDates,
|
|
10832
|
-
calendarRange: calendarRange,
|
|
10833
|
-
});
|
|
10834
|
-
}
|
|
10835
|
-
}, [disableCalendarDates, calendarRange]);
|
|
10836
|
-
// Handle tooltip
|
|
10837
|
-
React__default.useEffect(function () {
|
|
10838
|
-
if (typeof document === 'undefined' || !showFeedback)
|
|
10839
|
-
return;
|
|
10840
|
-
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
10841
|
-
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
10842
|
-
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
10843
|
-
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
10844
|
-
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
10845
|
-
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
10846
|
-
var tooltipClones = [];
|
|
10847
|
-
var tooltipClonesCheckOut = [];
|
|
10848
|
-
if (calendarTooltip && calendarButtons.length > 0) {
|
|
10849
|
-
calendarButtons.forEach(function (element) {
|
|
10850
|
-
var tooltipClone = calendarTooltip.cloneNode(true);
|
|
10851
|
-
element.appendChild(tooltipClone);
|
|
10852
|
-
tooltipClones.push(tooltipClone);
|
|
10853
|
-
});
|
|
10854
|
-
}
|
|
10855
|
-
if (calendarTooltipCheckOut && calendarButtonsCheckOut.length > 0) {
|
|
10856
|
-
calendarButtonsCheckOut.forEach(function (element) {
|
|
10857
|
-
var tooltipClone = calendarTooltipCheckOut.cloneNode(true);
|
|
10858
|
-
element.appendChild(tooltipClone);
|
|
10859
|
-
tooltipClonesCheckOut.push(tooltipClone);
|
|
10860
|
-
});
|
|
10861
|
-
}
|
|
10862
|
-
if (loadingSpinner && calendarMonthContainer) {
|
|
10863
|
-
calendarMonthContainer.appendChild(loadingSpinner);
|
|
10864
|
-
}
|
|
10865
|
-
return function () {
|
|
10866
|
-
tooltipClones.forEach(function (clone) { return clone.remove(); });
|
|
10867
|
-
tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
|
|
10868
|
-
};
|
|
10869
|
-
}, [calendarRange, updateCalendar]);
|
|
10870
10826
|
// Handle loading spinner
|
|
10871
10827
|
React__default.useEffect(function () {
|
|
10872
10828
|
if (typeof document === 'undefined')
|
|
@@ -10882,9 +10838,10 @@
|
|
|
10882
10838
|
}
|
|
10883
10839
|
}, [loadingData]);
|
|
10884
10840
|
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
10885
|
-
React__default.
|
|
10841
|
+
var _c = __read(React__default.useState(undefined), 2), overlappingDate = _c[0], setOverlappingDate = _c[1];
|
|
10842
|
+
React__default.useMemo(function () {
|
|
10886
10843
|
var _a, _b;
|
|
10887
|
-
if (disableCalendarDates) {
|
|
10844
|
+
if (disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.availableDates) {
|
|
10888
10845
|
var dateFormat_1 = 'dd-MM-yyyy';
|
|
10889
10846
|
var availableDateMap_1 = new Map();
|
|
10890
10847
|
(_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.forEach(function (available) {
|
|
@@ -10893,6 +10850,7 @@
|
|
|
10893
10850
|
var updatedDisabledDates = (_b = disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.map(function (dateRange) {
|
|
10894
10851
|
var formattedFromDate = format(dateRange.from, dateFormat_1);
|
|
10895
10852
|
if (availableDateMap_1.has(formattedFromDate)) {
|
|
10853
|
+
setOverlappingDate(dateRange);
|
|
10896
10854
|
return __assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) });
|
|
10897
10855
|
}
|
|
10898
10856
|
return dateRange;
|
|
@@ -10906,6 +10864,55 @@
|
|
|
10906
10864
|
selectedPath: selectedPath,
|
|
10907
10865
|
disableCalendarDates: disableCalendarDates,
|
|
10908
10866
|
});
|
|
10867
|
+
// Handle tooltip
|
|
10868
|
+
React__default.useEffect(function () {
|
|
10869
|
+
if (typeof document === 'undefined' || !showFeedback)
|
|
10870
|
+
return;
|
|
10871
|
+
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
10872
|
+
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
10873
|
+
var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
10874
|
+
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
10875
|
+
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
10876
|
+
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
10877
|
+
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
10878
|
+
var calendarOverlappingDate = document.querySelector('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
10879
|
+
var appendedOverlappingDateTooltip = document.querySelector('.will-filter-bar-calendar .rdp-cell .will-calendar-tooltip-overlapping-date');
|
|
10880
|
+
var tooltipClones = [];
|
|
10881
|
+
var tooltipClonesCheckOut = [];
|
|
10882
|
+
if (calendarTooltip && calendarButtons.length > 0) {
|
|
10883
|
+
calendarButtons.forEach(function (element) {
|
|
10884
|
+
var tooltipClone = calendarTooltip.cloneNode(true);
|
|
10885
|
+
element.appendChild(tooltipClone);
|
|
10886
|
+
tooltipClones.push(tooltipClone);
|
|
10887
|
+
});
|
|
10888
|
+
}
|
|
10889
|
+
if (calendarTooltipCheckOut && calendarButtonsCheckOut.length > 0) {
|
|
10890
|
+
calendarButtonsCheckOut.forEach(function (element) {
|
|
10891
|
+
var tooltipClone = calendarTooltipCheckOut.cloneNode(true);
|
|
10892
|
+
element.appendChild(tooltipClone);
|
|
10893
|
+
tooltipClonesCheckOut.push(tooltipClone);
|
|
10894
|
+
});
|
|
10895
|
+
}
|
|
10896
|
+
if (loadingSpinner && calendarMonthContainer) {
|
|
10897
|
+
calendarMonthContainer.appendChild(loadingSpinner);
|
|
10898
|
+
}
|
|
10899
|
+
if (calendarOverlappingDate &&
|
|
10900
|
+
calendarTooltipOverlappingDate &&
|
|
10901
|
+
!appendedOverlappingDateTooltip &&
|
|
10902
|
+
!calendarRange) {
|
|
10903
|
+
calendarOverlappingDate.appendChild(calendarTooltipOverlappingDate);
|
|
10904
|
+
}
|
|
10905
|
+
else if (calendarRange && appendedOverlappingDateTooltip) {
|
|
10906
|
+
appendedOverlappingDateTooltip.style.visibility = 'hidden';
|
|
10907
|
+
}
|
|
10908
|
+
else if (!calendarRange && appendedOverlappingDateTooltip) {
|
|
10909
|
+
appendedOverlappingDateTooltip.style.visibility = 'visible';
|
|
10910
|
+
}
|
|
10911
|
+
return function () {
|
|
10912
|
+
tooltipClones.forEach(function (clone) { return clone.remove(); });
|
|
10913
|
+
tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
|
|
10914
|
+
};
|
|
10915
|
+
}, [calendarRange, updateCalendar, overlappingDate]);
|
|
10909
10916
|
return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
|
|
10910
10917
|
React__default.createElement("div", { className: "will-calendar-filter-container" },
|
|
10911
10918
|
React__default.createElement(DayPicker, { id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) {
|
|
@@ -10921,6 +10928,7 @@
|
|
|
10921
10928
|
booked: 'booked',
|
|
10922
10929
|
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
10923
10930
|
noActiveSelection: 'no-active-selection',
|
|
10931
|
+
overlappingDate: 'overlapping-date',
|
|
10924
10932
|
}, captionLayout: "dropdown-buttons", defaultMonth: selectedStartDate ||
|
|
10925
10933
|
(((_b = disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
10926
10934
|
? disableCalendarDates.disabledDates[0].from
|
|
@@ -10944,11 +10952,14 @@
|
|
|
10944
10952
|
noActiveSelection: !calendarRange
|
|
10945
10953
|
? initialCalendarRange || []
|
|
10946
10954
|
: [],
|
|
10955
|
+
overlappingDate: (!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.from)) || [],
|
|
10947
10956
|
} }),
|
|
10948
10957
|
React__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
10949
10958
|
React__default.createElement("div", null, t('noCheckIn'))),
|
|
10950
10959
|
React__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
|
|
10951
10960
|
React__default.createElement("div", null, t('noCheckOut'))),
|
|
10961
|
+
React__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
|
|
10962
|
+
React__default.createElement("div", null, t('checkOutOnly'))),
|
|
10952
10963
|
React__default.createElement("div", { className: 'will-calendar-spinner' }, "Loading..."))));
|
|
10953
10964
|
});
|
|
10954
10965
|
/////////
|
|
@@ -10976,18 +10987,6 @@
|
|
|
10976
10987
|
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
10977
10988
|
var noDatesRange = format(checkIn, dateFormat) ===
|
|
10978
10989
|
format(checkOutRange.firstCheckOut, dateFormat);
|
|
10979
|
-
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
10980
|
-
// const filteredDisabledCalendarDates =
|
|
10981
|
-
// disableCalendarDates?.disabledDates?.map((dateRange) => {
|
|
10982
|
-
// if (
|
|
10983
|
-
// dateRange.from &&
|
|
10984
|
-
// format(dateRange.from, dateFormat) ===
|
|
10985
|
-
// format(checkOutRange.lastCheckOut, dateFormat)
|
|
10986
|
-
// ) {
|
|
10987
|
-
// return { ...dateRange, from: addDays(checkOutRange.lastCheckOut, 1) }
|
|
10988
|
-
// }
|
|
10989
|
-
// return dateRange
|
|
10990
|
-
// })
|
|
10991
10990
|
setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) || [])), false), [
|
|
10992
10991
|
{
|
|
10993
10992
|
from: noDatesRange ? undefined : checkIn,
|
|
@@ -11030,31 +11029,6 @@
|
|
|
11030
11029
|
]
|
|
11031
11030
|
: [];
|
|
11032
11031
|
};
|
|
11033
|
-
// const handleOverlappingDates = ({
|
|
11034
|
-
// disableCalendarDates,
|
|
11035
|
-
// }: {
|
|
11036
|
-
// disableCalendarDates?: DisableCalendarDates
|
|
11037
|
-
// }): DisableCalendarDates | undefined => {
|
|
11038
|
-
// if (!disableCalendarDates) return undefined
|
|
11039
|
-
// const dateFormat = 'dd-MM-yyyy'
|
|
11040
|
-
// disableCalendarDates.disabledDates = disableCalendarDates.disabledDates?.map(
|
|
11041
|
-
// (dateRange) => {
|
|
11042
|
-
// const overlappingDate = disableCalendarDates.availableDates?.find(
|
|
11043
|
-
// (available) =>
|
|
11044
|
-
// format(available.lastCheckOut, dateFormat) ===
|
|
11045
|
-
// format(dateRange.from, dateFormat)
|
|
11046
|
-
// )
|
|
11047
|
-
// if (overlappingDate) {
|
|
11048
|
-
// return {
|
|
11049
|
-
// ...dateRange,
|
|
11050
|
-
// from: addDays(dateRange.from, 1),
|
|
11051
|
-
// }
|
|
11052
|
-
// }
|
|
11053
|
-
// return dateRange
|
|
11054
|
-
// }
|
|
11055
|
-
// )
|
|
11056
|
-
// return disableCalendarDates
|
|
11057
|
-
// }
|
|
11058
11032
|
|
|
11059
11033
|
var parseDates = function (_a) {
|
|
11060
11034
|
var calendarRange = _a.calendarRange;
|