vuetify
Version:
Vue Material Component Framework
288 lines (232 loc) • 7.63 kB
TypeScript
import Vue, { Component, PluginFunction, VueConstructor, DirectiveOptions } from 'vue'
import './lib'
import './alacarte'
import './colors'
// Services
import { Application } from './services/application'
import { Breakpoint } from './services/breakpoint'
import { Icons } from './services/icons'
import { Lang } from './services/lang'
import { Theme } from './services/theme'
import {
Presets,
UserVuetifyPreset,
VuetifyPreset,
} from './services/presets'
// Service Options
import { GoToOptions } from './services/goto'
export default class Vuetify {
constructor (preset?: Partial<UserVuetifyPreset>)
static install: PluginFunction<VuetifyUseOptions>
static version: string
static config: Config
framework: Framework
preset: VuetifyPreset
userPreset: UserVuetifyPreset
}
export interface Config {
silent: boolean
}
export { Presets, VuetifyPreset, UserVuetifyPreset } from './services/presets'
export type ComponentOrPack = Component & {
$_vuetify_subcomponents?: Record<string, ComponentOrPack>
}
export interface VuetifyUseOptions {
transitions?: Record<string, VueConstructor>
directives?: Record<string, DirectiveOptions>
components?: Record<string, ComponentOrPack>
}
export interface Framework {
readonly breakpoint: Breakpoint
readonly goTo: <T extends string | number | HTMLElement | Vue>(target: T, options?: GoToOptions) => Promise<T>
application: Application
theme: Theme
icons: Icons
lang: Lang
presets: Presets
rtl: boolean
}
declare module 'vue/types/vue' {
export interface Vue {
$vuetify: Framework
}
}
declare module 'vue/types/options' {
export interface ComponentOptions<
V extends Vue,
Data=DefaultData<V>,
Methods=DefaultMethods<V>,
Computed=DefaultComputed,
PropsDef=PropsDefinition<DefaultProps>,
Props=DefaultProps> {
vuetify?: Vuetify
}
}
// Public types
export type TreeviewItemFunction = (item: object, search: string, textKey: string) => boolean
export type SelectItemKey = string | (string | number)[] | ((item: object, fallback?: any) => any)
export interface ItemGroup<T> {
name: string
items: T[]
}
export interface DataOptions {
page: number
itemsPerPage: number
sortBy: string[]
sortDesc: boolean[]
groupBy: string[]
groupDesc: boolean[]
multiSort: boolean
mustSort: boolean
}
export interface DataPagination {
page: number
itemsPerPage: number
pageStart: number
pageStop: number
pageCount: number
itemsLength: number
}
export interface DataItemProps {
item: any
select: (v: boolean) => void
isSelected: boolean
expand: (v: boolean) => void
isExpanded: boolean
isMobile: boolean
}
export interface DataTableItemProps extends DataItemProps {
headers: DataTableHeader[]
}
export interface DataScopeProps {
originalItemsLength: number
items: any[]
pagination: DataPagination
options: DataOptions
updateOptions: (obj: any) => void
sort: (value: string) => void
sortArray: (sortBy: string[]) => void
group: (value: string) => void
groupedItems: ItemGroup<any>[] | null
}
export type DataTableCompareFunction<T = any> = (a: T, b: T) => number
export type DataSortFunction<T extends any = any> = (
items: T[],
sortBy: string[],
sortDesc: boolean[],
locale: string,
customSorters?: Record<string, DataTableCompareFunction<T>>
) => T[];
export type DataGroupFunction<T extends any = any> = (
items: T[],
groupBy: string[],
groupDesc: boolean[],
) => ItemGroup<T>[]
export type DataSearchFunction<T extends any = any> = (items: T[], search: string) => T[]
export type DatePickerFormatter = (date: string) => string
export type DatePickerAllowedDatesFunction = (date: string) => boolean
export type DatePickerEventColorValue = string | string[]
export type DatePickerEvents = string[] | ((date: string) => boolean | DatePickerEventColorValue) | Record<string, DatePickerEventColorValue>
export type DatePickerEventColors = DatePickerEventColorValue | Record<string, DatePickerEventColorValue> | ((date: string) => DatePickerEventColorValue)
export type DatePickerType = 'date' | 'month'
export type DatePickerMultipleFormatter = (date: string[]) => string
export interface TouchHandlers {
start?: (wrapperEvent: TouchEvent & TouchWrapper) => void
end?: (wrapperEvent: TouchEvent & TouchWrapper) => void
move?: (wrapperEvent: TouchEvent & TouchWrapper) => void
left?: (wrapper: TouchWrapper) => void
right?: (wrapper: TouchWrapper) => void
up?: (wrapper: TouchWrapper) => void
down?: (wrapper: TouchWrapper) => void
}
export interface TouchWrapper extends TouchHandlers {
touchstartX: number
touchstartY: number
touchmoveX: number
touchmoveY: number
touchendX: number
touchendY: number
offsetX: number
offsetY: number
}
export type TouchValue = TouchHandlers & {
parent?: boolean
options?: AddEventListenerOptions
}
export type InputValidationRule = (value: any) => string | boolean
export type InputMessage = string | string[]
export type InputValidationRules = (InputValidationRule | string)[]
export interface CalendarTimestamp {
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
}
export type CalendarFormatter = (timestamp: CalendarTimestamp, short: boolean) => string
export interface CalendarEvent {
[prop: string]: any
}
export interface CalendarEventParsed {
input: CalendarEvent
start: CalendarTimestamp
startIdentifier: number
startTimestampIdentifier: number
end: CalendarTimestamp
endIdentifier: number
endTimestampIdentifier: number
allDay: boolean
index: number
category: string | false
}
export interface CalendarEventVisual {
event: CalendarEventParsed
columnCount: number
column: number
left: number
width: number
}
export interface CalendarDaySlotScope extends CalendarTimestamp {
outside: boolean
index: number
week: CalendarTimestamp[]
category: string | undefined | null
}
export type CalendarTimeToY = (time: CalendarTimestamp | number | string, clamp?: boolean) => number
export type CalendarTimeDelta = (time: CalendarTimestamp | number | string) => number | false
export interface CalendarDayBodySlotScope extends CalendarDaySlotScope {
timeToY: CalendarTimeToY
timeDelta: CalendarTimeDelta
}
export type CalendarEventOverlapMode = (events: CalendarEventParsed[], firstWeekday: number, overlapThreshold: number) => (day: CalendarDaySlotScope, dayEvents: CalendarEventParsed[], timed: boolean, reset: boolean) => CalendarEventVisual[]
export type CalendarEventColorFunction = (event: CalendarEvent) => string
export type CalendarEventTimedFunction = (event: CalendarEvent) => boolean
export type CalendarEventCategoryFunction = (event: CalendarEvent) => string
export type CalendarEventNameFunction = (event: CalendarEventParsed, timedEvent: boolean) => string
export type DataTableFilterFunction = (value: any, search: string | null, item: any) => boolean
export interface DataTableHeader<T extends any = any> {
text: string
value: string
align?: 'start' | 'center' | 'end'
sortable?: boolean
filterable?: boolean
groupable?: boolean
divider?: boolean
class?: string | string[]
width?: string | number
filter?: (value: any, search: string | null, item: any) => boolean
sort?: DataTableCompareFunction<T>
}
export type DataItemsPerPageOption = (number | {
text: string
value: number
});
export type RowClassFunction = (item: any) => null | undefined | string | string[] | Record<string, boolean>