willba-component-library 0.2.23 → 0.2.25

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 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: lightgrey;\n}\n\n\n";
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 .rdp-day_selected.rdp-day_range_start.no-active-selection,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_middle.no-active-selection,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_end.no-active-selection {\n background-color: var(--will-grey);\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
- useEffect(function () {
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) {
@@ -10893,12 +10900,8 @@ var Calendar = forwardRef(function (_a, ref) {
10893
10900
  setCalendarRange: setCalendarRange,
10894
10901
  setDisabledDates: setDisabledDates,
10895
10902
  calendarRange: calendarRange,
10903
+ overlappingDate: overlappingDate,
10896
10904
  });
10897
- }, modifiersClassNames: {
10898
- today: 'my-today',
10899
- booked: 'booked',
10900
- disabledAfterCheckIn: 'disabled-after-check-in',
10901
- noActiveSelection: 'no-active-selection',
10902
10905
  }, captionLayout: "dropdown-buttons", defaultMonth: selectedStartDate ||
10903
10906
  (((_b = disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
10904
10907
  ? disableCalendarDates.disabledDates[0].from
@@ -10910,6 +10913,14 @@ var Calendar = forwardRef(function (_a, ref) {
10910
10913
  requestDates && setUpdateCalendar
10911
10914
  ? (requestDates(val), setUpdateCalendar(function (prev) { return !prev; }))
10912
10915
  : null;
10916
+ }, modifiersClassNames: {
10917
+ today: 'my-today',
10918
+ booked: 'booked',
10919
+ disabledAfterCheckIn: 'disabled-after-check-in',
10920
+ overlappingDate: 'overlapping-date',
10921
+ noActiveSelectionStart: 'rdp-day_selected rdp-day_range_start no-active-selection ',
10922
+ noActiveSelectionMid: 'rdp-day_selected rdp-day_range_middle no-active-selection',
10923
+ noActiveSelectionEnd: 'rdp-day_selected rdp-day_range_end no-active-selection',
10913
10924
  }, modifiers: {
10914
10925
  booked: disabledDatesByPage.length
10915
10926
  ? disabledDatesByPage
@@ -10919,20 +10930,36 @@ var Calendar = forwardRef(function (_a, ref) {
10919
10930
  disabledAfterCheckIn: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
10920
10931
  ? [{ after: calendarRange.from }]
10921
10932
  : [],
10922
- noActiveSelection: !calendarRange
10923
- ? initialCalendarRange || []
10933
+ noActiveSelectionStart: !calendarRange
10934
+ ? (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) || []
10935
+ : [],
10936
+ noActiveSelectionMid: !calendarRange &&
10937
+ (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) &&
10938
+ (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to)
10939
+ ? [
10940
+ {
10941
+ after: initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from,
10942
+ before: initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to,
10943
+ },
10944
+ ]
10924
10945
  : [],
10946
+ noActiveSelectionEnd: !calendarRange
10947
+ ? (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to) || []
10948
+ : [],
10949
+ overlappingDate: (!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.from)) || [],
10925
10950
  } }),
10926
10951
  React__default__default.createElement("div", { className: 'will-calendar-tooltip' },
10927
10952
  React__default__default.createElement("div", null, t('noCheckIn'))),
10928
10953
  React__default__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
10929
10954
  React__default__default.createElement("div", null, t('noCheckOut'))),
10955
+ React__default__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
10956
+ React__default__default.createElement("div", null, t('checkOutOnly'))),
10930
10957
  React__default__default.createElement("div", { className: 'will-calendar-spinner' }, "Loading..."))));
10931
10958
  });
10932
10959
  /////////
10933
10960
  var handleSelectedCheckIn = function (_a) {
10934
10961
  var _b;
10935
- var range = _a.range, disableCalendarDates = _a.disableCalendarDates, setCalendarRange = _a.setCalendarRange, setDisabledDates = _a.setDisabledDates, calendarRange = _a.calendarRange;
10962
+ var range = _a.range, disableCalendarDates = _a.disableCalendarDates, setCalendarRange = _a.setCalendarRange, setDisabledDates = _a.setDisabledDates, calendarRange = _a.calendarRange, overlappingDate = _a.overlappingDate;
10936
10963
  // Calendar dates select logic
10937
10964
  var dateFormat = 'dd-MM-yyyy';
10938
10965
  var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? format(range.from, dateFormat) : null;
@@ -10943,6 +10970,9 @@ var handleSelectedCheckIn = function (_a) {
10943
10970
  (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to)
10944
10971
  ? format(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to, dateFormat)
10945
10972
  : null;
10973
+ var overlappingDateFrom = (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.from)
10974
+ ? format(overlappingDate.from, dateFormat)
10975
+ : null;
10946
10976
  var checkOutRange = ((_b = disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.length)
10947
10977
  ? disableCalendarDates.availableDates.find(function (checkInDate) {
10948
10978
  return format(checkInDate.checkIn || 1, dateFormat) ===
@@ -10954,18 +10984,6 @@ var handleSelectedCheckIn = function (_a) {
10954
10984
  var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
10955
10985
  var noDatesRange = format(checkIn, dateFormat) ===
10956
10986
  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
10987
  setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) || [])), false), [
10970
10988
  {
10971
10989
  from: noDatesRange ? undefined : checkIn,
@@ -10975,7 +10993,8 @@ var handleSelectedCheckIn = function (_a) {
10975
10993
  ], false));
10976
10994
  }
10977
10995
  if ((rangeTo && rangeFrom && rangeFrom === rangeTo) ||
10978
- (!rangeTo && !rangeFrom)) {
10996
+ (!rangeTo && !rangeFrom) ||
10997
+ rangeFrom === overlappingDateFrom) {
10979
10998
  setCalendarRange(undefined);
10980
10999
  setDisabledDates && setDisabledDates([]);
10981
11000
  }
@@ -11008,31 +11027,6 @@ var handleDisabledDatesByPage = function (_a) {
11008
11027
  ]
11009
11028
  : [];
11010
11029
  };
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
11030
 
11037
11031
  var parseDates = function (_a) {
11038
11032
  var calendarRange = _a.calendarRange;