308 lines
15 KiB
TypeScript
308 lines
15 KiB
TypeScript
|
|
import type { PropType, VNode } from 'vue';
|
|
import type { CalendarBaseProps } from './calendarBase.js';
|
|
import type { CalendarCategory, CalendarDayBodySlotScope, CalendarDaySlotScope, CalendarEvent, CalendarEventCategoryFunction, CalendarEventColorFunction, CalendarEventNameFunction, CalendarEventOverlapMode, CalendarEventParsed, CalendarEventTimedFunction, CalendarEventVisual, CalendarTimestamp } from '../types.js';
|
|
type VDailyEventsMap = {
|
|
[date: string]: {
|
|
parent: HTMLElement;
|
|
more: HTMLElement | null;
|
|
events: HTMLElement[];
|
|
};
|
|
};
|
|
export interface VEventScopeInput {
|
|
eventParsed: CalendarEventParsed;
|
|
day: CalendarDaySlotScope;
|
|
start: boolean;
|
|
end: boolean;
|
|
timed: boolean;
|
|
}
|
|
export declare const makeCalendarWithEventsProps: <Defaults extends {
|
|
events?: unknown;
|
|
eventStart?: unknown;
|
|
eventEnd?: unknown;
|
|
eventTimed?: unknown;
|
|
eventCategory?: unknown;
|
|
eventHeight?: unknown;
|
|
eventColor?: unknown;
|
|
eventTextColor?: unknown;
|
|
eventName?: unknown;
|
|
eventOverlapThreshold?: unknown;
|
|
eventOverlapMode?: unknown;
|
|
eventMore?: unknown;
|
|
eventMoreText?: unknown;
|
|
eventRipple?: unknown;
|
|
eventMarginBottom?: unknown;
|
|
} = {}>(defaults?: Defaults | undefined) => {
|
|
events: unknown extends Defaults["events"] ? {
|
|
type: PropType<CalendarEvent[]>;
|
|
default: () => never[];
|
|
} : Omit<{
|
|
type: PropType<CalendarEvent[]>;
|
|
default: () => never[];
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["events"] ? CalendarEvent[] : CalendarEvent[] | Defaults["events"]>;
|
|
default: unknown extends Defaults["events"] ? CalendarEvent[] : CalendarEvent[] | Defaults["events"];
|
|
};
|
|
eventStart: unknown extends Defaults["eventStart"] ? {
|
|
type: StringConstructor;
|
|
default: string;
|
|
} : Omit<{
|
|
type: StringConstructor;
|
|
default: string;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventStart"] ? string : string | Defaults["eventStart"]>;
|
|
default: unknown extends Defaults["eventStart"] ? string : string | Defaults["eventStart"];
|
|
};
|
|
eventEnd: unknown extends Defaults["eventEnd"] ? {
|
|
type: StringConstructor;
|
|
default: string;
|
|
} : Omit<{
|
|
type: StringConstructor;
|
|
default: string;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventEnd"] ? string : string | Defaults["eventEnd"]>;
|
|
default: unknown extends Defaults["eventEnd"] ? string : string | Defaults["eventEnd"];
|
|
};
|
|
eventTimed: unknown extends Defaults["eventTimed"] ? {
|
|
type: PropType<string | CalendarEventTimedFunction>;
|
|
default: string;
|
|
} : Omit<{
|
|
type: PropType<string | CalendarEventTimedFunction>;
|
|
default: string;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventTimed"] ? string | CalendarEventTimedFunction : string | CalendarEventTimedFunction | Defaults["eventTimed"]>;
|
|
default: unknown extends Defaults["eventTimed"] ? string | CalendarEventTimedFunction : Defaults["eventTimed"] | NonNullable<string | CalendarEventTimedFunction>;
|
|
};
|
|
eventCategory: unknown extends Defaults["eventCategory"] ? {
|
|
type: PropType<string | CalendarEventCategoryFunction>;
|
|
default: string;
|
|
} : Omit<{
|
|
type: PropType<string | CalendarEventCategoryFunction>;
|
|
default: string;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventCategory"] ? string | CalendarEventCategoryFunction : string | CalendarEventCategoryFunction | Defaults["eventCategory"]>;
|
|
default: unknown extends Defaults["eventCategory"] ? string | CalendarEventCategoryFunction : Defaults["eventCategory"] | NonNullable<string | CalendarEventCategoryFunction>;
|
|
};
|
|
eventHeight: unknown extends Defaults["eventHeight"] ? {
|
|
type: NumberConstructor;
|
|
default: number;
|
|
} : Omit<{
|
|
type: NumberConstructor;
|
|
default: number;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventHeight"] ? number : number | Defaults["eventHeight"]>;
|
|
default: unknown extends Defaults["eventHeight"] ? number : number | Defaults["eventHeight"];
|
|
};
|
|
eventColor: unknown extends Defaults["eventColor"] ? {
|
|
type: PropType<string | CalendarEventColorFunction>;
|
|
default: string;
|
|
} : Omit<{
|
|
type: PropType<string | CalendarEventColorFunction>;
|
|
default: string;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventColor"] ? string | CalendarEventColorFunction : string | CalendarEventColorFunction | Defaults["eventColor"]>;
|
|
default: unknown extends Defaults["eventColor"] ? string | CalendarEventColorFunction : Defaults["eventColor"] | NonNullable<string | CalendarEventColorFunction>;
|
|
};
|
|
eventTextColor: unknown extends Defaults["eventTextColor"] ? {
|
|
type: PropType<string | CalendarEventColorFunction>;
|
|
} : Omit<{
|
|
type: PropType<string | CalendarEventColorFunction>;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventTextColor"] ? string | CalendarEventColorFunction : string | CalendarEventColorFunction | Defaults["eventTextColor"]>;
|
|
default: unknown extends Defaults["eventTextColor"] ? string | CalendarEventColorFunction : Defaults["eventTextColor"] | NonNullable<string | CalendarEventColorFunction>;
|
|
};
|
|
eventName: unknown extends Defaults["eventName"] ? {
|
|
type: PropType<string | CalendarEventNameFunction>;
|
|
default: string;
|
|
} : Omit<{
|
|
type: PropType<string | CalendarEventNameFunction>;
|
|
default: string;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventName"] ? string | CalendarEventNameFunction : string | CalendarEventNameFunction | Defaults["eventName"]>;
|
|
default: unknown extends Defaults["eventName"] ? string | CalendarEventNameFunction : Defaults["eventName"] | NonNullable<string | CalendarEventNameFunction>;
|
|
};
|
|
eventOverlapThreshold: unknown extends Defaults["eventOverlapThreshold"] ? {
|
|
type: (NumberConstructor | StringConstructor)[];
|
|
default: number;
|
|
} : Omit<{
|
|
type: (NumberConstructor | StringConstructor)[];
|
|
default: number;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventOverlapThreshold"] ? string | number : string | number | Defaults["eventOverlapThreshold"]>;
|
|
default: unknown extends Defaults["eventOverlapThreshold"] ? string | number : Defaults["eventOverlapThreshold"] | NonNullable<string | number>;
|
|
};
|
|
eventOverlapMode: unknown extends Defaults["eventOverlapMode"] ? {
|
|
type: PropType<'stack' | 'column' | CalendarEventOverlapMode>;
|
|
default: string;
|
|
validate: (mode: any) => boolean;
|
|
} : Omit<{
|
|
type: PropType<'stack' | 'column' | CalendarEventOverlapMode>;
|
|
default: string;
|
|
validate: (mode: any) => boolean;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventOverlapMode"] ? "column" | "stack" | CalendarEventOverlapMode : "column" | "stack" | CalendarEventOverlapMode | Defaults["eventOverlapMode"]>;
|
|
default: unknown extends Defaults["eventOverlapMode"] ? "column" | "stack" | CalendarEventOverlapMode : Defaults["eventOverlapMode"] | NonNullable<"column" | "stack" | CalendarEventOverlapMode>;
|
|
};
|
|
eventMore: unknown extends Defaults["eventMore"] ? {
|
|
type: BooleanConstructor;
|
|
default: boolean;
|
|
} : Omit<{
|
|
type: BooleanConstructor;
|
|
default: boolean;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventMore"] ? boolean : boolean | Defaults["eventMore"]>;
|
|
default: unknown extends Defaults["eventMore"] ? boolean : boolean | Defaults["eventMore"];
|
|
};
|
|
eventMoreText: unknown extends Defaults["eventMoreText"] ? {
|
|
type: StringConstructor;
|
|
default: string;
|
|
} : Omit<{
|
|
type: StringConstructor;
|
|
default: string;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventMoreText"] ? string : string | Defaults["eventMoreText"]>;
|
|
default: unknown extends Defaults["eventMoreText"] ? string : string | Defaults["eventMoreText"];
|
|
};
|
|
eventRipple: unknown extends Defaults["eventRipple"] ? {
|
|
type: (BooleanConstructor | ObjectConstructor)[];
|
|
default: null;
|
|
} : Omit<{
|
|
type: (BooleanConstructor | ObjectConstructor)[];
|
|
default: null;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventRipple"] ? boolean | Record<string, any> : boolean | Record<string, any> | Defaults["eventRipple"]>;
|
|
default: unknown extends Defaults["eventRipple"] ? boolean | Record<string, any> : Defaults["eventRipple"] | NonNullable<boolean | Record<string, any>>;
|
|
};
|
|
eventMarginBottom: unknown extends Defaults["eventMarginBottom"] ? {
|
|
type: NumberConstructor;
|
|
default: number;
|
|
} : Omit<{
|
|
type: NumberConstructor;
|
|
default: number;
|
|
}, "default" | "type"> & {
|
|
type: PropType<unknown extends Defaults["eventMarginBottom"] ? number : number | Defaults["eventMarginBottom"]>;
|
|
default: unknown extends Defaults["eventMarginBottom"] ? number : number | Defaults["eventMarginBottom"];
|
|
};
|
|
};
|
|
interface CalendarWithEventsProps extends CalendarBaseProps {
|
|
events: CalendarEvent[];
|
|
eventStart: string;
|
|
eventEnd: string;
|
|
eventTimed: string | CalendarEventTimedFunction;
|
|
eventCategory: string | CalendarEventCategoryFunction;
|
|
eventHeight: number;
|
|
eventColor: string | CalendarEventColorFunction;
|
|
eventTextColor: string | CalendarEventColorFunction | undefined;
|
|
eventName: string | CalendarEventNameFunction;
|
|
eventOverlapThreshold: string | number;
|
|
eventOverlapMode: string | CalendarEventOverlapMode;
|
|
eventMore: boolean;
|
|
eventMoreText: string;
|
|
eventRipple: boolean | object | null | undefined;
|
|
eventMarginBottom: number;
|
|
type: 'month' | 'week' | 'day' | '4day' | 'custom-weekly' | 'custom-daily' | 'category';
|
|
}
|
|
export declare function useCalendarWithEvents(props: CalendarWithEventsProps, slots: any, attrs: any): {
|
|
times: {
|
|
now: {
|
|
date: string;
|
|
time: string;
|
|
year: number;
|
|
month: number;
|
|
day: number;
|
|
weekday: number;
|
|
hour: number;
|
|
minute: number;
|
|
hasDay: boolean;
|
|
hasTime: boolean;
|
|
past: boolean;
|
|
present: boolean;
|
|
future: boolean;
|
|
category?: CalendarCategory;
|
|
};
|
|
today: {
|
|
date: string;
|
|
time: string;
|
|
year: number;
|
|
month: number;
|
|
day: number;
|
|
weekday: number;
|
|
hour: number;
|
|
minute: number;
|
|
hasDay: boolean;
|
|
hasTime: boolean;
|
|
past: boolean;
|
|
present: boolean;
|
|
future: boolean;
|
|
category?: CalendarCategory;
|
|
};
|
|
};
|
|
locale: {
|
|
name: string;
|
|
decimalSeparator: import("vue").ShallowRef<string>;
|
|
messages: import("vue").Ref<import("../../../types.js").LocaleMessages, import("../../../types.js").LocaleMessages>;
|
|
current: import("vue").Ref<string, string>;
|
|
fallback: import("vue").Ref<string, string>;
|
|
t: (key: string, ...params: unknown[]) => string;
|
|
n: (value: number) => string;
|
|
provide: (props: import("../../../types.js").LocaleOptions) => import("../../../types.js").LocaleInstance;
|
|
isRtl: import("vue").Ref<boolean, boolean>;
|
|
rtl: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
|
|
rtlClasses: import("vue").Ref<string, string>;
|
|
};
|
|
parsedValue: import("vue").ComputedRef<CalendarTimestamp>;
|
|
parsedWeekdays: import("vue").ComputedRef<number[]>;
|
|
effectiveWeekdays: import("vue").ComputedRef<number[]>;
|
|
weekdaySkips: import("vue").ComputedRef<number[]>;
|
|
parsedStart: import("vue").ComputedRef<CalendarTimestamp>;
|
|
parsedEnd: import("vue").ComputedRef<CalendarTimestamp>;
|
|
days: import("vue").ComputedRef<CalendarTimestamp[]>;
|
|
dayFormatter: import("vue").ComputedRef<import("../types.js").CalendarFormatter>;
|
|
weekdayFormatter: import("vue").ComputedRef<import("../types.js").CalendarFormatter>;
|
|
getColorProps: (colors: {
|
|
background?: import("../../../composables/color.js").ColorValue;
|
|
text?: import("../../../composables/color.js").ColorValue;
|
|
}) => {
|
|
class: string[];
|
|
style: import("vue").CSSProperties;
|
|
};
|
|
getRelativeClasses: (timestamp: CalendarTimestamp, outside?: boolean) => {
|
|
'v-present': boolean;
|
|
'v-past': boolean;
|
|
'v-future': boolean;
|
|
'v-outside': boolean;
|
|
};
|
|
getWeekNumber: (timestamp: CalendarTimestamp) => number;
|
|
getStartOfWeek: (timestamp: CalendarTimestamp) => CalendarTimestamp;
|
|
getEndOfWeek: (timestamp: CalendarTimestamp) => CalendarTimestamp;
|
|
getFormatter: (options: Intl.DateTimeFormatOptions) => import("../types.js").CalendarFormatter;
|
|
updateTimes: () => void;
|
|
noEvents: import("vue").ComputedRef<boolean>;
|
|
parsedEvents: import("vue").ComputedRef<CalendarEventParsed[]>;
|
|
parsedEventOverlapThreshold: import("vue").ComputedRef<number>;
|
|
eventTimedFunction: import("vue").ComputedRef<CalendarEventTimedFunction>;
|
|
eventCategoryFunction: import("vue").ComputedRef<CalendarEventCategoryFunction>;
|
|
eventTextColorFunction: import("vue").ComputedRef<CalendarEventColorFunction>;
|
|
eventNameFunction: import("vue").ComputedRef<CalendarEventNameFunction>;
|
|
eventModeFunction: import("vue").ComputedRef<CalendarEventOverlapMode>;
|
|
eventWeekdays: import("vue").ComputedRef<number[]>;
|
|
categoryMode: import("vue").ComputedRef<boolean>;
|
|
eventColorFunction: (e: CalendarEvent) => string | undefined;
|
|
eventsRef: import("vue").Ref<HTMLElement[], HTMLElement[]>;
|
|
updateEventVisibility: () => void;
|
|
getEventsMap: () => VDailyEventsMap;
|
|
genDayEvent: ({ event }: CalendarEventVisual, day: CalendarDaySlotScope) => VNode;
|
|
genTimedEvent: ({ event, left, width }: CalendarEventVisual, day: CalendarDayBodySlotScope) => VNode | false;
|
|
genEvent: (event: CalendarEventParsed, scopeInput: VEventScopeInput, timedEvent: boolean, data: Record<string, unknown>) => VNode;
|
|
genName: (eventSummary: () => string | VNode) => VNode;
|
|
genPlaceholder: (day: CalendarTimestamp) => VNode;
|
|
genMore: (day: CalendarDaySlotScope) => VNode;
|
|
getVisibleEvents: () => CalendarEventParsed[];
|
|
isEventForCategory: (event: CalendarEventParsed, category: CalendarCategory) => boolean;
|
|
getEventsForDay: (day: CalendarDaySlotScope) => CalendarEventParsed[];
|
|
getEventsForDayAll: (day: CalendarDaySlotScope) => CalendarEventParsed[];
|
|
getEventsForDayTimed: (day: CalendarDaySlotScope) => CalendarEventParsed[];
|
|
getScopedSlots: () => any;
|
|
};
|
|
|