UEA-PRODEM
This commit is contained in:
+22
-4
@@ -14,15 +14,33 @@ const rangeIncludesDate_js_1 = require("../utils/rangeIncludesDate.js");
|
||||
* range, and a function to check if a date is within the range.
|
||||
*/
|
||||
function useRange(props, dateLib) {
|
||||
const { disabled, excludeDisabled, selected: initiallySelected, required, onSelect, } = props;
|
||||
const { disabled, excludeDisabled, resetOnSelect, selected: initiallySelected, required, onSelect, } = props;
|
||||
const [internallySelected, setSelected] = (0, useControlledValue_js_1.useControlledValue)(initiallySelected, onSelect ? initiallySelected : undefined);
|
||||
const selected = !onSelect ? internallySelected : initiallySelected;
|
||||
const isSelected = (date) => selected && (0, rangeIncludesDate_js_1.rangeIncludesDate)(selected, date, false, dateLib);
|
||||
const select = (triggerDate, modifiers, e) => {
|
||||
const { min, max } = props;
|
||||
const newRange = triggerDate
|
||||
? (0, index_js_1.addToRange)(triggerDate, selected, min, max, required, dateLib)
|
||||
: undefined;
|
||||
let newRange;
|
||||
if (triggerDate) {
|
||||
const selectedFrom = selected?.from;
|
||||
const selectedTo = selected?.to;
|
||||
const hasFullRange = !!selectedFrom && !!selectedTo;
|
||||
const isClickingSingleDayRange = !!selectedFrom &&
|
||||
!!selectedTo &&
|
||||
dateLib.isSameDay(selectedFrom, selectedTo) &&
|
||||
dateLib.isSameDay(triggerDate, selectedFrom);
|
||||
if (resetOnSelect && (hasFullRange || !selected?.from)) {
|
||||
if (!required && isClickingSingleDayRange) {
|
||||
newRange = undefined;
|
||||
}
|
||||
else {
|
||||
newRange = { from: triggerDate, to: undefined };
|
||||
}
|
||||
}
|
||||
else {
|
||||
newRange = (0, index_js_1.addToRange)(triggerDate, selected, min, max, required, dateLib);
|
||||
}
|
||||
}
|
||||
if (excludeDisabled && disabled && newRange?.from && newRange.to) {
|
||||
if ((0, index_js_1.rangeContainsModifiers)({ from: newRange.from, to: newRange.to }, disabled, dateLib)) {
|
||||
// if a disabled days is found, the range is reset
|
||||
|
||||
Reference in New Issue
Block a user