///
export type CalendarViewType = 'MONTHLY' | 'WEEKLY' | 'DAILY' | 'YEARLY';
export type displayAllDayScheduleMode = 'none' | 'use';
export type StartOfWeek = 'sunday' | 'monday';
export type TodayBtnMode = 'none' | 'use';
export type ActionType = 'CLICK' | 'CLICK_WITH_SHIFT_KEY_DOWN' | 'DELETE_KEY_DOWN' | 'DRAG' | 'DOUBLE_CLICK';
export type TargetType = 'SCHEDULE' | 'DATE';
export type Action = {
action: ActionType;
target: TargetType;
date?: Date;
dates?: Date[];
schedule?: Schedule;
schedules?: Schedule[];
selectedDates?: Date[];
startDate?: string | undefined | null;
endDate?: string | undefined | null;
};
export type ConfigTrigger = (action: Action) => void;
export type Config = {
[target in TargetType]?: {
[action in ActionType]?: ConfigTrigger;
};
};
export type Schedule = {
id: number;
title: string;
startDate: Date;
endDate: Date;
isAllDay?: boolean;
[key: string]: any;
};
export type CalendarActionType = 'CALENDAR_TYPE_CHANGE' | 'PREV_BUTTON_CLICK' | 'NEXT_BUTTON_CLICK' | 'TODAY_BUTTON_CLICK';
export type CalendarAction = {
type: CalendarActionType;
payload: {
type?: CalendarViewType;
startDate: string | undefined | null;
endDate: string | undefined | null;
};
};
export type CalendarProps = {
defaultViewType?: CalendarViewType | 'str_fm_month' | 'str_fm_week' | 'str_fm_day' | 'str_fm_year';
viewTypes?: (CalendarViewType | 'str_fm_month' | 'str_fm_week' | 'str_fm_day' | 'str_fm_year')[];
displayAllDayScheduleMode?: displayAllDayScheduleMode;
startOfWeek?: StartOfWeek;
todayBtnMode?: TodayBtnMode;
schedules?: Schedule[];
config?: Config;
onActionDispatch?: (action: CalendarAction) => void;
};
export type EventItemProps = {
event: Schedule;
date?: Date;
extraProps?: Record;
onDragStart: (event: Schedule, e: React.DragEvent) => void;
onDragEnd: (e: React.DragEvent) => void;
onClick: (schedule: Schedule, e: React.MouseEvent) => void;
onDoubleClick: (schedule: Schedule) => void;
isSelected?: boolean;
};