diff --git a/src/datepicker/engine/flag-months-calendar.ts b/src/datepicker/engine/flag-months-calendar.ts index 6a9eb84bd2..45f78ca97a 100644 --- a/src/datepicker/engine/flag-months-calendar.ts +++ b/src/datepicker/engine/flag-months-calendar.ts @@ -30,7 +30,7 @@ export function flagMonthsCalendar( const isDisabled = options.isDisabled || isDisabledDate(month.date, options.datesDisabled) || - isEnabledDate(month.date, options.datesEnabled) || + isEnabledDate(month.date, options.datesEnabled, 'month') || isMonthDisabled(month.date, options.minDate, options.maxDate); if (!options.selectedDate && options.selectedRange) { diff --git a/src/datepicker/utils/bs-calendar-utils.ts b/src/datepicker/utils/bs-calendar-utils.ts index 4ffcc81546..83f8ceb5a0 100644 --- a/src/datepicker/utils/bs-calendar-utils.ts +++ b/src/datepicker/utils/bs-calendar-utils.ts @@ -53,28 +53,24 @@ export function isYearDisabled(date: Date, min?: Date, max?: Date): boolean { return minBound || maxBound || false; } -export function isDisabledDate(date?: Date, datesDisabled?: Date[], unit?: string): boolean { +export function isDisabledDate(date?: Date, datesDisabled?: Date[], unit?: 'year' | 'date' | 'month'): boolean { if (!datesDisabled || !isArray(datesDisabled) || !datesDisabled.length) { return false; } - if (unit && unit === 'year') { + if (unit && unit === 'year' && !datesDisabled[0].getDate()) { return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'year')); } return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date')); } -export function isEnabledDate(date?: Date, datesEnabled?: Date[], unit?: string): boolean { +export function isEnabledDate(date?: Date, datesEnabled?: Date[], unit?: 'year' | 'date' | 'month'): boolean { if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) { return false; } - if (unit && unit === 'year') { - return !datesEnabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'year')); - } - - return !datesEnabled.some((enabledDate: Date) => isSame(date, enabledDate, 'date')); + return !datesEnabled.some((enabledDate: Date) => isSame(date, enabledDate, unit || 'date')); } export function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date | undefined {