UNPKG

vuetify

Version:

Vue Material Component Framework

1,019 lines (1,003 loc) 413 kB
import * as vue from 'vue'; import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, Ref, UnwrapRef, CSSProperties } from 'vue'; interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> { filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>]; } type SelectItemKey = boolean | string | (string | number)[] | ((item: Record<string, any>, fallback?: any) => any); interface LoaderSlotProps { color: string | undefined; isActive: boolean; } type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent; declare const IconValue: PropType<IconValue>; type SortItem = { key: string; order?: boolean | 'asc' | 'desc'; }; declare function provideSort(options: { sortBy: Ref<readonly SortItem[]>; mustSort: Ref<boolean>; multiSort: Ref<boolean>; page?: Ref<number>; }): { sortBy: Ref<readonly SortItem[]>; toggleSort: (column: InternalDataTableHeader) => void; isSorted: (column: InternalDataTableHeader) => boolean; }; interface GroupableItem<T = any> { type: 'item'; raw: T; } interface Group<T = any> { type: 'group'; depth: number; id: string; key: string; value: any; items: readonly (T | Group<T>)[]; } declare function provideGroupBy(options: { groupBy: Ref<readonly SortItem[]>; sortBy: Ref<readonly SortItem[]>; }): { sortByWithGroups: vue.ComputedRef<SortItem[]>; toggleGroup: (group: Group) => void; opened: Ref<Set<string>>; groupBy: Ref<readonly SortItem[]>; extractRows: <T extends GroupableItem<any>>(items: readonly (T | Group<T>)[]) => T[]; isGroupOpen: (group: Group) => boolean; }; type DataTableCompareFunction<T = any> = (a: T, b: T) => number; type DataTableHeader = { key: string; value?: SelectItemKey; title: string; colspan?: number; rowspan?: number; fixed?: boolean; align?: 'start' | 'end' | 'center'; width?: number | string; minWidth?: string; maxWidth?: string; sortable?: boolean; sort?: DataTableCompareFunction; }; type InternalDataTableHeader = DataTableHeader & { sortable: boolean; fixedOffset?: number; lastFixed?: boolean; }; interface DataTableItem<T = any> extends GroupableItem<T>, SelectableItem { index: number; columns: { [key: string]: any; }; } interface DataTableItemProps { items: any[]; itemValue: SelectItemKey; itemSelectable: SelectItemKey; returnObject: boolean; } interface SelectableItem { value: any; selectable: boolean; } type SelectionProps = Pick<DataTableItemProps, 'itemValue'> & { modelValue: readonly any[]; selectStrategy: 'single' | 'page' | 'all'; 'onUpdate:modelValue': ((value: any[]) => void) | undefined; }; declare function provideSelection(props: SelectionProps, { allItems, currentPage }: { allItems: Ref<SelectableItem[]>; currentPage: Ref<SelectableItem[]>; }): { toggleSelect: (item: SelectableItem) => void; select: (items: SelectableItem[], value: boolean) => void; selectAll: (value: boolean) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; isSomeSelected: (items: SelectableItem | SelectableItem[]) => boolean; someSelected: vue.ComputedRef<boolean>; allSelected: vue.ComputedRef<boolean>; showSelectAll: boolean; }; type HeadersSlotProps = { headers: InternalDataTableHeader[][]; columns: InternalDataTableHeader[]; sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>; someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>; allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>; toggleSort: ReturnType<typeof provideSort>['toggleSort']; selectAll: ReturnType<typeof provideSelection>['selectAll']; getSortIcon: (column: InternalDataTableHeader) => IconValue; getFixedStyles: (column: InternalDataTableHeader, y: number) => CSSProperties | undefined; isSorted: ReturnType<typeof provideSort>['isSorted']; }; /** * - match without highlight * - single match (index), length already known * - single match (start, end) * - multiple matches (start, end), probably shouldn't overlap */ type FilterMatch = boolean | number | [number, number] | [number, number][]; type FilterFunction = (value: string, query: string, item?: any) => FilterMatch; type FilterKeyFunctions = Record<string, FilterFunction>; type FilterKeys = string | string[]; type FilterMode = 'some' | 'every' | 'union' | 'intersection'; type Density = null | 'default' | 'comfortable' | 'compact'; type ExpandProps = { expandOnClick: boolean; expanded: readonly string[]; 'onUpdate:expanded': ((value: any[]) => void) | undefined; }; declare function provideExpanded(props: ExpandProps): { expand: (item: DataTableItem, value: boolean) => void; expanded: Ref<Set<string>> & { readonly externalValue: readonly string[]; }; expandOnClick: Ref<boolean>; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; }; declare function providePagination(options: { page: Ref<number>; itemsPerPage: Ref<number>; itemsLength: Ref<number>; }): { page: Ref<number>; itemsPerPage: Ref<number>; startIndex: vue.ComputedRef<number>; stopIndex: vue.ComputedRef<number>; pageCount: vue.ComputedRef<number>; itemsLength: Ref<number>; nextPage: () => void; prevPage: () => void; setPage: (value: number) => void; setItemsPerPage: (value: number) => void; }; type GroupHeaderSlot = { index: number; item: Group; columns: InternalDataTableHeader[]; isExpanded: ReturnType<typeof provideExpanded>['isExpanded']; toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']; isSelected: ReturnType<typeof provideSelection>['isSelected']; toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']; toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']; isGroupOpen: ReturnType<typeof provideGroupBy>['toggleGroup']; }; type ItemSlot = { index: number; item: DataTableItem; columns: InternalDataTableHeader[]; isExpanded: ReturnType<typeof provideExpanded>['isExpanded']; toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']; isSelected: ReturnType<typeof provideSelection>['isSelected']; toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']; }; declare const VDataTableRows: { new (...args: any[]): { $: vue.ComponentInternalInstance; $data: {}; $props: { [x: `v-slot:item.${string}`]: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; noDataText?: string | undefined; loadingText?: string | undefined; items?: readonly (DataTableItem<any> | Group<any>)[] | undefined; hideNoData?: boolean | undefined; key?: string | number | symbol | undefined; loading?: string | boolean | undefined; style?: unknown; class?: unknown; $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'data-table-group'?: ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; }; ref?: vue.VNodeRef | undefined; ref_for?: boolean | undefined; ref_key?: string | undefined; 'v-slots'?: { [x: `item.${string}`]: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'data-table-group'?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: false | ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; } | undefined; onVnodeBeforeMount?: ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void) | ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeMounted?: ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void) | ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeBeforeUpdate?: ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>, oldVNode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void) | ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>, oldVNode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeUpdated?: ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>, oldVNode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void) | ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>, oldVNode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeBeforeUnmount?: ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void) | ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeUnmounted?: ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void) | ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>) => void)[] | undefined; "v-slot:item"?: false | ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined; "v-slot:data-table-group"?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; "v-slot:data-table-select"?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; rowHeight?: number | undefined; 'onClick:row'?: ((e: Event, value: { item: DataTableItem; }) => void) | undefined; "v-slot:loading"?: false | (() => vue.VNodeChild) | undefined; "v-slot:group-header"?: false | ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; "v-slot:expanded-row"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; }; $attrs: { [x: string]: unknown; }; $refs: { [x: string]: unknown; }; $slots: Readonly<{ [x: `item.${string}`]: ((arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; 'data-table-group'?: ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; 'data-table-select'?: ((arg: { props: Record<string, unknown>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; item?: ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; loading?: (() => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; 'group-header'?: ((arg: GroupHeaderSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; 'no-data'?: (() => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; 'expanded-row'?: ((arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; 'item.data-table-select'?: ((arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; 'item.data-table-expand'?: ((arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]) | undefined; }>; $root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null; $parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null; $emit: (event: string, ...args: any[]) => void; $el: any; $options: vue.ComponentOptionsBase<{ noDataText: string; loadingText: string; items: readonly (DataTableItem<any> | Group<any>)[]; hideNoData: boolean; } & { loading?: string | boolean | undefined; rowHeight?: number | undefined; 'onClick:row'?: ((e: Event, value: { item: DataTableItem; }) => void) | undefined; } & { $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'data-table-group'?: ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; }; 'v-slots'?: { [x: `item.${string}`]: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'data-table-group'?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: false | ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; } | undefined; } & { [x: `v-slot:item.${string}`]: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:data-table-group"?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; "v-slot:data-table-select"?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; "v-slot:item"?: false | ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; "v-slot:loading"?: false | (() => vue.VNodeChild) | undefined; "v-slot:group-header"?: false | ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined; "v-slot:expanded-row"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-select"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-expand"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, { noDataText: string; loadingText: string; items: readonly (DataTableItem<any> | Group<any>)[]; hideNoData: boolean; }, {}, string, vue.SlotsType<Partial<{ [x: `item.${string}`]: (arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'data-table-group': (arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'data-table-select': (arg: { props: Record<string, unknown>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; item: (arg: ItemSlot & { props: Record<string, any>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; loading: () => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'group-header': (arg: GroupHeaderSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'no-data': () => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'expanded-row': (arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'item.data-table-select': (arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'item.data-table-expand': (arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; }>>> & { beforeCreate?: ((() => void) | (() => void)[]) | undefined; created?: ((() => void) | (() => void)[]) | undefined; beforeMount?: ((() => void) | (() => void)[]) | undefined; mounted?: ((() => void) | (() => void)[]) | undefined; beforeUpdate?: ((() => void) | (() => void)[]) | undefined; updated?: ((() => void) | (() => void)[]) | undefined; activated?: ((() => void) | (() => void)[]) | undefined; deactivated?: ((() => void) | (() => void)[]) | undefined; beforeDestroy?: ((() => void) | (() => void)[]) | undefined; beforeUnmount?: ((() => void) | (() => void)[]) | undefined; destroyed?: ((() => void) | (() => void)[]) | undefined; unmounted?: ((() => void) | (() => void)[]) | undefined; renderTracked?: (((e: vue.DebuggerEvent) => void) | ((e: vue.DebuggerEvent) => void)[]) | undefined; renderTriggered?: (((e: vue.DebuggerEvent) => void) | ((e: vue.DebuggerEvent) => void)[]) | undefined; errorCaptured?: (((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void)[]) | undefined; }; $forceUpdate: () => void; $nextTick: typeof vue.nextTick; $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle; } & { noDataText: string; loadingText: string; items: readonly (DataTableItem<any> | Group<any>)[]; hideNoData: boolean; } & { loading?: string | boolean | undefined; rowHeight?: number | undefined; 'onClick:row'?: ((e: Event, value: { item: DataTableItem; }) => void) | undefined; } & { $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'data-table-group'?: ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; }; 'v-slots'?: { [x: `item.${string}`]: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'data-table-group'?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: false | ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; } | undefined; } & { [x: `v-slot:item.${string}`]: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:data-table-group"?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; "v-slot:data-table-select"?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; "v-slot:item"?: false | ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; "v-slot:loading"?: false | (() => vue.VNodeChild) | undefined; "v-slot:group-header"?: false | ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined; "v-slot:expanded-row"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-select"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-expand"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; } & vue.ShallowUnwrapRef<{}> & {} & vue.ComponentCustomProperties & {}; __isFragment?: undefined; __isTeleport?: undefined; __isSuspense?: undefined; } & vue.ComponentOptionsBase<{ noDataText: string; loadingText: string; items: readonly (DataTableItem<any> | Group<any>)[]; hideNoData: boolean; } & { loading?: string | boolean | undefined; rowHeight?: number | undefined; 'onClick:row'?: ((e: Event, value: { item: DataTableItem; }) => void) | undefined; } & { $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'data-table-group'?: ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((arg: ItemSlot) => vue.VNodeChild) | undefined; }; 'v-slots'?: { [x: `item.${string}`]: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'data-table-group'?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: false | ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; } | undefined; } & { [x: `v-slot:item.${string}`]: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:data-table-group"?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; "v-slot:data-table-select"?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; "v-slot:item"?: false | ((arg: ItemSlot & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; "v-slot:loading"?: false | (() => vue.VNodeChild) | undefined; "v-slot:group-header"?: false | ((arg: GroupHeaderSlot) => vue.VNodeChild) | undefined; "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined; "v-slot:expanded-row"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-select"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-expand"?: false | ((arg: ItemSlot) => vue.VNodeChild) | undefined; }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, { noDataText: string; loadingText: string; items: readonly (DataTableItem<any> | Group<any>)[]; hideNoData: boolean; }, {}, string, vue.SlotsType<Partial<{ [x: `item.${string}`]: (arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'data-table-group': (arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'data-table-select': (arg: { props: Record<string, unknown>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; item: (arg: ItemSlot & { props: Record<string, any>; }) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; loading: () => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'group-header': (arg: GroupHeaderSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'no-data': () => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'expanded-row': (arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'item.data-table-select': (arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; 'item.data-table-expand': (arg: ItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>[]; }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{ loading: (StringConstructor | BooleanConstructor)[]; loadingText: { type: StringConstructor; default: string; }; hideNoData: BooleanConstructor; items: { type: PropType<readonly (DataTableItem<any> | Group<any>)[]>; default: () => never[]; }; noDataText: { type: StringConstructor; default: string; }; rowHeight: NumberConstructor; 'onClick:row': PropType<(e: Event, value: { item: DataTableItem; }) => void>; }, vue.ExtractPropTypes<{ loading: (StringConstructor | BooleanConstructor)[]; loadingText: { type: StringConstructor; default: string; }; hideNoData: BooleanConstructor; items: { type: PropType<readonly (DataTableItem<any> | Group<any>)[]>; default: () => never[]; }; noDataText: { type: StringConstructor; default: string; }; rowHeight: NumberConstructor; 'onClick:row': PropType<(e: Event, value: { item: DataTableItem; }) => void>; }>>; type VDataTableRows = InstanceType<typeof VDataTableRows>; type VDataTableSlotProps = { page: number; itemsPerPage: number; sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>; pageCount: number; toggleSort: ReturnType<typeof provideSort>['toggleSort']; setItemsPerPage: ReturnType<typeof providePagination>['setItemsPerPage']; someSelected: boolean; allSelected: boolean; isSelected: ReturnType<typeof provideSelection>['isSelected']; select: ReturnType<typeof provideSelection>['select']; selectAll: ReturnType<typeof provideSelection>['selectAll']; toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']; isExpanded: ReturnType<typeof provideExpanded>['isExpanded']; toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']; isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']; toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']; items: readonly DataTableItem[]; groupedItems: readonly (DataTableItem | Group<DataTableItem>)[]; columns: InternalDataTableHeader[]; headers: InternalDataTableHeader[][]; }; declare const VDataTable: { new (...args: any[]): { $: vue.ComponentInternalInstance; $data: {}; $props: { [x: `v-slot:column.${string}`]: false | ((arg: { column: InternalDataTableHeader; selectAll: (value: boolean) => void; isSorted: (column: InternalDataTableHeader) => boolean; toggleSort: (column: InternalDataTableHeader) => void; sortBy: readonly SortItem[]; someSelected: boolean; allSelected: boolean; getSortIcon: (column: InternalDataTableHeader) => IconValue; }) => vue.VNodeChild) | undefined; [x: `v-slot:item.${string}`]: false | ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; style?: vue.StyleValue | undefined; expanded?: readonly string[] | undefined; tag?: string | undefined; page?: string | number | undefined; sticky?: boolean | undefined; headers?: vue.DeepReadonly<DataTableHeader[] | DataTableHeader[][]> | undefined; noDataText?: string | undefined; loadingText?: string | undefined; itemsPerPageText?: string | undefined; sortBy?: readonly SortItem[] | undefined; pageText?: string | undefined; items?: any[] | undefined; density?: Density | undefined; modelValue?: readonly any[] | undefined; selectStrategy?: "all" | "page" | "single" | undefined; itemValue?: SelectItemKey | undefined; returnObject?: boolean | undefined; hideNoData?: boolean | undefined; filterMode?: FilterMode | undefined; noFilter?: boolean | undefined; hover?: boolean | undefined; nextIcon?: string | undefined; prevIcon?: string | undefined; firstIcon?: string | undefined; lastIcon?: string | undefined; fixedHeader?: boolean | undefined; fixedFooter?: boolean | undefined; itemSelectable?: SelectItemKey | undefined; showSelect?: boolean | undefined; multiSort?: boolean | undefined; mustSort?: boolean | undefined; groupBy?: readonly SortItem[] | undefined; expandOnClick?: boolean | undefined; showExpand?: boolean | undefined; itemsPerPage?: string | number | undefined; firstPageLabel?: string | undefined; prevPageLabel?: string | undefined; nextPageLabel?: string | undefined; lastPageLabel?: string | undefined; itemsPerPageOptions?: readonly { title: string; value: number; }[] | undefined; showCurrentPage?: boolean | undefined; sortAscIcon?: IconValue | undefined; sortDescIcon?: IconValue | undefined; search?: string | undefined; key?: string | number | symbol | undefined; height?: string | number | undefined; width?: string | number | undefined; color?: string | undefined; loading?: string | boolean | undefined; class?: any; $children?: vue.VNodeChild | { [x: `item.${string}`]: ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; [x: `column.${string}`]: ((arg: { column: InternalDataTableHeader; selectAll: (value: boolean) => void; isSorted: (column: InternalDataTableHeader) => boolean; toggleSort: (column: InternalDataTableHeader) => void; sortBy: readonly SortItem[]; someSelected: boolean; allSelected: boolean; getSortIcon: (column: InternalDataTableHeader) => IconValue; }) => vue.VNodeChild) | undefined; 'data-table-group'?: ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; } & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((arg: { index: number; item: Group<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; toggleGroup: (group: Group<any>) => void; isGroupOpen: (group: Group<any>) => void; }) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined; loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined; 'column.data-table-select'?: ((arg: { column: InternalDataTableHeader; selectAll: (value: boolean) => void; isSorted: (column: InternalDataTableHeader) => boolean; toggleSort: (column: InternalDataTableHeader) => void; sortBy: readonly SortItem[]; someSelected: boolean; allSelected: boolean; getSortIcon: (column: InternalDataTableHeader) => IconValue; }) => vue.VNodeChild) | undefined; 'column.data-table-expand'?: ((arg: { column: InternalDataTableHeader; selectAll: (value: boolean) => void; isSorted: (column: InternalDataTableHeader) => boolean; toggleSort: (column: InternalDataTableHeader) => void; sortBy: readonly SortItem[]; someSelected: boolean; allSelected: boolean; getSortIcon: (column: InternalDataTableHeader) => IconValue; }) => vue.VNodeChild) | undefined; default?: ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; colgroup?: ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; top?: ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; body?: ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; tbody?: ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; thead?: ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; tfoot?: ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; bottom?: ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; 'footer.prepend'?: (() => vue.VNodeChild) | undefined; } | ((arg: VDataTableSlotProps) => vue.VNodeChild); ref?: vue.VNodeRef | undefined; ref_for?: boolean | undefined; ref_key?: string | undefined; theme?: string | undefined; "v-slot:default"?: false | ((arg: VDataTableSlotProps) => vue.VNodeChild) | undefined; 'v-slots'?: { [x: `item.${string}`]: false | ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; [x: `column.${string}`]: false | ((arg: { column: InternalDataTableHeader; selectAll: (value: boolean) => void; isSorted: (column: InternalDataTableHeader) => boolean; toggleSort: (column: InternalDataTableHeader) => void; sortBy: readonly SortItem[]; someSelected: boolean; allSelected: boolean; getSortIcon: (column: InternalDataTableHeader) => IconValue; }) => vue.VNodeChild) | undefined; 'data-table-group'?: false | ((arg: { item: Group<any>; count: number; props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; 'data-table-select'?: false | ((arg: { props: Record<string, unknown>; }) => vue.VNodeChild) | undefined; item?: false | ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; } & { props: Record<string, any>; }) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((arg: { index: number; item: Group<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; toggleGroup: (group: Group<any>) => void; isGroupOpen: (group: Group<any>) => void; }) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((arg: { index: number; item: DataTableItem<any>; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem<any>) => boolean; toggleExpand: (item: DataTableItem<any>) => void; isSelected: (items: SelectableItem | SelectableItem[]) => boolean; toggleSelect: (item: SelectableItem) => void; }) => vue.VNodeChild) | undefined; headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined; loader?: false | ((arg: LoaderSlotProps