@@ -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+
6493export 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