Skip to content

Commit 281fc77

Browse files
authored
fix(calendar): prevent rejection of input entry when date is within min/max range (#8321)
1 parent 178bfb6 commit 281fc77

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

components/lib/calendar/Calendar.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ export const Calendar = React.memo(
205205
let isValid = true;
206206

207207
if (isSingleSelection()) {
208-
if (!(isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false) && isSelectableTime(value))) {
208+
if (!(isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false) && (!props.showTime || isSelectableTime(value)))) {
209209
isValid = false;
210210
}
211211
} else if (value.every((v) => isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false) && isSelectableTime(v))) {
@@ -2317,11 +2317,13 @@ export const Calendar = React.memo(
23172317
if (props.minDate.getMinutes() > value.getMinutes()) {
23182318
validMin = false;
23192319
} else if (props.minDate.getMinutes() === value.getMinutes()) {
2320-
if (props.minDate.getSeconds() > value.getSeconds()) {
2321-
validMin = false;
2322-
} else if (props.minDate.getSeconds() === value.getSeconds()) {
2323-
if (props.minDate.getMilliseconds() > value.getMilliseconds()) {
2320+
if (props.showSeconds) {
2321+
if (props.minDate.getSeconds() > value.getSeconds()) {
23242322
validMin = false;
2323+
} else if (props.minDate.getSeconds() === value.getSeconds()) {
2324+
if (!props.showMillisec || props.minDate.getMilliseconds() > value.getMilliseconds()) {
2325+
validMin = false;
2326+
}
23252327
}
23262328
}
23272329
}
@@ -2335,11 +2337,13 @@ export const Calendar = React.memo(
23352337
if (props.maxDate.getMinutes() < value.getMinutes()) {
23362338
validMax = false;
23372339
} else if (props.maxDate.getMinutes() === value.getMinutes()) {
2338-
if (props.maxDate.getSeconds() < value.getSeconds()) {
2339-
validMax = false;
2340-
} else if (props.maxDate.getSeconds() === value.getSeconds()) {
2341-
if (props.maxDate.getMilliseconds() < value.getMilliseconds()) {
2340+
if (props.showSeconds) {
2341+
if (props.maxDate.getSeconds() < value.getSeconds()) {
23422342
validMax = false;
2343+
} else if (props.maxDate.getSeconds() === value.getSeconds()) {
2344+
if (!props.showMillisec || props.maxDate.getMilliseconds() < value.getMilliseconds()) {
2345+
validMax = false;
2346+
}
23432347
}
23442348
}
23452349
}

0 commit comments

Comments
 (0)