willba-component-library 0.2.22 → 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.
@@ -2,4 +2,4 @@ import React from 'react';
2
2
  import '../../themes/Default.css';
3
3
  import { FilterCalendarTypes } from './FilterCalendarTypes';
4
4
  import './FilterCalendar.css';
5
- export default function FilterCalendar({ calendarOffset, language, palette, onSubmit, disableCalendarDates, toggleCalendar, loadingData, setToggleCalendar, requestDates, }: FilterCalendarTypes): React.JSX.Element;
5
+ export default function FilterCalendar({ calendarOffset, language, palette, onSubmit, disableCalendarDates, toggleCalendar, loadingData, setToggleCalendar, requestDates, showFeedback, noActiveSelection, }: FilterCalendarTypes): React.JSX.Element;
@@ -3,8 +3,9 @@ import { DateRange, Matcher } from 'react-day-picker';
3
3
  type Props = {
4
4
  onSubmit: (val: any) => void;
5
5
  setToggleCalendar: (val: boolean) => void;
6
+ noActiveSelection?: boolean;
6
7
  };
7
- export declare const useFilterCalendar: ({ onSubmit, setToggleCalendar }: Props) => {
8
+ export declare const useFilterCalendar: ({ onSubmit, setToggleCalendar, noActiveSelection, }: Props) => {
8
9
  handleSubmit: () => void;
9
10
  handleClearDates: () => void;
10
11
  setCalendarRange: import("react").Dispatch<import("react").SetStateAction<DateRange | undefined>>;
@@ -13,5 +14,6 @@ export declare const useFilterCalendar: ({ onSubmit, setToggleCalendar }: Props)
13
14
  calendarRange: DateRange | undefined;
14
15
  disabledDates: Matcher[];
15
16
  updateCalendar: boolean;
17
+ initialCalendarRange: DateRange | undefined;
16
18
  };
17
19
  export {};
@@ -30,4 +30,7 @@ export type CalendarTypes = {
30
30
  updateCalendar?: boolean;
31
31
  setUpdateCalendar?: (arg: (prev: boolean) => boolean) => void;
32
32
  loadingData?: boolean;
33
+ initialCalendarRange?: DateRange | undefined;
34
+ showFeedback?: boolean;
35
+ noActiveSelection?: boolean;
33
36
  };
package/lib/index.d.ts CHANGED
@@ -59,6 +59,9 @@ type CalendarTypes = {
59
59
  updateCalendar?: boolean;
60
60
  setUpdateCalendar?: (arg: (prev: boolean) => boolean) => void;
61
61
  loadingData?: boolean;
62
+ initialCalendarRange?: DateRange | undefined;
63
+ showFeedback?: boolean;
64
+ noActiveSelection?: boolean;
62
65
  };
63
66
 
64
67
  type Palette = {
@@ -108,6 +111,6 @@ interface FilterCalendarTypes extends Partial<CalendarTypes> {
108
111
  setToggleCalendar: (val: boolean) => void;
109
112
  }
110
113
 
111
- declare function FilterCalendar({ calendarOffset, language, palette, onSubmit, disableCalendarDates, toggleCalendar, loadingData, setToggleCalendar, requestDates, }: FilterCalendarTypes): React.JSX.Element;
114
+ declare function FilterCalendar({ calendarOffset, language, palette, onSubmit, disableCalendarDates, toggleCalendar, loadingData, setToggleCalendar, requestDates, showFeedback, noActiveSelection, }: FilterCalendarTypes): React.JSX.Element;
112
115
 
113
116
  export { Button, FilterBar, FilterCalendar, FilterCalendarTypes, Tab };
package/lib/index.esm.js CHANGED
@@ -2864,7 +2864,7 @@ var enCommon = {
2864
2864
  };
2865
2865
 
2866
2866
  var calendar = {
2867
- label: "Ajankohta",
2867
+ label: "Päivät",
2868
2868
  roomsLabelPlaceholder: "Lisää check-in ja check-out",
2869
2869
  eventsLabelPlaceholder: "Lisää aikaväli",
2870
2870
  startDate: "Alku",
@@ -10786,12 +10786,12 @@ var reactResponsiveExports = reactResponsive.exports;
10786
10786
  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
10787
  styleInject(css_248z$9);
10788
10788
 
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\n";
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";
10790
10790
  styleInject(css_248z$8);
10791
10791
 
10792
10792
  var Calendar = forwardRef(function (_a, ref) {
10793
10793
  var _b;
10794
- 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;
10794
+ 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;
10795
10795
  // Translations
10796
10796
  var t = useTranslation('common').t;
10797
10797
  var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
@@ -10813,7 +10813,7 @@ var Calendar = forwardRef(function (_a, ref) {
10813
10813
  }, [disableCalendarDates, calendarRange]);
10814
10814
  // Handle tooltip
10815
10815
  useEffect(function () {
10816
- if (typeof document === 'undefined')
10816
+ if (typeof document === 'undefined' || !showFeedback)
10817
10817
  return;
10818
10818
  var calendarTooltip = document.querySelector('.will-calendar-tooltip');
10819
10819
  var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
@@ -10859,6 +10859,25 @@ var Calendar = forwardRef(function (_a, ref) {
10859
10859
  loadingSpinner.style.display = 'none';
10860
10860
  }
10861
10861
  }, [loadingData]);
10862
+ // Handle overlapping availableDates.lastCheckOut and disabledDates.start
10863
+ useEffect(function () {
10864
+ var _a, _b;
10865
+ if (disableCalendarDates) {
10866
+ var dateFormat_1 = 'dd-MM-yyyy';
10867
+ var availableDateMap_1 = new Map();
10868
+ (_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.forEach(function (available) {
10869
+ availableDateMap_1.set(format(available.lastCheckOut, dateFormat_1), available);
10870
+ });
10871
+ var updatedDisabledDates = (_b = disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.map(function (dateRange) {
10872
+ var formattedFromDate = format(dateRange.from, dateFormat_1);
10873
+ if (availableDateMap_1.has(formattedFromDate)) {
10874
+ return __assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) });
10875
+ }
10876
+ return dateRange;
10877
+ });
10878
+ disableCalendarDates.disabledDates = updatedDisabledDates;
10879
+ }
10880
+ }, [disableCalendarDates]);
10862
10881
  // Handle disable dates by page
10863
10882
  var disabledDatesByPage = handleDisabledDatesByPage({
10864
10883
  today: today,
@@ -10879,6 +10898,7 @@ var Calendar = forwardRef(function (_a, ref) {
10879
10898
  today: 'my-today',
10880
10899
  booked: 'booked',
10881
10900
  disabledAfterCheckIn: 'disabled-after-check-in',
10901
+ noActiveSelection: 'no-active-selection',
10882
10902
  }, captionLayout: "dropdown-buttons", defaultMonth: selectedStartDate ||
10883
10903
  (((_b = disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
10884
10904
  ? disableCalendarDates.disabledDates[0].from
@@ -10899,6 +10919,9 @@ var Calendar = forwardRef(function (_a, ref) {
10899
10919
  disabledAfterCheckIn: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
10900
10920
  ? [{ after: calendarRange.from }]
10901
10921
  : [],
10922
+ noActiveSelection: !calendarRange
10923
+ ? initialCalendarRange || []
10924
+ : [],
10902
10925
  } }),
10903
10926
  React__default__default.createElement("div", { className: 'will-calendar-tooltip' },
10904
10927
  React__default__default.createElement("div", null, t('noCheckIn'))),
@@ -10926,14 +10949,23 @@ var handleSelectedCheckIn = function (_a) {
10926
10949
  format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
10927
10950
  })
10928
10951
  : null;
10929
- if (rangeFrom &&
10930
- // rangeFrom !== calendarTo &&
10931
- checkOutRange &&
10932
- setDisabledDates) {
10952
+ if (rangeFrom && checkOutRange && setDisabledDates) {
10933
10953
  var checkIn = addDays(checkOutRange.checkIn, 1);
10934
10954
  var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
10935
10955
  var noDatesRange = format(checkIn, dateFormat) ===
10936
10956
  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
+ // })
10937
10969
  setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) || [])), false), [
10938
10970
  {
10939
10971
  from: noDatesRange ? undefined : checkIn,
@@ -10976,6 +11008,31 @@ var handleDisabledDatesByPage = function (_a) {
10976
11008
  ]
10977
11009
  : [];
10978
11010
  };
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
+ // }
10979
11036
 
10980
11037
  var parseDates = function (_a) {
10981
11038
  var calendarRange = _a.calendarRange;
@@ -11363,10 +11420,11 @@ var AGE_CATEGORIES_FALLBACK = [
11363
11420
  var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
11364
11421
 
11365
11422
  var useFilterCalendar = function (_a) {
11366
- var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar;
11423
+ var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar, noActiveSelection = _a.noActiveSelection;
11367
11424
  var _b = __read(useState(), 2), calendarRange = _b[0], setCalendarRange = _b[1];
11368
- var _c = __read(useState([]), 2), disabledDates = _c[0], setDisabledDates = _c[1];
11369
- var _d = __read(useState(false), 2), updateCalendar = _d[0], setUpdateCalendar = _d[1];
11425
+ var _c = __read(useState(), 2), initialCalendarRange = _c[0], setInitialCalendarRange = _c[1];
11426
+ var _d = __read(useState([]), 2), disabledDates = _d[0], setDisabledDates = _d[1];
11427
+ var _e = __read(useState(false), 2), updateCalendar = _e[0], setUpdateCalendar = _e[1];
11370
11428
  useEffect(function () {
11371
11429
  if (typeof window === 'undefined')
11372
11430
  return;
@@ -11374,10 +11432,15 @@ var useFilterCalendar = function (_a) {
11374
11432
  var startDateParam = urlSearchParams.get('startDate');
11375
11433
  var endDateParam = urlSearchParams.get('endDate');
11376
11434
  if (startDateParam && endDateParam) {
11377
- setCalendarRange({
11378
- from: new Date(startDateParam),
11379
- to: new Date(endDateParam),
11380
- });
11435
+ noActiveSelection
11436
+ ? setInitialCalendarRange({
11437
+ from: new Date(startDateParam),
11438
+ to: new Date(endDateParam),
11439
+ })
11440
+ : setCalendarRange({
11441
+ from: new Date(startDateParam),
11442
+ to: new Date(endDateParam),
11443
+ });
11381
11444
  }
11382
11445
  }, []);
11383
11446
  var handleSubmit = function () {
@@ -11397,6 +11460,7 @@ var useFilterCalendar = function (_a) {
11397
11460
  calendarRange: calendarRange,
11398
11461
  disabledDates: disabledDates,
11399
11462
  updateCalendar: updateCalendar,
11463
+ initialCalendarRange: initialCalendarRange,
11400
11464
  };
11401
11465
  };
11402
11466
 
@@ -11404,12 +11468,12 @@ var css_248z = ".will-root .will-calendar-wrapper {\n box-shadow: var(--will-
11404
11468
  styleInject(css_248z);
11405
11469
 
11406
11470
  function FilterCalendar(_a) {
11407
- 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;
11471
+ 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;
11408
11472
  var themePalette = useTheme({ palette: palette });
11409
11473
  // Translations
11410
11474
  useUpdateTranslations({ language: language });
11411
11475
  var t = useTranslation().t;
11412
- 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;
11476
+ 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;
11413
11477
  // Display component after fully loaded
11414
11478
  useAwaitRender();
11415
11479
  // Handle close filter section
@@ -11422,7 +11486,7 @@ function FilterCalendar(_a) {
11422
11486
  React__default__default.createElement("h2", null, t('filterBar:calendar.title')),
11423
11487
  React__default__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
11424
11488
  React__default__default.createElement("div", { className: "will-calendar-main" },
11425
- React__default__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 })),
11489
+ React__default__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 })),
11426
11490
  React__default__default.createElement("div", { className: "will-calendar-footer" },
11427
11491
  React__default__default.createElement("div", { className: "will-calendar-footer-dates" },
11428
11492
  React__default__default.createElement("div", null,