import { PropType, Ref, EmitFn, ComputedRef } from 'vue'; import { validateNumber, type CalendarSystem, type DisabledDays, type Timestamp } from '@timestamp-js/core'; export interface CalendarDefaultProps { calendarSystem?: CalendarSystem; } export interface Task { [key: string]: any; } export declare const useTaskProps: { /** * Date value used by `v-model`, formatted as `YYYY-MM-DD`. * * @category model */ modelValue: { type: StringConstructor; default: string; validator: (v: string) => boolean; }; /** * Task rows rendered by the task view. * * @category model */ modelTasks: { type: () => Array; default: () => any[]; }; /** * Title rows rendered above task rows. * * @category model */ modelTitle: { type: () => Array; default: () => any[]; }; /** * Footer rows rendered below task rows. * * @category model */ modelFooter: { type: () => Array; default: () => any[]; }; /** * Task field used as the unique key. * * @category model */ taskKey: { type: PropType; default: string; }; /** * Weekday indexes shown by the task view, where `0` is Sunday and `6` is Saturday. Defaults to * the active calendar system's recommended weekday order. * * Pass this prop explicitly to override the adapter default, such as rendering a five-day * work week. * * @category display * @example :weekdays="[1, 2, 3, 4, 5]" */ weekdays: { type: PropType; default: (props: CalendarDefaultProps) => number[]; validator: (v: unknown) => boolean; }; /** * Shape used for rendered date buttons. * * @category style */ dateType: { type: () => "round" | "rounded" | "square"; default: string; validator: (v: string) => boolean; }; /** * Header layout used for date labels. * * @category display */ dateHeader: { type: () => "stacked" | "inline" | "inverted"; default: string; validator: (v: string) => boolean; }; /** * Horizontal alignment for weekday labels. * * @category style */ weekdayAlign: { type: () => "left" | "center" | "right"; default: string; validator: (v: string) => boolean; }; /** * Horizontal alignment for date labels. * * @category style */ dateAlign: { type: () => "left" | "center" | "right"; default: string; validator: (v: string) => boolean; }; /** * Height in pixels or CSS units for each model day cell. * * @category layout */ dayHeight: { type: (StringConstructor | NumberConstructor)[]; default: number; validator: typeof validateNumber; }; /** * Minimum height in pixels or CSS units for each model day cell. * * @category layout */ dayMinHeight: { type: (StringConstructor | NumberConstructor)[]; default: number; validator: typeof validateNumber; }; /** * Function that returns inline styles for weekday header cells. * * @category style */ weekdayStyle: { type: FunctionConstructor; default: null; }; /** * Function that returns CSS classes for weekday header cells. * * @category style */ weekdayClass: { type: FunctionConstructor; default: null; }; /** * Function that returns inline styles for model day cells. * * @category style */ dayStyle: { type: FunctionConstructor; default: null; }; /** * Function that returns CSS classes for model day cells. * * @category style */ dayClass: { type: FunctionConstructor; default: null; }; /** * Function that returns CSS classes for footer day cells. * * @category style */ footerDayClass: { type: FunctionConstructor; default: null; }; /** * Task view mode. * * @category display */ view: { type: () => "day" | "week" | "month"; validator: (v: string) => boolean; }; /** * Number of task view ranges rendered from the model value. * * @category display */ viewCount: { type: NumberConstructor; default: number; validator: (v: number) => boolean; }; /** * Width in pixels for the task label column. * * @category layout */ taskWidth: { type: NumberConstructor; default: number; validator: (v: number) => boolean; }; }; interface TaskReturn { parsedStartDate: ComputedRef; parsedEndDate: ComputedRef; days: Ref; } export default function useTask(props: { view?: 'day' | 'week' | 'month'; modelValue: string; viewCount: number; weekdays: number[]; disabledBefore?: string; disabledAfter?: string; disabledWeekdays?: number[]; disabledDays?: DisabledDays; calendarSystem?: CalendarSystem; }, emit: EmitFn, { times, }: { times: { today: Timestamp; }; }): TaskReturn; export {};