mobile-react-infinite-calendar
Version:
A mobile-optimized infinite scroll calendar component for React
51 lines (50 loc) • 1.75 kB
TypeScript
import type { Holiday, LocaleCode, CalendarEvent } from '../types';
export interface MonthData {
month: Date;
weeks: (Date | null)[][];
eventsByDate: Record<string, CalendarEvent[]>;
holidaysByDate: Record<string, Holiday[]>;
}
interface UseCalendarComposerProps {
events: CalendarEvent[];
holidays?: Holiday[];
locale?: LocaleCode | string;
holidayServiceKey?: string;
}
export declare function useCalendarComposer({ events, holidays, locale, holidayServiceKey }: UseCalendarComposerProps): {
displayMonth: Date;
activeMonth: Date;
infiniteMonths: Date[];
monthsData: {
month: Date;
weeks: (Date | null)[][];
eventsByDate: Record<string, CalendarEvent<any>[]>;
holidaysByDate: Record<string, Holiday[]>;
}[];
availableHeight: number | null;
isCurrentMonthVisible: boolean;
isInitialScrollSet: boolean;
showDateSelector: boolean;
selectedYear: number;
selectedMonth: number;
showYearDropdown: boolean;
showMonthDropdown: boolean;
setActiveMonth: (date: Date) => void;
setDisplayMonth: (date: Date) => void;
setInfiniteMonths: (months: Date[]) => void;
setAvailableHeight: (height: number | null) => void;
setIsCurrentMonthVisible: (visible: boolean) => void;
setIsInitialScrollSet: (value: boolean) => void;
openDateSelector: () => void;
closeDateSelector: () => void;
setShowYearDropdown: () => void;
setShowMonthDropdown: () => void;
setSelectedYear: (year: number) => void;
setSelectedMonth: (month: number) => void;
confirmDateSelection: () => void;
addPrevMonth: () => void;
addNextMonth: () => void;
holidayLoading: boolean;
autoHolidays: Holiday[];
};
export {};