willba-component-library 0.2.79 → 0.2.80

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 (64) hide show
  1. package/lib/assets/SpinnerSvg.d.ts +5 -0
  2. package/lib/components/FilterBar/FilterBar.stories.d.ts +1 -1
  3. package/lib/components/FilterBar/components/buttons/close-button/CloseButton.d.ts +7 -0
  4. package/lib/components/FilterBar/components/buttons/submit-button/SubmitButton.d.ts +3 -0
  5. package/lib/components/FilterBar/components/calendar/Calendar.d.ts +14 -0
  6. package/lib/components/FilterBar/hooks/useCloseFilterSection.d.ts +8 -0
  7. package/lib/components/FilterBar/hooks/useUpdateTranslations.d.ts +5 -0
  8. package/lib/components/FilterBar/utils/parseDates.d.ts +6 -0
  9. package/lib/components/FilterCalendar/FilterCalendar.d.ts +1 -1
  10. package/lib/components/FilterCalendar/FilterCalendar.stories.d.ts +1 -3
  11. package/lib/components/FilterCalendar/hooks/useFilterCalendar.d.ts +3 -10
  12. package/lib/core/components/buttons/submit-button/SubmitButton.d.ts +1 -3
  13. package/lib/core/components/calendar/CalendarTypes.d.ts +2 -9
  14. package/lib/core/utils/handleOverlappingDates.d.ts +1 -0
  15. package/lib/core/utils/index.d.ts +3 -0
  16. package/lib/core/utils/nightsCount.d.ts +6 -0
  17. package/lib/core/utils/parseDate.d.ts +7 -0
  18. package/lib/core/utils/parseDates.d.ts +6 -0
  19. package/lib/index.d.ts +3 -11
  20. package/lib/index.esm.js +267 -894
  21. package/lib/index.esm.js.map +1 -1
  22. package/lib/index.js +267 -894
  23. package/lib/index.js.map +1 -1
  24. package/lib/index.umd.js +267 -894
  25. package/lib/index.umd.js.map +1 -1
  26. package/lib/themes/useTheme.d.ts +0 -2
  27. package/package.json +1 -1
  28. package/src/assets/SpinnerSvg.tsx +40 -0
  29. package/src/components/FilterBar/FilterBar.stories.tsx +1 -2
  30. package/src/components/FilterBar/FilterBar.tsx +1 -1
  31. package/src/components/FilterBar/components/buttons/tab-button/TabButton.css +1 -1
  32. package/src/components/FilterBar/hooks/useFilterBar.tsx +1 -1
  33. package/src/components/FilterCalendar/FilterCalendar.css +10 -26
  34. package/src/components/FilterCalendar/FilterCalendar.stories.tsx +153 -522
  35. package/src/components/FilterCalendar/FilterCalendar.tsx +54 -25
  36. package/src/components/FilterCalendar/FilterCalendarTypes.ts +1 -0
  37. package/src/components/FilterCalendar/hooks/useFilterCalendar.ts +4 -94
  38. package/src/core/components/buttons/submit-button/SubmitButton.css +2 -16
  39. package/src/core/components/buttons/submit-button/SubmitButton.tsx +5 -6
  40. package/src/core/components/calendar/Calendar.css +18 -71
  41. package/src/core/components/calendar/Calendar.tsx +342 -132
  42. package/src/core/components/calendar/CalendarTypes.ts +3 -10
  43. package/src/core/utils/index.ts +3 -0
  44. package/src/locales/en/common.json +1 -7
  45. package/src/locales/en/filterBar.json +1 -2
  46. package/src/locales/fi/common.json +1 -7
  47. package/src/locales/fi/filterBar.json +1 -2
  48. package/src/themes/Default.css +3 -12
  49. package/src/themes/useTheme.tsx +0 -3
  50. package/src/assets/IconsSvg.tsx +0 -68
  51. package/src/components/FilterCalendar/components/Footer.tsx +0 -96
  52. package/src/core/components/calendar/hooks/index.ts +0 -3
  53. package/src/core/components/calendar/hooks/useCalendarLoadingSpinner.tsx +0 -19
  54. package/src/core/components/calendar/hooks/useCalendarTooltips.tsx +0 -125
  55. package/src/core/components/calendar/hooks/useUpdateDisabledDates.tsx +0 -107
  56. package/src/core/components/calendar/utils/calendarSelectionRules.tsx +0 -228
  57. package/src/core/components/calendar/utils/checkForContinuousSelection.tsx +0 -86
  58. package/src/core/components/calendar/utils/disabledDatesByPage.tsx +0 -36
  59. package/src/core/components/calendar/utils/handleCalendarModifiers.tsx +0 -147
  60. package/src/core/components/calendar/utils/handleRangeContextDisabledDates.tsx +0 -75
  61. package/src/core/components/calendar/utils/index.ts +0 -8
  62. /package/src/core/{components/calendar/utils → utils}/nightsCount.tsx +0 -0
  63. /package/src/core/{components/calendar/utils → utils}/parseDate.tsx +0 -0
  64. /package/src/core/{components/calendar/utils → utils}/parseDates.tsx +0 -0
package/lib/index.umd.js CHANGED
@@ -544,12 +544,11 @@
544
544
  var themePalette = {
545
545
  '--will-primary': palette === null || palette === void 0 ? void 0 : palette.primary,
546
546
  '--will-secondary': palette === null || palette === void 0 ? void 0 : palette.secondary,
547
- '--will-error': palette === null || palette === void 0 ? void 0 : palette.error,
548
547
  };
549
548
  return themePalette;
550
549
  }
551
550
 
552
- var css_248z$c = "@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');\n\n.will-root * {\n font-family: 'Montserrat', sans-serif;\n}\n\n.will-root {\n \n box-sizing: border-box;\n font-size: 14px;\n \n color: #1E1E1E;\n \n /* Palette */\n --will-primary: #374269;\n --will-secondary: #374269;\n --will-grey: #ABA7AF;\n --will-light-grey: #C8C8C8;\n --will-white: #fff;\n --will-white-transparent: #ffffffcf;\n --will-black: #000;\n --will-onahau: #CDEEFF;\n --will-text: #5A5959;\n --will-charcoal-blue: #384265;\n --will-error: #d32f2f;\n\n /* Transparent */\n --will-transparent-black: rgba(0, 0, 0, 0.5);\n --will-transparent-white: rgba(255, 255, 255, 0.30);\n --will-transparent-lavender: rgba(171, 167, 175, 0.30);\n\n /* Color mix */\n --will-primary-lighter: color-mix(in srgb, var(--will-primary), white 50%);\n --will-primary-lightest: color-mix(in srgb, var(--will-primary), white 80%);\n\n\n /* Shadows */\n --will-box-shadow-dark: 0px 2px 12px 2px #a1a1a180;\n --will-box-shadow-light: 0px 2px 12px 2px #bcb9b980;\n\n /* Breakpoints */\n --will-lg: 1140px;\n --will-md: 960px;\n --will-sm: 600px;\n --will-xl: 1280px;\n --will-xs: 0px;\n}\n\n/* Typography */\n\n.will-root h1, h2, h3, h4, h5, h6 {\n font-weight: 700;\n} \n\n.will-root p, h1, h2, h3, h4, h5, h6, span {\n margin: 0;\n padding: 0;\n}\n\n\n/* Integration fixes */\n\n.will-root p {\n margin: 0 !important;\n}\n\n.will-root button {\n line-height: normal !important;\n}\n";
551
+ var css_248z$c = "@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');\n\n.will-root * {\n font-family: 'Montserrat', sans-serif;\n}\n\n.will-root {\n \n box-sizing: border-box;\n font-size: 14px;\n \n color: #1E1E1E;\n \n /* Palette */\n --will-primary: #374269;\n --will-secondary: #374269;\n --will-grey: #ABA7AF;\n --will-white: #fff;\n --will-white-transparent: #ffffffcf;\n --will-black: #000;\n --will-onahau: #CDEEFF;\n --will-text: #5A5959;\n --will-charcoal-blue: #384265;\n --will-transparent-white: rgba(255, 255, 255, 0.30);\n --will-transparent-black: rgba(171, 167, 175, 0.30);\n\n /* Confines */\n --will-box-shadow-dark: 0px 2px 12px 2px #a1a1a180;\n --will-box-shadow-light: 0px 2px 12px 2px #bcb9b980;\n\n /* Breakpoints */\n\n --will-lg: 1140px;\n --will-md: 960px;\n --will-sm: 600px;\n --will-xl: 1280px;\n --will-xs: 0px;\n}\n\n/* Typography */\n\n.will-root h1, h2, h3, h4, h5, h6 {\n font-weight: 700;\n} \n\n.will-root p, h1, h2, h3, h4, h5, h6, span {\n margin: 0;\n padding: 0;\n}\n\n\n/* Integration fixes */\n\n.will-root p {\n margin: 0 !important;\n}\n\n.will-root button {\n line-height: normal !important;\n}\n";
553
552
  styleInject(css_248z$c);
554
553
 
555
554
  var useAwaitRender = function () {
@@ -2841,8 +2840,7 @@
2841
2840
  endDate: "End date",
2842
2841
  title: "Calendar",
2843
2842
  checkoutOnly: "Check-out only",
2844
- hasDisableDates: "Contains unavailable dates",
2845
- minNights: "2 nights min"
2843
+ hasDisableDates: "Contains unavailable dates"
2846
2844
  };
2847
2845
  var guests$1 = {
2848
2846
  label: "Number of guests",
@@ -2878,12 +2876,6 @@
2878
2876
  var noCheckIn$1 = "Room not available";
2879
2877
  var noCheckOut$1 = "Check-out not available";
2880
2878
  var checkOutOnly$1 = "Check-out only";
2881
- var checkInOnly$1 = "Check-in only";
2882
- var errors$1 = {
2883
- calendarErrors: {
2884
- checkInAvailabilityError: "All room reservations in a single purchase must be for the same dates. If you need reservations for different dates, please make a separate purchase."
2885
- }
2886
- };
2887
2879
  var enCommon = {
2888
2880
  night: night$1,
2889
2881
  nights: nights$1,
@@ -2894,9 +2886,7 @@
2894
2886
  clearDates: clearDates$1,
2895
2887
  noCheckIn: noCheckIn$1,
2896
2888
  noCheckOut: noCheckOut$1,
2897
- checkOutOnly: checkOutOnly$1,
2898
- checkInOnly: checkInOnly$1,
2899
- errors: errors$1
2889
+ checkOutOnly: checkOutOnly$1
2900
2890
  };
2901
2891
 
2902
2892
  var calendar = {
@@ -2907,8 +2897,7 @@
2907
2897
  endDate: "Loppu",
2908
2898
  title: "Kalenteri",
2909
2899
  checkoutOnly: "Check-out only",
2910
- hasDisableDates: "Contains unavailable dates",
2911
- minNights: "2 nights min"
2900
+ hasDisableDates: "Contains unavailable dates"
2912
2901
  };
2913
2902
  var guests = {
2914
2903
  label: "Vierasmäärä",
@@ -2946,12 +2935,6 @@
2946
2935
  var noCheckIn = "Huone ei saatavilla";
2947
2936
  var noCheckOut = "Uloskirjaus ei saatavilla";
2948
2937
  var checkOutOnly = "Vain uloskirjaus";
2949
- var checkInOnly = "Vain sisäänkirjaus";
2950
- var errors = {
2951
- calendarErrors: {
2952
- checkInAvailabilityError: "Yhdellä ostolla tehdyt huonevaraukset tulee olla samalle ajankohdalle. Jos tarvitset huonevarauksia eri ajankohdille, ole hyvä ja tee uusi osto."
2953
- }
2954
- };
2955
2938
  var fiCommon = {
2956
2939
  night: night,
2957
2940
  nights: nights,
@@ -2962,9 +2945,7 @@
2962
2945
  clearDates: clearDates,
2963
2946
  noCheckIn: noCheckIn,
2964
2947
  noCheckOut: noCheckOut,
2965
- checkOutOnly: checkOutOnly,
2966
- checkInOnly: checkInOnly,
2967
- errors: errors
2948
+ checkOutOnly: checkOutOnly
2968
2949
  };
2969
2950
 
2970
2951
  var urlParams = typeof window !== 'undefined'
@@ -3011,12 +2992,12 @@
3011
2992
  return { filtersRef: filtersRef };
3012
2993
  };
3013
2994
 
3014
- var css_248z$b = ".will-filter-bar-submit-button {\n width: auto;\n height: auto;\n padding: 10px 20px;\n border-radius: 20px;\n cursor: pointer;\n border: none;\n white-space: nowrap;\n text-transform: uppercase;\n font-size: 12px;\n display: flex;\n align-items: center;\n user-select: none;\n}\n\n/* Submit button variants */\n.will-filter-bar-submit-button.default {\n background-color: var(--will-primary);\n color: var(--will-white);\n}\n\n.will-filter-bar-submit-button.text {\n background-color: transparent;\n color: var(--will-black);\n text-decoration: underline;\n font-weight: 500;\n font-size: 15px;\n padding: 0 10px;\n}\n\n.will-filter-bar-submit-button span {\n margin-right: 10px;\n display: flex;\n}\n\nbutton.will-filter-bar-submit-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n@media (max-width: 960px) {\n .will-filter-bar-submit-button {\n justify-content: center;\n \n }\n}\n\n/* --- */\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n";
2995
+ var css_248z$b = ".will-filter-bar-submit-button {\n width: auto;\n height: auto;\n background-color: var(--will-primary);\n color: var(--will-white);\n padding: 10px 20px;\n border-radius: 20px;\n cursor: pointer;\n border: none;\n white-space: nowrap;\n text-transform: uppercase;\n font-size: 12px;\n display: flex;\n align-items: center;\n}\n\n.will-filter-bar-submit-button span {\n margin-right: 10px;\n display: flex;\n}\n\nbutton.will-filter-bar-submit-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n@media (max-width: 960px) {\n .will-filter-bar-submit-button {\n justify-content: center;\n \n }\n}\n\n/* --- */\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n";
3015
2996
  styleInject(css_248z$b);
3016
2997
 
3017
2998
  var SubmitButton = function (_a) {
3018
- var onClick = _a.onClick, startIcon = _a.startIcon, label = _a.label, disabled = _a.disabled, isLoading = _a.isLoading, variant = _a.variant;
3019
- return (React__default.createElement("button", { className: "will-filter-bar-submit-button ".concat(variant || 'default'), onClick: onClick, disabled: disabled || isLoading },
2999
+ var onClick = _a.onClick, startIcon = _a.startIcon, label = _a.label, disabled = _a.disabled, isLoading = _a.isLoading;
3000
+ return (React__default.createElement("button", { className: "will-filter-bar-submit-button", onClick: onClick, disabled: disabled || isLoading },
3020
3001
  isLoading ? (React__default.createElement("span", null, React__default.createElement(FaSpinner, { style: { animation: 'spin 1s linear infinite' } }))) : (startIcon && React__default.createElement("span", null, startIcon)),
3021
3002
  label || 'Label'));
3022
3003
  };
@@ -3515,78 +3496,6 @@
3515
3496
  return addMonths(dirtyDate, amount * 12);
3516
3497
  }
3517
3498
 
3518
- /**
3519
- * @name areIntervalsOverlapping
3520
- * @category Interval Helpers
3521
- * @summary Is the given time interval overlapping with another time interval?
3522
- *
3523
- * @description
3524
- * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.
3525
- *
3526
- * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}
3527
- * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}
3528
- * @param {Object} [options] - the object with options
3529
- * @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not
3530
- * @returns {Boolean} whether the time intervals are overlapping
3531
- * @throws {TypeError} 2 arguments required
3532
- * @throws {RangeError} The start of an interval cannot be after its end
3533
- * @throws {RangeError} Date in interval cannot be `Invalid Date`
3534
- *
3535
- * @example
3536
- * // For overlapping time intervals:
3537
- * areIntervalsOverlapping(
3538
- * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
3539
- * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
3540
- * )
3541
- * //=> true
3542
- *
3543
- * @example
3544
- * // For non-overlapping time intervals:
3545
- * areIntervalsOverlapping(
3546
- * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
3547
- * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }
3548
- * )
3549
- * //=> false
3550
- *
3551
- * @example
3552
- * // For adjacent time intervals:
3553
- * areIntervalsOverlapping(
3554
- * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
3555
- * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }
3556
- * )
3557
- * //=> false
3558
- *
3559
- * @example
3560
- * // Using the inclusive option:
3561
- * areIntervalsOverlapping(
3562
- * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
3563
- * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }
3564
- * )
3565
- * //=> false
3566
- * areIntervalsOverlapping(
3567
- * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
3568
- * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },
3569
- * { inclusive: true }
3570
- * )
3571
- * //=> true
3572
- */
3573
- function areIntervalsOverlapping(intervalLeft, intervalRight, options) {
3574
- requiredArgs(2, arguments);
3575
- var leftStartTime = toDate(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.start).getTime();
3576
- var leftEndTime = toDate(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.end).getTime();
3577
- var rightStartTime = toDate(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.start).getTime();
3578
- var rightEndTime = toDate(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.end).getTime();
3579
-
3580
- // Throw an exception if start date is after end date or if any date is `Invalid Date`
3581
- if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {
3582
- throw new RangeError('Invalid interval');
3583
- }
3584
- if (options !== null && options !== void 0 && options.inclusive) {
3585
- return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;
3586
- }
3587
- return leftStartTime < rightEndTime && rightStartTime < leftEndTime;
3588
- }
3589
-
3590
3499
  /**
3591
3500
  * @name max
3592
3501
  * @category Common Helpers
@@ -3678,53 +3587,6 @@
3678
3587
  return result || new Date(NaN);
3679
3588
  }
3680
3589
 
3681
- /**
3682
- * @name compareAsc
3683
- * @category Common Helpers
3684
- * @summary Compare the two dates and return -1, 0 or 1.
3685
- *
3686
- * @description
3687
- * Compare the two dates and return 1 if the first date is after the second,
3688
- * -1 if the first date is before the second or 0 if dates are equal.
3689
- *
3690
- * @param {Date|Number} dateLeft - the first date to compare
3691
- * @param {Date|Number} dateRight - the second date to compare
3692
- * @returns {Number} the result of the comparison
3693
- * @throws {TypeError} 2 arguments required
3694
- *
3695
- * @example
3696
- * // Compare 11 February 1987 and 10 July 1989:
3697
- * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))
3698
- * //=> -1
3699
- *
3700
- * @example
3701
- * // Sort the array of dates:
3702
- * const result = [
3703
- * new Date(1995, 6, 2),
3704
- * new Date(1987, 1, 11),
3705
- * new Date(1989, 6, 10)
3706
- * ].sort(compareAsc)
3707
- * //=> [
3708
- * // Wed Feb 11 1987 00:00:00,
3709
- * // Mon Jul 10 1989 00:00:00,
3710
- * // Sun Jul 02 1995 00:00:00
3711
- * // ]
3712
- */
3713
- function compareAsc(dirtyDateLeft, dirtyDateRight) {
3714
- requiredArgs(2, arguments);
3715
- var dateLeft = toDate(dirtyDateLeft);
3716
- var dateRight = toDate(dirtyDateRight);
3717
- var diff = dateLeft.getTime() - dateRight.getTime();
3718
- if (diff < 0) {
3719
- return -1;
3720
- } else if (diff > 0) {
3721
- return 1;
3722
- // Return 0 if diff is 0; return NaN if diff is NaN
3723
- } else {
3724
- return diff;
3725
- }
3726
- }
3727
-
3728
3590
  /**
3729
3591
  * @name isSameDay
3730
3592
  * @category Day Helpers
@@ -3917,31 +3779,6 @@
3917
3779
  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK$4);
3918
3780
  }
3919
3781
 
3920
- /**
3921
- * @name endOfDay
3922
- * @category Day Helpers
3923
- * @summary Return the end of a day for the given date.
3924
- *
3925
- * @description
3926
- * Return the end of a day for the given date.
3927
- * The result will be in the local timezone.
3928
- *
3929
- * @param {Date|Number} date - the original date
3930
- * @returns {Date} the end of a day
3931
- * @throws {TypeError} 1 argument required
3932
- *
3933
- * @example
3934
- * // The end of a day for 2 September 2014 11:55:00:
3935
- * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))
3936
- * //=> Tue Sep 02 2014 23:59:59.999
3937
- */
3938
- function endOfDay(dirtyDate) {
3939
- requiredArgs(1, arguments);
3940
- var date = toDate(dirtyDate);
3941
- date.setHours(23, 59, 59, 999);
3942
- return date;
3943
- }
3944
-
3945
3782
  /**
3946
3783
  * @name endOfMonth
3947
3784
  * @category Month Helpers
@@ -6475,34 +6312,6 @@
6475
6312
  return date.getTime() < dateToCompare.getTime();
6476
6313
  }
6477
6314
 
6478
- /**
6479
- * @name isEqual
6480
- * @category Common Helpers
6481
- * @summary Are the given dates equal?
6482
- *
6483
- * @description
6484
- * Are the given dates equal?
6485
- *
6486
- * @param {Date|Number} dateLeft - the first date to compare
6487
- * @param {Date|Number} dateRight - the second date to compare
6488
- * @returns {Boolean} the dates are equal
6489
- * @throws {TypeError} 2 arguments required
6490
- *
6491
- * @example
6492
- * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?
6493
- * const result = isEqual(
6494
- * new Date(2014, 6, 2, 6, 30, 45, 0),
6495
- * new Date(2014, 6, 2, 6, 30, 45, 500)
6496
- * )
6497
- * //=> false
6498
- */
6499
- function isEqual(dirtyLeftDate, dirtyRightDate) {
6500
- requiredArgs(2, arguments);
6501
- var dateLeft = toDate(dirtyLeftDate);
6502
- var dateRight = toDate(dirtyRightDate);
6503
- return dateLeft.getTime() === dateRight.getTime();
6504
- }
6505
-
6506
6315
  /**
6507
6316
  * @name isSameMonth
6508
6317
  * @category Month Helpers
@@ -7753,7 +7562,7 @@
7753
7562
 
7754
7563
  /** Render the Footer component (empty as default).*/
7755
7564
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7756
- function Footer$1(props) {
7565
+ function Footer(props) {
7757
7566
  var _a = useDayPicker(), footer = _a.footer, styles = _a.styles, tfoot = _a.classNames.tfoot;
7758
7567
  if (!footer)
7759
7568
  return React__default.createElement(React__default.Fragment, null);
@@ -8907,7 +8716,7 @@
8907
8716
  });
8908
8717
  var HeadComponent = (_a = components === null || components === void 0 ? void 0 : components.Head) !== null && _a !== void 0 ? _a : Head;
8909
8718
  var RowComponent = (_b = components === null || components === void 0 ? void 0 : components.Row) !== null && _b !== void 0 ? _b : Row;
8910
- var FooterComponent = (_c = components === null || components === void 0 ? void 0 : components.Footer) !== null && _c !== void 0 ? _c : Footer$1;
8719
+ var FooterComponent = (_c = components === null || components === void 0 ? void 0 : components.Footer) !== null && _c !== void 0 ? _c : Footer;
8911
8720
  return (React__default.createElement("table", { id: props.id, className: classNames.table, style: styles.table, role: "grid", "aria-labelledby": props['aria-labelledby'] },
8912
8721
  !hideHead && React__default.createElement(HeadComponent, null),
8913
8722
  React__default.createElement("tbody", { className: classNames.tbody, style: styles.tbody }, weeks.map(function (week) { return (React__default.createElement(RowComponent, { displayMonth: props.displayMonth, key: week.weekNumber, dates: week.dates, weekNumber: week.weekNumber })); })),
@@ -11002,396 +10811,83 @@
11002
10811
 
11003
10812
  var reactResponsiveExports = reactResponsive.exports;
11004
10813
 
11005
- var IconsSvg = function (_a) {
11006
- var fill = _a.fill, size = _a.size, icon = _a.icon;
11007
- switch (icon) {
11008
- case 'spinner':
11009
- 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" },
11010
- 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 "),
11011
- 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 }),
11012
- 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 })));
11013
- case 'warning':
11014
- return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), className: "svg-icon", style: {
11015
- verticalAlign: 'middle',
11016
- fill: fill,
11017
- overflow: 'hidden',
11018
- minWidth: '25px',
11019
- minHeight: '25px',
11020
- }, viewBox: "0 0 1024 1024", version: "1.1" },
11021
- 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" })));
11022
- }
11023
- };
11024
-
11025
- var parseDates = function (_a) {
11026
- var calendarRange = _a.calendarRange;
11027
- return (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
11028
- ? "".concat(format(calendarRange.from, 'dd.MM.yyyy'), " -\n").concat(format(calendarRange.to, 'dd.MM.yyyy'))
11029
- : null;
11030
- };
11031
-
11032
- var parseDate = function (_a) {
11033
- var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b, language = _a.language;
11034
- return date
11035
- ? format(date, dateFormat, { locale: language === 'en' ? enUS : fi })
11036
- : null;
10814
+ var SpinnerSVG = function (_a) {
10815
+ var fill = _a.fill, size = _a.size;
10816
+ 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" },
10817
+ 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 "),
10818
+ 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 }),
10819
+ 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 })));
11037
10820
  };
11038
10821
 
11039
- var nightsCount = function (_a) {
11040
- var calendarRange = _a.calendarRange;
11041
- if (!calendarRange || !calendarRange.from || !calendarRange.to) {
11042
- return undefined;
11043
- }
11044
- var diffDays = differenceInCalendarDays(calendarRange.to, calendarRange.from);
11045
- return diffDays;
11046
- };
11047
-
11048
- var calendarSelectionRules = function (_a) {
11049
- var _b;
11050
- 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;
11051
- // Get and parse needed data
11052
- var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? endOfDay(range.from) : null;
11053
- var rangeTo = (range === null || range === void 0 ? void 0 : range.to) ? endOfDay(range.to) : null;
11054
- var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
11055
- ? endOfDay(calendarRange.from)
11056
- : null;
11057
- var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? endOfDay(calendarRange.to) : null;
11058
- var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from)
11059
- ? endOfDay(rangeContext.from)
11060
- : null;
11061
- var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) ? endOfDay(rangeContext.to) : null;
11062
- // When some dates are not available for selection, the earliest date will be available only for "end"
11063
- // and the latest date will only be available for "start"
11064
- var rangeFromDate = !range && calendarRangeFrom && calendarRangeTo
11065
- ? calendarRangeFrom
11066
- : rangeFrom;
11067
- var overlappingDateFrom = (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length)
11068
- ? overlappingDate.find(function (date) {
11069
- return !!(date.from && rangeFromDate)
11070
- ? isEqual(endOfDay(date.from), rangeFromDate)
11071
- : false;
11072
- })
11073
- : null;
11074
- var overlappingDateTo = (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length)
11075
- ? overlappingDate.find(function (date) {
11076
- return !!(date.from && rangeTo) ? isEqual(endOfDay(date.from), rangeTo) : false;
11077
- })
11078
- : null;
11079
- //----------
11080
- var checkOutRange = ((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.length)
11081
- ? newDisableCalendarDates.availableDates.find(function (checkInDate) {
11082
- return !!(checkInDate.checkIn && rangeFrom)
11083
- ? isEqual(endOfDay(checkInDate.checkIn), rangeFrom)
11084
- : false;
11085
- })
11086
- : null;
11087
- // On check-in, disable future dates that are unavailable for checkout
11088
- disableFutureDates({
11089
- rangeFrom: rangeFrom,
11090
- checkOutRange: checkOutRange,
11091
- setDisabledDates: setDisabledDates,
11092
- newDisableCalendarDates: newDisableCalendarDates,
11093
- });
11094
- // Calendar selection rules: The cases are handled sequentially, starting from simple selections to more complex contextual selections.
11095
- // The rules are processed in a specific order, so one case is handled before another.
11096
- // Changing the order will cause the rules to break or not work properly.
11097
- if ((calendarRangeFrom &&
11098
- overlappingDateFrom &&
11099
- rangeFrom &&
11100
- !isEqual(rangeFrom, calendarRangeFrom)) ||
11101
- !range ||
11102
- (calendarRangeFrom &&
11103
- calendarRangeTo &&
11104
- overlappingDateTo &&
11105
- rangeTo &&
11106
- !isEqual(rangeTo, calendarRangeTo))) {
11107
- // 1. If dates overlap, clear the selection.
11108
- return setCalendarRange(undefined);
11109
- }
11110
- if (
11111
- // 2. If selected "start" is after "range context end", clear selection and display error.
11112
- // Also, if there are unavailable dates between the rangeContext "start" and "end", do not allow a fully overlapping selection.
11113
- (rangeFrom && rangeContextTo && isAfter(rangeFrom, rangeContextTo)) ||
11114
- // In case of current rangeTo is after contextRange and user clicks the new check-in
11115
- (calendarRangeFrom &&
11116
- calendarRangeTo &&
11117
- rangeContextTo &&
11118
- rangeTo &&
11119
- // If rangeTo has been adjusted, the current click was at the end
11120
- // In this case we can verify if the new click (check-in-to-be) goes over the context range end
11121
- !isEqual(rangeTo, calendarRangeTo) &&
11122
- isAfter(rangeTo, rangeContextTo))) {
11123
- setCalendarHasError && setCalendarHasError(true);
11124
- return setCalendarRange(undefined);
11125
- }
11126
- if (rangeFrom && rangeTo && isEqual(rangeFrom, rangeTo)) {
11127
- // 3. If "start" is selected and the same date is clicked again, keep the current "start" selection.
11128
- return setCalendarRange({ from: rangeFrom, to: undefined });
11129
- }
11130
- if (calendarRangeFrom && calendarRangeTo && !range) {
11131
- // 4. If "calendarRange" has dates selected and the same "start" date is clicked, the "range" will become undefined.
11132
- // Set the current selection (calendarRange) to the initial "start" of calendarRange.
11133
- return setCalendarRange({ from: calendarRangeFrom, to: undefined });
11134
- }
11135
- // 5. Handle gap selection backwards and forwards
11136
- if (
11137
- // In the range context case, every date selection that is after selected "start" last checkout,
11138
- // clear selection and prompt error
11139
- rangeContext &&
11140
- rangeTo &&
11141
- (checkOutRange === null || checkOutRange === void 0 ? void 0 : checkOutRange.lastCheckOut) &&
11142
- isAfter(rangeTo, endOfDay(checkOutRange.lastCheckOut)) &&
11143
- // Handle case of existing range that span over the end of the context range
11144
- ((calendarRangeTo && !isEqual(rangeTo, calendarRangeTo)) ||
11145
- !calendarRangeTo) &&
11146
- isAfter(rangeTo, endOfDay(rangeContext.to))) {
11147
- setCalendarHasError && setCalendarHasError(true);
11148
- return setCalendarRange(undefined);
11149
- }
11150
- if (
11151
- // Enforce on every date selection before current "start", mark as "start" selection
11152
- rangeFrom &&
11153
- calendarRangeFrom &&
11154
- isBefore(rangeFrom, calendarRangeFrom)) {
11155
- return setCalendarRange({ from: rangeFrom, to: undefined });
11156
- }
11157
- if (
11158
- // Every date selection that is after selected "start" last checkout, mark as "start"
11159
- rangeTo &&
11160
- (checkOutRange === null || checkOutRange === void 0 ? void 0 : checkOutRange.lastCheckOut) &&
11161
- isAfter(rangeTo, endOfDay(checkOutRange.lastCheckOut))) {
11162
- if (overlappingDateTo) {
11163
- return setCalendarRange(undefined);
11164
- }
11165
- return setCalendarRange({ from: rangeTo, to: undefined });
11166
- }
11167
- if (calendarRangeFrom &&
11168
- rangeFrom &&
11169
- !isEqual(calendarRangeFrom, rangeFrom)) {
11170
- // 6. If "calendarRange" has selected dates and the new selection "start" differs from the current "calendarRange start", reset and make a new "start" selection.
11171
- return setCalendarRange({ from: rangeFrom, to: undefined });
11172
- }
11173
- else if (calendarRangeTo && rangeTo && !isEqual(calendarRangeTo, rangeTo)) {
11174
- // 7. If "calendarRange" has selected dates and the new selection "end" differs from the current "calendarRange end", reset and make a new "start" selection.
11175
- return setCalendarRange({ from: rangeTo, to: undefined });
11176
- }
11177
- if (
11178
- // 8. If selected "end" is before "context start", mark as "start" and display error
11179
- rangeFrom &&
11180
- rangeTo &&
11181
- rangeContextFrom &&
11182
- isBefore(rangeTo, rangeContextFrom)) {
11183
- setCalendarHasError && setCalendarHasError(true);
11184
- return setCalendarRange({ from: rangeTo, to: undefined });
11185
- }
11186
- setCalendarRange(range);
11187
- };
11188
- /////////
11189
- var disableFutureDates = function (_a) {
11190
- var rangeFrom = _a.rangeFrom, checkOutRange = _a.checkOutRange, setDisabledDates = _a.setDisabledDates, newDisableCalendarDates = _a.newDisableCalendarDates;
11191
- if (rangeFrom && checkOutRange && setDisabledDates) {
11192
- // Get parse data
11193
- var checkIn = addDays(checkOutRange.checkIn, 1);
11194
- var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
11195
- var noDatesRange = isEqual(checkIn, checkOutRange.firstCheckOut);
11196
- setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [])), false), [
11197
- {
11198
- from: noDatesRange ? undefined : checkIn,
11199
- to: noDatesRange ? undefined : firstCheckOut,
11200
- },
11201
- ], false));
11202
- }
11203
- };
10822
+ 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}";
10823
+ styleInject(css_248z$9);
11204
10824
 
11205
- var disabledDatesByPage = function (_a) {
11206
- var _b, _c, _d;
11207
- var newDisableCalendarDates = _a.newDisableCalendarDates, selectedPath = _a.selectedPath, today = _a.today;
11208
- var daysToOffsetCalendar = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) && selectedPath
11209
- ? [
11210
- (_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) === null || _b === void 0 ? void 0 : _b.find(function (item) { return selectedPath === item.page; }),
11211
- ]
11212
- : [];
11213
- return daysToOffsetCalendar.length
11214
- ? [
11215
- {
11216
- from: addDays(today, daysToOffsetCalendar.length && ((_c = daysToOffsetCalendar[0]) === null || _c === void 0 ? void 0 : _c.offset)
11217
- ? (_d = daysToOffsetCalendar[0]) === null || _d === void 0 ? void 0 : _d.offset
11218
- : -2),
11219
- to: addDays(today, -100),
11220
- },
11221
- ]
11222
- : [];
11223
- };
10825
+ 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-onahau);\n color: inherit;\n}\n\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_start.no-active-selection:hover,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_middle.no-active-selection:hover,\n.will-root .will-calendar-filter-container .rdp-day_selected.rdp-day_range_end.no-active-selection:hover {\n background-color: var(--rdp-background-color);\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";
10826
+ styleInject(css_248z$8);
11224
10827
 
11225
- var handleCalendarModifiers = function (_a) {
10828
+ var Calendar = React__default.forwardRef(function (_a, ref) {
11226
10829
  var _b;
11227
- 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;
11228
- // Parse data
11229
- var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
11230
- var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && endOfDay(calendarRange.to);
11231
- var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && endOfDay(rangeContext.from);
11232
- var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) && endOfDay(rangeContext.to);
11233
- var filteredOverlappingDates = overlappingDate
11234
- ? overlappingDate
11235
- .filter(function (date) {
11236
- var dateFrom = date.from ? endOfDay(date.from) : null;
11237
- var isBeforeRange = dateFrom &&
11238
- (findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) &&
11239
- isBefore(dateFrom, findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn);
11240
- var isAfterRange = dateFrom &&
11241
- (findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.lastCheckOut) &&
11242
- isAfter(dateFrom, endOfDay(findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.lastCheckOut));
11243
- return !(isBeforeRange || isAfterRange);
11244
- })
11245
- .map(function (date) { return ({ from: date.from }); })
11246
- : [];
11247
- return {
11248
- booked: disabledDatesByPage.length
11249
- ? disabledDatesByPage
11250
- : (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
11251
- ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11252
- lastPossibleCheckout || []
11253
- ], __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)
11254
- ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11255
- lastPossibleCheckout || []
11256
- ], __read(newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [],
11257
- disabledAfterCheckIn: calendarRangeFrom
11258
- ? [{ after: calendarRangeFrom }]
11259
- : [],
11260
- overlappingDate: !calendarRangeFrom && !!filteredOverlappingDates.length
11261
- ? filteredOverlappingDates.map(function (date) { return ({ from: date.from }); })
11262
- : [],
11263
- noActiveSelectionStart: rangeContextFrom || [],
11264
- noActiveSelectionMid: [
11265
- rangeContextFrom && rangeContextTo
11266
- ? { after: rangeContextFrom, before: rangeContextTo }
11267
- : [],
11268
- ],
11269
- noActiveSelectionEnd: rangeContextTo || [],
11270
- checkoutOptionsMid: __spreadArray$1([], __read((calendarRangeFrom &&
11271
- !calendarRangeTo &&
11272
- (currentSelectionLastCheckoutDate === null || currentSelectionLastCheckoutDate === void 0 ? void 0 : currentSelectionLastCheckoutDate.lastCheckOut)
11273
- ? [
11274
- {
11275
- after: calendarRangeFrom,
11276
- before: addDays(currentSelectionLastCheckoutDate.lastCheckOut, 1),
11277
- },
11278
- ]
11279
- : [])), false),
11280
- checkInOnly: __spreadArray$1([], __read(((findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) &&
11281
- rangeContext &&
11282
- rangeContextFrom
11283
- ? [
11284
- {
11285
- from: findFirstPossibleRangeContextCheckIn.checkIn,
11286
- to: addDays(rangeContextFrom, -1),
11287
- },
11288
- ]
11289
- : [])), false),
11290
- checkOutOnly: __spreadArray$1([], __read(((findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) &&
11291
- findLastPossibleRangeContextCheckOut.lastCheckOut
11292
- ? [
11293
- {
11294
- from: addDays(findLastPossibleRangeContextCheckOut.checkIn, 1),
11295
- to: findLastPossibleRangeContextCheckOut.lastCheckOut,
11296
- },
11297
- ]
11298
- : [])), false),
11299
- };
11300
- };
11301
-
11302
- var handleRangeContextDisabledDates = function (_a) {
11303
- var rangeContext = _a.rangeContext, availableDates = _a.availableDates, calendarRange = _a.calendarRange;
11304
- var findFirstPossibleRangeContextCheckIn;
11305
- var findLastPossibleRangeContextCheckOut;
11306
- var firstPossibleRangeContextCheckIn = [];
11307
- var lastPossibleRangeContextCheckOut = [];
11308
- // Parse data
11309
- var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && endOfDay(rangeContext.from);
11310
- var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) && endOfDay(rangeContext.to);
11311
- var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
11312
- if (rangeContext && (availableDates === null || availableDates === void 0 ? void 0 : availableDates.length)) {
11313
- // Find the first possible check-in after the last date gap till the range context
11314
- findFirstPossibleRangeContextCheckIn = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
11315
- return rangeContextFrom &&
11316
- endOfDay(date.checkIn) < rangeContextFrom &&
11317
- endOfDay(date.lastCheckOut) >= rangeContextFrom;
11318
- });
11319
- if (findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) {
11320
- firstPossibleRangeContextCheckIn.push({
11321
- before: findFirstPossibleRangeContextCheckIn.checkIn,
11322
- });
11323
- }
11324
- // Find the last possible checkout before the first date gap till the range context
11325
- findLastPossibleRangeContextCheckOut = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
11326
- return rangeContextTo && isEqual(rangeContextTo, endOfDay(date.checkIn));
11327
- });
11328
- if (findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) {
11329
- lastPossibleRangeContextCheckOut.push({
11330
- after: findLastPossibleRangeContextCheckOut.lastCheckOut,
11331
- });
10830
+ 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, updateCalendarDefaultMoth = _a.updateCalendarDefaultMoth, loadingData = _a.loadingData, initialCalendarRange = _a.initialCalendarRange, showFeedback = _a.showFeedback, palette = _a.palette;
10831
+ // Translations
10832
+ var t = useTranslation('common').t;
10833
+ var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
10834
+ var today = startOfDay(new Date());
10835
+ var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
10836
+ // Handle overlapping availableDates.lastCheckOut and disabledDates.start
10837
+ var _c = __read(React__default.useState(undefined), 2), overlappingDate = _c[0], setOverlappingDate = _c[1];
10838
+ var newDisableCalendarDates = React__default.useMemo(function () {
10839
+ if (disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.availableDates) {
10840
+ var dateFormat_1 = 'dd-MM-yyyy';
10841
+ var disabledDates_1 = disableCalendarDates.disabledDates;
10842
+ var _a = (disabledDates_1 || []).reduce(function (acc, dateRange) {
10843
+ var _a, _b;
10844
+ var formattedFromDate = format(dateRange.from, dateFormat_1);
10845
+ var formattedToDate = format(dateRange.to, dateFormat_1);
10846
+ var hasTwoOverlappingDates = (_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.some(function (item) {
10847
+ return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
10848
+ format(item.lastCheckOut, dateFormat_1) === formattedToDate;
10849
+ });
10850
+ var hasOneOverlappingDate = (_b = disableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.some(function (item) {
10851
+ return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
10852
+ format(item.lastCheckOut, dateFormat_1) !== formattedToDate;
10853
+ });
10854
+ if (hasTwoOverlappingDates) {
10855
+ acc.newOverlappingDates.push(dateRange);
10856
+ }
10857
+ else if (hasOneOverlappingDate) {
10858
+ acc.newOverlappingDates.push(dateRange);
10859
+ acc.updatedDisabledDates.push(__assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) }));
10860
+ }
10861
+ else {
10862
+ acc.updatedDisabledDates.push(dateRange);
10863
+ }
10864
+ return acc;
10865
+ }, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _a.updatedDisabledDates, newOverlappingDates_1 = _a.newOverlappingDates;
10866
+ if (newOverlappingDates_1.length) {
10867
+ setOverlappingDate(function (prev) {
10868
+ if (prev === void 0) { prev = []; }
10869
+ return __spreadArray$1(__spreadArray$1([], __read(prev), false), __read(newOverlappingDates_1), false);
10870
+ });
10871
+ }
10872
+ var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
10873
+ return newDisableCalendarDates_1;
11332
10874
  }
11333
- }
11334
- // Get last possible check-out dates for current check-in
11335
- var currentSelectionLastCheckoutDate = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
11336
- return calendarRangeFrom
11337
- ? isEqual(endOfDay(date.checkIn), calendarRangeFrom)
11338
- : false;
11339
- });
11340
- return {
11341
- findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
11342
- findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
11343
- firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
11344
- lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
11345
- currentSelectionLastCheckoutDate: currentSelectionLastCheckoutDate,
11346
- };
11347
- };
11348
-
11349
- // Case: If the selected dates do not overlap with the rangeContext during continuous selection,
11350
- // set setCalendarHasError to true. This will display an error message and
11351
- // prevent the submission of the selected dates.
11352
- var checkForContinuousSelection = function (_a) {
11353
- var setCalendarHasError = _a.setCalendarHasError, rangeContext = _a.rangeContext, calendarRange = _a.calendarRange, calendarHasError = _a.calendarHasError, disabledDates = _a.disabledDates;
11354
- var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
11355
- var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && endOfDay(calendarRange.to);
11356
- var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && endOfDay(rangeContext.from);
11357
- var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) && endOfDay(rangeContext.to);
11358
- // Checking if rangeFrom is equal to or before rangeContextTo
11359
- var startIsEqualOrBeforeRangeContextEnd = calendarRangeFrom && rangeContextTo
11360
- ? isBefore(calendarRangeFrom, rangeContextTo) ||
11361
- isEqual(calendarRangeFrom, rangeContextTo)
11362
- : null;
11363
- // Checking if rangeTo is equal to or after rangeContextFrom
11364
- var endIsEqualOrAfterRangeContextStart = calendarRangeTo && rangeContextFrom && rangeContextTo
11365
- ? isAfter(calendarRangeTo, rangeContextFrom) ||
11366
- isEqual(calendarRangeTo, rangeContextFrom)
11367
- : null;
11368
- // Check if selection overlapping unavailable dates
11369
- var selectionOverlappingUnavailableDate = disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.find(function (range) {
11370
- var rangeFrom = endOfDay(range.from);
11371
- var rangeTo = endOfDay(range.to);
11372
- return (rangeContextFrom &&
11373
- rangeContextTo &&
11374
- areIntervalsOverlapping({ start: rangeContextFrom, end: rangeContextTo }, { start: rangeFrom, end: rangeTo }) &&
11375
- calendarRangeFrom &&
11376
- calendarRangeTo &&
11377
- areIntervalsOverlapping({ start: calendarRangeFrom, end: calendarRangeTo }, { start: rangeFrom, end: rangeTo }));
10875
+ return disableCalendarDates;
10876
+ }, [
10877
+ disableCalendarDates,
10878
+ calendarRange,
10879
+ updateCalendarMonthNavigation,
10880
+ initialCalendarRange,
10881
+ updateCalendarDefaultMoth,
10882
+ ]);
10883
+ // Handle disable dates by page
10884
+ var disabledDatesByPage = handleDisabledDatesByPage({
10885
+ today: today,
10886
+ selectedPath: selectedPath,
10887
+ newDisableCalendarDates: newDisableCalendarDates,
11378
10888
  });
10889
+ // Handle tooltip
11379
10890
  React__default.useEffect(function () {
11380
- if ((rangeContext &&
11381
- calendarRangeFrom &&
11382
- !startIsEqualOrBeforeRangeContextEnd) ||
11383
- (rangeContext &&
11384
- calendarRangeTo &&
11385
- !endIsEqualOrAfterRangeContextStart) ||
11386
- selectionOverlappingUnavailableDate) {
11387
- !!(setCalendarHasError && !calendarHasError) && setCalendarHasError(true);
11388
- }
11389
- });
11390
- };
11391
-
11392
- var useCalendarTooltips = function (_a) {
11393
- var showFeedback = _a.showFeedback;
11394
- return React__default.useEffect(function () {
11395
10891
  if (typeof document === 'undefined' || !showFeedback)
11396
10892
  return;
11397
10893
  // Children
@@ -11399,20 +10895,13 @@
11399
10895
  var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
11400
10896
  var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
11401
10897
  var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
11402
- var calendarTooltipCheckInOnly = document.querySelector('.will-calendar-tooltip-check-in-only');
11403
- var calendarTooltipCheckOutOnly = document.querySelector('.will-calendar-tooltip-check-out-only');
11404
10898
  // Parents
11405
10899
  var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
11406
10900
  var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
11407
10901
  var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
11408
10902
  var calendarOverlappingDate = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
11409
- var calendarCheckInOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-in-only)');
11410
- var calendarCheckOutOnly = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-out-only)');
11411
- // Append children to parents
11412
10903
  var tooltipClonesCheckIn = [];
11413
10904
  var tooltipClonesCheckOut = [];
11414
- var tooltipClonesCheckInOnly = [];
11415
- var tooltipClonesCheckOutOnly = [];
11416
10905
  var tooltipClonesSpinner = [];
11417
10906
  var tooltipClonesOverlappingDates = [];
11418
10907
  if (calendarTooltip && calendarButtons.length > 0) {
@@ -11429,26 +10918,13 @@
11429
10918
  tooltipClonesCheckOut.push(tooltipClone);
11430
10919
  });
11431
10920
  }
11432
- if (calendarTooltipCheckOutOnly && calendarCheckOutOnly.length > 0) {
11433
- calendarCheckOutOnly.forEach(function (element) {
11434
- var tooltipClone = calendarTooltipCheckOutOnly.cloneNode(true);
11435
- element.appendChild(tooltipClone);
11436
- tooltipClonesCheckOutOnly.push(tooltipClone);
11437
- });
11438
- }
11439
- if (calendarTooltipCheckInOnly && calendarCheckInOnly.length > 0) {
11440
- calendarCheckInOnly.forEach(function (element) {
11441
- var tooltipClone = calendarTooltipCheckInOnly.cloneNode(true);
11442
- element.appendChild(tooltipClone);
11443
- tooltipClonesCheckInOnly.push(tooltipClone);
11444
- });
11445
- }
11446
10921
  if (loadingSpinner && calendarMonthContainer) {
11447
10922
  var tooltipClone = loadingSpinner.cloneNode(true);
11448
10923
  calendarMonthContainer.appendChild(tooltipClone);
11449
10924
  tooltipClonesSpinner.push(tooltipClone);
11450
10925
  }
11451
- if (calendarTooltipOverlappingDate && calendarOverlappingDate.length > 0) {
10926
+ if (calendarTooltipOverlappingDate &&
10927
+ calendarOverlappingDate.length > 0) {
11452
10928
  calendarOverlappingDate.forEach(function (element) {
11453
10929
  var tooltipClone = calendarTooltipOverlappingDate.cloneNode(true);
11454
10930
  element.appendChild(tooltipClone);
@@ -11460,15 +10936,16 @@
11460
10936
  tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
11461
10937
  tooltipClonesSpinner.forEach(function (clone) { return clone.remove(); });
11462
10938
  tooltipClonesOverlappingDates.forEach(function (clone) { return clone.remove(); });
11463
- tooltipClonesCheckInOnly.forEach(function (clone) { return clone.remove(); });
11464
- tooltipClonesCheckOutOnly.forEach(function (clone) { return clone.remove(); });
11465
10939
  };
11466
- });
11467
- };
11468
-
11469
- var useCalendarLoadingSpinner = function (_a) {
11470
- var loadingData = _a.loadingData;
11471
- return React__default.useEffect(function () {
10940
+ }, [
10941
+ calendarRange,
10942
+ updateCalendarMonthNavigation,
10943
+ overlappingDate,
10944
+ initialCalendarRange,
10945
+ updateCalendarDefaultMoth,
10946
+ ]);
10947
+ // Handle loading spinner
10948
+ React__default.useEffect(function () {
11472
10949
  if (typeof document === 'undefined')
11473
10950
  return;
11474
10951
  var loadingSpinner = document.querySelector('.will-filter-bar-calendar .rdp-months .will-calendar-spinner');
@@ -11480,191 +10957,170 @@
11480
10957
  if (loadingSpinner)
11481
10958
  loadingSpinner.style.display = 'none';
11482
10959
  }
11483
- });
11484
- };
11485
-
11486
- var useUpdateDisabledDates = function (_a) {
11487
- var disableCalendarDates = _a.disableCalendarDates, calendarRange = _a.calendarRange, updateCalendarMonthNavigation = _a.updateCalendarMonthNavigation, updateCalendarDefaultMonth = _a.updateCalendarDefaultMonth;
11488
- var _b = __read(React__default.useState(undefined), 2), overlappingDate = _b[0], setOverlappingDate = _b[1];
11489
- var _c = __read(React__default.useState([]), 2), lastPossibleCheckout = _c[0], setLatsPossibleCheckout = _c[1];
11490
- var newDisableCalendarDates = React__default.useMemo(function () {
11491
- if (disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.availableDates) {
11492
- var dateFormat_1 = 'dd-MM-yyyy';
11493
- var disabledDates = disableCalendarDates.disabledDates;
11494
- var _a = (disabledDates || []).reduce(function (acc, dateRange) {
11495
- var _a, _b;
11496
- var formattedFromDate = format(dateRange.from, dateFormat_1);
11497
- var formattedToDate = format(dateRange.to, dateFormat_1);
11498
- var hasTwoOverlappingDates = (_a = disableCalendarDates.availableDates) === null || _a === void 0 ? void 0 : _a.some(function (item) {
11499
- return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
11500
- format(item.lastCheckOut, dateFormat_1) === formattedToDate;
11501
- });
11502
- var hasOneOverlappingDate = (_b = disableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.some(function (item) {
11503
- return format(item.lastCheckOut, dateFormat_1) === formattedFromDate &&
11504
- format(item.lastCheckOut, dateFormat_1) !== formattedToDate;
11505
- });
11506
- if (hasTwoOverlappingDates) {
11507
- acc.newOverlappingDates.push(dateRange);
11508
- }
11509
- else if (hasOneOverlappingDate) {
11510
- acc.newOverlappingDates.push(dateRange);
11511
- acc.updatedDisabledDates.push(__assign$2(__assign$2({}, dateRange), { from: addDays(dateRange.from, 1) }));
11512
- }
11513
- else {
11514
- acc.updatedDisabledDates.push(dateRange);
11515
- }
11516
- return acc;
11517
- }, { updatedDisabledDates: [], newOverlappingDates: [] }), updatedDisabledDates = _a.updatedDisabledDates, newOverlappingDates = _a.newOverlappingDates;
11518
- // Find last possible checkout ( disable all dates after the last possible checkout )
11519
- var lastPossibleCheckout_1 = disableCalendarDates.availableDates[disableCalendarDates.availableDates.length - 1].lastCheckOut;
11520
- if (lastPossibleCheckout_1) {
11521
- setLatsPossibleCheckout({ after: lastPossibleCheckout_1 });
11522
- }
11523
- // Extract overlapping dates ( dates that are only available for checkout )
11524
- if (newOverlappingDates.length) {
11525
- setOverlappingDate(__spreadArray$1([], __read(newOverlappingDates), false));
11526
- }
11527
- var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
11528
- return newDisableCalendarDates_1;
11529
- }
11530
- return disableCalendarDates;
11531
- }, [
11532
- disableCalendarDates,
11533
- calendarRange,
11534
- updateCalendarMonthNavigation,
11535
- updateCalendarDefaultMonth,
11536
- ]);
11537
- return { newDisableCalendarDates: newDisableCalendarDates, overlappingDate: overlappingDate, lastPossibleCheckout: lastPossibleCheckout };
11538
- };
11539
-
11540
- 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}";
11541
- styleInject(css_248z$9);
11542
-
11543
- 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";
11544
- styleInject(css_248z$8);
11545
-
11546
- var Calendar = React__default.forwardRef(function (_a, ref) {
11547
- var _b, _c;
11548
- 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;
11549
- // Translations
11550
- var t = useTranslation('common').t;
11551
- var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
11552
- var today = startOfDay(new Date());
11553
- var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
11554
- var rangeContextStartDate = rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from;
11555
- // Handle initial disable dates including overlapping availableDates.lastCheckOut and disabledDates.start
11556
- var _d = useUpdateDisabledDates({
11557
- disableCalendarDates: disableCalendarDates,
11558
- calendarRange: calendarRange,
11559
- updateCalendarMonthNavigation: updateCalendarMonthNavigation,
11560
- updateCalendarDefaultMonth: updateCalendarDefaultMonth,
11561
- }), newDisableCalendarDates = _d.newDisableCalendarDates, overlappingDate = _d.overlappingDate, lastPossibleCheckout = _d.lastPossibleCheckout;
11562
- // Handle disable dates by page
11563
- var disabledDatesByPage$1 = disabledDatesByPage({
11564
- today: today,
11565
- selectedPath: selectedPath,
11566
- newDisableCalendarDates: newDisableCalendarDates,
11567
- });
11568
- // Handle tooltip
11569
- useCalendarTooltips({
11570
- showFeedback: showFeedback,
11571
- });
11572
- // Handle loading spinner
11573
- useCalendarLoadingSpinner({
11574
- loadingData: loadingData,
11575
- });
11576
- // Handle the date selection and availability for selection logic.
11577
- var handleOnSelect = function (range) {
11578
- setCalendarHasError && calendarHasError && setCalendarHasError(false);
11579
- calendarSelectionRules({
11580
- range: range,
11581
- newDisableCalendarDates: newDisableCalendarDates,
11582
- setCalendarRange: setCalendarRange,
11583
- setDisabledDates: setDisabledDates,
11584
- calendarRange: calendarRange,
11585
- overlappingDate: overlappingDate,
11586
- setCalendarHasError: setCalendarHasError,
11587
- rangeContext: rangeContext,
11588
- });
11589
- setUpdatedForSubmit && setUpdatedForSubmit(true);
11590
- };
11591
- // Handle disabled dates for range context
11592
- var _e = handleRangeContextDisabledDates({
11593
- rangeContext: rangeContext,
11594
- availableDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates,
11595
- calendarRange: calendarRange,
11596
- }), findFirstPossibleRangeContextCheckIn = _e.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _e.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _e.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _e.lastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _e.currentSelectionLastCheckoutDate;
11597
- // Handle check for continuous selection in the range context
11598
- checkForContinuousSelection({
11599
- setCalendarHasError: setCalendarHasError,
11600
- rangeContext: rangeContext,
11601
- calendarRange: calendarRange,
11602
- calendarHasError: calendarHasError,
11603
- disabledDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates,
11604
- });
10960
+ }, [loadingData, updateCalendarMonthNavigation, updateCalendarDefaultMoth]);
11605
10961
  return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
11606
10962
  React__default.createElement("div", { className: "will-calendar-filter-container" },
11607
- 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) ||
10963
+ React__default.createElement(DayPicker, { key: updateCalendarDefaultMoth, id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) {
10964
+ return handleSelectedCheckIn({
10965
+ range: range,
10966
+ newDisableCalendarDates: newDisableCalendarDates,
10967
+ setCalendarRange: setCalendarRange,
10968
+ setDisabledDates: setDisabledDates,
10969
+ calendarRange: calendarRange,
10970
+ overlappingDate: overlappingDate,
10971
+ });
10972
+ }, captionLayout: "dropdown-buttons", defaultMonth: (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) ||
11608
10973
  selectedStartDate ||
11609
- rangeContextStartDate ||
11610
10974
  (((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
11611
10975
  ? newDisableCalendarDates.disabledDates[0].from
11612
- : today), disabled: disabledDatesByPage$1.length
11613
- ? disabledDatesByPage$1
10976
+ : today), disabled: disabledDatesByPage.length
10977
+ ? disabledDatesByPage
11614
10978
  : (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
11615
- ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11616
- lastPossibleCheckout && lastPossibleCheckout
11617
- ], __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)
11618
- ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11619
- lastPossibleCheckout && lastPossibleCheckout
11620
- ], __read(newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [], fromMonth: today, onMonthChange: function (val) {
10979
+ ? disabledDates
10980
+ : (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [], fromMonth: today, onMonthChange: function (val) {
11621
10981
  requestDates && setUpdateCalendarMonthNavigation
11622
10982
  ? (requestDates(val),
11623
10983
  setUpdateCalendarMonthNavigation(function (prev) { return !prev; }))
11624
10984
  : null;
11625
- }, classNames: {
11626
- day_range_start: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) ? 'rdp-day_range_start' : '',
11627
- day_range_end: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) ? 'rdp-day_range_end' : '',
11628
10985
  }, modifiersClassNames: {
11629
10986
  today: 'my-today',
11630
10987
  booked: 'booked',
11631
10988
  disabledAfterCheckIn: 'disabled-after-check-in',
11632
10989
  overlappingDate: 'overlapping-date',
11633
- noActiveSelectionStart: 'no-active-selection-start',
11634
- noActiveSelectionMid: 'no-active-selection-mid',
11635
- noActiveSelectionEnd: 'no-active-selection-end',
11636
- checkoutOptionsMid: 'rdp-day_selected rdp-day_range_middle checkout-option',
11637
- checkInOnly: 'check-in-only',
11638
- checkOutOnly: 'check-out-only',
11639
- }, modifiers:
11640
- // This function handles conditions for applying the modifiersClassNames
11641
- handleCalendarModifiers({
11642
- newDisableCalendarDates: newDisableCalendarDates,
11643
- calendarRange: calendarRange,
11644
- disabledDatesByPage: disabledDatesByPage$1,
11645
- disabledDates: disabledDates,
11646
- overlappingDate: overlappingDate,
11647
- rangeContext: rangeContext,
11648
- lastPossibleCheckout: lastPossibleCheckout,
11649
- findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
11650
- findLastPossibleRangeContextCheckOut: findLastPossibleRangeContextCheckOut,
11651
- firstPossibleRangeContextCheckIn: firstPossibleRangeContextCheckIn,
11652
- lastPossibleRangeContextCheckOut: lastPossibleRangeContextCheckOut,
11653
- currentSelectionLastCheckoutDate: currentSelectionLastCheckoutDate,
11654
- }) }),
10990
+ noActiveSelectionStart: 'rdp-day_selected rdp-day_range_start no-active-selection ',
10991
+ noActiveSelectionMid: 'rdp-day_selected rdp-day_range_middle no-active-selection',
10992
+ noActiveSelectionEnd: 'rdp-day_selected rdp-day_range_end no-active-selection',
10993
+ }, modifiers: {
10994
+ booked: disabledDatesByPage.length
10995
+ ? disabledDatesByPage
10996
+ : (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
10997
+ ? disabledDates
10998
+ : (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [],
10999
+ disabledAfterCheckIn: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
11000
+ ? [{ after: calendarRange.from }]
11001
+ : [],
11002
+ noActiveSelectionStart: !calendarRange
11003
+ ? (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) || []
11004
+ : [],
11005
+ noActiveSelectionMid: !calendarRange &&
11006
+ (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) &&
11007
+ (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to)
11008
+ ? [
11009
+ {
11010
+ after: initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from,
11011
+ before: initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to,
11012
+ },
11013
+ ]
11014
+ : [],
11015
+ noActiveSelectionEnd: !calendarRange
11016
+ ? (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to) || []
11017
+ : [],
11018
+ overlappingDate: (!(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) &&
11019
+ (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.map(function (item) { return ({
11020
+ from: item.from,
11021
+ }); }))) ||
11022
+ [],
11023
+ } }),
11655
11024
  React__default.createElement("div", { className: 'will-calendar-tooltip' },
11656
11025
  React__default.createElement("div", null, t('noCheckIn'))),
11657
11026
  React__default.createElement("div", { className: 'will-calendar-tooltip-check-out' },
11658
11027
  React__default.createElement("div", null, t('noCheckOut'))),
11659
11028
  React__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
11660
11029
  React__default.createElement("div", null, t('checkOutOnly'))),
11661
- React__default.createElement("div", { className: 'will-calendar-tooltip-check-in-only' },
11662
- React__default.createElement("div", null, t('checkInOnly'))),
11663
- React__default.createElement("div", { className: 'will-calendar-tooltip-check-out-only' },
11664
- React__default.createElement("div", null, t('checkOutOnly'))),
11665
11030
  React__default.createElement("div", { className: 'will-calendar-spinner' },
11666
- React__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50, icon: "spinner" })))));
11031
+ React__default.createElement(SpinnerSVG, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50 })))));
11667
11032
  });
11033
+ /////////
11034
+ var handleSelectedCheckIn = function (_a) {
11035
+ var _b;
11036
+ var range = _a.range, newDisableCalendarDates = _a.newDisableCalendarDates, setCalendarRange = _a.setCalendarRange, setDisabledDates = _a.setDisabledDates, calendarRange = _a.calendarRange, overlappingDate = _a.overlappingDate;
11037
+ // Calendar dates select logic
11038
+ var dateFormat = 'dd-MM-yyyy';
11039
+ var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? format(range.from, dateFormat) : null;
11040
+ var rangeTo = (range === null || range === void 0 ? void 0 : range.to) ? format(range.to, dateFormat) : null;
11041
+ var calendarFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
11042
+ ? format(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from, dateFormat)
11043
+ : null;
11044
+ var overlappingDateFrom = (overlappingDate === null || overlappingDate === void 0 ? void 0 : overlappingDate.length)
11045
+ ? overlappingDate.find(function (date) { return format(date.from || 1, dateFormat) === rangeFrom; })
11046
+ : null;
11047
+ var checkOutRange = ((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates) === null || _b === void 0 ? void 0 : _b.length)
11048
+ ? newDisableCalendarDates.availableDates.find(function (checkInDate) {
11049
+ return format(checkInDate.checkIn || 1, dateFormat) ===
11050
+ format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
11051
+ })
11052
+ : null;
11053
+ if (rangeFrom && checkOutRange && setDisabledDates) {
11054
+ var checkIn = addDays(checkOutRange.checkIn, 1);
11055
+ var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
11056
+ var noDatesRange = format(checkIn, dateFormat) ===
11057
+ format(checkOutRange.firstCheckOut, dateFormat);
11058
+ setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [])), false), [
11059
+ {
11060
+ from: noDatesRange ? undefined : checkIn,
11061
+ to: noDatesRange ? undefined : firstCheckOut,
11062
+ },
11063
+ { after: checkOutRange === null || checkOutRange === void 0 ? void 0 : checkOutRange.lastCheckOut },
11064
+ ], false));
11065
+ }
11066
+ if ((rangeTo && rangeFrom && rangeFrom === rangeTo) ||
11067
+ (!rangeTo && !rangeFrom) ||
11068
+ overlappingDateFrom) {
11069
+ setCalendarRange(undefined);
11070
+ setDisabledDates && setDisabledDates([]);
11071
+ }
11072
+ else if (calendarFrom && rangeFrom && rangeFrom !== calendarFrom) {
11073
+ setCalendarRange({
11074
+ from: range === null || range === void 0 ? void 0 : range.from,
11075
+ to: undefined,
11076
+ });
11077
+ }
11078
+ else {
11079
+ setCalendarRange(range);
11080
+ }
11081
+ };
11082
+ var handleDisabledDatesByPage = function (_a) {
11083
+ var _b, _c, _d;
11084
+ var newDisableCalendarDates = _a.newDisableCalendarDates, selectedPath = _a.selectedPath, today = _a.today;
11085
+ var daysToOffsetCalendar = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) && selectedPath
11086
+ ? [
11087
+ (_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDatesByPage) === null || _b === void 0 ? void 0 : _b.find(function (item) { return selectedPath === item.page; }),
11088
+ ]
11089
+ : [];
11090
+ return daysToOffsetCalendar.length
11091
+ ? [
11092
+ {
11093
+ from: addDays(today, daysToOffsetCalendar.length && ((_c = daysToOffsetCalendar[0]) === null || _c === void 0 ? void 0 : _c.offset)
11094
+ ? (_d = daysToOffsetCalendar[0]) === null || _d === void 0 ? void 0 : _d.offset
11095
+ : -2),
11096
+ to: addDays(today, -100),
11097
+ },
11098
+ ]
11099
+ : [];
11100
+ };
11101
+
11102
+ var parseDates = function (_a) {
11103
+ var calendarRange = _a.calendarRange;
11104
+ return (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) && (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
11105
+ ? "".concat(format(calendarRange.from, 'dd.MM.yyyy'), " -\n").concat(format(calendarRange.to, 'dd.MM.yyyy'))
11106
+ : null;
11107
+ };
11108
+
11109
+ var parseDate = function (_a) {
11110
+ var date = _a.date, _b = _a.dateFormat, dateFormat = _b === void 0 ? 'dd.MM.yyyy' : _b, language = _a.language;
11111
+ return date
11112
+ ? format(date, dateFormat, { locale: language === 'en' ? enUS : fi })
11113
+ : null;
11114
+ };
11115
+
11116
+ var nightsCount = function (_a) {
11117
+ var calendarRange = _a.calendarRange;
11118
+ if (!calendarRange || !calendarRange.from || !calendarRange.to) {
11119
+ return undefined;
11120
+ }
11121
+ var diffDays = differenceInCalendarDays(calendarRange.to, calendarRange.from);
11122
+ return diffDays;
11123
+ };
11668
11124
 
11669
11125
  var parseGuests = function (_a) {
11670
11126
  var guestLabel = _a.guestLabel, guestsLabel = _a.guestsLabel, guestsPlaceholder = _a.guestsPlaceholder, ageCategoryCounts = _a.ageCategoryCounts, ageCategories = _a.ageCategories;
@@ -11800,7 +11256,7 @@
11800
11256
  finally { if (e_2) throw e_2.error; }
11801
11257
  }
11802
11258
  handleSelectedFilter(false);
11803
- if (onSubmit && selectedPath === Pages.ROOMS) {
11259
+ if (onSubmit && window.location.href.includes(selectedPath)) {
11804
11260
  onSubmit(newParams);
11805
11261
  }
11806
11262
  else {
@@ -11882,7 +11338,7 @@
11882
11338
  React__default.createElement("p", { className: "select-button-description ".concat(active ? 'active' : ''), dangerouslySetInnerHTML: { __html: description } })))));
11883
11339
  };
11884
11340
 
11885
- var css_248z$6 = ".will-filter-bar-tab-button {\n width: auto;\n height: auto;\n padding: 10px 20px;\n cursor: pointer;\n border: none;\n white-space: nowrap;\n font-size: 16px;\n display: flex;\n align-items: center;\n background-color: transparent;\n user-select: none;\n font-weight: 600;\n border-radius: 50px;\n }\n\n .will-filter-bar-tab-button.light {\n color: var(--will-white)\n }\n\n .will-filter-bar-tab-button.dark {\n color: var(--will-black)\n }\n\n .will-filter-bar-tab-button.light.active,\n .will-filter-bar-tab-button:hover {\n background-color: var(--will-transparent-white);\n }\n\n .will-filter-bar-tab-button.dark.active,\n .will-filter-bar-tab-button:hover {\n background-color: var(--will-transparent-lavender);\n }\n\n \n\n";
11341
+ var css_248z$6 = ".will-filter-bar-tab-button {\n width: auto;\n height: auto;\n padding: 10px 20px;\n cursor: pointer;\n border: none;\n white-space: nowrap;\n font-size: 16px;\n display: flex;\n align-items: center;\n background-color: transparent;\n user-select: none;\n font-weight: 600;\n border-radius: 50px;\n }\n\n .will-filter-bar-tab-button.light {\n color: var(--will-white)\n }\n\n .will-filter-bar-tab-button.dark {\n color: var(--will-black)\n }\n\n .will-filter-bar-tab-button.light.active,\n .will-filter-bar-tab-button:hover {\n background-color: var(--will-transparent-white);\n }\n\n .will-filter-bar-tab-button.dark.active,\n .will-filter-bar-tab-button:hover {\n background-color: var(--will-transparent-black);\n }\n\n \n\n";
11886
11342
  styleInject(css_248z$6);
11887
11343
 
11888
11344
  var TabButton = function (_a) {
@@ -12035,37 +11491,12 @@
12035
11491
  var REDIRECT_URL_FALLBACK = 'http://localhost:3000/';
12036
11492
 
12037
11493
  var useFilterCalendar = function (_a) {
12038
- var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar, noActiveSelection = _a.noActiveSelection, toggleCalendar = _a.toggleCalendar, outerRangeContext = _a.outerRangeContext, outerDisableCalendarDates = _a.outerDisableCalendarDates;
12039
- // State
11494
+ var onSubmit = _a.onSubmit, setToggleCalendar = _a.setToggleCalendar, noActiveSelection = _a.noActiveSelection, toggleCalendar = _a.toggleCalendar;
12040
11495
  var _b = __read(React__default.useState(), 2), calendarRange = _b[0], setCalendarRange = _b[1];
12041
- var _c = __read(React__default.useState(outerRangeContext), 2), rangeContext = _c[0], setRangeContext = _c[1];
12042
- var _d = __read(React__default.useState(), 2), initialCalendarRange = _d[0], setInitialCalendarRange = _d[1];
12043
- var _e = __read(React__default.useState([]), 2), disabledDates = _e[0], setDisabledDates = _e[1];
12044
- var _f = __read(React__default.useState(false), 2), updateCalendarMonthNavigation = _f[0], setUpdateCalendarMonthNavigation = _f[1];
12045
- var _g = __read(React__default.useState(0), 2), updateCalendarDefaultMonth = _g[0], setUpdateCalendarDefaultMonth = _g[1];
12046
- var _h = __read(React__default.useState(false), 2), calendarHasError = _h[0], setCalendarHasError = _h[1];
12047
- var _j = __read(React__default.useState(false), 2), updatedForSubmit = _j[0], setUpdatedForSubmit = _j[1];
12048
- var _k = __read(React__default.useState(), 2), disableCalendarDates = _k[0], setDisableCalendarDates = _k[1];
12049
- // Lifecycle
12050
- // Handle update component with new data
12051
- React__default.useEffect(function () {
12052
- var _a;
12053
- if (outerDisableCalendarDates === null || outerDisableCalendarDates === void 0 ? void 0 : outerDisableCalendarDates.availableDates) {
12054
- setDisableCalendarDates({
12055
- availableDates: __spreadArray$1([], __read(outerDisableCalendarDates.availableDates.sort(function (a, b) {
12056
- return compareAsc(a.checkIn, b.checkIn);
12057
- })), false),
12058
- disabledDates: outerDisableCalendarDates.disabledDates
12059
- ? __spreadArray$1([], __read(outerDisableCalendarDates.disabledDates.sort(function (a, b) {
12060
- return compareAsc(a.from, b.from);
12061
- })), false) : [],
12062
- });
12063
- }
12064
- if (disabledDates && !!((_a = outerDisableCalendarDates === null || outerDisableCalendarDates === void 0 ? void 0 : outerDisableCalendarDates.disabledDates) === null || _a === void 0 ? void 0 : _a.length)) {
12065
- setDisabledDates(__assign$2(__assign$2({}, disabledDates), outerDisableCalendarDates.disabledDates));
12066
- }
12067
- }, [outerDisableCalendarDates]);
12068
- // Handle Range Context initial selections
11496
+ var _c = __read(React__default.useState(), 2), initialCalendarRange = _c[0], setInitialCalendarRange = _c[1];
11497
+ var _d = __read(React__default.useState([]), 2), disabledDates = _d[0], setDisabledDates = _d[1];
11498
+ var _e = __read(React__default.useState(false), 2), updateCalendarMonthNavigation = _e[0], setUpdateCalendarMonthNavigation = _e[1];
11499
+ var _f = __read(React__default.useState(0), 2), updateCalendarDefaultMoth = _f[0], setUpdateCalendarDefaultMoth = _f[1];
12069
11500
  React__default.useEffect(function () {
12070
11501
  if (typeof window === 'undefined')
12071
11502
  return;
@@ -12075,17 +11506,11 @@
12075
11506
  if (startDateParam && endDateParam) {
12076
11507
  if (noActiveSelection) {
12077
11508
  handleClearDates();
12078
- setUpdateCalendarDefaultMonth(function (prev) { return prev + 1; });
12079
- setUpdatedForSubmit(false);
12080
- setRangeContext(outerRangeContext);
11509
+ setUpdateCalendarDefaultMoth(function (prev) { return prev + 1; });
12081
11510
  setInitialCalendarRange({
12082
11511
  from: new Date(startDateParam),
12083
11512
  to: new Date(endDateParam),
12084
11513
  });
12085
- setCalendarRange({
12086
- from: new Date(startDateParam),
12087
- to: new Date(endDateParam),
12088
- });
12089
11514
  }
12090
11515
  else {
12091
11516
  setCalendarRange({
@@ -12095,32 +11520,6 @@
12095
11520
  }
12096
11521
  }
12097
11522
  }, [toggleCalendar]);
12098
- // Handle submit dates
12099
- React__default.useEffect(function () {
12100
- var formatString = 'dd.MM.yyyy';
12101
- var initialRangeTo = (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to)
12102
- ? format(initialCalendarRange.to, formatString)
12103
- : null;
12104
- var initialRangeFrom = (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from)
12105
- ? format(initialCalendarRange.from, formatString)
12106
- : null;
12107
- var calendarRangeTo = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to)
12108
- ? format(calendarRange.to, formatString)
12109
- : null;
12110
- var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
12111
- ? format(calendarRange.from, formatString)
12112
- : null;
12113
- if (!!(calendarRangeTo && calendarRangeFrom && updatedForSubmit)) {
12114
- if (!!(calendarRangeTo !== initialRangeTo) ||
12115
- !!(calendarRangeFrom !== initialRangeFrom)) {
12116
- handleSubmit();
12117
- }
12118
- else {
12119
- setToggleCalendar(false);
12120
- }
12121
- }
12122
- }, [calendarRange]);
12123
- // Methods
12124
11523
  var handleSubmit = function () {
12125
11524
  setToggleCalendar(false);
12126
11525
  return onSubmit(calendarRange);
@@ -12128,8 +11527,6 @@
12128
11527
  var handleClearDates = function () {
12129
11528
  setDisabledDates([]);
12130
11529
  setCalendarRange(undefined);
12131
- setCalendarHasError(false);
12132
- setInitialCalendarRange(undefined);
12133
11530
  };
12134
11531
  return {
12135
11532
  handleSubmit: handleSubmit,
@@ -12140,59 +11537,16 @@
12140
11537
  calendarRange: calendarRange,
12141
11538
  disabledDates: disabledDates,
12142
11539
  updateCalendarMonthNavigation: updateCalendarMonthNavigation,
12143
- updateCalendarDefaultMonth: updateCalendarDefaultMonth,
12144
- calendarHasError: calendarHasError,
12145
- setCalendarHasError: setCalendarHasError,
12146
- setUpdatedForSubmit: setUpdatedForSubmit,
12147
- rangeContext: rangeContext,
12148
- disableCalendarDates: disableCalendarDates,
11540
+ updateCalendarDefaultMoth: updateCalendarDefaultMoth,
11541
+ initialCalendarRange: initialCalendarRange,
12149
11542
  };
12150
11543
  };
12151
11544
 
12152
- var Footer = function (_a) {
12153
- var calendarHasError = _a.calendarHasError, calendarRange = _a.calendarRange, handleClearDates = _a.handleClearDates, language = _a.language, palette = _a.palette;
12154
- var t = useTranslation().t;
12155
- reactResponsiveExports.useMediaQuery({ maxWidth: 600 });
12156
- var nights = nightsCount({
12157
- calendarRange: calendarRange,
12158
- });
12159
- return (React__default.createElement("div", { className: "will-calendar-footer-actions-wrapper" },
12160
- React__default.createElement("div", { className: "will-calendar-footer-dates" },
12161
- calendarHasError ? (React__default.createElement("div", { className: "will-calendar-footer-error" }, calendarHasError &&
12162
- renderCalendarErrorMessage({
12163
- palette: palette,
12164
- message: t("common:errors.calendarErrors.checkInAvailabilityError"),
12165
- }))) : (React__default.createElement("div", null,
12166
- React__default.createElement("span", null, parseDate({
12167
- date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from,
12168
- dateFormat: 'EEEEEE d.M.yyyy',
12169
- language: language,
12170
- }) || t('common:checkIn')),
12171
- React__default.createElement("span", { className: "will-calendar-footer-dates-separator" }, "-"),
12172
- React__default.createElement("span", null, parseDate({
12173
- date: calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to,
12174
- dateFormat: 'EEEEEE d.M.yyyy',
12175
- language: language,
12176
- }) || t('common:checkOut')))),
12177
- React__default.createElement("span", { className: "will-calendar-footer-booked" }, !calendarHasError && nights
12178
- ? "".concat(nights, " ").concat(t("common:".concat(nights === 1 ? 'night' : 'nights')))
12179
- : '')),
12180
- React__default.createElement("div", { className: "will-calendar-footer-actions" },
12181
- React__default.createElement(SubmitButton, { onClick: handleClearDates, disabled: !(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from), label: t("common:clearDates"), variant: "text" }))));
12182
- };
12183
- /////////
12184
- var renderCalendarErrorMessage = function (_a) {
12185
- var message = _a.message, palette = _a.palette;
12186
- return (React__default.createElement(React__default.Fragment, null,
12187
- React__default.createElement(IconsSvg, { fill: (palette === null || palette === void 0 ? void 0 : palette.error) || 'inherit', size: 25, icon: "warning" }),
12188
- React__default.createElement("span", null, message || '')));
12189
- };
12190
-
12191
- var css_248z = ".will-root .will-calendar-wrapper {\n box-shadow: var(--will-box-shadow-dark);\n border-radius: 20px;\n background-color: var(--will-white);\n position: absolute;\n top: 0;\n left: 0;\n \n}\n\n.will-root .will-calendar-wrapper .will-calendar-header,\n.will-root .will-calendar-wrapper .will-calendar-main,\n.will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px;\n}\n\n/* Header */\n\n.will-root .will-calendar-wrapper .will-calendar-header {\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid var(--will-grey);\n align-items: center;\n}\n\n/* Footer */\n\n.will-root .will-calendar-wrapper .will-calendar-footer {\n border-top: 1px solid var(--will-grey);\n}\n\n/* Footer actions */\n\n.will-root .will-calendar-wrapper .will-calendar-footer-actions-wrapper {\n display: flex;\n justify-content: space-between;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates > div {\n margin-bottom: 5px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates-separator {\n margin: 0 15px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n display: flex;\n min-height: 20.5px;\n margin-top: 10px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-error {\n display: flex;\n max-width: 80%;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-error span {\n display: inline-block;\n margin-left: 10px;\n}\n\n@media (max-width: 960px) {\n .will-root .will-calendar-wrapper {\n width: -webkit-fill-available;\n margin: 0 -6%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-header,\n .will-root .will-calendar-wrapper .will-calendar-main,\n .will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px 10px;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions-wrapper {\n flex-direction: column;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates {\n text-align: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n justify-content: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions {\n flex-direction: column;\n width: 100%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions button{\n width: 100%;\n margin-top: 10px;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-error {\n max-width: 100%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-error span {\n text-align: center;\n margin-left: 5px;\n }\n }\n\n.will-root .will-calendar-wrapper .will-calendar-header .will-filter-bar-close-button {\n position: initial;\n}";
11545
+ var css_248z = ".will-root .will-calendar-wrapper {\n box-shadow: var(--will-box-shadow-dark);\n border-radius: 20px;\n background-color: var(--will-white);\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-header,\n.will-root .will-calendar-wrapper .will-calendar-main,\n.will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px;\n}\n\n/* Header */\n\n.will-root .will-calendar-wrapper .will-calendar-header {\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid var(--will-grey);\n align-items: center;\n}\n\n/* Footer */\n\n.will-root .will-calendar-wrapper .will-calendar-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-top: 1px solid var(--will-grey);\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates > div {\n margin-bottom: 5px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates-separator {\n margin: 0 15px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n display: flex;\n min-height: 20.5px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-actions {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n\n\n@media (max-width: 960px) {\n .will-root .will-calendar-wrapper {\n width: -webkit-fill-available;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-header,\n .will-root .will-calendar-wrapper .will-calendar-main,\n .will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px 10px;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer {\n flex-direction: column;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates {\n margin-bottom: 12px;\n text-align: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n justify-content: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions {\n flex-direction: column;\n width: 100%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions button{\n width: 100%;\n }\n }\n\n/**/\n\n.will-root .will-calendar-wrapper .will-calendar-header .will-filter-bar-close-button {\n position: initial;\n}";
12192
11546
  styleInject(css_248z);
12193
11547
 
12194
11548
  function FilterCalendar(_a) {
12195
- var calendarOffset = _a.calendarOffset, language = _a.language, palette = _a.palette, onSubmit = _a.onSubmit, outerDisableCalendarDates = _a.disableCalendarDates, toggleCalendar = _a.toggleCalendar, loadingData = _a.loadingData, setToggleCalendar = _a.setToggleCalendar, requestDates = _a.requestDates, showFeedback = _a.showFeedback, noActiveSelection = _a.noActiveSelection, outerRangeContext = _a.rangeContext;
11549
+ 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;
12196
11550
  var themePalette = useTheme({ palette: palette });
12197
11551
  // Translations
12198
11552
  useUpdateTranslations({ language: language });
@@ -12202,23 +11556,42 @@
12202
11556
  setToggleCalendar: setToggleCalendar,
12203
11557
  noActiveSelection: noActiveSelection,
12204
11558
  toggleCalendar: toggleCalendar,
12205
- outerRangeContext: outerRangeContext,
12206
- outerDisableCalendarDates: outerDisableCalendarDates,
12207
- }), 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;
11559
+ }), handleSubmit = _b.handleSubmit, setCalendarRange = _b.setCalendarRange, handleClearDates = _b.handleClearDates, calendarRange = _b.calendarRange, disabledDates = _b.disabledDates, setDisabledDates = _b.setDisabledDates, updateCalendarMonthNavigation = _b.updateCalendarMonthNavigation, updateCalendarDefaultMoth = _b.updateCalendarDefaultMoth, setUpdateCalendarMonthNavigation = _b.setUpdateCalendarMonthNavigation, initialCalendarRange = _b.initialCalendarRange;
12208
11560
  // Display component after fully loaded
12209
11561
  useAwaitRender();
12210
11562
  // Handle close filter section
12211
11563
  var filtersRef = useCloseFilterSection({
12212
11564
  handleSelectedFilter: setToggleCalendar,
12213
11565
  }).filtersRef;
11566
+ var nights = nightsCount({
11567
+ calendarRange: calendarRange || initialCalendarRange,
11568
+ });
12214
11569
  return (React__default.createElement("div", { className: "will-root", style: themePalette }, toggleCalendar && (React__default.createElement("div", { className: "will-calendar-wrapper", ref: filtersRef },
12215
11570
  React__default.createElement("div", { className: "will-calendar-header" },
12216
11571
  React__default.createElement("h2", null, t('filterBar:calendar.title')),
12217
11572
  React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
12218
11573
  React__default.createElement("div", { className: "will-calendar-main" },
12219
- 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 })),
11574
+ 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, updateCalendarDefaultMoth: updateCalendarDefaultMoth, loadingData: loadingData, initialCalendarRange: initialCalendarRange, showFeedback: showFeedback, noActiveSelection: noActiveSelection, palette: palette })),
12220
11575
  React__default.createElement("div", { className: "will-calendar-footer" },
12221
- React__default.createElement(Footer, { calendarHasError: calendarHasError, calendarRange: calendarRange, handleClearDates: handleClearDates, language: language, palette: palette }))))));
11576
+ React__default.createElement("div", { className: "will-calendar-footer-dates" },
11577
+ React__default.createElement("div", null,
11578
+ React__default.createElement("span", null, parseDate({
11579
+ date: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) || (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from),
11580
+ dateFormat: 'EEEEEE d.M.yyyy',
11581
+ language: language,
11582
+ }) || t('common:checkIn')),
11583
+ React__default.createElement("span", { className: "will-calendar-footer-dates-separator" }, "-"),
11584
+ React__default.createElement("span", null, parseDate({
11585
+ date: (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) || (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.to),
11586
+ dateFormat: 'EEEEEE d.M.yyyy',
11587
+ language: language,
11588
+ }) || t('common:checkOut'))),
11589
+ React__default.createElement("span", { className: "will-calendar-footer-booked" }, nights
11590
+ ? "".concat(nights, " ").concat(t("common:".concat(nights === 1 ? 'night' : 'nights')))
11591
+ : '')),
11592
+ React__default.createElement("div", { className: "will-calendar-footer-actions" },
11593
+ React__default.createElement(SubmitButton, { onClick: handleClearDates, disabled: !(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from), label: t("common:clearDates") }),
11594
+ React__default.createElement(SubmitButton, { onClick: function () { return handleSubmit(); }, label: t("common:apply"), disabled: !(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) || !(calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.to) })))))));
12222
11595
  }
12223
11596
 
12224
11597
  exports.Button = Button$1;