willba-component-library 0.2.53 → 0.2.54
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/components/FilterCalendar/hooks/useFilterCalendar.d.ts +2 -0
- package/lib/core/components/calendar/CalendarTypes.d.ts +5 -0
- package/lib/core/utils/handleOverlappingDates.d.ts +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.esm.js +69 -10
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +69 -10
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +69 -10
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FilterBar/hooks/useFilterBar.tsx +1 -1
- package/src/components/FilterCalendar/FilterCalendar.css +4 -1
- package/src/components/FilterCalendar/FilterCalendar.stories.tsx +4 -0
- package/src/components/FilterCalendar/FilterCalendar.tsx +9 -2
- package/src/components/FilterCalendar/hooks/useFilterCalendar.ts +4 -0
- package/src/core/components/calendar/Calendar.tsx +44 -1
- package/src/core/components/calendar/CalendarTypes.ts +2 -0
- package/src/core/utils/handleOverlappingDates.tsx +3 -0
package/lib/index.umd.js
CHANGED
|
@@ -6312,6 +6312,34 @@
|
|
|
6312
6312
|
return date.getTime() < dateToCompare.getTime();
|
|
6313
6313
|
}
|
|
6314
6314
|
|
|
6315
|
+
/**
|
|
6316
|
+
* @name isEqual
|
|
6317
|
+
* @category Common Helpers
|
|
6318
|
+
* @summary Are the given dates equal?
|
|
6319
|
+
*
|
|
6320
|
+
* @description
|
|
6321
|
+
* Are the given dates equal?
|
|
6322
|
+
*
|
|
6323
|
+
* @param {Date|Number} dateLeft - the first date to compare
|
|
6324
|
+
* @param {Date|Number} dateRight - the second date to compare
|
|
6325
|
+
* @returns {Boolean} the dates are equal
|
|
6326
|
+
* @throws {TypeError} 2 arguments required
|
|
6327
|
+
*
|
|
6328
|
+
* @example
|
|
6329
|
+
* // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?
|
|
6330
|
+
* const result = isEqual(
|
|
6331
|
+
* new Date(2014, 6, 2, 6, 30, 45, 0),
|
|
6332
|
+
* new Date(2014, 6, 2, 6, 30, 45, 500)
|
|
6333
|
+
* )
|
|
6334
|
+
* //=> false
|
|
6335
|
+
*/
|
|
6336
|
+
function isEqual(dirtyLeftDate, dirtyRightDate) {
|
|
6337
|
+
requiredArgs(2, arguments);
|
|
6338
|
+
var dateLeft = toDate(dirtyLeftDate);
|
|
6339
|
+
var dateRight = toDate(dirtyRightDate);
|
|
6340
|
+
return dateLeft.getTime() === dateRight.getTime();
|
|
6341
|
+
}
|
|
6342
|
+
|
|
6315
6343
|
/**
|
|
6316
6344
|
* @name isSameMonth
|
|
6317
6345
|
* @category Month Helpers
|
|
@@ -10827,7 +10855,7 @@
|
|
|
10827
10855
|
|
|
10828
10856
|
var Calendar = React__default.forwardRef(function (_a, ref) {
|
|
10829
10857
|
var _b;
|
|
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;
|
|
10858
|
+
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, setOverlappingDates = _a.setOverlappingDates;
|
|
10831
10859
|
// Translations
|
|
10832
10860
|
var t = useTranslation('common').t;
|
|
10833
10861
|
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
@@ -10968,6 +10996,7 @@
|
|
|
10968
10996
|
setDisabledDates: setDisabledDates,
|
|
10969
10997
|
calendarRange: calendarRange,
|
|
10970
10998
|
overlappingDate: overlappingDate,
|
|
10999
|
+
setOverlappingDates: setOverlappingDates,
|
|
10971
11000
|
});
|
|
10972
11001
|
}, captionLayout: "dropdown-buttons", defaultMonth: (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) ||
|
|
10973
11002
|
selectedStartDate ||
|
|
@@ -11032,8 +11061,8 @@
|
|
|
11032
11061
|
});
|
|
11033
11062
|
/////////
|
|
11034
11063
|
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;
|
|
11064
|
+
var _b, _c, _d;
|
|
11065
|
+
var range = _a.range, newDisableCalendarDates = _a.newDisableCalendarDates, setCalendarRange = _a.setCalendarRange, setDisabledDates = _a.setDisabledDates, calendarRange = _a.calendarRange, overlappingDate = _a.overlappingDate, setOverlappingDates = _a.setOverlappingDates;
|
|
11037
11066
|
// Calendar dates select logic
|
|
11038
11067
|
var dateFormat = 'dd-MM-yyyy';
|
|
11039
11068
|
var rangeFrom = (range === null || range === void 0 ? void 0 : range.from) ? format(range.from, dateFormat) : null;
|
|
@@ -11050,6 +11079,25 @@
|
|
|
11050
11079
|
format((range === null || range === void 0 ? void 0 : range.from) || 1, dateFormat);
|
|
11051
11080
|
})
|
|
11052
11081
|
: null;
|
|
11082
|
+
// Case: Set the calendar range only if it overlaps with the previously selected dates.
|
|
11083
|
+
// The selection must remain continuous, meaning no gaps between days are allowed.
|
|
11084
|
+
// Whether selecting forwards or backwards from the initially chosen dates,
|
|
11085
|
+
// the new range must be directly adjacent to or overlap with the current selection.
|
|
11086
|
+
var selectedDates = (newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) || null;
|
|
11087
|
+
var rowRangeFrom = range === null || range === void 0 ? void 0 : range.from;
|
|
11088
|
+
var rowRangeTo = range === null || range === void 0 ? void 0 : range.to;
|
|
11089
|
+
var selectedDatesFrom = ((_c = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) === null || _c === void 0 ? void 0 : _c.from) || null;
|
|
11090
|
+
var selectedDatesTo = ((_d = newDisableCalendarDates === null || newDisableCalendarDates === void 0 ? void 0 : newDisableCalendarDates.selectedDates) === null || _d === void 0 ? void 0 : _d.to) || null;
|
|
11091
|
+
// Checking if rowRangeFrom is equal to or before selectedDatesTo
|
|
11092
|
+
var startIsEqualOrBeforeSelectedEnd = rowRangeFrom && selectedDatesFrom && selectedDatesTo
|
|
11093
|
+
? isBefore(startOfDay(rowRangeFrom), startOfDay(selectedDatesTo)) ||
|
|
11094
|
+
isEqual(startOfDay(rowRangeFrom), startOfDay(selectedDatesTo))
|
|
11095
|
+
: null;
|
|
11096
|
+
// Checking if rowRangeTo is equal to or after selectedDatesFrom
|
|
11097
|
+
var endIsEqualOrAfterSelectedStart = rowRangeTo && selectedDatesFrom && selectedDatesTo
|
|
11098
|
+
? isAfter(startOfDay(rowRangeTo), startOfDay(selectedDatesFrom)) ||
|
|
11099
|
+
isEqual(startOfDay(rowRangeTo), startOfDay(selectedDatesFrom))
|
|
11100
|
+
: null;
|
|
11053
11101
|
if (rangeFrom && checkOutRange && setDisabledDates) {
|
|
11054
11102
|
var checkIn = addDays(checkOutRange.checkIn, 1);
|
|
11055
11103
|
var firstCheckOut = addDays(checkOutRange.firstCheckOut, -1);
|
|
@@ -11063,7 +11111,13 @@
|
|
|
11063
11111
|
{ after: checkOutRange === null || checkOutRange === void 0 ? void 0 : checkOutRange.lastCheckOut },
|
|
11064
11112
|
], false));
|
|
11065
11113
|
}
|
|
11066
|
-
|
|
11114
|
+
setOverlappingDates(false);
|
|
11115
|
+
if ((selectedDates && !startIsEqualOrBeforeSelectedEnd) ||
|
|
11116
|
+
(selectedDates && (range === null || range === void 0 ? void 0 : range.to) && !endIsEqualOrAfterSelectedStart)) {
|
|
11117
|
+
setCalendarRange(undefined);
|
|
11118
|
+
setOverlappingDates(true);
|
|
11119
|
+
}
|
|
11120
|
+
else if ((rangeTo && rangeFrom && rangeFrom === rangeTo) ||
|
|
11067
11121
|
(!rangeTo && !rangeFrom) ||
|
|
11068
11122
|
overlappingDateFrom) {
|
|
11069
11123
|
setCalendarRange(undefined);
|
|
@@ -11256,7 +11310,7 @@
|
|
|
11256
11310
|
finally { if (e_2) throw e_2.error; }
|
|
11257
11311
|
}
|
|
11258
11312
|
handleSelectedFilter(false);
|
|
11259
|
-
if (onSubmit) {
|
|
11313
|
+
if (onSubmit && selectedPath === Pages.ROOMS) {
|
|
11260
11314
|
onSubmit(newParams);
|
|
11261
11315
|
}
|
|
11262
11316
|
else {
|
|
@@ -11497,6 +11551,7 @@
|
|
|
11497
11551
|
var _d = __read(React__default.useState([]), 2), disabledDates = _d[0], setDisabledDates = _d[1];
|
|
11498
11552
|
var _e = __read(React__default.useState(false), 2), updateCalendarMonthNavigation = _e[0], setUpdateCalendarMonthNavigation = _e[1];
|
|
11499
11553
|
var _f = __read(React__default.useState(0), 2), updateCalendarDefaultMoth = _f[0], setUpdateCalendarDefaultMoth = _f[1];
|
|
11554
|
+
var _g = __read(React__default.useState(false), 2), overlappingDates = _g[0], setOverlappingDates = _g[1];
|
|
11500
11555
|
React__default.useEffect(function () {
|
|
11501
11556
|
if (typeof window === 'undefined')
|
|
11502
11557
|
return;
|
|
@@ -11539,10 +11594,12 @@
|
|
|
11539
11594
|
updateCalendarMonthNavigation: updateCalendarMonthNavigation,
|
|
11540
11595
|
updateCalendarDefaultMoth: updateCalendarDefaultMoth,
|
|
11541
11596
|
initialCalendarRange: initialCalendarRange,
|
|
11597
|
+
overlappingDates: overlappingDates,
|
|
11598
|
+
setOverlappingDates: setOverlappingDates,
|
|
11542
11599
|
};
|
|
11543
11600
|
};
|
|
11544
11601
|
|
|
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
|
|
11602
|
+
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 border-bottom: 1px solid var(--will-grey);\n}\n\n.will-root .will-calendar-wrapper .will-calendar-header-row {\n display: flex;\n justify-content: space-between;\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}";
|
|
11546
11603
|
styleInject(css_248z);
|
|
11547
11604
|
|
|
11548
11605
|
function FilterCalendar(_a) {
|
|
@@ -11556,7 +11613,7 @@
|
|
|
11556
11613
|
setToggleCalendar: setToggleCalendar,
|
|
11557
11614
|
noActiveSelection: noActiveSelection,
|
|
11558
11615
|
toggleCalendar: toggleCalendar,
|
|
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;
|
|
11616
|
+
}), 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, overlappingDates = _b.overlappingDates, setOverlappingDates = _b.setOverlappingDates;
|
|
11560
11617
|
// Display component after fully loaded
|
|
11561
11618
|
useAwaitRender();
|
|
11562
11619
|
// Handle close filter section
|
|
@@ -11568,10 +11625,12 @@
|
|
|
11568
11625
|
});
|
|
11569
11626
|
return (React__default.createElement("div", { className: "will-root", style: themePalette }, toggleCalendar && (React__default.createElement("div", { className: "will-calendar-wrapper", ref: filtersRef },
|
|
11570
11627
|
React__default.createElement("div", { className: "will-calendar-header" },
|
|
11571
|
-
React__default.createElement("
|
|
11572
|
-
|
|
11628
|
+
React__default.createElement("div", { className: "will-calendar-header-row" },
|
|
11629
|
+
React__default.createElement("h2", null, t('filterBar:calendar.title')),
|
|
11630
|
+
React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
11631
|
+
overlappingDates && React__default.createElement("div", null, "Chose other dates")),
|
|
11573
11632
|
React__default.createElement("div", { className: "will-calendar-main" },
|
|
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 })),
|
|
11633
|
+
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, setOverlappingDates: setOverlappingDates })),
|
|
11575
11634
|
React__default.createElement("div", { className: "will-calendar-footer" },
|
|
11576
11635
|
React__default.createElement("div", { className: "will-calendar-footer-dates" },
|
|
11577
11636
|
React__default.createElement("div", null,
|