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.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React__default from 'react';
|
|
2
|
-
import React__default__default, { useState, createContext, useContext, useRef, useEffect, forwardRef } from 'react';
|
|
2
|
+
import React__default__default, { useState, createContext, useContext, useRef, useEffect, forwardRef, useMemo } from 'react';
|
|
3
3
|
|
|
4
4
|
/******************************************************************************
|
|
5
5
|
Copyright (c) Microsoft Corporation.
|
|
@@ -2851,6 +2851,7 @@ var apply$1 = "Apply";
|
|
|
2851
2851
|
var clearDates$1 = "Clear dates";
|
|
2852
2852
|
var noCheckIn$1 = "Room not available";
|
|
2853
2853
|
var noCheckOut$1 = "Check-out not available";
|
|
2854
|
+
var checkOutOnly$1 = "Check-out only";
|
|
2854
2855
|
var enCommon = {
|
|
2855
2856
|
night: night$1,
|
|
2856
2857
|
nights: nights$1,
|
|
@@ -2860,7 +2861,8 @@ var enCommon = {
|
|
|
2860
2861
|
apply: apply$1,
|
|
2861
2862
|
clearDates: clearDates$1,
|
|
2862
2863
|
noCheckIn: noCheckIn$1,
|
|
2863
|
-
noCheckOut: noCheckOut$1
|
|
2864
|
+
noCheckOut: noCheckOut$1,
|
|
2865
|
+
checkOutOnly: checkOutOnly$1
|
|
2864
2866
|
};
|
|
2865
2867
|
|
|
2866
2868
|
var calendar = {
|
|
@@ -2908,6 +2910,7 @@ var apply = "Aseta";
|
|
|
2908
2910
|
var clearDates = "Tyhjennä";
|
|
2909
2911
|
var noCheckIn = "Huone ei saatavilla";
|
|
2910
2912
|
var noCheckOut = "Uloskirjaus ei saatavilla";
|
|
2913
|
+
var checkOutOnly = "Vain uloskirjaus";
|
|
2911
2914
|
var fiCommon = {
|
|
2912
2915
|
night: night,
|
|
2913
2916
|
nights: nights,
|
|
@@ -2917,7 +2920,8 @@ var fiCommon = {
|
|
|
2917
2920
|
apply: apply,
|
|
2918
2921
|
clearDates: clearDates,
|
|
2919
2922
|
noCheckIn: noCheckIn,
|
|
2920
|
-
noCheckOut: noCheckOut
|
|
2923
|
+
noCheckOut: noCheckOut,
|
|
2924
|
+
checkOutOnly: checkOutOnly
|
|
2921
2925
|
};
|
|
2922
2926
|
|
|
2923
2927
|
var urlParams = typeof window !== 'undefined'
|
|
@@ -10786,7 +10790,7 @@ var reactResponsiveExports = reactResponsive.exports;
|
|
|
10786
10790
|
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}";
|
|
10787
10791
|
styleInject(css_248z$9);
|
|
10788
10792
|
|
|
10789
|
-
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:
|
|
10793
|
+
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";
|
|
10790
10794
|
styleInject(css_248z$8);
|
|
10791
10795
|
|
|
10792
10796
|
var Calendar = forwardRef(function (_a, ref) {
|
|
@@ -10797,54 +10801,6 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10797
10801
|
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
10798
10802
|
var today = startOfDay(new Date());
|
|
10799
10803
|
var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
|
|
10800
|
-
useEffect(function () {
|
|
10801
|
-
if (!calendarRange) {
|
|
10802
|
-
setCalendarRange(undefined);
|
|
10803
|
-
}
|
|
10804
|
-
else if (calendarRange.from && calendarRange.to) {
|
|
10805
|
-
handleSelectedCheckIn({
|
|
10806
|
-
range: calendarRange,
|
|
10807
|
-
disableCalendarDates: disableCalendarDates,
|
|
10808
|
-
setCalendarRange: setCalendarRange,
|
|
10809
|
-
setDisabledDates: setDisabledDates,
|
|
10810
|
-
calendarRange: calendarRange,
|
|
10811
|
-
});
|
|
10812
|
-
}
|
|
10813
|
-
}, [disableCalendarDates, calendarRange]);
|
|
10814
|
-
// Handle tooltip
|
|
10815
|
-
useEffect(function () {
|
|
10816
|
-
if (typeof document === 'undefined' || !showFeedback)
|
|
10817
|
-
return;
|
|
10818
|
-
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
10819
|
-
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
10820
|
-
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
10821
|
-
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
10822
|
-
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
10823
|
-
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
10824
|
-
var tooltipClones = [];
|
|
10825
|
-
var tooltipClonesCheckOut = [];
|
|
10826
|
-
if (calendarTooltip && calendarButtons.length > 0) {
|
|
10827
|
-
calendarButtons.forEach(function (element) {
|
|
10828
|
-
var tooltipClone = calendarTooltip.cloneNode(true);
|
|
10829
|
-
element.appendChild(tooltipClone);
|
|
10830
|
-
tooltipClones.push(tooltipClone);
|
|
10831
|
-
});
|
|
10832
|
-
}
|
|
10833
|
-
if (calendarTooltipCheckOut && calendarButtonsCheckOut.length > 0) {
|
|
10834
|
-
calendarButtonsCheckOut.forEach(function (element) {
|
|
10835
|
-
var tooltipClone = calendarTooltipCheckOut.cloneNode(true);
|
|
10836
|
-
element.appendChild(tooltipClone);
|
|
10837
|
-
tooltipClonesCheckOut.push(tooltipClone);
|
|
10838
|
-
});
|
|
10839
|
-
}
|
|
10840
|
-
if (loadingSpinner && calendarMonthContainer) {
|
|
10841
|
-
calendarMonthContainer.appendChild(loadingSpinner);
|
|
10842
|
-
}
|
|
10843
|
-
return function () {
|
|
10844
|
-
tooltipClones.forEach(function (clone) { return clone.remove(); });
|
|
10845
|
-
tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
|
|
10846
|
-
};
|
|
10847
|
-
}, [calendarRange, updateCalendar]);
|
|
10848
10804
|
// Handle loading spinner
|
|
10849
10805
|
useEffect(function () {
|
|
10850
10806
|
if (typeof document === 'undefined')
|
|
@@ -10860,9 +10816,10 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10860
10816
|
}
|
|
10861
10817
|
}, [loadingData]);
|
|
10862
10818
|
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
10863
|
-
|
|
10819
|
+
var _c = __read(useState(undefined), 2), overlappingDate = _c[0], setOverlappingDate = _c[1];
|
|
10820
|
+
useMemo(function () {
|
|
10864
10821
|
var _a, _b;
|
|
10865
|
-
if (disableCalendarDates) {
|
|
10822
|
+
if (disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.availableDates) {
|
|
10866
10823
|
var dateFormat_1 = 'dd-MM-yyyy';
|
|
10867
10824
|
var availableDateMap_1 = new Map();
|
|
10868
10825
|
(_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.forEach(function (available) {
|
|
@@ -10871,6 +10828,7 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10871
10828
|
var updatedDisabledDates = (_b = disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.map(function (dateRange) {
|
|
10872
10829
|
var formattedFromDate = format(dateRange.from, dateFormat_1);
|
|
10873
10830
|
if (availableDateMap_1.has(formattedFromDate)) {
|
|
10831
|
+
setOverlappingDate(dateRange);
|
|
10874
10832
|
return __assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) });
|
|
10875
10833
|
}
|
|
10876
10834
|
return dateRange;
|
|
@@ -10884,6 +10842,55 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10884
10842
|
selectedPath: selectedPath,
|
|
10885
10843
|
disableCalendarDates: disableCalendarDates,
|
|
10886
10844
|
});
|
|
10845
|
+
// Handle tooltip
|
|
10846
|
+
useEffect(function () {
|
|
10847
|
+
if (typeof document === 'undefined' || !showFeedback)
|
|
10848
|
+
return;
|
|
10849
|
+
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
10850
|
+
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
10851
|
+
var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
10852
|
+
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
10853
|
+
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
10854
|
+
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
10855
|
+
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
10856
|
+
var calendarOverlappingDate = document.querySelector('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
10857
|
+
var appendedOverlappingDateTooltip = document.querySelector('.will-filter-bar-calendar .rdp-cell .will-calendar-tooltip-overlapping-date');
|
|
10858
|
+
var tooltipClones = [];
|
|
10859
|
+
var tooltipClonesCheckOut = [];
|
|
10860
|
+
if (calendarTooltip && calendarButtons.length > 0) {
|
|
10861
|
+
calendarButtons.forEach(function (element) {
|
|
10862
|
+
var tooltipClone = calendarTooltip.cloneNode(true);
|
|
10863
|
+
element.appendChild(tooltipClone);
|
|
10864
|
+
tooltipClones.push(tooltipClone);
|
|
10865
|
+
});
|
|
10866
|
+
}
|
|
10867
|
+
if (calendarTooltipCheckOut && calendarButtonsCheckOut.length > 0) {
|
|
10868
|
+
calendarButtonsCheckOut.forEach(function (element) {
|
|
10869
|
+
var tooltipClone = calendarTooltipCheckOut.cloneNode(true);
|
|
10870
|
+
element.appendChild(tooltipClone);
|
|
10871
|
+
tooltipClonesCheckOut.push(tooltipClone);
|
|
10872
|
+
});
|
|
10873
|
+
}
|
|
10874
|
+
if (loadingSpinner && calendarMonthContainer) {
|
|
10875
|
+
calendarMonthContainer.appendChild(loadingSpinner);
|
|
10876
|
+
}
|
|
10877
|
+
if (calendarOverlappingDate &&
|
|
10878
|
+
calendarTooltipOverlappingDate &&
|
|
10879
|
+
!appendedOverlappingDateTooltip &&
|
|
10880
|
+
!calendarRange) {
|
|
10881
|
+
calendarOverlappingDate.appendChild(calendarTooltipOverlappingDate);
|
|
10882
|
+
}
|
|
10883
|
+
else if (calendarRange && appendedOverlappingDateTooltip) {
|
|
10884
|
+
appendedOverlappingDateTooltip.style.visibility = 'hidden';
|
|
10885
|
+
}
|
|
10886
|
+
else if (!calendarRange && appendedOverlappingDateTooltip) {
|
|
10887
|
+
appendedOverlappingDateTooltip.style.visibility = 'visible';
|
|
10888
|
+
}
|
|
10889
|
+
return function () {
|
|
10890
|
+
tooltipClones.forEach(function (clone) { return clone.remove(); });
|
|
10891
|
+
tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
|
|
10892
|
+
};
|
|
10893
|
+
}, [calendarRange, updateCalendar, overlappingDate]);
|
|
10887
10894
|
return (React__default__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
|
|
10888
10895
|
React__default__default.createElement("div", { className: "will-calendar-filter-container" },
|
|
10889
10896
|
React__default__default.createElement(DayPicker, { id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) {
|
|
@@ -10899,6 +10906,7 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10899
10906
|
booked: 'booked',
|
|
10900
10907
|
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
10901
10908
|
noActiveSelection: 'no-active-selection',
|
|
10909
|
+
overlappingDate: 'overlapping-date',
|
|
10902
10910
|
}, captionLayout: "dropdown-buttons", defaultMonth: selectedStartDate ||
|
|
10903
10911
|
(((_b = disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
10904
10912
|
? disableCalendarDates.disabledDates[0].from
|
|
@@ -10922,11 +10930,14 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10922
10930
|
noActiveSelection: !calendarRange
|
|
10923
10931
|
? initialCalendarRange || []
|
|
10924
10932
|
: [],
|
|
10933
|
+
overlappingDate: (!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.from)) || [],
|
|
10925
10934
|
} }),
|
|
10926
10935
|
React__default__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
10927
10936
|
React__default__default.createElement("div", null, t('noCheckIn'))),
|
|
10928
10937
|
React__default__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
|
|
10929
10938
|
React__default__default.createElement("div", null, t('noCheckOut'))),
|
|
10939
|
+
React__default__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
|
|
10940
|
+
React__default__default.createElement("div", null, t('checkOutOnly'))),
|
|
10930
10941
|
React__default__default.createElement("div", { className: 'will-calendar-spinner' }, "Loading..."))));
|
|
10931
10942
|
});
|
|
10932
10943
|
/////////
|
|
@@ -10954,18 +10965,6 @@ var handleSelectedCheckIn = function (_a) {
|
|
|
10954
10965
|
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
10955
10966
|
var noDatesRange = format(checkIn, dateFormat) ===
|
|
10956
10967
|
format(checkOutRange.firstCheckOut, dateFormat);
|
|
10957
|
-
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
10958
|
-
// const filteredDisabledCalendarDates =
|
|
10959
|
-
// disableCalendarDates?.disabledDates?.map((dateRange) => {
|
|
10960
|
-
// if (
|
|
10961
|
-
// dateRange.from &&
|
|
10962
|
-
// format(dateRange.from, dateFormat) ===
|
|
10963
|
-
// format(checkOutRange.lastCheckOut, dateFormat)
|
|
10964
|
-
// ) {
|
|
10965
|
-
// return { ...dateRange, from: addDays(checkOutRange.lastCheckOut, 1) }
|
|
10966
|
-
// }
|
|
10967
|
-
// return dateRange
|
|
10968
|
-
// })
|
|
10969
10968
|
setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) || [])), false), [
|
|
10970
10969
|
{
|
|
10971
10970
|
from: noDatesRange ? undefined : checkIn,
|
|
@@ -11008,31 +11007,6 @@ var handleDisabledDatesByPage = function (_a) {
|
|
|
11008
11007
|
]
|
|
11009
11008
|
: [];
|
|
11010
11009
|
};
|
|
11011
|
-
// const handleOverlappingDates = ({
|
|
11012
|
-
// disableCalendarDates,
|
|
11013
|
-
// }: {
|
|
11014
|
-
// disableCalendarDates?: DisableCalendarDates
|
|
11015
|
-
// }): DisableCalendarDates | undefined => {
|
|
11016
|
-
// if (!disableCalendarDates) return undefined
|
|
11017
|
-
// const dateFormat = 'dd-MM-yyyy'
|
|
11018
|
-
// disableCalendarDates.disabledDates = disableCalendarDates.disabledDates?.map(
|
|
11019
|
-
// (dateRange) => {
|
|
11020
|
-
// const overlappingDate = disableCalendarDates.availableDates?.find(
|
|
11021
|
-
// (available) =>
|
|
11022
|
-
// format(available.lastCheckOut, dateFormat) ===
|
|
11023
|
-
// format(dateRange.from, dateFormat)
|
|
11024
|
-
// )
|
|
11025
|
-
// if (overlappingDate) {
|
|
11026
|
-
// return {
|
|
11027
|
-
// ...dateRange,
|
|
11028
|
-
// from: addDays(dateRange.from, 1),
|
|
11029
|
-
// }
|
|
11030
|
-
// }
|
|
11031
|
-
// return dateRange
|
|
11032
|
-
// }
|
|
11033
|
-
// )
|
|
11034
|
-
// return disableCalendarDates
|
|
11035
|
-
// }
|
|
11036
11010
|
|
|
11037
11011
|
var parseDates = function (_a) {
|
|
11038
11012
|
var calendarRange = _a.calendarRange;
|