UNPKG

vuetify

Version:

Vue Material Component Framework

1,091 lines (1,082 loc) 102 kB
import * as vue from 'vue'; import { PropType } from 'vue'; type SelectItemKey = boolean | string | (string | number)[] | ((item: Record<string, any>, fallback?: any) => any); interface InternalItem<T = any> { title: string; value: any; props: { [key: string]: any; title: string; value: any; }; children?: InternalItem<T>[]; raw: T; } /** * - 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 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'; width?: number; minWidth?: string; maxWidth?: string; sortable?: boolean; sort?: DataTableCompareFunction; }; type InternalDataTableHeader = DataTableHeader & { sortable: boolean; fixedOffset?: number; lastFixed?: boolean; }; type DataTableItem = InternalItem & { type: 'item'; columns: Record<string, unknown>; }; type GroupHeaderItem = { type: 'group-header'; id: string; key: string; value: string; depth: number; items: (GroupHeaderItem | DataTableItem)[]; }; type InternalDataTableItem = DataTableItem | GroupHeaderItem; type SortItem = { key: string; order?: boolean | 'asc' | 'desc'; }; type GroupHeaderSlot = { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }; type ItemSlot = { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }; declare const VDataTableRows: vue.DefineComponent<{ noDataText: string; loadingText: string; items: InternalDataTableItem[]; hideNoData: boolean; } & { loading?: string | boolean | undefined; rowHeight?: number | undefined; } & { $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; }; $slots?: { [x: `item.${string}`]: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; } | undefined; 'v-slots'?: { [x: `item.${string}`]: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; default?: false | (() => vue.VNodeChild) | undefined; item?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((args_0: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; } | undefined; } & { [x: `v-slot:item.${string}`]: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:default"?: false | (() => vue.VNodeChild) | undefined; "v-slot:item"?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:loading"?: false | (() => vue.VNodeChild) | undefined; "v-slot:group-header"?: false | ((args_0: GroupHeaderSlot) => vue.VNodeChild) | undefined; "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined; "v-slot:expanded-row"?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-select"?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-expand"?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, { 'click:row': (event: Event, value: { item: DataTableItem; }) => true; }, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, { noDataText: string; loadingText: string; items: InternalDataTableItem[]; hideNoData: boolean; } & { loading?: string | boolean | undefined; rowHeight?: number | undefined; } & { $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; }; $slots?: { [x: `item.${string}`]: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: ItemSlot) => vue.VNodeChild) | undefined; } | undefined; 'v-slots'?: { [x: `item.${string}`]: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; default?: false | (() => vue.VNodeChild) | undefined; item?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((args_0: GroupHeaderSlot) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; } | undefined; } & { [x: `v-slot:item.${string}`]: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:default"?: false | (() => vue.VNodeChild) | undefined; "v-slot:item"?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:loading"?: false | (() => vue.VNodeChild) | undefined; "v-slot:group-header"?: false | ((args_0: GroupHeaderSlot) => vue.VNodeChild) | undefined; "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined; "v-slot:expanded-row"?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-select"?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; "v-slot:item.data-table-expand"?: false | ((args_0: ItemSlot) => vue.VNodeChild) | undefined; } & { "onClick:row"?: ((event: Event, value: { item: DataTableItem; }) => any) | undefined; }, { noDataText: string; loadingText: string; items: InternalDataTableItem[]; hideNoData: boolean; }>; type VDataTableRows = InstanceType<typeof VDataTableRows>; declare const VDataTable: vue.DefineComponent<{ expanded: string[]; page: string | number; headers: DataTableHeader[] | DataTableHeader[][]; noDataText: string; sortBy: SortItem[]; items: any[]; modelValue: any[]; itemTitle: SelectItemKey; itemValue: NonNullable<SelectItemKey>; itemChildren: SelectItemKey; itemProps: SelectItemKey; returnObject: boolean; hideNoData: boolean; filterMode: FilterMode; noFilter: boolean; fixedHeader: boolean; fixedFooter: boolean; multiSort: boolean; mustSort: boolean; groupBy: SortItem[]; showSelect: boolean; expandOnClick: boolean; showExpand: boolean; itemsPerPage: string | number; } & { search?: string | undefined; height?: string | number | undefined; width?: string | number | undefined; customFilter?: FilterFunction | undefined; customKeyFilter?: FilterKeyFunctions | undefined; filterKeys?: FilterKeys | undefined; } & { $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; top?: (() => vue.VNodeChild) | undefined; headers?: (() => vue.VNodeChild) | undefined; body?: (() => vue.VNodeChild) | undefined; tbody?: (() => vue.VNodeChild) | undefined; thead?: (() => vue.VNodeChild) | undefined; tfoot?: (() => vue.VNodeChild) | undefined; bottom?: (() => vue.VNodeChild) | undefined; 'footer.prepend'?: (() => vue.VNodeChild) | undefined; colgroup?: (() => vue.VNodeChild) | undefined; }; $slots?: { [x: `item.${string}`]: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; top?: (() => vue.VNodeChild) | undefined; headers?: (() => vue.VNodeChild) | undefined; body?: (() => vue.VNodeChild) | undefined; tbody?: (() => vue.VNodeChild) | undefined; thead?: (() => vue.VNodeChild) | undefined; tfoot?: (() => vue.VNodeChild) | undefined; bottom?: (() => vue.VNodeChild) | undefined; 'footer.prepend'?: (() => vue.VNodeChild) | undefined; colgroup?: (() => vue.VNodeChild) | undefined; } | undefined; 'v-slots'?: { [x: `item.${string}`]: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: false | (() => vue.VNodeChild) | undefined; item?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; top?: false | (() => vue.VNodeChild) | undefined; headers?: false | (() => vue.VNodeChild) | undefined; body?: false | (() => vue.VNodeChild) | undefined; tbody?: false | (() => vue.VNodeChild) | undefined; thead?: false | (() => vue.VNodeChild) | undefined; tfoot?: false | (() => vue.VNodeChild) | undefined; bottom?: false | (() => vue.VNodeChild) | undefined; 'footer.prepend'?: false | (() => vue.VNodeChild) | undefined; colgroup?: false | (() => vue.VNodeChild) | undefined; } | undefined; } & { [x: `v-slot:item.${string}`]: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:default"?: false | (() => vue.VNodeChild) | undefined; "v-slot:item"?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:loading"?: false | (() => vue.VNodeChild) | undefined; "v-slot:group-header"?: false | ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined; "v-slot:expanded-row"?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:item.data-table-select"?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:item.data-table-expand"?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:top"?: false | (() => vue.VNodeChild) | undefined; "v-slot:headers"?: false | (() => vue.VNodeChild) | undefined; "v-slot:body"?: false | (() => vue.VNodeChild) | undefined; "v-slot:tbody"?: false | (() => vue.VNodeChild) | undefined; "v-slot:thead"?: false | (() => vue.VNodeChild) | undefined; "v-slot:tfoot"?: false | (() => vue.VNodeChild) | undefined; "v-slot:bottom"?: false | (() => vue.VNodeChild) | undefined; "v-slot:footer.prepend"?: false | (() => vue.VNodeChild) | undefined; "v-slot:colgroup"?: false | (() => vue.VNodeChild) | undefined; }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, { 'update:modelValue': (value: any[]) => true; 'update:page': (value: number) => true; 'update:itemsPerPage': (value: number) => true; 'update:sortBy': (value: any) => true; 'update:options': (value: any) => true; 'update:groupBy': (value: any) => true; 'update:expanded': (value: any) => true; 'click:row': (event: Event, value: { item: DataTableItem; }) => true; }, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, { expanded: string[]; page: string | number; headers: DataTableHeader[] | DataTableHeader[][]; noDataText: string; sortBy: SortItem[]; items: any[]; modelValue: any[]; itemTitle: SelectItemKey; itemValue: NonNullable<SelectItemKey>; itemChildren: SelectItemKey; itemProps: SelectItemKey; returnObject: boolean; hideNoData: boolean; filterMode: FilterMode; noFilter: boolean; fixedHeader: boolean; fixedFooter: boolean; multiSort: boolean; mustSort: boolean; groupBy: SortItem[]; showSelect: boolean; expandOnClick: boolean; showExpand: boolean; itemsPerPage: string | number; } & { search?: string | undefined; height?: string | number | undefined; width?: string | number | undefined; customFilter?: FilterFunction | undefined; customKeyFilter?: FilterKeyFunctions | undefined; filterKeys?: FilterKeys | undefined; } & { $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; top?: (() => vue.VNodeChild) | undefined; headers?: (() => vue.VNodeChild) | undefined; body?: (() => vue.VNodeChild) | undefined; tbody?: (() => vue.VNodeChild) | undefined; thead?: (() => vue.VNodeChild) | undefined; tfoot?: (() => vue.VNodeChild) | undefined; bottom?: (() => vue.VNodeChild) | undefined; 'footer.prepend'?: (() => vue.VNodeChild) | undefined; colgroup?: (() => vue.VNodeChild) | undefined; }; $slots?: { [x: `item.${string}`]: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; top?: (() => vue.VNodeChild) | undefined; headers?: (() => vue.VNodeChild) | undefined; body?: (() => vue.VNodeChild) | undefined; tbody?: (() => vue.VNodeChild) | undefined; thead?: (() => vue.VNodeChild) | undefined; tfoot?: (() => vue.VNodeChild) | undefined; bottom?: (() => vue.VNodeChild) | undefined; 'footer.prepend'?: (() => vue.VNodeChild) | undefined; colgroup?: (() => vue.VNodeChild) | undefined; } | undefined; 'v-slots'?: { [x: `item.${string}`]: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: false | (() => vue.VNodeChild) | undefined; item?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; top?: false | (() => vue.VNodeChild) | undefined; headers?: false | (() => vue.VNodeChild) | undefined; body?: false | (() => vue.VNodeChild) | undefined; tbody?: false | (() => vue.VNodeChild) | undefined; thead?: false | (() => vue.VNodeChild) | undefined; tfoot?: false | (() => vue.VNodeChild) | undefined; bottom?: false | (() => vue.VNodeChild) | undefined; 'footer.prepend'?: false | (() => vue.VNodeChild) | undefined; colgroup?: false | (() => vue.VNodeChild) | undefined; } | undefined; } & { [x: `v-slot:item.${string}`]: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:default"?: false | (() => vue.VNodeChild) | undefined; "v-slot:item"?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:loading"?: false | (() => vue.VNodeChild) | undefined; "v-slot:group-header"?: false | ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined; "v-slot:expanded-row"?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:item.data-table-select"?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:item.data-table-expand"?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; "v-slot:top"?: false | (() => vue.VNodeChild) | undefined; "v-slot:headers"?: false | (() => vue.VNodeChild) | undefined; "v-slot:body"?: false | (() => vue.VNodeChild) | undefined; "v-slot:tbody"?: false | (() => vue.VNodeChild) | undefined; "v-slot:thead"?: false | (() => vue.VNodeChild) | undefined; "v-slot:tfoot"?: false | (() => vue.VNodeChild) | undefined; "v-slot:bottom"?: false | (() => vue.VNodeChild) | undefined; "v-slot:footer.prepend"?: false | (() => vue.VNodeChild) | undefined; "v-slot:colgroup"?: false | (() => vue.VNodeChild) | undefined; } & { "onUpdate:modelValue"?: ((value: any[]) => any) | undefined; "onUpdate:sortBy"?: ((value: any) => any) | undefined; "onUpdate:expanded"?: ((value: any) => any) | undefined; "onClick:row"?: ((event: Event, value: { item: DataTableItem; }) => any) | undefined; "onUpdate:page"?: ((value: number) => any) | undefined; "onUpdate:itemsPerPage"?: ((value: number) => any) | undefined; "onUpdate:options"?: ((value: any) => any) | undefined; "onUpdate:groupBy"?: ((value: any) => any) | undefined; }, { expanded: string[]; page: string | number; headers: DataTableHeader[] | DataTableHeader[][]; noDataText: string; sortBy: SortItem[]; items: any[]; modelValue: any[]; itemTitle: SelectItemKey; itemValue: NonNullable<SelectItemKey>; itemChildren: SelectItemKey; itemProps: SelectItemKey; returnObject: boolean; hideNoData: boolean; filterMode: FilterMode; noFilter: boolean; fixedHeader: boolean; fixedFooter: boolean; multiSort: boolean; mustSort: boolean; groupBy: SortItem[]; showSelect: boolean; expandOnClick: boolean; showExpand: boolean; itemsPerPage: string | number; }>; type VDataTable = InstanceType<typeof VDataTable>; declare const VDataTableRow: vue.DefineComponent<{ item: PropType<DataTableItem>; }, void, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{ item: PropType<DataTableItem>; }>>, {}>; type VDataTableRow = InstanceType<typeof VDataTableRow>; declare const VDataTableVirtual: vue.DefineComponent<{ expanded: string[]; headers: DataTableHeader[] | DataTableHeader[][]; noDataText: string; sortBy: SortItem[]; items: any[]; modelValue: any[]; itemTitle: SelectItemKey; itemValue: NonNullable<SelectItemKey>; itemChildren: SelectItemKey; itemProps: SelectItemKey; returnObject: boolean; hideNoData: boolean; filterMode: FilterMode; noFilter: boolean; fixedHeader: boolean; fixedFooter: boolean; multiSort: boolean; mustSort: boolean; groupBy: SortItem[]; showSelect: boolean; expandOnClick: boolean; showExpand: boolean; visibleItems: string | number; itemHeight: string | number; } & { search?: string | undefined; height?: string | number | undefined; width?: string | number | undefined; customFilter?: FilterFunction | undefined; customKeyFilter?: FilterKeyFunctions | undefined; filterKeys?: FilterKeys | undefined; } & { $children?: {} | vue.VNodeChild | { [x: `item.${string}`]: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; top?: (() => vue.VNodeChild) | undefined; headers?: (() => vue.VNodeChild) | undefined; bottom?: (() => vue.VNodeChild) | undefined; }; $slots?: { [x: `item.${string}`]: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: (() => vue.VNodeChild) | undefined; item?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: (() => vue.VNodeChild) | undefined; 'group-header'?: ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: (() => vue.VNodeChild) | undefined; 'expanded-row'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-select'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; 'item.data-table-expand'?: ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; top?: (() => vue.VNodeChild) | undefined; headers?: (() => vue.VNodeChild) | undefined; bottom?: (() => vue.VNodeChild) | undefined; } | undefined; 'v-slots'?: { [x: `item.${string}`]: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; default?: false | (() => vue.VNodeChild) | undefined; item?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; }) => vue.VNodeChild) | undefined; loading?: false | (() => vue.VNodeChild) | undefined; 'group-header'?: false | ((args_0: { index: number; item: GroupHeaderItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableItem) => void; toggleGroup: (group: GroupHeaderItem) => void; isGroupOpen: (group: GroupHeaderItem) => boolean; }) => vue.VNodeChild) | undefined; 'no-data'?: false | (() => vue.VNodeChild) | undefined; 'expanded-row'?: false | ((args_0: { index: number; item: InternalDataTableItem; columns: InternalDataTableHeader[]; isExpanded: (item: DataTableItem) => boolean; toggleExpand: (item: DataTableItem) => void; isSelected: (items: DataTableItem[]) => boolean; toggleSelect: (item: DataTableI