UNPKG

react-d-calendar

Version:

A fully customizable, accessible, and responsive React calendar component

143 lines (142 loc) 4.63 kB
import React from "react"; export interface DayInfo { date: Date; isCurrentMonth: boolean; } export interface Event { date: Date; title?: string; type?: string; color?: string; [key: string]: any; } export interface CalendarProps { date?: Date; activeStartDate?: Date; defaultActiveStartDate?: Date; value?: Date | [Date, Date]; defaultValue?: Date | [Date, Date]; defaultView?: "day" | "month" | "year" | "decade"; disableDate?: (date: Date) => boolean; disableYear?: (year: number) => boolean; onActiveStartDateChange?: ({ activeStartDate, }: { activeStartDate: Date; }) => void; onChange?: (value: Date | [Date, Date]) => void; onClickMonth?: (date: Date) => void; onClickWeekNumber?: (week: number, date: Date) => void; onDrillDown?: () => void; onDrillUp?: () => void; onViewChange?: ({ view, }: { view: "day" | "month" | "year" | "decade"; }) => void; onRangeHover?: ({ start, end }: { start: Date; end: Date | null; }) => void; tileClassName?: ({ date }: { date: Date; }) => string; tileContent?: ({ date, view, event, }: { date: Date; view: string; event?: Event; }) => React.ReactNode; tileDisabled?: ({ date }: { date: Date; }) => boolean; customTileContent?: ({ date, view, event, }: { date: Date; view: string; event?: Event; }) => React.ReactNode; formatDay?: (date: Date, locale: string) => string; formatLongDate?: (date: Date, locale: string) => string; formatMonth?: (date: Date, locale: string) => string; formatMonthYear?: (date: Date, locale: string) => string; formatShortWeekday?: (date: Date, locale: string) => string; formatWeekday?: (date: Date, locale: string) => string; formatYear?: (date: Date, locale: string) => string; className?: string; style?: React.CSSProperties; locale?: string; calendarType?: "gregorian"; maxDate?: Date; minDate?: Date; maxDetail?: "day" | "month" | "year"; minDetail?: "day" | "month" | "year"; selectionMode?: "single" | "range"; rangeStart?: Date; rangeLimit?: number | null; showDoubleView?: boolean; showFixedNumberOfWeeks?: boolean; showNavigation?: boolean; showNeighboringMonth?: boolean; showWeekNumbers?: boolean; showNeighboringDecade?: boolean; weekStartDay?: 0 | 1 | 2 | 3 | 4 | 5 | 6; navigationAriaLabel?: string; navigationAriaLive?: string; navigationLabel?: ({ date, view, locale, }: { date: Date; view: string; locale: string; }) => string; next2AriaLabel?: string; next2Label?: React.ReactNode; nextAriaLabel?: string; nextLabel?: React.ReactNode; prev2AriaLabel?: string; prev2Label?: React.ReactNode; prevAriaLabel?: string; prevLabel?: React.ReactNode; events?: Event[]; weekdayFormat?: "short" | "full" | "minimal"; dateFormat?: "mm/dd/yyyy" | "dd/mm/yyyy" | "yyyy-mm-dd" | "mm-dd-yyyy" | "dd-mm-yyyy"; monthFormat?: "long" | "short" | "numeric"; includeTime?: boolean; inputRef?: React.RefObject<HTMLElement>; renderHeader?: ({ date, onChange, view, }: { date: Date; onChange: (date: Date) => void; view: string; }) => React.ReactNode; renderMonthView?: ({ date, onDateSelect, }: { date: Date; onDateSelect: (date: Date) => void; }) => React.ReactNode; renderYearView?: ({ date, onMonthSelect, }: { date: Date; onMonthSelect: (date: Date) => void; }) => React.ReactNode; renderDayView?: ({ date, onDateSelect, }: { date: Date; onDateSelect: (date: Date) => void; }) => React.ReactNode; customTheme?: { [key: string]: string; }; dayViewClassName?: string; monthViewClassName?: string; yearViewClassName?: string; styleOverrides?: { calendar?: React.CSSProperties; header?: React.CSSProperties; container?: React.CSSProperties; backButton?: React.CSSProperties; footer?: React.CSSProperties; }; holidayDates?: Date[]; renderCustomFooter?: ({ selectedValue, activeDate, }: { selectedValue: Date | [Date, Date] | null; activeDate: Date; }) => React.ReactNode; disabledViews?: string[]; onClickEvent?: (event: Event) => void; renderEvent?: ({ event, date, }: { event: Event; date: Date; }) => React.ReactNode; selectOnEventClick?: boolean; theme?: "light" | "dark" | string; }