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.umd.js
CHANGED
|
@@ -2871,8 +2871,8 @@
|
|
|
2871
2871
|
var search$1 = "Search";
|
|
2872
2872
|
var apply$1 = "Apply";
|
|
2873
2873
|
var clearDates$1 = "Clear dates";
|
|
2874
|
-
var noCheckIn$1 = "
|
|
2875
|
-
var noCheckOut$1 = "
|
|
2874
|
+
var noCheckIn$1 = "Room not available";
|
|
2875
|
+
var noCheckOut$1 = "Check-out not available";
|
|
2876
2876
|
var enCommon = {
|
|
2877
2877
|
night: night$1,
|
|
2878
2878
|
nights: nights$1,
|
|
@@ -2886,7 +2886,7 @@
|
|
|
2886
2886
|
};
|
|
2887
2887
|
|
|
2888
2888
|
var calendar = {
|
|
2889
|
-
label: "
|
|
2889
|
+
label: "Päivät",
|
|
2890
2890
|
roomsLabelPlaceholder: "Lisää check-in ja check-out",
|
|
2891
2891
|
eventsLabelPlaceholder: "Lisää aikaväli",
|
|
2892
2892
|
startDate: "Alku",
|
|
@@ -2926,10 +2926,10 @@
|
|
|
2926
2926
|
var checkIn = "check-in";
|
|
2927
2927
|
var checkOut = "check-out";
|
|
2928
2928
|
var search = "Hae";
|
|
2929
|
-
var apply = "
|
|
2930
|
-
var clearDates = "
|
|
2931
|
-
var noCheckIn = "
|
|
2932
|
-
var noCheckOut = "
|
|
2929
|
+
var apply = "Aseta";
|
|
2930
|
+
var clearDates = "Tyhjennä";
|
|
2931
|
+
var noCheckIn = "Huone ei saatavilla";
|
|
2932
|
+
var noCheckOut = "Uloskirjaus ei saatavilla";
|
|
2933
2933
|
var fiCommon = {
|
|
2934
2934
|
night: night,
|
|
2935
2935
|
nights: nights,
|
|
@@ -10808,12 +10808,12 @@
|
|
|
10808
10808
|
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
10809
|
styleInject(css_248z$9);
|
|
10810
10810
|
|
|
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\n";
|
|
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: lightgrey;\n}\n\n\n";
|
|
10812
10812
|
styleInject(css_248z$8);
|
|
10813
10813
|
|
|
10814
10814
|
var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
10815
10815
|
var _b;
|
|
10816
|
-
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;
|
|
10816
|
+
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;
|
|
10817
10817
|
// Translations
|
|
10818
10818
|
var t = useTranslation('common').t;
|
|
10819
10819
|
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
@@ -10835,7 +10835,7 @@
|
|
|
10835
10835
|
}, [disableCalendarDates, calendarRange]);
|
|
10836
10836
|
// Handle tooltip
|
|
10837
10837
|
React__default.useEffect(function () {
|
|
10838
|
-
if (typeof document === 'undefined')
|
|
10838
|
+
if (typeof document === 'undefined' || !showFeedback)
|
|
10839
10839
|
return;
|
|
10840
10840
|
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
10841
10841
|
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
@@ -10881,6 +10881,25 @@
|
|
|
10881
10881
|
loadingSpinner.style.display = 'none';
|
|
10882
10882
|
}
|
|
10883
10883
|
}, [loadingData]);
|
|
10884
|
+
// Handle overlapping availableDates.lastCheckOut and disabledDates.start
|
|
10885
|
+
React__default.useEffect(function () {
|
|
10886
|
+
var _a, _b;
|
|
10887
|
+
if (disableCalendarDates) {
|
|
10888
|
+
var dateFormat_1 = 'dd-MM-yyyy';
|
|
10889
|
+
var availableDateMap_1 = new Map();
|
|
10890
|
+
(_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.forEach(function (available) {
|
|
10891
|
+
availableDateMap_1.set(format(available.lastCheckOut, dateFormat_1), available);
|
|
10892
|
+
});
|
|
10893
|
+
var updatedDisabledDates = (_b = disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.map(function (dateRange) {
|
|
10894
|
+
var formattedFromDate = format(dateRange.from, dateFormat_1);
|
|
10895
|
+
if (availableDateMap_1.has(formattedFromDate)) {
|
|
10896
|
+
return __assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) });
|
|
10897
|
+
}
|
|
10898
|
+
return dateRange;
|
|
10899
|
+
});
|
|
10900
|
+
disableCalendarDates.disabledDates = updatedDisabledDates;
|
|
10901
|
+
}
|
|
10902
|
+
}, [disableCalendarDates]);
|
|
10884
10903
|
// Handle disable dates by page
|
|
10885
10904
|
var disabledDatesByPage = handleDisabledDatesByPage({
|
|
10886
10905
|
today: today,
|
|
@@ -10901,6 +10920,7 @@
|
|
|
10901
10920
|
today: 'my-today',
|
|
10902
10921
|
booked: 'booked',
|
|
10903
10922
|
disabledAfterCheckIn: 'disabled-after-check-in',
|
|
10923
|
+
noActiveSelection: 'no-active-selection',
|
|
10904
10924
|
}, captionLayout: "dropdown-buttons", defaultMonth: selectedStartDate ||
|
|
10905
10925
|
(((_b = disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
|
|
10906
10926
|
? disableCalendarDates.disabledDates[0].from
|
|
@@ -10921,6 +10941,9 @@
|
|
|
10921
10941
|
disabledAfterCheckIn: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
|
|
10922
10942
|
? [{ after: calendarRange.from }]
|
|
10923
10943
|
: [],
|
|
10944
|
+
noActiveSelection: !calendarRange
|
|
10945
|
+
? initialCalendarRange || []
|
|
10946
|
+
: [],
|
|
10924
10947
|
} }),
|
|
10925
10948
|
React__default.createElement("div", { className: 'will-calendar-tooltip' },
|
|
10926
10949
|
React__default.createElement("div", null, t('noCheckIn'))),
|
|
@@ -10948,14 +10971,23 @@
|
|
|
10948
10971
|
format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
|
|
10949
10972
|
})
|
|
10950
10973
|
: null;
|
|
10951
|
-
if (rangeFrom &&
|
|
10952
|
-
// rangeFrom !== calendarTo &&
|
|
10953
|
-
checkOutRange &&
|
|
10954
|
-
setDisabledDates) {
|
|
10974
|
+
if (rangeFrom && checkOutRange && setDisabledDates) {
|
|
10955
10975
|
var checkIn = addDays(checkOutRange.checkIn, 1);
|
|
10956
10976
|
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
10957
10977
|
var noDatesRange = format(checkIn, dateFormat) ===
|
|
10958
10978
|
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
|
+
// })
|
|
10959
10991
|
setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) || [])), false), [
|
|
10960
10992
|
{
|
|
10961
10993
|
from: noDatesRange ? undefined : checkIn,
|
|
@@ -10998,6 +11030,31 @@
|
|
|
10998
11030
|
]
|
|
10999
11031
|
: [];
|
|
11000
11032
|
};
|
|
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
|
+
// }
|
|
11001
11058
|
|
|
11002
11059
|
var parseDates = function (_a) {
|
|
11003
11060
|
var calendarRange = _a.calendarRange;
|
|
@@ -11007,8 +11064,10 @@
|
|
|
11007
11064
|
};
|
|
11008
11065
|
|
|
11009
11066
|
var parseDate = function (_a) {
|
|
11010
|
-
var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b;
|
|
11011
|
-
return date
|
|
11067
|
+
var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b, language = _a.language;
|
|
11068
|
+
return date
|
|
11069
|
+
? format(date, dateFormat, { locale: language === 'en' ? enUS : fi })
|
|
11070
|
+
: null;
|
|
11012
11071
|
};
|
|
11013
11072
|
|
|
11014
11073
|
var nightsCount = function (_a) {
|
|
@@ -11383,10 +11442,11 @@
|
|
|
11383
11442
|
var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
|
|
11384
11443
|
|
|
11385
11444
|
var useFilterCalendar = function (_a) {
|
|
11386
|
-
var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar;
|
|
11445
|
+
var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar, noActiveSelection = _a.noActiveSelection;
|
|
11387
11446
|
var _b = __read(React__default.useState(), 2), calendarRange = _b[0], setCalendarRange = _b[1];
|
|
11388
|
-
var _c = __read(React__default.useState(
|
|
11389
|
-
var _d = __read(React__default.useState(
|
|
11447
|
+
var _c = __read(React__default.useState(), 2), initialCalendarRange = _c[0], setInitialCalendarRange = _c[1];
|
|
11448
|
+
var _d = __read(React__default.useState([]), 2), disabledDates = _d[0], setDisabledDates = _d[1];
|
|
11449
|
+
var _e = __read(React__default.useState(false), 2), updateCalendar = _e[0], setUpdateCalendar = _e[1];
|
|
11390
11450
|
React__default.useEffect(function () {
|
|
11391
11451
|
if (typeof window === 'undefined')
|
|
11392
11452
|
return;
|
|
@@ -11394,16 +11454,17 @@
|
|
|
11394
11454
|
var startDateParam = urlSearchParams.get('startDate');
|
|
11395
11455
|
var endDateParam = urlSearchParams.get('endDate');
|
|
11396
11456
|
if (startDateParam && endDateParam) {
|
|
11397
|
-
|
|
11398
|
-
|
|
11399
|
-
|
|
11400
|
-
|
|
11457
|
+
noActiveSelection
|
|
11458
|
+
? setInitialCalendarRange({
|
|
11459
|
+
from: new Date(startDateParam),
|
|
11460
|
+
to: new Date(endDateParam),
|
|
11461
|
+
})
|
|
11462
|
+
: setCalendarRange({
|
|
11463
|
+
from: new Date(startDateParam),
|
|
11464
|
+
to: new Date(endDateParam),
|
|
11465
|
+
});
|
|
11401
11466
|
}
|
|
11402
11467
|
}, []);
|
|
11403
|
-
// TODO - handle the onSubmit on calendar open
|
|
11404
|
-
// useEffect(() => {
|
|
11405
|
-
// onSubmit(calendarRange)
|
|
11406
|
-
// }, [])
|
|
11407
11468
|
var handleSubmit = function () {
|
|
11408
11469
|
setToggleCalendar(false);
|
|
11409
11470
|
return onSubmit(calendarRange);
|
|
@@ -11421,6 +11482,7 @@
|
|
|
11421
11482
|
calendarRange: calendarRange,
|
|
11422
11483
|
disabledDates: disabledDates,
|
|
11423
11484
|
updateCalendar: updateCalendar,
|
|
11485
|
+
initialCalendarRange: initialCalendarRange,
|
|
11424
11486
|
};
|
|
11425
11487
|
};
|
|
11426
11488
|
|
|
@@ -11428,12 +11490,12 @@
|
|
|
11428
11490
|
styleInject(css_248z);
|
|
11429
11491
|
|
|
11430
11492
|
function FilterCalendar(_a) {
|
|
11431
|
-
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;
|
|
11493
|
+
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;
|
|
11432
11494
|
var themePalette = useTheme({ palette: palette });
|
|
11433
11495
|
// Translations
|
|
11434
11496
|
useUpdateTranslations({ language: language });
|
|
11435
11497
|
var t = useTranslation().t;
|
|
11436
|
-
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;
|
|
11498
|
+
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;
|
|
11437
11499
|
// Display component after fully loaded
|
|
11438
11500
|
useAwaitRender();
|
|
11439
11501
|
// Handle close filter section
|
|
@@ -11446,18 +11508,20 @@
|
|
|
11446
11508
|
React__default.createElement("h2", null, t('filterBar:calendar.title')),
|
|
11447
11509
|
React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
11448
11510
|
React__default.createElement("div", { className: "will-calendar-main" },
|
|
11449
|
-
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 })),
|
|
11511
|
+
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 })),
|
|
11450
11512
|
React__default.createElement("div", { className: "will-calendar-footer" },
|
|
11451
11513
|
React__default.createElement("div", { className: "will-calendar-footer-dates" },
|
|
11452
11514
|
React__default.createElement("div", null,
|
|
11453
11515
|
React__default.createElement("span", null, parseDate({
|
|
11454
11516
|
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from,
|
|
11455
11517
|
dateFormat: 'EEEEEE d.M.yyyy',
|
|
11518
|
+
language: language,
|
|
11456
11519
|
}) || t('common:checkIn')),
|
|
11457
11520
|
React__default.createElement("span", { className: "will-calendar-footer-dates-separator" }, "-"),
|
|
11458
11521
|
React__default.createElement("span", null, parseDate({
|
|
11459
11522
|
date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to,
|
|
11460
11523
|
dateFormat: 'EEEEEE d.M.yyyy',
|
|
11524
|
+
language: language,
|
|
11461
11525
|
}) || t('common:checkOut'))),
|
|
11462
11526
|
!!nights && (React__default.createElement("span", null, "".concat(nights, " ").concat(t("common:".concat(nights > 1 ? 'nights' : 'night')))))),
|
|
11463
11527
|
React__default.createElement("div", { className: "will-calendar-footer-actions" },
|