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.esm.js +86 -26
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +86 -26
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +86 -26
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FilterCalendar/FilterCalendar.stories.tsx +50 -50
- package/src/components/FilterCalendar/FilterCalendar.tsx +1 -3
- package/src/components/FilterCalendar/hooks/useFilterCalendar.ts +16 -3
- package/src/core/components/calendar/Calendar.tsx +21 -6
- package/src/core/components/calendar/hooks/useUpdateDisabledDates.tsx +0 -4
- package/src/core/components/calendar/utils/calendarSelectionRules.tsx +3 -1
- package/src/core/components/calendar/utils/handleRangeContextDisabledDates.tsx +16 -11
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
|
|
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
|
|
11305
|
-
date.
|
|
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(
|
|
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
|
-
|
|
11325
|
-
?
|
|
11326
|
-
:
|
|
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
|
|
11580
|
+
var _e = useUpdateDisabledDates({
|
|
11534
11581
|
disableCalendarDates: disableCalendarDates,
|
|
11535
11582
|
calendarRange: calendarRange,
|
|
11536
11583
|
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11537
11584
|
updateCalendarDefaultMonth: updateCalendarDefaultMonth,
|
|
11538
|
-
}), newDisableCalendarDates =
|
|
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
|
|
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 =
|
|
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
|
-
(((
|
|
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) : ((
|
|
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(
|
|
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
|