🏷️(front) add Scheduler types
Add TypeScript type definitions for Scheduler component including event props, modal states, and handler signatures. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,80 @@
|
|||||||
|
/**
|
||||||
|
* Type definitions for Scheduler components.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { IcsEvent, IcsRecurrenceRule } from "ts-ics";
|
||||||
|
import type { CalDavCalendar } from "../../services/dav/types/caldav-service";
|
||||||
|
import type { EventCalendarAdapter } from "../../services/dav/EventCalendarAdapter";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options for deleting recurring events.
|
||||||
|
*/
|
||||||
|
export type RecurringDeleteOption = 'this' | 'future' | 'all';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Props for the EventModal component.
|
||||||
|
*/
|
||||||
|
export interface EventModalProps {
|
||||||
|
isOpen: boolean;
|
||||||
|
mode: "create" | "edit";
|
||||||
|
event: Partial<IcsEvent> | null;
|
||||||
|
calendarUrl: string;
|
||||||
|
calendars: CalDavCalendar[];
|
||||||
|
adapter: EventCalendarAdapter;
|
||||||
|
onSave: (event: IcsEvent, calendarUrl: string) => Promise<void>;
|
||||||
|
onDelete?: (
|
||||||
|
event: IcsEvent,
|
||||||
|
calendarUrl: string,
|
||||||
|
option?: RecurringDeleteOption
|
||||||
|
) => Promise<void>;
|
||||||
|
onRespondToInvitation?: (
|
||||||
|
event: IcsEvent,
|
||||||
|
status: 'ACCEPTED' | 'TENTATIVE' | 'DECLINED'
|
||||||
|
) => Promise<void>;
|
||||||
|
onClose: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Props for the DeleteEventModal component.
|
||||||
|
*/
|
||||||
|
export interface DeleteEventModalProps {
|
||||||
|
isOpen: boolean;
|
||||||
|
isRecurring: boolean;
|
||||||
|
onConfirm: (option?: RecurringDeleteOption) => void;
|
||||||
|
onCancel: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Props for the main Scheduler component.
|
||||||
|
*/
|
||||||
|
export interface SchedulerProps {
|
||||||
|
defaultCalendarUrl?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* State for the event modal.
|
||||||
|
*/
|
||||||
|
export interface EventModalState {
|
||||||
|
isOpen: boolean;
|
||||||
|
mode: "create" | "edit";
|
||||||
|
event: Partial<IcsEvent> | null;
|
||||||
|
calendarUrl: string;
|
||||||
|
eventUrl?: string;
|
||||||
|
etag?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Form state for the event modal.
|
||||||
|
*/
|
||||||
|
export interface EventFormState {
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
location: string;
|
||||||
|
startDateTime: string;
|
||||||
|
endDateTime: string;
|
||||||
|
selectedCalendarUrl: string;
|
||||||
|
isAllDay: boolean;
|
||||||
|
recurrence: IcsRecurrenceRule | undefined;
|
||||||
|
showRecurrence: boolean;
|
||||||
|
showAttendees: boolean;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user