willba-component-library 0.2.64 → 0.2.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -3610,6 +3610,53 @@ function min(dirtyDatesArray) {
3610
3610
  return result || new Date(NaN);
3611
3611
  }
3612
3612
 
3613
+ /**
3614
+ * @name compareAsc
3615
+ * @category Common Helpers
3616
+ * @summary Compare the two dates and return -1, 0 or 1.
3617
+ *
3618
+ * @description
3619
+ * Compare the two dates and return 1 if the first date is after the second,
3620
+ * -1 if the first date is before the second or 0 if dates are equal.
3621
+ *
3622
+ * @param {Date|Number} dateLeft - the first date to compare
3623
+ * @param {Date|Number} dateRight - the second date to compare
3624
+ * @returns {Number} the result of the comparison
3625
+ * @throws {TypeError} 2 arguments required
3626
+ *
3627
+ * @example
3628
+ * // Compare 11 February 1987 and 10 July 1989:
3629
+ * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))
3630
+ * //=> -1
3631
+ *
3632
+ * @example
3633
+ * // Sort the array of dates:
3634
+ * const result = [
3635
+ * new Date(1995, 6, 2),
3636
+ * new Date(1987, 1, 11),
3637
+ * new Date(1989, 6, 10)
3638
+ * ].sort(compareAsc)
3639
+ * //=> [
3640
+ * // Wed Feb 11 1987 00:00:00,
3641
+ * // Mon Jul 10 1989 00:00:00,
3642
+ * // Sun Jul 02 1995 00:00:00
3643
+ * // ]
3644
+ */
3645
+ function compareAsc(dirtyDateLeft, dirtyDateRight) {
3646
+ requiredArgs(2, arguments);
3647
+ var dateLeft = toDate(dirtyDateLeft);
3648
+ var dateRight = toDate(dirtyDateRight);
3649
+ var diff = dateLeft.getTime() - dateRight.getTime();
3650
+ if (diff < 0) {
3651
+ return -1;
3652
+ } else if (diff > 0) {
3653
+ return 1;
3654
+ // Return 0 if diff is 0; return NaN if diff is NaN
3655
+ } else {
3656
+ return diff;
3657
+ }
3658
+ }
3659
+
3613
3660
  /**
3614
3661
  * @name isSameDay
3615
3662
  * @category Day Helpers
@@ -11159,10 +11206,11 @@ var calendarSelectionRules = function (_a) {
11159
11206
  var disableFutureDates = function (_a) {
11160
11207
  var rangeFrom = _a.rangeFrom, checkOutRange = _a.checkOutRange, setDisabledDates = _a.setDisabledDates, newDisableCalendarDates = _a.newDisableCalendarDates;
11161
11208
  if (rangeFrom && checkOutRange && setDisabledDates) {
11162
- // Get and parse data
11209
+ // Get parse data
11163
11210
  var checkIn = addDays(checkOutRange.checkIn, 1);
11164
11211
  var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
11165
11212
  var noDatesRange = isEqual(checkIn, checkOutRange.firstCheckOut);
11213
+ console.log('test update', { newDisableCalendarDates: newDisableCalendarDates });
11166
11214
  setDisabledDates(__spreadArray$1(__spreadArray$1([], __read(((newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) || [])), false), [
11167
11215
  {
11168
11216
  from: noDatesRange ? undefined : checkIn,
@@ -11298,11 +11346,16 @@ var handleRangeContextDisabledDates = function (_a) {
11298
11346
  var findLastPossibleRangeContextCheckOut;
11299
11347
  var firstPossibleRangeContextCheckIn = [];
11300
11348
  var lastPossibleRangeContextCheckOut = [];
11349
+ // Parse data
11350
+ var rangeContextFrom = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from) && endOfDay(rangeContext.from);
11351
+ var rangeContextTo = (rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.to) && endOfDay(rangeContext.to);
11352
+ var calendarRangeFrom = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from) && endOfDay(calendarRange.from);
11301
11353
  if (rangeContext && (availableDates === null || availableDates === void 0 ? void 0 : availableDates.length)) {
11302
11354
  // Find the first possible check-in after the last date gap till the range context
11303
11355
  findFirstPossibleRangeContextCheckIn = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
11304
- return date.checkIn < rangeContext.from &&
11305
- date.lastCheckOut >= rangeContext.from;
11356
+ return rangeContextFrom &&
11357
+ endOfDay(date.checkIn) < rangeContextFrom &&
11358
+ endOfDay(date.lastCheckOut) >= rangeContextFrom;
11306
11359
  });
11307
11360
  if (findFirstPossibleRangeContextCheckIn === null || findFirstPossibleRangeContextCheckIn === void 0 ? void 0 : findFirstPossibleRangeContextCheckIn.checkIn) {
11308
11361
  firstPossibleRangeContextCheckIn.push({
@@ -11311,7 +11364,7 @@ var handleRangeContextDisabledDates = function (_a) {
11311
11364
  }
11312
11365
  // Find the last possible checkout before the first date gap till the range context
11313
11366
  findLastPossibleRangeContextCheckOut = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
11314
- return isEqual(rangeContext.to, date.checkIn);
11367
+ return rangeContextTo && isEqual(rangeContextTo, endOfDay(date.checkIn));
11315
11368
  });
11316
11369
  if (findLastPossibleRangeContextCheckOut === null || findLastPossibleRangeContextCheckOut === void 0 ? void 0 : findLastPossibleRangeContextCheckOut.checkIn) {
11317
11370
  lastPossibleRangeContextCheckOut.push({
@@ -11321,11 +11374,9 @@ var handleRangeContextDisabledDates = function (_a) {
11321
11374
  }
11322
11375
  // Get last possible check-out dates for current check-in
11323
11376
  var currentSelectionLastCheckoutDate = availableDates === null || availableDates === void 0 ? void 0 : availableDates.find(function (date) {
11324
- var calendarCheckIn = (calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from)
11325
- ? format(calendarRange.from, 'dd.MM.yyyy')
11326
- : null;
11327
- var itemCheckIn = format(date.checkIn, 'dd.MM.yyyy');
11328
- return calendarCheckIn ? itemCheckIn === calendarCheckIn : false;
11377
+ return calendarRangeFrom
11378
+ ? isEqual(endOfDay(date.checkIn), calendarRangeFrom)
11379
+ : false;
11329
11380
  });
11330
11381
  return {
11331
11382
  findFirstPossibleRangeContextCheckIn: findFirstPossibleRangeContextCheckIn,
@@ -11497,9 +11548,6 @@ var useUpdateDisabledDates = function (_a) {
11497
11548
  return __spreadArray$1(__spreadArray$1([], __read(prev), false), __read(newOverlappingDates_1), false);
11498
11549
  });
11499
11550
  }
11500
- if (newOverlappingDates_1.length) {
11501
- console.log(newOverlappingDates_1);
11502
- }
11503
11551
  var newDisableCalendarDates_1 = __assign$2(__assign$2({}, disableCalendarDates), { disabledDates: updatedDisabledDates });
11504
11552
  return newDisableCalendarDates_1;
11505
11553
  }
@@ -11520,7 +11568,7 @@ var css_248z$8 = ".will-calendar-filter-container {\n display: flex;\n justify
11520
11568
  styleInject(css_248z$8);
11521
11569
 
11522
11570
  var Calendar = React__default.forwardRef(function (_a, ref) {
11523
- var _b, _c;
11571
+ var _b, _c, _d;
11524
11572
  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;
11525
11573
  // Translations
11526
11574
  var t = useTranslation('common').t;
@@ -11528,15 +11576,13 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11528
11576
  var today = startOfDay(new Date());
11529
11577
  var selectedStartDate = calendarRange === null || calendarRange === void 0 ? void 0 : calendarRange.from;
11530
11578
  var rangeContextStartDate = rangeContext === null || rangeContext === void 0 ? void 0 : rangeContext.from;
11531
- console.log({ disableCalendarDates: disableCalendarDates });
11532
11579
  // Handle initial disable dates including overlapping availableDates.lastCheckOut and disabledDates.start
11533
- var _d = useUpdateDisabledDates({
11580
+ var _e = useUpdateDisabledDates({
11534
11581
  disableCalendarDates: disableCalendarDates,
11535
11582
  calendarRange: calendarRange,
11536
11583
  updateCalendarMonthNavigation: updateCalendarMonthNavigation,
11537
11584
  updateCalendarDefaultMonth: updateCalendarDefaultMonth,
11538
- }), newDisableCalendarDates = _d.newDisableCalendarDates, overlappingDate = _d.overlappingDate, lastPossibleCheckout = _d.lastPossibleCheckout;
11539
- console.log({ newDisableCalendarDates: newDisableCalendarDates });
11585
+ }), newDisableCalendarDates = _e.newDisableCalendarDates, overlappingDate = _e.overlappingDate, lastPossibleCheckout = _e.lastPossibleCheckout;
11540
11586
  // Handle disable dates by page
11541
11587
  var disabledDatesByPage$1 = disabledDatesByPage({
11542
11588
  today: today,
@@ -11566,13 +11612,12 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11566
11612
  });
11567
11613
  setUpdatedForSubmit && setUpdatedForSubmit(true);
11568
11614
  };
11569
- console.log({ disabledDates: disabledDates });
11570
11615
  // Handle disabled dates for range context
11571
- var _e = handleRangeContextDisabledDates({
11616
+ var _f = handleRangeContextDisabledDates({
11572
11617
  rangeContext: rangeContext,
11573
11618
  availableDates: newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.availableDates,
11574
11619
  calendarRange: calendarRange,
11575
- }), findFirstPossibleRangeContextCheckIn = _e.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _e.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _e.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _e.lastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _e.currentSelectionLastCheckoutDate;
11620
+ }), findFirstPossibleRangeContextCheckIn = _f.findFirstPossibleRangeContextCheckIn, findLastPossibleRangeContextCheckOut = _f.findLastPossibleRangeContextCheckOut, firstPossibleRangeContextCheckIn = _f.firstPossibleRangeContextCheckIn, lastPossibleRangeContextCheckOut = _f.lastPossibleRangeContextCheckOut, currentSelectionLastCheckoutDate = _f.currentSelectionLastCheckoutDate;
11576
11621
  // Handle check for continuous selection in the range context
11577
11622
  checkForContinuousSelection({
11578
11623
  setCalendarHasError: setCalendarHasError,
@@ -11580,19 +11625,28 @@ var Calendar = React__default.forwardRef(function (_a, ref) {
11580
11625
  calendarRange: calendarRange,
11581
11626
  calendarHasError: calendarHasError,
11582
11627
  });
11628
+ console.log('test', disabledDatesByPage$1.length
11629
+ ? disabledDatesByPage$1
11630
+ : (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
11631
+ ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11632
+ lastPossibleCheckout && lastPossibleCheckout
11633
+ ], __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)
11634
+ ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11635
+ lastPossibleCheckout && lastPossibleCheckout
11636
+ ], __read(newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : []);
11583
11637
  return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
11584
11638
  React__default.createElement("div", { className: "will-calendar-filter-container" },
11585
11639
  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) ||
11586
11640
  selectedStartDate ||
11587
11641
  rangeContextStartDate ||
11588
- (((_b = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
11642
+ (((_c = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _c === void 0 ? void 0 : _c.length)
11589
11643
  ? newDisableCalendarDates.disabledDates[0].from
11590
11644
  : today), disabled: disabledDatesByPage$1.length
11591
11645
  ? disabledDatesByPage$1
11592
11646
  : (disabledDates === null || disabledDates === void 0 ? void 0 : disabledDates.length)
11593
11647
  ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11594
11648
  lastPossibleCheckout && lastPossibleCheckout
11595
- ], __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)
11649
+ ], __read(disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : ((_d = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.disabledDates) === null || _d === void 0 ? void 0 : _d.length)
11596
11650
  ? __spreadArray$1(__spreadArray$1(__spreadArray$1([
11597
11651
  lastPossibleCheckout && lastPossibleCheckout
11598
11652
  ], __read(newDisableCalendarDates.disabledDates), false), __read(firstPossibleRangeContextCheckIn), false), __read(lastPossibleRangeContextCheckOut), false) : [], fromMonth: today, onMonthChange: function (val) {
@@ -12027,8 +12081,16 @@ var useFilterCalendar = function (_a) {
12027
12081
  // Lifecycle
12028
12082
  // Handle update component with new data
12029
12083
  React__default.useEffect(function () {
12030
- if (outerDisableCalendarDates) {
12031
- setDisableCalendarDates(outerDisableCalendarDates);
12084
+ if (outerDisableCalendarDates === null || outerDisableCalendarDates === void 0 ? void 0 : outerDisableCalendarDates.availableDates) {
12085
+ setDisableCalendarDates({
12086
+ availableDates: __spreadArray$1([], __read(outerDisableCalendarDates.availableDates.sort(function (a, b) {
12087
+ return compareAsc(a.checkIn, b.checkIn);
12088
+ })), false),
12089
+ disabledDates: outerDisableCalendarDates.disabledDates
12090
+ ? __spreadArray$1([], __read(outerDisableCalendarDates.disabledDates.sort(function (a, b) {
12091
+ return compareAsc(a.from, b.from);
12092
+ })), false) : [],
12093
+ });
12032
12094
  }
12033
12095
  }, [outerDisableCalendarDates]);
12034
12096
  // Handle Range Context initial selections
@@ -12125,7 +12187,6 @@ function FilterCalendar(_a) {
12125
12187
  useUpdateTranslations({ language: language });
12126
12188
  var t = useTranslation().t;
12127
12189
  var isMobile = reactResponsiveExports.useMediaQuery({ maxWidth: 690 });
12128
- console.log('1', { outerDisableCalendarDates: outerDisableCalendarDates });
12129
12190
  var _b = useFilterCalendar({
12130
12191
  onSubmit: onSubmit,
12131
12192
  setToggleCalendar: setToggleCalendar,
@@ -12134,7 +12195,6 @@ function FilterCalendar(_a) {
12134
12195
  outerRangeContext: outerRangeContext,
12135
12196
  outerDisableCalendarDates: outerDisableCalendarDates,
12136
12197
  }), 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;
12137
- console.log('1', { disableCalendarDates: disableCalendarDates });
12138
12198
  // Display component after fully loaded
12139
12199
  useAwaitRender();
12140
12200
  // Handle close filter section