willba-component-library 0.2.93 → 0.2.95

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.
Files changed (27) hide show
  1. package/README.md +49 -16
  2. package/lib/assets/IconsSvg.d.ts +1 -1
  3. package/lib/components/FilterBar/FilterBarTypes.d.ts +1 -1
  4. package/lib/components/FilterBar/components/guests/Guests.d.ts +1 -1
  5. package/lib/components/FilterCalendar/hooks/useFilterCalendar.d.ts +0 -1
  6. package/lib/core/components/calendar/utils/calendarSelectionRules.d.ts +2 -3
  7. package/lib/core/components/calendar/utils/handleCalendarModifiers.d.ts +1 -9
  8. package/lib/core/components/calendar/utils/handleRangeContextDisabledDates.d.ts +1 -1
  9. package/lib/index.esm.js +77 -95
  10. package/lib/index.esm.js.map +1 -1
  11. package/lib/index.js +77 -95
  12. package/lib/index.js.map +1 -1
  13. package/lib/index.umd.js +77 -95
  14. package/lib/index.umd.js.map +1 -1
  15. package/package.json +1 -1
  16. package/src/assets/IconsSvg.tsx +1 -0
  17. package/src/components/FilterBar/FilterBarTypes.ts +1 -1
  18. package/src/components/FilterBar/components/guests/GuestCount/GuestCount.tsx +5 -5
  19. package/src/components/FilterBar/components/guests/Guests.tsx +3 -7
  20. package/src/components/FilterCalendar/FilterCalendar.stories.tsx +275 -275
  21. package/src/components/FilterCalendar/FilterCalendar.tsx +0 -2
  22. package/src/components/FilterCalendar/hooks/useFilterCalendar.ts +0 -1
  23. package/src/core/components/calendar/Calendar.tsx +46 -35
  24. package/src/core/components/calendar/hooks/useUpdateDisabledDates.tsx +3 -3
  25. package/src/core/components/calendar/utils/calendarSelectionRules.tsx +0 -48
  26. package/src/core/components/calendar/utils/handleCalendarModifiers.tsx +1 -30
  27. package/src/core/components/calendar/utils/handleRangeContextDisabledDates.tsx +3 -3
package/lib/index.js CHANGED
@@ -11000,26 +11000,6 @@ var reactResponsive = {exports: {}};
11000
11000
 
11001
11001
  var reactResponsiveExports = reactResponsive.exports;
11002
11002
 
11003
- var IconsSvg = function (_a) {
11004
- var fill = _a.fill, size = _a.size, icon = _a.icon;
11005
- switch (icon) {
11006
- case 'spinner':
11007
- return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), viewBox: "0 0 24 24" },
11008
- React__default.createElement("style", null, "\n .spinner_z9k8 {\n transform-origin: center;\n animation: spinner_StKS .75s infinite linear;\n }\n @keyframes spinner_StKS {\n 100% {\n transform: rotate(360deg);\n }\n }\n "),
11009
- React__default.createElement("path", { d: "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z", opacity: ".25", fill: fill }),
11010
- React__default.createElement("path", { d: "M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z", className: "spinner_z9k8", fill: fill })));
11011
- case 'warning':
11012
- return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), className: "svg-icon", style: {
11013
- verticalAlign: 'middle',
11014
- fill: fill,
11015
- overflow: 'hidden',
11016
- minWidth: '25px',
11017
- minHeight: '25px',
11018
- }, viewBox: "0 0 1024 1024", version: "1.1" },
11019
- React__default.createElement("path", { d: "M42.666667 896h938.666666L512 85.333333 42.666667 896z m512-128h-85.333334v-85.333333h85.333334v85.333333z m0-170.666667h-85.333334v-170.666666h85.333334v170.666666z" })));
11020
- }
11021
- };
11022
-
11023
11003
  var parseDates = function (_a) {
11024
11004
  var calendarRange = _a.calendarRange;
11025
11005
  return (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
@@ -11045,7 +11025,7 @@ var nightsCount = function (_a) {
11045
11025
 
11046
11026
  var calendarSelectionRules = function (_a) {
11047
11027
  var _b;
11048
- var range = _a.range, newDisableCalendarDates = _a.newDisableCalendarDates, setCalendarRange = _a.setCalendarRange, setDisabledDates = _a.setDisabledDates, calendarRange = _a.calendarRange, overlappingDate = _a.overlappingDate, setCalendarHasError = _a.setCalendarHasError, rangeContext = _a.rangeContext;
11028
+ var range = _a.range, newDisableCalendarDates = _a.newDisableCalendarDates, setCalendarRange = _a.setCalendarRange, calendarRange = _a.calendarRange, overlappingDate = _a.overlappingDate, setCalendarHasError = _a.setCalendarHasError, rangeContext = _a.rangeContext;
11049
11029
  // Get and parse needed data
11050
11030
  var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? endOfDay(range.from) : null;
11051
11031
  var rangeTo = (range === null || range === void 0 ? void 0 : range.to) ? endOfDay(range.to) : null;
@@ -11082,13 +11062,6 @@ var calendarSelectionRules = function (_a) {
11082
11062
  : false;
11083
11063
  })
11084
11064
  : null;
11085
- // On check-in, disable future dates that are unavailable for checkout
11086
- disableFutureDates({
11087
- rangeFrom: rangeFrom,
11088
- checkOutRange: checkOutRange,
11089
- setDisabledDates: setDisabledDates,
11090
- newDisableCalendarDates: newDisableCalendarDates,
11091
- });
11092
11065
  // Calendar selection rules: The cases are handled sequentially, starting from simple selections to more complex contextual selections.
11093
11066
  // The rules are processed in a specific order, so one case is handled before another.
11094
11067
  // Changing the order will cause the rules to break or not work properly.
@@ -11183,22 +11156,6 @@ var calendarSelectionRules = function (_a) {
11183
11156
  }
11184
11157
  setCalendarRange(range);
11185
11158
  };
11186
- /////////
11187
- var disableFutureDates = function (_a) {
11188
- var rangeFrom = _a.rangeFrom, checkOutRange = _a.checkOutRange, setDisabledDates = _a.setDisabledDates, newDisableCalendarDates = _a.newDisableCalendarDates;
11189
- if (rangeFrom && checkOutRange && setDisabledDates) {
11190
- // Get parse data
11191
- var checkIn = addDays(checkOutRange.checkIn, 1);
11192
- var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
11193
- var noDatesRange = isEqual(checkIn, checkOutRange.firstCheckOut);
11194
- setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [])), false), [
11195
- {
11196
- from: noDatesRange ? undefined : checkIn,
11197
- to: noDatesRange ? undefined : firstCheckOut,
11198
- },
11199
- ], false));
11200
- }
11201
- };
11202
11159
 
11203
11160
  var disabledDatesByPage = function (_a) {
11204
11161
  var _b, _c, _d;
@@ -11219,8 +11176,7 @@ var disabledDatesByPage = function (_a) {
11219
11176
  };
11220
11177
 
11221
11178
  var handleCalendarModifiers = function (_a) {
11222
- var _b;
11223
- var newDisableCalendarDates = _a.newDisableCalendarDates, calendarRange = _a.calendarRange, disabledDatesByPage = _a.disabledDatesByPage, disabledDates = _a.disabledDates, overlappingDate = _a.overlappingDate, rangeContext = _a.rangeContext, firstPossibleRangeContextCheckIn = _a.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _a.lastPossibleRangeContextCheckOut, findFirstPossibleRangeContextCheckIn = _a.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _a.findLastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _a.currentSelectionLastCheckoutDate, lastPossibleCheckout = _a.lastPossibleCheckout;
11179
+ var calendarRange = _a.calendarRange, disabledDates = _a.disabledDates, overlappingDate = _a.overlappingDate, rangeContext = _a.rangeContext, findFirstPossibleRangeContextCheckIn = _a.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _a.findLastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _a.currentSelectionLastCheckoutDate;
11224
11180
  // Parse data
11225
11181
  var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
11226
11182
  var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && endOfDay(calendarRange.to);
@@ -11241,15 +11197,7 @@ var handleCalendarModifiers = function (_a) {
11241
11197
  .map(function (date) { return ({ from: date.from }); })
11242
11198
  : [];
11243
11199
  return {
11244
- booked: disabledDatesByPage.length
11245
- ? disabledDatesByPage
11246
- : (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
11247
- ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11248
- lastPossibleCheckout || []
11249
- ], __read(disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : ((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
11250
- ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11251
- lastPossibleCheckout || []
11252
- ], __read(newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [],
11200
+ booked: disabledDates || [],
11253
11201
  disabledAfterCheckIn: calendarRangeFrom
11254
11202
  ? [{ after: calendarRangeFrom }]
11255
11203
  : [],
@@ -11327,8 +11275,8 @@ var handleRangeContextDisabledDates = function (_a) {
11327
11275
  });
11328
11276
  }
11329
11277
  }
11330
- // Get last possible check-out dates for current check-in
11331
- var currentSelectionLastCheckoutDate = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
11278
+ // Get possible check-out dates for current check-in
11279
+ var currentSelectionAvailability = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
11332
11280
  return calendarRangeFrom
11333
11281
  ? isEqual(endOfDay(date.checkIn), calendarRangeFrom)
11334
11282
  : false;
@@ -11338,7 +11286,7 @@ var handleRangeContextDisabledDates = function (_a) {
11338
11286
  findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
11339
11287
  firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
11340
11288
  lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
11341
- currentSelectionLastCheckoutDate: currentSelectionLastCheckoutDate,
11289
+ currentSelectionAvailability: currentSelectionAvailability,
11342
11290
  };
11343
11291
  };
11344
11292
 
@@ -11513,9 +11461,9 @@ var useUpdateDisabledDates = function (_a) {
11513
11461
  return acc;
11514
11462
  }, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _b.updatedDisabledDates, newOverlappingDates = _b.newOverlappingDates;
11515
11463
  // Find last possible checkout ( disable all dates after the last possible checkout )
11516
- var lastPossibleCheckout_1 = (_a = disableCalendarDates.availableDates.at(-1)) === null || _a === void 0 ? void 0 : _a.lastCheckOut;
11517
- if (lastPossibleCheckout_1) {
11518
- setLatsPossibleCheckout({ after: lastPossibleCheckout_1 });
11464
+ var lastPossibleCheckoutDate = (_a = disableCalendarDates.availableDates.at(-1)) === null || _a === void 0 ? void 0 : _a.lastCheckOut;
11465
+ if (lastPossibleCheckoutDate) {
11466
+ setLatsPossibleCheckout({ after: lastPossibleCheckoutDate });
11519
11467
  }
11520
11468
  // Extract overlapping dates ( dates that are only available for checkout )
11521
11469
  if (newOverlappingDates.length) {
@@ -11540,9 +11488,31 @@ styleInject(css_248z$9);
11540
11488
  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.will-calendar-filter-container .DayPicker {\n font-size: 25px;\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-table {\n border-collapse: separate;\n border-spacing: 0px 2px;\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 color: var(--will-white)\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 color: var(--will-transparent-black);\n opacity: 1\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/* Tooltips */\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.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out-only,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-in-only {\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\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.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out-only > div,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-in-only > 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.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out-only::before,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-in-only::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.will-root .will-calendar-filter-container .rdp-cell:hover .will-calendar-tooltip-check-out-only,\n.will-root .will-calendar-filter-container .rdp-cell:hover .will-calendar-tooltip-check-in-only {\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-start,\n.will-root .will-calendar-filter-container .no-active-selection-mid,\n.will-root .will-calendar-filter-container .no-active-selection-end { \n position: initial;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-start::before,\n.will-root .will-calendar-filter-container .no-active-selection-mid::before,\n.will-root .will-calendar-filter-container .no-active-selection-end::before { \n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: 2px solid var(--will-light-grey);\n box-sizing: border-box;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-start::before {\n border-right: none;\n border-top-left-radius: 50%;\n border-bottom-left-radius: 50%;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-mid::before {\n border-right: none;\n border-left: none;\n}\n\n.will-root .will-calendar-filter-container .no-active-selection-end::before {\n border-left: none;\n border-top-right-radius: 50%;\n border-bottom-right-radius: 50%;\n}\n\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_middle.checkout-option {\n background-color: var(--will-primary-lightest);\n color: inherit;\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.will-root .will-calendar-filter-container .overlapping-date:hover {\n cursor: not-allowed;\n}\n\n@media (max-width: 600px) {\n /* Tooltips */\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.will-root .will-calendar-filter-container .will-calendar-tooltip-check-out-only,\n.will-root .will-calendar-filter-container .will-calendar-tooltip-check-in-only {\n top: -70px;\n white-space: wrap;\n max-width: 120px;\n}\n}\n\n\n";
11541
11489
  styleInject(css_248z$8);
11542
11490
 
11491
+ var IconsSvg = function (_a) {
11492
+ var fill = _a.fill, size = _a.size, icon = _a.icon;
11493
+ switch (icon) {
11494
+ case 'spinner':
11495
+ return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), viewBox: "0 0 24 24" },
11496
+ React__default.createElement("style", null, "\n .spinner_z9k8 {\n transform-origin: center;\n animation: spinner_StKS .75s infinite linear;\n }\n @keyframes spinner_StKS {\n 100% {\n transform: rotate(360deg);\n }\n }\n "),
11497
+ React__default.createElement("path", { d: "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z", opacity: ".25", fill: fill }),
11498
+ React__default.createElement("path", { d: "M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z", className: "spinner_z9k8", fill: fill })));
11499
+ case 'warning':
11500
+ return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), className: "svg-icon", style: {
11501
+ verticalAlign: 'middle',
11502
+ fill: fill,
11503
+ overflow: 'hidden',
11504
+ minWidth: '25px',
11505
+ minHeight: '25px',
11506
+ }, viewBox: "0 0 1024 1024", version: "1.1" },
11507
+ React__default.createElement("path", { d: "M42.666667 896h938.666666L512 85.333333 42.666667 896z m512-128h-85.333334v-85.333333h85.333334v85.333333z m0-170.666667h-85.333334v-170.666666h85.333334v170.666666z" })));
11508
+ default:
11509
+ return null;
11510
+ }
11511
+ };
11512
+
11543
11513
  var Calendar = React__default.forwardRef(function (_a, ref) {
11544
- var _b, _c;
11545
- 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, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation = _a.setUpdateCalendarMonthNavigation, updateCalendarDefaultMonth = _a.updateCalendarDefaultMonth, loadingData = _a.loadingData, showFeedback = _a.showFeedback, palette = _a.palette, setCalendarHasError = _a.setCalendarHasError, setUpdatedForSubmit = _a.setUpdatedForSubmit, rangeContext = _a.rangeContext, calendarHasError = _a.calendarHasError;
11514
+ var _b;
11515
+ var selectedPath = _a.selectedPath, calendarRange = _a.calendarRange, setCalendarRange = _a.setCalendarRange, language = _a.language, disableCalendarDates = _a.disableCalendarDates, requestDates = _a.requestDates, disabledDates = _a.disabledDates, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation = _a.setUpdateCalendarMonthNavigation, updateCalendarDefaultMonth = _a.updateCalendarDefaultMonth, loadingData = _a.loadingData, showFeedback = _a.showFeedback, palette = _a.palette, setCalendarHasError = _a.setCalendarHasError, setUpdatedForSubmit = _a.setUpdatedForSubmit, rangeContext = _a.rangeContext, calendarHasError = _a.calendarHasError;
11546
11516
  // Translations
11547
11517
  var t = useTranslation('common').t;
11548
11518
  var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
@@ -11550,12 +11520,12 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11550
11520
  var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
11551
11521
  var rangeContextStartDate = rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from;
11552
11522
  // Handle initial disable dates including overlapping availableDates.lastCheckOut and disabledDates.start
11553
- var _d = useUpdateDisabledDates({
11523
+ var _c = useUpdateDisabledDates({
11554
11524
  disableCalendarDates: disableCalendarDates,
11555
11525
  calendarRange: calendarRange,
11556
11526
  updateCalendarMonthNavigation: updateCalendarMonthNavigation,
11557
11527
  updateCalendarDefaultMonth: updateCalendarDefaultMonth,
11558
- }), newDisableCalendarDates = _d.newDisableCalendarDates, overlappingDate = _d.overlappingDate, lastPossibleCheckout = _d.lastPossibleCheckout;
11528
+ }), newDisableCalendarDates = _c.newDisableCalendarDates, overlappingDate = _c.overlappingDate, lastPossibleCheckout = _c.lastPossibleCheckout;
11559
11529
  // Handle disable dates by page
11560
11530
  var disabledDatesByPage$1 = disabledDatesByPage({
11561
11531
  today: today,
@@ -11577,7 +11547,6 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11577
11547
  range: range,
11578
11548
  newDisableCalendarDates: newDisableCalendarDates,
11579
11549
  setCalendarRange: setCalendarRange,
11580
- setDisabledDates: setDisabledDates,
11581
11550
  calendarRange: calendarRange,
11582
11551
  overlappingDate: overlappingDate,
11583
11552
  setCalendarHasError: setCalendarHasError,
@@ -11586,11 +11555,11 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11586
11555
  setUpdatedForSubmit && setUpdatedForSubmit(true);
11587
11556
  };
11588
11557
  // Handle disabled dates for range context
11589
- var _e = handleRangeContextDisabledDates({
11558
+ var _d = handleRangeContextDisabledDates({
11590
11559
  rangeContext: rangeContext,
11591
11560
  availableDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates,
11592
11561
  calendarRange: calendarRange,
11593
- }), findFirstPossibleRangeContextCheckIn = _e.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _e.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _e.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _e.lastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _e.currentSelectionLastCheckoutDate;
11562
+ }), findFirstPossibleRangeContextCheckIn = _d.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _d.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _d.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _d.lastPossibleRangeContextCheckOut, currentSelectionAvailability = _d.currentSelectionAvailability;
11594
11563
  // Handle check for continuous selection in the range context
11595
11564
  checkForContinuousSelection({
11596
11565
  setCalendarHasError: setCalendarHasError,
@@ -11599,6 +11568,35 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11599
11568
  calendarHasError: calendarHasError,
11600
11569
  disabledDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates,
11601
11570
  });
11571
+ var disabledInsideSelectableRange = function () {
11572
+ if (
11573
+ // Range end already selected
11574
+ (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ||
11575
+ // No current check-in availability
11576
+ !currentSelectionAvailability ||
11577
+ // No gap between check-in and first possible check-out, nothing to disable
11578
+ addDays(currentSelectionAvailability.checkIn, 1) >=
11579
+ currentSelectionAvailability.firstCheckOut) {
11580
+ return [];
11581
+ }
11582
+ // Disable dates between current check-in and first possible check-out
11583
+ return [
11584
+ {
11585
+ from: addDays(currentSelectionAvailability.checkIn, 1),
11586
+ to: addDays(currentSelectionAvailability.firstCheckOut, -1),
11587
+ },
11588
+ ];
11589
+ };
11590
+ var base = disabledDatesByPage$1.length
11591
+ ? disabledDatesByPage$1
11592
+ : (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
11593
+ ? disabledDates
11594
+ : (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [];
11595
+ var disabled = disabledDatesByPage$1.length
11596
+ ? base
11597
+ : __spreadArray$1(__spreadArray$1(__spreadArray$1(__spreadArray$1([
11598
+ lastPossibleCheckout
11599
+ ], __read(base), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false), __read(disabledInsideSelectableRange()), false);
11602
11600
  return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
11603
11601
  React__default.createElement("div", { className: "will-calendar-filter-container" },
11604
11602
  React__default.createElement(DayPicker, { key: updateCalendarDefaultMonth, id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) { return handleOnSelect(range); }, captionLayout: "dropdown-buttons", defaultMonth: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ||
@@ -11606,19 +11604,9 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11606
11604
  rangeContextStartDate ||
11607
11605
  (((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
11608
11606
  ? newDisableCalendarDates.disabledDates[0].from
11609
- : today), disabled: disabledDatesByPage$1.length
11610
- ? disabledDatesByPage$1
11611
- : (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
11612
- ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11613
- lastPossibleCheckout && lastPossibleCheckout
11614
- ], __read(disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : ((_c = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _c === void 0 ? void 0 : _c.length)
11615
- ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11616
- lastPossibleCheckout && lastPossibleCheckout
11617
- ], __read(newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [], fromMonth: today, onMonthChange: function (val) {
11618
- requestDates && setUpdateCalendarMonthNavigation
11619
- ? (requestDates(val),
11620
- setUpdateCalendarMonthNavigation(function (prev) { return !prev; }))
11621
- : null;
11607
+ : today), disabled: disabled, fromMonth: today, onMonthChange: function (val) {
11608
+ requestDates === null || requestDates === void 0 ? void 0 : requestDates(val);
11609
+ setUpdateCalendarMonthNavigation === null || setUpdateCalendarMonthNavigation === void 0 ? void 0 : setUpdateCalendarMonthNavigation(function (prev) { return !prev; });
11622
11610
  }, classNames: {
11623
11611
  day_range_start: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ? 'rdp-day_range_start' : '',
11624
11612
  day_range_end: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? 'rdp-day_range_end' : '',
@@ -11636,18 +11624,13 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11636
11624
  }, modifiers:
11637
11625
  // This function handles conditions for applying the modifiersClassNames
11638
11626
  handleCalendarModifiers({
11639
- newDisableCalendarDates: newDisableCalendarDates,
11640
11627
  calendarRange: calendarRange,
11641
- disabledDatesByPage: disabledDatesByPage$1,
11642
- disabledDates: disabledDates,
11628
+ disabledDates: disabled,
11643
11629
  overlappingDate: overlappingDate,
11644
11630
  rangeContext: rangeContext,
11645
- lastPossibleCheckout: lastPossibleCheckout,
11646
11631
  findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
11647
11632
  findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
11648
- firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
11649
- lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
11650
- currentSelectionLastCheckoutDate: currentSelectionLastCheckoutDate,
11633
+ currentSelectionLastCheckoutDate: currentSelectionAvailability,
11651
11634
  }) }),
11652
11635
  React__default.createElement("div", { className: 'will-calendar-tooltip' },
11653
11636
  React__default.createElement("div", null, t('noCheckIn'))),
@@ -11899,17 +11882,17 @@ function GuestCount(_a) {
11899
11882
  return (React__default.createElement("div", { className: "will-guests-filter-inner", style: { order: "".concat(sortOrder) } },
11900
11883
  React__default.createElement("p", { className: "will-guests-filter-label" }, label),
11901
11884
  React__default.createElement("div", { className: "will-guests-filter-counter" },
11902
- React__default.createElement("button", { className: "will-guests-filter-counter-button", onClick: handleDecrement, disabled: (minVal && count <= minVal) || !count ? true : false, style: {
11885
+ React__default.createElement("button", { className: "will-guests-filter-counter-button", onClick: handleDecrement, disabled: (minVal && count <= minVal) || !count, style: {
11903
11886
  cursor: (minVal && count <= minVal) || !count ? 'initial' : 'pointer',
11904
11887
  paddingBottom: '4px',
11905
11888
  opacity: (minVal && count <= minVal) || !count ? 0.4 : 1,
11906
11889
  } },
11907
11890
  React__default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
11908
- React__default.createElement("path", { d: "M4 10H16", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))),
11891
+ React__default.createElement("path", { d: "M4 10H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }))),
11909
11892
  React__default.createElement("span", { className: "will-guests-filter-count" }, count),
11910
11893
  React__default.createElement("button", { className: "will-guests-filter-counter-button", onClick: handleIncrement },
11911
11894
  React__default.createElement("svg", { width: "15", height: "15", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
11912
- React__default.createElement("path", { d: "M10 4V16M4 10H16", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))))));
11895
+ React__default.createElement("path", { d: "M10 4V16M4 10H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }))))));
11913
11896
  }
11914
11897
 
11915
11898
  var css_248z$4 = ".will-filter-bar-guests {\n text-align: initial;\n}\n\n.will-guests-filter-title {\n font-size: 22px;\n margin: 10px 0;\n}\n\n.will-guests-filter-subtitle {\n font-size: 15px;\n font-weight: 500;\n color:var(--will-text)\n}\n\n\n.will-guests-filter-container {\n display: flex;\n flex-direction: column;\n min-width: 400px;\n}\n\n\n@media (max-width: 960px) {\n .will-guests-filter-title {\n font-size: 18px;\n }\n\n .will-guests-filter-container {\n margin-top: 15px;\n min-width: 100%;\n }\n}";
@@ -11920,7 +11903,7 @@ var Guests = React__default.forwardRef(function (_a, ref) {
11920
11903
  var t = useTranslation('filterBar').t;
11921
11904
  return (React__default.createElement("div", { className: "will-filter-bar-guests", ref: ref },
11922
11905
  React__default.createElement("h3", { className: "will-guests-filter-title" }, t('guests.title')),
11923
- React__default.createElement("div", { className: "will-guests-filter-container" }, ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.map(function (category) { return (React__default.createElement(GuestCount, { key: category.id, id: parseInt(category.id), label: category.name, minVal: category.minVal, sortOrder: category.sortOrder, updateGuestsCount: updateGuestsCount, count: ageCategoryCounts["guests-".concat(category.id)] || 0 })); }))));
11906
+ React__default.createElement("div", { className: "will-guests-filter-container" }, ageCategories === null || ageCategories === void 0 ? void 0 : ageCategories.map(function (category) { return (React__default.createElement(GuestCount, { key: category.id, id: category.id, label: category.name, minVal: category.minVal, sortOrder: category.sortOrder, updateGuestsCount: updateGuestsCount, count: ageCategoryCounts["guests-".concat(category.id)] || 0 })); }))));
11924
11907
  });
11925
11908
 
11926
11909
  var css_248z$3 = ".will-filter-bar-divider {\n width: 1px;\n margin: 0 10px;\n background-color: var(--will-charcoal-blue);\n}\n\n@media (max-width: 960px) {\n .will-filter-bar-divider {\n width: auto;\n margin: 0 10px;\n height: 1px;\n background-color: var(--will-charcoal-blue);\n }\n}";
@@ -12127,7 +12110,6 @@ var useFilterCalendar = function (_a) {
12127
12110
  handleSubmit: handleSubmit,
12128
12111
  handleClearDates: handleClearDates,
12129
12112
  setCalendarRange: setCalendarRange,
12130
- setDisabledDates: setDisabledDates,
12131
12113
  setUpdateCalendarMonthNavigation: setUpdateCalendarMonthNavigation,
12132
12114
  calendarRange: calendarRange,
12133
12115
  disabledDates: disabledDates,
@@ -12196,7 +12178,7 @@ function FilterCalendar(_a) {
12196
12178
  toggleCalendar: toggleCalendar,
12197
12179
  outerRangeContext: outerRangeContext,
12198
12180
  outerDisableCalendarDates: outerDisableCalendarDates,
12199
- }), setCalendarRange = _b.setCalendarRange, handleClearDates = _b.handleClearDates, calendarRange = _b.calendarRange, disabledDates = _b.disabledDates, setDisabledDates = _b.setDisabledDates, updateCalendarMonthNavigation = _b.updateCalendarMonthNavigation, updateCalendarDefaultMonth = _b.updateCalendarDefaultMonth, setUpdateCalendarMonthNavigation = _b.setUpdateCalendarMonthNavigation, calendarHasError = _b.calendarHasError, setCalendarHasError = _b.setCalendarHasError, setUpdatedForSubmit = _b.setUpdatedForSubmit, rangeContext = _b.rangeContext, disableCalendarDates = _b.disableCalendarDates;
12181
+ }), setCalendarRange = _b.setCalendarRange, handleClearDates = _b.handleClearDates, calendarRange = _b.calendarRange, disabledDates = _b.disabledDates, updateCalendarMonthNavigation = _b.updateCalendarMonthNavigation, updateCalendarDefaultMonth = _b.updateCalendarDefaultMonth, setUpdateCalendarMonthNavigation = _b.setUpdateCalendarMonthNavigation, calendarHasError = _b.calendarHasError, setCalendarHasError = _b.setCalendarHasError, setUpdatedForSubmit = _b.setUpdatedForSubmit, rangeContext = _b.rangeContext, disableCalendarDates = _b.disableCalendarDates;
12200
12182
  // Display component after fully loaded
12201
12183
  useAwaitRender();
12202
12184
  // Handle close filter section
@@ -12208,7 +12190,7 @@ function FilterCalendar(_a) {
12208
12190
  React__default.createElement("h2", null, t('filterBar:calendar.title')),
12209
12191
  React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
12210
12192
  React__default.createElement("div", { className: "will-calendar-main" },
12211
- React__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, setDisabledDates: setDisabledDates, updateCalendarMonthNavigation: updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation: setUpdateCalendarMonthNavigation, updateCalendarDefaultMonth: updateCalendarDefaultMonth, loadingData: loadingData, showFeedback: showFeedback, noActiveSelection: noActiveSelection, palette: palette, setCalendarHasError: setCalendarHasError, setUpdatedForSubmit: setUpdatedForSubmit, rangeContext: rangeContext, calendarHasError: calendarHasError })),
12193
+ React__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, updateCalendarMonthNavigation: updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation: setUpdateCalendarMonthNavigation, updateCalendarDefaultMonth: updateCalendarDefaultMonth, loadingData: loadingData, showFeedback: showFeedback, noActiveSelection: noActiveSelection, palette: palette, setCalendarHasError: setCalendarHasError, setUpdatedForSubmit: setUpdatedForSubmit, rangeContext: rangeContext, calendarHasError: calendarHasError })),
12212
12194
  React__default.createElement("div", { className: "will-calendar-footer" },
12213
12195
  React__default.createElement(Footer, { calendarHasError: calendarHasError, calendarRange: calendarRange, handleClearDates: handleClearDates, language: language, palette: palette }))))));
12214
12196
  }