Skip to content

Commit 1611e98

Browse files
committed
feat: add isDateDisabled utils function
1 parent 75a6fc8 commit 1611e98

File tree

1 file changed

+30
-18
lines changed

1 file changed

+30
-18
lines changed

src/utils.ts

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,35 @@ export function isDateBetween(
6161
return dayjs(date) <= endDate && dayjs(date) >= startDate;
6262
}
6363

64+
export function isDateDisabled(
65+
date: dayjs.Dayjs,
66+
{
67+
minDate,
68+
maxDate,
69+
disabledDates,
70+
}: {
71+
minDate?: DateType;
72+
maxDate?: DateType;
73+
disabledDates?: DateType[] | ((date: DateType) => boolean) | undefined;
74+
}
75+
): boolean {
76+
if (minDate && date < getDate(minDate)) return true;
77+
if (maxDate && date > getDate(maxDate)) return true;
78+
79+
if (disabledDates) {
80+
if (Array.isArray(disabledDates)) {
81+
const isDisabled = disabledDates.some((disabledDate) =>
82+
areDatesOnSameDay(date, disabledDate)
83+
);
84+
return isDisabled;
85+
} else if (disabledDates instanceof Function) {
86+
return disabledDates(date);
87+
}
88+
}
89+
90+
return false;
91+
}
92+
6493
export const getFormatedDate = (date: DateType, format: string) =>
6594
dayjs(date).format(format);
6695

@@ -238,28 +267,11 @@ const generateDayObject = (
238267
isCurrentMonth: boolean,
239268
dayOfMonth: number
240269
) => {
241-
let disabled = false;
242-
if (minDate) {
243-
disabled = date < getDate(minDate);
244-
}
245-
if (maxDate && !disabled) {
246-
disabled = date > getDate(maxDate);
247-
}
248-
if (disabledDates) {
249-
if (Array.isArray(disabledDates)) {
250-
const dates = disabledDates.filter((disabledDate) =>
251-
areDatesOnSameDay(date, disabledDate)
252-
);
253-
disabled = dates.length > 0;
254-
} else if (disabledDates instanceof Function) {
255-
disabled = disabledDates(date);
256-
}
257-
}
258270
return {
259271
text: day.toString(),
260272
day: day,
261273
date: getFormatedDate(date, DATE_FORMAT),
262-
disabled,
274+
disabled: isDateDisabled(date, { minDate, maxDate, disabledDates }),
263275
isCurrentMonth,
264276
dayOfMonth,
265277
};

0 commit comments

Comments
 (0)