@@ -149,6 +149,7 @@ export const getParsedDate = (date: DateType) => {
149149 * @param displayFullDays
150150 * @param minDate - min selectable date
151151 * @param maxDate - max selectable date
152+ * @param disabledDates - array of disabled dates, or a function that returns true for a given date
152153 * @param firstDayOfWeek - first day of week, number 0-6, 0 – Sunday, 6 – Saturday
153154 *
154155 * @returns days array based on current date
@@ -158,6 +159,7 @@ export const getMonthDays = (
158159 displayFullDays : boolean ,
159160 minDate : DateType ,
160161 maxDate : DateType ,
162+ disabledDates : DateType [ ] | ( ( date : DateType ) => boolean ) | undefined ,
161163 firstDayOfWeek : number
162164) : IDayObject [ ] => {
163165 const date = getDate ( datetime ) ;
@@ -177,6 +179,7 @@ export const getMonthDays = (
177179 thisDay ,
178180 minDate ,
179181 maxDate ,
182+ disabledDates ,
180183 false ,
181184 index + 1
182185 ) ;
@@ -191,6 +194,7 @@ export const getMonthDays = (
191194 thisDay ,
192195 minDate ,
193196 maxDate ,
197+ disabledDates ,
194198 true ,
195199 prevMonthOffset + day
196200 ) ;
@@ -204,6 +208,7 @@ export const getMonthDays = (
204208 thisDay ,
205209 minDate ,
206210 maxDate ,
211+ disabledDates ,
207212 false ,
208213 daysInCurrentMonth + prevMonthOffset + day
209214 ) ;
@@ -219,6 +224,7 @@ export const getMonthDays = (
219224 * @param date - calculated date based on day, month, and year
220225 * @param minDate - min selectable date
221226 * @param maxDate - max selectable date
227+ * @param disabledDates - array of disabled dates, or a function that returns true for a given date
222228 * @param isCurrentMonth - define the day is in the current month
223229 *
224230 * @returns days object based on current date
@@ -228,6 +234,7 @@ const generateDayObject = (
228234 date : dayjs . Dayjs ,
229235 minDate : DateType ,
230236 maxDate : DateType ,
237+ disabledDates : DateType [ ] | ( ( date : DateType ) => boolean ) | undefined ,
231238 isCurrentMonth : boolean ,
232239 dayOfMonth : number
233240) => {
@@ -238,6 +245,16 @@ const generateDayObject = (
238245 if ( maxDate && ! disabled ) {
239246 disabled = date > getDate ( maxDate ) ;
240247 }
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+ }
241258 return {
242259 text : day . toString ( ) ,
243260 day : day ,
0 commit comments