willba-component-library 0.2.21 → 0.2.23
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/components/FilterCalendar/FilterCalendar.d.ts +1 -1
- package/lib/components/FilterCalendar/hooks/useFilterCalendar.d.ts +3 -1
- package/lib/core/components/calendar/CalendarTypes.d.ts +3 -0
- package/lib/core/utils/parseDate.d.ts +2 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.esm.js +94 -30
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +94 -30
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +94 -30
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FilterCalendar/FilterCalendar.stories.tsx +9 -836
- package/src/components/FilterCalendar/FilterCalendar.tsx +9 -1
- package/src/components/FilterCalendar/hooks/useFilterCalendar.ts +19 -10
- package/src/core/components/calendar/Calendar.css +6 -0
- package/src/core/components/calendar/Calendar.tsx +85 -8
- package/src/core/components/calendar/CalendarTypes.ts +3 -0
- package/src/core/utils/parseDate.tsx +10 -2
- package/src/locales/en/common.json +2 -2
- package/src/locales/fi/common.json +4 -4
- package/src/locales/fi/filterBar.json +1 -1
package/lib/index.js
CHANGED
|
@@ -2869,8 +2869,8 @@ var checkOut$1 = "check-out";
|
|
|
2869
2869
|
var search$1 = "Search";
|
|
2870
2870
|
var apply$1 = "Apply";
|
|
2871
2871
|
var clearDates$1 = "Clear dates";
|
|
2872
|
-
var noCheckIn$1 = "
|
|
2873
|
-
var noCheckOut$1 = "
|
|
2872
|
+
var noCheckIn$1 = "Room not available";
|
|
2873
|
+
var noCheckOut$1 = "Check-out not available";
|
|
2874
2874
|
var enCommon = {
|
|
2875
2875
|
night: night$1,
|
|
2876
2876
|
nights: nights$1,
|
|
@@ -2884,7 +2884,7 @@ var enCommon = {
|
|
|
2884
2884
|
};
|
|
2885
2885
|
|
|
2886
2886
|
var calendar = {
|
|
2887
|
-
label: "
|
|
2887
|
+
label: "Päivät",
|
|
2888
2888
|
roomsLabelPlaceholder: "Lisää check-in ja check-out",
|
|
2889
2889
|
eventsLabelPlaceholder: "Lisää aikaväli",
|
|
2890
2890
|
startDate: "Alku",
|
|
@@ -2924,10 +2924,10 @@ var nights = "yötä";
|
|
|
2924
2924
|
var checkIn = "check-in";
|
|
2925
2925
|
var checkOut = "check-out";
|
|
2926
2926
|
var search = "Hae";
|
|
2927
|
-
var apply = "
|
|
2928
|
-
var clearDates = "
|
|
2929
|
-
var noCheckIn = "
|
|
2930
|
-
var noCheckOut = "
|
|
2927
|
+
var apply = "Aseta";
|
|
2928
|
+
var clearDates = "Tyhjennä";
|
|
2929
|
+
var noCheckIn = "Huone ei saatavilla";
|
|
2930
|
+
var noCheckOut = "Uloskirjaus ei saatavilla";
|
|
2931
2931
|
var fiCommon = {
|
|
2932
2932
|
night: night,
|
|
2933
2933
|
nights: nights,
|
|
@@ -10806,12 +10806,12 @@ var reactResponsiveExports = reactResponsive.exports;
|
|
|
10806
10806
|
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}";
|
|
10807
10807
|
styleInject(css_248z$9);
|
|
10808
10808
|
|
|
10809
|
-
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\n";
|
|
10809
|
+
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: lightgrey;\n}\n\n\n";
|
|
10810
10810
|
styleInject(css_248z$8);
|
|
10811
10811
|
|
|
10812
10812
|
var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
10813
10813
|
var _b;
|
|
10814
|
-
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, updateCalendar = _a.updateCalendar, setUpdateCalendar = _a.setUpdateCalendar, loadingData = _a.loadingData;
|
|
10814
|
+
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, updateCalendar = _a.updateCalendar, setUpdateCalendar = _a.setUpdateCalendar, loadingData = _a.loadingData, initialCalendarRange = _a.initialCalendarRange, showFeedback = _a.showFeedback;
|
|
10815
10815
|
// Translations
|
|
10816
10816
|
var t = useTranslation('common').t;
|
|
10817
10817
|
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
@@ -10833,7 +10833,7 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
|
10833
10833
|
}, [disableCalendarDates, calendarRange]);
|
|
10834
10834
|
// Handle tooltip
|
|
10835
10835
|
React__default.useEffect(function () {
|
|
10836
|
-
if (typeof document === 'undefined')
|
|
10836
|
+
if (typeof document === 'undefined' || !showFeedback)
|
|
10837
10837
|
return;
|
|
10838
10838
|
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
10839
10839
|
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
@@ -10879,6 +10879,25 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
|
10879
10879
|
loadingSpinner.style.display = 'none';
|
|
10880
10880
|
}
|
|
10881
10881
|
}, [loadingData]);
|
|
10882
|
+
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
10883
|
+
React__default.useEffect(function () {
|
|
10884
|
+
var _a, _b;
|
|
10885
|
+
if (disableCalendarDates) {
|
|
10886
|
+
var dateFormat_1 = 'dd-MM-yyyy';
|
|
10887
|
+
var availableDateMap_1 = new Map();
|
|
10888
|
+
(_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.forEach(function (available) {
|
|
10889
|
+
availableDateMap_1.set(format(available.lastCheckOut, dateFormat_1), available);
|
|
10890
|
+
});
|
|
10891
|
+
var updatedDisabledDates = (_b = disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.map(function (dateRange) {
|
|
10892
|
+
var formattedFromDate = format(dateRange.from, dateFormat_1);
|
|
10893
|
+
if (availableDateMap_1.has(formattedFromDate)) {
|
|
10894
|
+
return __assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) });
|
|
10895
|
+
}
|
|
10896
|
+
return dateRange;
|
|
10897
|
+
});
|
|
10898
|
+
disableCalendarDates.disabledDates = updatedDisabledDates;
|
|
10899
|
+
}
|
|
10900
|
+
}, [disableCalendarDates]);
|
|
10882
10901
|
// Handle disable dates by page
|
|
10883
10902
|
var disabledDatesByPage = handleDisabledDatesByPage({
|
|
10884
10903
|
today: today,
|
|
@@ -10899,6 +10918,7 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
|
10899
10918
|
today: 'my-today',
|
|
10900
10919
|
booked: 'booked',
|
|
10901
10920
|
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
10921
|
+
noActiveSelection: 'no-active-selection',
|
|
10902
10922
|
}, captionLayout: "dropdown-buttons", defaultMonth: selectedStartDate ||
|
|
10903
10923
|
(((_b = disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
10904
10924
|
? disableCalendarDates.disabledDates[0].from
|
|
@@ -10919,6 +10939,9 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
|
10919
10939
|
disabledAfterCheckIn: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
10920
10940
|
? [{ after: calendarRange.from }]
|
|
10921
10941
|
: [],
|
|
10942
|
+
noActiveSelection: !calendarRange
|
|
10943
|
+
? initialCalendarRange || []
|
|
10944
|
+
: [],
|
|
10922
10945
|
} }),
|
|
10923
10946
|
React__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
10924
10947
|
React__default.createElement("div", null, t('noCheckIn'))),
|
|
@@ -10946,14 +10969,23 @@ var handleSelectedCheckIn = function (_a) {
|
|
|
10946
10969
|
format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
|
|
10947
10970
|
})
|
|
10948
10971
|
: null;
|
|
10949
|
-
if (rangeFrom &&
|
|
10950
|
-
// rangeFrom !== calendarTo &&
|
|
10951
|
-
checkOutRange &&
|
|
10952
|
-
setDisabledDates) {
|
|
10972
|
+
if (rangeFrom && checkOutRange && setDisabledDates) {
|
|
10953
10973
|
var checkIn = addDays(checkOutRange.checkIn, 1);
|
|
10954
10974
|
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
10955
10975
|
var noDatesRange = format(checkIn, dateFormat) ===
|
|
10956
10976
|
format(checkOutRange.firstCheckOut, dateFormat);
|
|
10977
|
+
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
10978
|
+
// const filteredDisabledCalendarDates =
|
|
10979
|
+
// disableCalendarDates?.disabledDates?.map((dateRange) => {
|
|
10980
|
+
// if (
|
|
10981
|
+
// dateRange.from &&
|
|
10982
|
+
// format(dateRange.from, dateFormat) ===
|
|
10983
|
+
// format(checkOutRange.lastCheckOut, dateFormat)
|
|
10984
|
+
// ) {
|
|
10985
|
+
// return { ...dateRange, from: addDays(checkOutRange.lastCheckOut, 1) }
|
|
10986
|
+
// }
|
|
10987
|
+
// return dateRange
|
|
10988
|
+
// })
|
|
10957
10989
|
setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) || [])), false), [
|
|
10958
10990
|
{
|
|
10959
10991
|
from: noDatesRange ? undefined : checkIn,
|
|
@@ -10996,6 +11028,31 @@ var handleDisabledDatesByPage = function (_a) {
|
|
|
10996
11028
|
]
|
|
10997
11029
|
: [];
|
|
10998
11030
|
};
|
|
11031
|
+
// const handleOverlappingDates = ({
|
|
11032
|
+
// disableCalendarDates,
|
|
11033
|
+
// }: {
|
|
11034
|
+
// disableCalendarDates?: DisableCalendarDates
|
|
11035
|
+
// }): DisableCalendarDates | undefined => {
|
|
11036
|
+
// if (!disableCalendarDates) return undefined
|
|
11037
|
+
// const dateFormat = 'dd-MM-yyyy'
|
|
11038
|
+
// disableCalendarDates.disabledDates = disableCalendarDates.disabledDates?.map(
|
|
11039
|
+
// (dateRange) => {
|
|
11040
|
+
// const overlappingDate = disableCalendarDates.availableDates?.find(
|
|
11041
|
+
// (available) =>
|
|
11042
|
+
// format(available.lastCheckOut, dateFormat) ===
|
|
11043
|
+
// format(dateRange.from, dateFormat)
|
|
11044
|
+
// )
|
|
11045
|
+
// if (overlappingDate) {
|
|
11046
|
+
// return {
|
|
11047
|
+
// ...dateRange,
|
|
11048
|
+
// from: addDays(dateRange.from, 1),
|
|
11049
|
+
// }
|
|
11050
|
+
// }
|
|
11051
|
+
// return dateRange
|
|
11052
|
+
// }
|
|
11053
|
+
// )
|
|
11054
|
+
// return disableCalendarDates
|
|
11055
|
+
// }
|
|
10999
11056
|
|
|
11000
11057
|
var parseDates = function (_a) {
|
|
11001
11058
|
var calendarRange = _a.calendarRange;
|
|
@@ -11005,8 +11062,10 @@ var parseDates = function (_a) {
|
|
|
11005
11062
|
};
|
|
11006
11063
|
|
|
11007
11064
|
var parseDate = function (_a) {
|
|
11008
|
-
var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b;
|
|
11009
|
-
return date
|
|
11065
|
+
var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b, language = _a.language;
|
|
11066
|
+
return date
|
|
11067
|
+
? format(date, dateFormat, { locale: language === 'en' ? enUS : fi })
|
|
11068
|
+
: null;
|
|
11010
11069
|
};
|
|
11011
11070
|
|
|
11012
11071
|
var nightsCount = function (_a) {
|
|
@@ -11381,10 +11440,11 @@ var AGE_CATEGORIES_FALLBACK = [
|
|
|
11381
11440
|
var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
|
|
11382
11441
|
|
|
11383
11442
|
var useFilterCalendar = function (_a) {
|
|
11384
|
-
var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar;
|
|
11443
|
+
var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar, noActiveSelection = _a.noActiveSelection;
|
|
11385
11444
|
var _b = __read(React__default.useState(), 2), calendarRange = _b[0], setCalendarRange = _b[1];
|
|
11386
|
-
var _c = __read(React__default.useState(
|
|
11387
|
-
var _d = __read(React__default.useState(
|
|
11445
|
+
var _c = __read(React__default.useState(), 2), initialCalendarRange = _c[0], setInitialCalendarRange = _c[1];
|
|
11446
|
+
var _d = __read(React__default.useState([]), 2), disabledDates = _d[0], setDisabledDates = _d[1];
|
|
11447
|
+
var _e = __read(React__default.useState(false), 2), updateCalendar = _e[0], setUpdateCalendar = _e[1];
|
|
11388
11448
|
React__default.useEffect(function () {
|
|
11389
11449
|
if (typeof window === 'undefined')
|
|
11390
11450
|
return;
|
|
@@ -11392,16 +11452,17 @@ var useFilterCalendar = function (_a) {
|
|
|
11392
11452
|
var startDateParam = urlSearchParams.get('startDate');
|
|
11393
11453
|
var endDateParam = urlSearchParams.get('endDate');
|
|
11394
11454
|
if (startDateParam && endDateParam) {
|
|
11395
|
-
|
|
11396
|
-
|
|
11397
|
-
|
|
11398
|
-
|
|
11455
|
+
noActiveSelection
|
|
11456
|
+
? setInitialCalendarRange({
|
|
11457
|
+
from: new Date(startDateParam),
|
|
11458
|
+
to: new Date(endDateParam),
|
|
11459
|
+
})
|
|
11460
|
+
: setCalendarRange({
|
|
11461
|
+
from: new Date(startDateParam),
|
|
11462
|
+
to: new Date(endDateParam),
|
|
11463
|
+
});
|
|
11399
11464
|
}
|
|
11400
11465
|
}, []);
|
|
11401
|
-
// TODO - handle the onSubmit on calendar open
|
|
11402
|
-
// useEffect(() => {
|
|
11403
|
-
// onSubmit(calendarRange)
|
|
11404
|
-
// }, [])
|
|
11405
11466
|
var handleSubmit = function () {
|
|
11406
11467
|
setToggleCalendar(false);
|
|
11407
11468
|
return onSubmit(calendarRange);
|
|
@@ -11419,6 +11480,7 @@ var useFilterCalendar = function (_a) {
|
|
|
11419
11480
|
calendarRange: calendarRange,
|
|
11420
11481
|
disabledDates: disabledDates,
|
|
11421
11482
|
updateCalendar: updateCalendar,
|
|
11483
|
+
initialCalendarRange: initialCalendarRange,
|
|
11422
11484
|
};
|
|
11423
11485
|
};
|
|
11424
11486
|
|
|
@@ -11426,12 +11488,12 @@ var css_248z = ".will-root .will-calendar-wrapper {\n box-shadow: var(--will-
|
|
|
11426
11488
|
styleInject(css_248z);
|
|
11427
11489
|
|
|
11428
11490
|
function FilterCalendar(_a) {
|
|
11429
|
-
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;
|
|
11491
|
+
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;
|
|
11430
11492
|
var themePalette = useTheme({ palette: palette });
|
|
11431
11493
|
// Translations
|
|
11432
11494
|
useUpdateTranslations({ language: language });
|
|
11433
11495
|
var t = useTranslation().t;
|
|
11434
|
-
var _b = useFilterCalendar({ onSubmit: onSubmit, setToggleCalendar: setToggleCalendar }), handleSubmit = _b.handleSubmit, setCalendarRange = _b.setCalendarRange, handleClearDates = _b.handleClearDates, calendarRange = _b.calendarRange, disabledDates = _b.disabledDates, setDisabledDates = _b.setDisabledDates, updateCalendar = _b.updateCalendar, setUpdateCalendar = _b.setUpdateCalendar;
|
|
11496
|
+
var _b = useFilterCalendar({ onSubmit: onSubmit, setToggleCalendar: setToggleCalendar, noActiveSelection: noActiveSelection }), handleSubmit = _b.handleSubmit, setCalendarRange = _b.setCalendarRange, handleClearDates = _b.handleClearDates, calendarRange = _b.calendarRange, disabledDates = _b.disabledDates, setDisabledDates = _b.setDisabledDates, updateCalendar = _b.updateCalendar, setUpdateCalendar = _b.setUpdateCalendar, initialCalendarRange = _b.initialCalendarRange;
|
|
11435
11497
|
// Display component after fully loaded
|
|
11436
11498
|
useAwaitRender();
|
|
11437
11499
|
// Handle close filter section
|
|
@@ -11444,18 +11506,20 @@ function FilterCalendar(_a) {
|
|
|
11444
11506
|
React__default.createElement("h2", null, t('filterBar:calendar.title')),
|
|
11445
11507
|
React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
11446
11508
|
React__default.createElement("div", { className: "will-calendar-main" },
|
|
11447
|
-
React__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, setDisabledDates: setDisabledDates, updateCalendar: updateCalendar, setUpdateCalendar: setUpdateCalendar, loadingData: loadingData })),
|
|
11509
|
+
React__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, setDisabledDates: setDisabledDates, updateCalendar: updateCalendar, setUpdateCalendar: setUpdateCalendar, loadingData: loadingData, initialCalendarRange: initialCalendarRange, showFeedback: showFeedback, noActiveSelection: noActiveSelection })),
|
|
11448
11510
|
React__default.createElement("div", { className: "will-calendar-footer" },
|
|
11449
11511
|
React__default.createElement("div", { className: "will-calendar-footer-dates" },
|
|
11450
11512
|
React__default.createElement("div", null,
|
|
11451
11513
|
React__default.createElement("span", null, parseDate({
|
|
11452
11514
|
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from,
|
|
11453
11515
|
dateFormat: 'EEEEEE d.M.yyyy',
|
|
11516
|
+
language: language,
|
|
11454
11517
|
}) || t('common:checkIn')),
|
|
11455
11518
|
React__default.createElement("span", { className: "will-calendar-footer-dates-separator" }, "-"),
|
|
11456
11519
|
React__default.createElement("span", null, parseDate({
|
|
11457
11520
|
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to,
|
|
11458
11521
|
dateFormat: 'EEEEEE d.M.yyyy',
|
|
11522
|
+
language: language,
|
|
11459
11523
|
}) || t('common:checkOut'))),
|
|
11460
11524
|
!!nights && (React__default.createElement("span", null, "".concat(nights, " ").concat(t("common:".concat(nights > 1 ? 'nights' : 'night')))))),
|
|
11461
11525
|
React__default.createElement("div", { className: "will-calendar-footer-actions" },
|