routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+844
@@ -0,0 +1,844 @@
|
||||
import { provideExpanded } from '../VDataTable/composables/expand.js';
|
||||
import { provideGroupBy } from '../VDataTable/composables/group.js';
|
||||
import { providePagination } from '../VDataTable/composables/paginate.js';
|
||||
import { provideSelection } from '../VDataTable/composables/select.js';
|
||||
import { provideSort } from '../VDataTable/composables/sort.js';
|
||||
import type { Component } from 'vue';
|
||||
import type { DataIteratorItem } from './composables/items.js';
|
||||
import type { Group, GroupSummary } from '../VDataTable/composables/group.js';
|
||||
import type { SortItem } from '../VDataTable/composables/sort.js';
|
||||
import type { LoaderSlotProps } from '../../composables/loader.js';
|
||||
import type { GenericProps } from '../../util/index.js';
|
||||
type VDataIteratorSlotProps<T> = {
|
||||
page: number;
|
||||
itemsPerPage: number;
|
||||
sortBy: readonly SortItem[];
|
||||
pageCount: number;
|
||||
toggleSort: ReturnType<typeof provideSort>['toggleSort'];
|
||||
prevPage: ReturnType<typeof providePagination>['prevPage'];
|
||||
nextPage: ReturnType<typeof providePagination>['nextPage'];
|
||||
setPage: ReturnType<typeof providePagination>['setPage'];
|
||||
setItemsPerPage: ReturnType<typeof providePagination>['setItemsPerPage'];
|
||||
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 DataIteratorItem<T>[];
|
||||
itemsCount: number;
|
||||
groupedItems: readonly (DataIteratorItem<T> | Group<DataIteratorItem<T>> | GroupSummary<DataIteratorItem<T>>)[];
|
||||
};
|
||||
export type VDataIteratorSlots<T> = {
|
||||
default: VDataIteratorSlotProps<T>;
|
||||
header: VDataIteratorSlotProps<T>;
|
||||
footer: VDataIteratorSlotProps<T>;
|
||||
loader: LoaderSlotProps;
|
||||
'no-data': never;
|
||||
};
|
||||
export declare const makeVDataIteratorProps: <Defaults extends {
|
||||
class?: unknown;
|
||||
style?: unknown;
|
||||
customFilter?: unknown;
|
||||
customKeyFilter?: unknown;
|
||||
filterKeys?: unknown;
|
||||
filterMode?: unknown;
|
||||
noFilter?: unknown;
|
||||
expandOnClick?: unknown;
|
||||
showExpand?: unknown;
|
||||
expanded?: unknown;
|
||||
initialSortOrder?: unknown;
|
||||
sortBy?: unknown;
|
||||
customKeySort?: unknown;
|
||||
multiSort?: unknown;
|
||||
mustSort?: unknown;
|
||||
groupBy?: unknown;
|
||||
showSelect?: unknown;
|
||||
selectStrategy?: unknown;
|
||||
modelValue?: unknown;
|
||||
valueComparator?: unknown;
|
||||
tag?: unknown;
|
||||
transition?: unknown;
|
||||
page?: unknown;
|
||||
itemsPerPage?: unknown;
|
||||
pageBy?: unknown;
|
||||
items?: unknown;
|
||||
itemValue?: unknown;
|
||||
itemSelectable?: unknown;
|
||||
returnObject?: unknown;
|
||||
search?: unknown;
|
||||
loading?: unknown;
|
||||
itemsLength?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
|
||||
default: unknown extends Defaults["class"] ? any : any;
|
||||
};
|
||||
style: unknown extends Defaults["style"] ? {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
|
||||
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
|
||||
};
|
||||
customFilter: unknown extends Defaults["customFilter"] ? import("vue").PropType<import("../../types.js").FilterFunction> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["customFilter"] ? import("../../types.js").FilterFunction : import("../../types.js").FilterFunction | Defaults["customFilter"]>;
|
||||
default: unknown extends Defaults["customFilter"] ? import("../../types.js").FilterFunction : import("../../types.js").FilterFunction | Defaults["customFilter"];
|
||||
};
|
||||
customKeyFilter: unknown extends Defaults["customKeyFilter"] ? import("vue").PropType<import("../../composables/filter.js").FilterKeyFunctions> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["customKeyFilter"] ? import("../../composables/filter.js").FilterKeyFunctions : import("../../composables/filter.js").FilterKeyFunctions | Defaults["customKeyFilter"]>;
|
||||
default: unknown extends Defaults["customKeyFilter"] ? import("../../composables/filter.js").FilterKeyFunctions : import("../../composables/filter.js").FilterKeyFunctions | Defaults["customKeyFilter"];
|
||||
};
|
||||
filterKeys: unknown extends Defaults["filterKeys"] ? import("vue").PropType<import("../../composables/filter.js").FilterKeys> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["filterKeys"] ? import("../../composables/filter.js").FilterKeys : Defaults["filterKeys"] | import("../../composables/filter.js").FilterKeys>;
|
||||
default: unknown extends Defaults["filterKeys"] ? import("../../composables/filter.js").FilterKeys : Defaults["filterKeys"] | NonNullable<import("../../composables/filter.js").FilterKeys>;
|
||||
};
|
||||
filterMode: unknown extends Defaults["filterMode"] ? {
|
||||
type: import("vue").PropType<import("../../composables/filter.js").FilterMode>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../composables/filter.js").FilterMode>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["filterMode"] ? import("../../composables/filter.js").FilterMode : Defaults["filterMode"] | import("../../composables/filter.js").FilterMode>;
|
||||
default: unknown extends Defaults["filterMode"] ? import("../../composables/filter.js").FilterMode : Defaults["filterMode"] | NonNullable<import("../../composables/filter.js").FilterMode>;
|
||||
};
|
||||
noFilter: unknown extends Defaults["noFilter"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["noFilter"] ? boolean : boolean | Defaults["noFilter"]>;
|
||||
default: unknown extends Defaults["noFilter"] ? boolean : boolean | Defaults["noFilter"];
|
||||
};
|
||||
expandOnClick: unknown extends Defaults["expandOnClick"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["expandOnClick"] ? boolean : boolean | Defaults["expandOnClick"]>;
|
||||
default: unknown extends Defaults["expandOnClick"] ? boolean : boolean | Defaults["expandOnClick"];
|
||||
};
|
||||
showExpand: unknown extends Defaults["showExpand"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["showExpand"] ? boolean : boolean | Defaults["showExpand"]>;
|
||||
default: unknown extends Defaults["showExpand"] ? boolean : boolean | Defaults["showExpand"];
|
||||
};
|
||||
expanded: unknown extends Defaults["expanded"] ? {
|
||||
type: import("vue").PropType<readonly string[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<readonly string[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["expanded"] ? readonly string[] : readonly string[] | Defaults["expanded"]>;
|
||||
default: unknown extends Defaults["expanded"] ? readonly string[] : readonly string[] | Defaults["expanded"];
|
||||
};
|
||||
initialSortOrder: unknown extends Defaults["initialSortOrder"] ? {
|
||||
type: import("vue").PropType<"asc" | "desc">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<"asc" | "desc">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["initialSortOrder"] ? "asc" | "desc" : "asc" | "desc" | Defaults["initialSortOrder"]>;
|
||||
default: unknown extends Defaults["initialSortOrder"] ? "asc" | "desc" : Defaults["initialSortOrder"] | NonNullable<"asc" | "desc">;
|
||||
};
|
||||
sortBy: unknown extends Defaults["sortBy"] ? {
|
||||
type: import("vue").PropType<readonly SortItem[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<readonly SortItem[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["sortBy"] ? readonly SortItem[] : readonly SortItem[] | Defaults["sortBy"]>;
|
||||
default: unknown extends Defaults["sortBy"] ? readonly SortItem[] : readonly SortItem[] | Defaults["sortBy"];
|
||||
};
|
||||
customKeySort: unknown extends Defaults["customKeySort"] ? import("vue").PropType<Record<string, import("../../types.js").DataTableCompareFunction>> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["customKeySort"] ? Record<string, import("../../types.js").DataTableCompareFunction> : Record<string, import("../../types.js").DataTableCompareFunction> | Defaults["customKeySort"]>;
|
||||
default: unknown extends Defaults["customKeySort"] ? Record<string, import("../../types.js").DataTableCompareFunction> : Record<string, import("../../types.js").DataTableCompareFunction> | Defaults["customKeySort"];
|
||||
};
|
||||
multiSort: unknown extends Defaults["multiSort"] ? {
|
||||
type: import("vue").PropType<boolean | import("../VDataTable/composables/sort.js").MultiSortProps>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<boolean | import("../VDataTable/composables/sort.js").MultiSortProps>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["multiSort"] ? boolean | import("../VDataTable/composables/sort.js").MultiSortProps : boolean | import("../VDataTable/composables/sort.js").MultiSortProps | Defaults["multiSort"]>;
|
||||
default: unknown extends Defaults["multiSort"] ? boolean | import("../VDataTable/composables/sort.js").MultiSortProps : Defaults["multiSort"] | NonNullable<boolean | import("../VDataTable/composables/sort.js").MultiSortProps>;
|
||||
};
|
||||
mustSort: unknown extends Defaults["mustSort"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["mustSort"] ? boolean : boolean | Defaults["mustSort"]>;
|
||||
default: unknown extends Defaults["mustSort"] ? boolean : boolean | Defaults["mustSort"];
|
||||
};
|
||||
groupBy: unknown extends Defaults["groupBy"] ? {
|
||||
type: import("vue").PropType<readonly SortItem[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<readonly SortItem[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["groupBy"] ? readonly SortItem[] : readonly SortItem[] | Defaults["groupBy"]>;
|
||||
default: unknown extends Defaults["groupBy"] ? readonly SortItem[] : readonly SortItem[] | Defaults["groupBy"];
|
||||
};
|
||||
showSelect: unknown extends Defaults["showSelect"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["showSelect"] ? boolean : boolean | Defaults["showSelect"]>;
|
||||
default: unknown extends Defaults["showSelect"] ? boolean : boolean | Defaults["showSelect"];
|
||||
};
|
||||
selectStrategy: unknown extends Defaults["selectStrategy"] ? {
|
||||
type: import("vue").PropType<"all" | "page" | "single">;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<"all" | "page" | "single">;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["selectStrategy"] ? "all" | "page" | "single" : "all" | "page" | "single" | Defaults["selectStrategy"]>;
|
||||
default: unknown extends Defaults["selectStrategy"] ? "all" | "page" | "single" : Defaults["selectStrategy"] | NonNullable<"all" | "page" | "single">;
|
||||
};
|
||||
modelValue: unknown extends Defaults["modelValue"] ? {
|
||||
type: import("vue").PropType<readonly any[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<readonly any[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["modelValue"] ? readonly any[] : readonly any[] | Defaults["modelValue"]>;
|
||||
default: unknown extends Defaults["modelValue"] ? readonly any[] : readonly any[] | Defaults["modelValue"];
|
||||
};
|
||||
valueComparator: unknown extends Defaults["valueComparator"] ? import("vue").PropType<import("../../util/index.js").ValueComparator> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["valueComparator"] ? import("../../util/index.js").ValueComparator : import("../../util/index.js").ValueComparator | Defaults["valueComparator"]>;
|
||||
default: unknown extends Defaults["valueComparator"] ? import("../../util/index.js").ValueComparator : import("../../util/index.js").ValueComparator | Defaults["valueComparator"];
|
||||
};
|
||||
tag: unknown extends Defaults["tag"] ? {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
|
||||
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
transition: unknown extends Defaults["transition"] ? {
|
||||
type: import("vue").PropType<string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
default: {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | NonNullable<string | boolean | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
default: {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | NonNullable<string | boolean | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["transition"] ? string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null : string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | Defaults["transition"] | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
default: unknown extends Defaults["transition"] ? string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null : Defaults["transition"] | NonNullable<string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
};
|
||||
page: unknown extends Defaults["page"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["page"] ? string | number : string | number | Defaults["page"]>;
|
||||
default: unknown extends Defaults["page"] ? string | number : Defaults["page"] | NonNullable<string | number>;
|
||||
};
|
||||
itemsPerPage: unknown extends Defaults["itemsPerPage"] ? Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<string | number>;
|
||||
default: NonNullable<string | number>;
|
||||
} : Omit<Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<string | number>;
|
||||
default: NonNullable<string | number>;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["itemsPerPage"] ? string | number : string | number | Defaults["itemsPerPage"]>;
|
||||
default: unknown extends Defaults["itemsPerPage"] ? string | number : Defaults["itemsPerPage"] | NonNullable<string | number>;
|
||||
};
|
||||
pageBy: unknown extends Defaults["pageBy"] ? {
|
||||
type: import("vue").PropType<"any" | "auto" | "item">;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<"any" | "auto" | "item">;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["pageBy"] ? "any" | "auto" | "item" : "any" | "auto" | "item" | Defaults["pageBy"]>;
|
||||
default: unknown extends Defaults["pageBy"] ? "any" | "auto" | "item" : Defaults["pageBy"] | NonNullable<"any" | "auto" | "item">;
|
||||
};
|
||||
items: unknown extends Defaults["items"] ? {
|
||||
type: import("vue").PropType<any[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<any[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["items"] ? any[] : any[] | Defaults["items"]>;
|
||||
default: unknown extends Defaults["items"] ? any[] : any[] | Defaults["items"];
|
||||
};
|
||||
itemValue: unknown extends Defaults["itemValue"] ? {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["itemValue"] ? import("../../util/index.js").SelectItemKey : Defaults["itemValue"] | import("../../util/index.js").SelectItemKey>;
|
||||
default: unknown extends Defaults["itemValue"] ? import("../../util/index.js").SelectItemKey : Defaults["itemValue"] | NonNullable<import("../../util/index.js").SelectItemKey>;
|
||||
};
|
||||
itemSelectable: unknown extends Defaults["itemSelectable"] ? {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["itemSelectable"] ? import("../../util/index.js").SelectItemKey : Defaults["itemSelectable"] | import("../../util/index.js").SelectItemKey>;
|
||||
default: unknown extends Defaults["itemSelectable"] ? import("../../util/index.js").SelectItemKey : Defaults["itemSelectable"] | NonNullable<import("../../util/index.js").SelectItemKey>;
|
||||
};
|
||||
returnObject: unknown extends Defaults["returnObject"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["returnObject"] ? boolean : boolean | Defaults["returnObject"]>;
|
||||
default: unknown extends Defaults["returnObject"] ? boolean : boolean | Defaults["returnObject"];
|
||||
};
|
||||
search: unknown extends Defaults["search"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["search"] ? string : string | Defaults["search"]>;
|
||||
default: unknown extends Defaults["search"] ? string : string | Defaults["search"];
|
||||
};
|
||||
loading: unknown extends Defaults["loading"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["loading"] ? boolean : boolean | Defaults["loading"]>;
|
||||
default: unknown extends Defaults["loading"] ? boolean : boolean | Defaults["loading"];
|
||||
};
|
||||
itemsLength: unknown extends Defaults["itemsLength"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["itemsLength"] ? string | number : string | number | Defaults["itemsLength"]>;
|
||||
default: unknown extends Defaults["itemsLength"] ? string | number : Defaults["itemsLength"] | NonNullable<string | number>;
|
||||
};
|
||||
};
|
||||
export declare const VDataIterator: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
filterMode: import("../../composables/filter.js").FilterMode;
|
||||
noFilter: boolean;
|
||||
expandOnClick: boolean;
|
||||
showExpand: boolean;
|
||||
expanded: readonly string[];
|
||||
initialSortOrder: "asc" | "desc";
|
||||
sortBy: readonly SortItem[];
|
||||
multiSort: boolean | import("../VDataTable/composables/sort.js").MultiSortProps;
|
||||
mustSort: boolean;
|
||||
groupBy: readonly SortItem[];
|
||||
showSelect: boolean;
|
||||
selectStrategy: "all" | "page" | "single";
|
||||
modelValue: readonly any[];
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
transition: string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null;
|
||||
page: string | number;
|
||||
itemsPerPage: string | number;
|
||||
pageBy: "any" | "auto" | "item";
|
||||
itemValue: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemSelectable: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
returnObject: boolean;
|
||||
loading: boolean;
|
||||
} & {
|
||||
class?: any;
|
||||
customFilter?: import("../../types.js").FilterFunction | undefined;
|
||||
customKeyFilter?: import("../../composables/filter.js").FilterKeyFunctions | undefined;
|
||||
filterKeys?: import("../../composables/filter.js").FilterKeys | undefined;
|
||||
customKeySort?: Record<string, import("../../types.js").DataTableCompareFunction> | undefined;
|
||||
valueComparator?: import("../../util/index.js").ValueComparator | undefined;
|
||||
search?: string | undefined;
|
||||
itemsLength?: string | number | undefined;
|
||||
} & {
|
||||
"onUpdate:currentItems"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:expanded"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:groupBy"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:itemsPerPage"?: ((value: number) => any) | undefined;
|
||||
"onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
|
||||
"onUpdate:options"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:page"?: ((value: number) => any) | undefined;
|
||||
"onUpdate:sortBy"?: ((value: any) => any) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Omit<{
|
||||
'update:modelValue': (value: any[]) => true;
|
||||
'update:groupBy': (value: any) => true;
|
||||
'update:page': (value: number) => true;
|
||||
'update:itemsPerPage': (value: number) => true;
|
||||
'update:sortBy': (value: any) => true;
|
||||
'update:options': (value: any) => true;
|
||||
'update:expanded': (value: any) => true;
|
||||
'update:currentItems': (value: any) => true;
|
||||
}, "$children" | "items" | "v-slot:default" | "v-slot:footer" | "v-slot:header" | "v-slot:loader" | "v-slot:no-data" | "v-slots">, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
style: import("vue").StyleValue;
|
||||
filterMode: import("../../composables/filter.js").FilterMode;
|
||||
noFilter: boolean;
|
||||
expandOnClick: boolean;
|
||||
showExpand: boolean;
|
||||
expanded: readonly string[];
|
||||
initialSortOrder: "asc" | "desc";
|
||||
sortBy: readonly SortItem[];
|
||||
multiSort: boolean | import("../VDataTable/composables/sort.js").MultiSortProps;
|
||||
mustSort: boolean;
|
||||
groupBy: readonly SortItem[];
|
||||
showSelect: boolean;
|
||||
selectStrategy: "all" | "page" | "single";
|
||||
modelValue: readonly any[];
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
transition: string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null;
|
||||
page: string | number;
|
||||
itemsPerPage: string | number;
|
||||
pageBy: "any" | "auto" | "item";
|
||||
itemValue: import("../../util/index.js").SelectItemKey;
|
||||
itemSelectable: import("../../util/index.js").SelectItemKey;
|
||||
returnObject: boolean;
|
||||
loading: boolean;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
default: (arg: VDataIteratorSlotProps<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
header: (arg: VDataIteratorSlotProps<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
footer: (arg: VDataIteratorSlotProps<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
loader: (arg: LoaderSlotProps) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
'no-data': () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
filterMode: import("../../composables/filter.js").FilterMode;
|
||||
noFilter: boolean;
|
||||
expandOnClick: boolean;
|
||||
showExpand: boolean;
|
||||
expanded: readonly string[];
|
||||
initialSortOrder: "asc" | "desc";
|
||||
sortBy: readonly SortItem[];
|
||||
multiSort: boolean | import("../VDataTable/composables/sort.js").MultiSortProps;
|
||||
mustSort: boolean;
|
||||
groupBy: readonly SortItem[];
|
||||
showSelect: boolean;
|
||||
selectStrategy: "all" | "page" | "single";
|
||||
modelValue: readonly any[];
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
transition: string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null;
|
||||
page: string | number;
|
||||
itemsPerPage: string | number;
|
||||
pageBy: "any" | "auto" | "item";
|
||||
itemValue: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemSelectable: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
returnObject: boolean;
|
||||
loading: boolean;
|
||||
} & {
|
||||
class?: any;
|
||||
customFilter?: import("../../types.js").FilterFunction | undefined;
|
||||
customKeyFilter?: import("../../composables/filter.js").FilterKeyFunctions | undefined;
|
||||
filterKeys?: import("../../composables/filter.js").FilterKeys | undefined;
|
||||
customKeySort?: Record<string, import("../../types.js").DataTableCompareFunction> | undefined;
|
||||
valueComparator?: import("../../util/index.js").ValueComparator | undefined;
|
||||
search?: string | undefined;
|
||||
itemsLength?: string | number | undefined;
|
||||
} & {
|
||||
"onUpdate:currentItems"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:expanded"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:groupBy"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:itemsPerPage"?: ((value: number) => any) | undefined;
|
||||
"onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
|
||||
"onUpdate:options"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:page"?: ((value: number) => any) | undefined;
|
||||
"onUpdate:sortBy"?: ((value: any) => any) | undefined;
|
||||
}, {}, {}, {}, {}, {
|
||||
style: import("vue").StyleValue;
|
||||
filterMode: import("../../composables/filter.js").FilterMode;
|
||||
noFilter: boolean;
|
||||
expandOnClick: boolean;
|
||||
showExpand: boolean;
|
||||
expanded: readonly string[];
|
||||
initialSortOrder: "asc" | "desc";
|
||||
sortBy: readonly SortItem[];
|
||||
multiSort: boolean | import("../VDataTable/composables/sort.js").MultiSortProps;
|
||||
mustSort: boolean;
|
||||
groupBy: readonly SortItem[];
|
||||
showSelect: boolean;
|
||||
selectStrategy: "all" | "page" | "single";
|
||||
modelValue: readonly any[];
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
transition: string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null;
|
||||
page: string | number;
|
||||
itemsPerPage: string | number;
|
||||
pageBy: "any" | "auto" | "item";
|
||||
itemValue: import("../../util/index.js").SelectItemKey;
|
||||
itemSelectable: import("../../util/index.js").SelectItemKey;
|
||||
returnObject: boolean;
|
||||
loading: boolean;
|
||||
}>;
|
||||
__isFragment?: never;
|
||||
__isTeleport?: never;
|
||||
__isSuspense?: never;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
filterMode: import("../../composables/filter.js").FilterMode;
|
||||
noFilter: boolean;
|
||||
expandOnClick: boolean;
|
||||
showExpand: boolean;
|
||||
expanded: readonly string[];
|
||||
initialSortOrder: "asc" | "desc";
|
||||
sortBy: readonly SortItem[];
|
||||
multiSort: boolean | import("../VDataTable/composables/sort.js").MultiSortProps;
|
||||
mustSort: boolean;
|
||||
groupBy: readonly SortItem[];
|
||||
showSelect: boolean;
|
||||
selectStrategy: "all" | "page" | "single";
|
||||
modelValue: readonly any[];
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
transition: string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null;
|
||||
page: string | number;
|
||||
itemsPerPage: string | number;
|
||||
pageBy: "any" | "auto" | "item";
|
||||
itemValue: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemSelectable: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
returnObject: boolean;
|
||||
loading: boolean;
|
||||
} & {
|
||||
class?: any;
|
||||
customFilter?: import("../../types.js").FilterFunction | undefined;
|
||||
customKeyFilter?: import("../../composables/filter.js").FilterKeyFunctions | undefined;
|
||||
filterKeys?: import("../../composables/filter.js").FilterKeys | undefined;
|
||||
customKeySort?: Record<string, import("../../types.js").DataTableCompareFunction> | undefined;
|
||||
valueComparator?: import("../../util/index.js").ValueComparator | undefined;
|
||||
search?: string | undefined;
|
||||
itemsLength?: string | number | undefined;
|
||||
} & {
|
||||
"onUpdate:currentItems"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:expanded"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:groupBy"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:itemsPerPage"?: ((value: number) => any) | undefined;
|
||||
"onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
|
||||
"onUpdate:options"?: ((value: any) => any) | undefined;
|
||||
"onUpdate:page"?: ((value: number) => any) | undefined;
|
||||
"onUpdate:sortBy"?: ((value: any) => any) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Omit<{
|
||||
'update:modelValue': (value: any[]) => true;
|
||||
'update:groupBy': (value: any) => true;
|
||||
'update:page': (value: number) => true;
|
||||
'update:itemsPerPage': (value: number) => true;
|
||||
'update:sortBy': (value: any) => true;
|
||||
'update:options': (value: any) => true;
|
||||
'update:expanded': (value: any) => true;
|
||||
'update:currentItems': (value: any) => true;
|
||||
}, "$children" | "items" | "v-slot:default" | "v-slot:footer" | "v-slot:header" | "v-slot:loader" | "v-slot:no-data" | "v-slots">, string, {
|
||||
style: import("vue").StyleValue;
|
||||
filterMode: import("../../composables/filter.js").FilterMode;
|
||||
noFilter: boolean;
|
||||
expandOnClick: boolean;
|
||||
showExpand: boolean;
|
||||
expanded: readonly string[];
|
||||
initialSortOrder: "asc" | "desc";
|
||||
sortBy: readonly SortItem[];
|
||||
multiSort: boolean | import("../VDataTable/composables/sort.js").MultiSortProps;
|
||||
mustSort: boolean;
|
||||
groupBy: readonly SortItem[];
|
||||
showSelect: boolean;
|
||||
selectStrategy: "all" | "page" | "single";
|
||||
modelValue: readonly any[];
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
transition: string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null;
|
||||
page: string | number;
|
||||
itemsPerPage: string | number;
|
||||
pageBy: "any" | "auto" | "item";
|
||||
itemValue: import("../../util/index.js").SelectItemKey;
|
||||
itemSelectable: import("../../util/index.js").SelectItemKey;
|
||||
returnObject: boolean;
|
||||
loading: boolean;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
default: (arg: VDataIteratorSlotProps<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
header: (arg: VDataIteratorSlotProps<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
footer: (arg: VDataIteratorSlotProps<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
loader: (arg: LoaderSlotProps) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
'no-data': () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new <T>(props: {
|
||||
items?: readonly T[];
|
||||
}, slots: VDataIteratorSlots<T>) => GenericProps<typeof props, typeof slots>) & import("../../util/index.js").FilterPropsOptions<{
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
customFilter: import("vue").PropType<import("../../types.js").FilterFunction>;
|
||||
customKeyFilter: import("vue").PropType<import("../../composables/filter.js").FilterKeyFunctions>;
|
||||
filterKeys: import("vue").PropType<import("../../composables/filter.js").FilterKeys>;
|
||||
filterMode: {
|
||||
type: import("vue").PropType<import("../../composables/filter.js").FilterMode>;
|
||||
default: string;
|
||||
};
|
||||
noFilter: BooleanConstructor;
|
||||
expandOnClick: BooleanConstructor;
|
||||
showExpand: BooleanConstructor;
|
||||
expanded: {
|
||||
type: import("vue").PropType<readonly string[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
initialSortOrder: {
|
||||
type: import("vue").PropType<"asc" | "desc">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
sortBy: {
|
||||
type: import("vue").PropType<readonly SortItem[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
customKeySort: import("vue").PropType<Record<string, import("../../types.js").DataTableCompareFunction>>;
|
||||
multiSort: {
|
||||
type: import("vue").PropType<boolean | import("../VDataTable/composables/sort.js").MultiSortProps>;
|
||||
default: boolean;
|
||||
};
|
||||
mustSort: BooleanConstructor;
|
||||
groupBy: {
|
||||
type: import("vue").PropType<readonly SortItem[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
showSelect: BooleanConstructor;
|
||||
selectStrategy: {
|
||||
type: import("vue").PropType<"all" | "page" | "single">;
|
||||
default: string;
|
||||
};
|
||||
modelValue: {
|
||||
type: import("vue").PropType<readonly any[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
valueComparator: import("vue").PropType<import("../../util/index.js").ValueComparator>;
|
||||
tag: {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
transition: {
|
||||
type: import("vue").PropType<string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
default: {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | NonNullable<string | boolean | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
};
|
||||
page: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
};
|
||||
itemsPerPage: Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<string | number>;
|
||||
default: NonNullable<string | number>;
|
||||
};
|
||||
pageBy: {
|
||||
type: import("vue").PropType<"any" | "auto" | "item">;
|
||||
default: string;
|
||||
};
|
||||
items: {
|
||||
type: import("vue").PropType<any[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
itemValue: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
};
|
||||
itemSelectable: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: null;
|
||||
};
|
||||
returnObject: BooleanConstructor;
|
||||
search: StringConstructor;
|
||||
loading: BooleanConstructor;
|
||||
itemsLength: (NumberConstructor | StringConstructor)[];
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
customFilter: import("vue").PropType<import("../../types.js").FilterFunction>;
|
||||
customKeyFilter: import("vue").PropType<import("../../composables/filter.js").FilterKeyFunctions>;
|
||||
filterKeys: import("vue").PropType<import("../../composables/filter.js").FilterKeys>;
|
||||
filterMode: {
|
||||
type: import("vue").PropType<import("../../composables/filter.js").FilterMode>;
|
||||
default: string;
|
||||
};
|
||||
noFilter: BooleanConstructor;
|
||||
expandOnClick: BooleanConstructor;
|
||||
showExpand: BooleanConstructor;
|
||||
expanded: {
|
||||
type: import("vue").PropType<readonly string[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
initialSortOrder: {
|
||||
type: import("vue").PropType<"asc" | "desc">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
sortBy: {
|
||||
type: import("vue").PropType<readonly SortItem[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
customKeySort: import("vue").PropType<Record<string, import("../../types.js").DataTableCompareFunction>>;
|
||||
multiSort: {
|
||||
type: import("vue").PropType<boolean | import("../VDataTable/composables/sort.js").MultiSortProps>;
|
||||
default: boolean;
|
||||
};
|
||||
mustSort: BooleanConstructor;
|
||||
groupBy: {
|
||||
type: import("vue").PropType<readonly SortItem[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
showSelect: BooleanConstructor;
|
||||
selectStrategy: {
|
||||
type: import("vue").PropType<"all" | "page" | "single">;
|
||||
default: string;
|
||||
};
|
||||
modelValue: {
|
||||
type: import("vue").PropType<readonly any[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
valueComparator: import("vue").PropType<import("../../util/index.js").ValueComparator>;
|
||||
tag: {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
transition: {
|
||||
type: import("vue").PropType<string | boolean | {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
default: {
|
||||
component: Component;
|
||||
hideOnLeave: boolean;
|
||||
} | NonNullable<string | boolean | (import("vue").TransitionProps & {
|
||||
component?: Component;
|
||||
}) | null>;
|
||||
};
|
||||
page: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
};
|
||||
itemsPerPage: Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<string | number>;
|
||||
default: NonNullable<string | number>;
|
||||
};
|
||||
pageBy: {
|
||||
type: import("vue").PropType<"any" | "auto" | "item">;
|
||||
default: string;
|
||||
};
|
||||
items: {
|
||||
type: import("vue").PropType<any[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
itemValue: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
};
|
||||
itemSelectable: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: null;
|
||||
};
|
||||
returnObject: BooleanConstructor;
|
||||
search: StringConstructor;
|
||||
loading: BooleanConstructor;
|
||||
itemsLength: (NumberConstructor | StringConstructor)[];
|
||||
}>>;
|
||||
export type VDataIterator = InstanceType<typeof VDataIterator>;
|
||||
|
||||
+201
@@ -0,0 +1,201 @@
|
||||
import { createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
|
||||
// Components
|
||||
import { VFadeTransition } from "../transitions/index.js";
|
||||
import { makeDataTableExpandProps, provideExpanded } from "../VDataTable/composables/expand.js";
|
||||
import { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from "../VDataTable/composables/group.js";
|
||||
import { useOptions } from "../VDataTable/composables/options.js";
|
||||
import { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from "../VDataTable/composables/paginate.js";
|
||||
import { makeDataTableSelectProps, provideSelection } from "../VDataTable/composables/select.js";
|
||||
import { createSort, makeDataTableSortProps, provideSort, useSortedItems } from "../VDataTable/composables/sort.js"; // Composables
|
||||
import { makeDataIteratorItemsProps, useDataIteratorItems } from "./composables/items.js";
|
||||
import { makeComponentProps } from "../../composables/component.js";
|
||||
import { makeFilterProps, useFilter } from "../../composables/filter.js";
|
||||
import { LoaderSlot } from "../../composables/loader.js";
|
||||
import { useProxiedModel } from "../../composables/proxiedModel.js";
|
||||
import { makeTagProps } from "../../composables/tag.js";
|
||||
import { useToggleScope } from "../../composables/toggleScope.js";
|
||||
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.js"; // Utilities
|
||||
import { computed, shallowRef, toRef, watchEffect } from 'vue';
|
||||
import { genericComponent, isEmpty, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVDataIteratorProps = propsFactory({
|
||||
search: String,
|
||||
loading: Boolean,
|
||||
itemsLength: [Number, String],
|
||||
...makeComponentProps(),
|
||||
...makeDataIteratorItemsProps(),
|
||||
...makeDataTableSelectProps(),
|
||||
...makeDataTableSortProps(),
|
||||
...makeDataTablePaginateProps({
|
||||
itemsPerPage: 5
|
||||
}),
|
||||
...makeDataTableExpandProps(),
|
||||
...makeDataTableGroupProps(),
|
||||
...makeFilterProps(),
|
||||
...makeTagProps(),
|
||||
...makeTransitionProps({
|
||||
transition: {
|
||||
component: VFadeTransition,
|
||||
hideOnLeave: true
|
||||
}
|
||||
})
|
||||
}, 'VDataIterator');
|
||||
export const VDataIterator = genericComponent()({
|
||||
name: 'VDataIterator',
|
||||
props: makeVDataIteratorProps(),
|
||||
emits: {
|
||||
'update:modelValue': value => true,
|
||||
'update:groupBy': value => true,
|
||||
'update:page': value => true,
|
||||
'update:itemsPerPage': value => true,
|
||||
'update:sortBy': value => true,
|
||||
'update:options': value => true,
|
||||
'update:expanded': value => true,
|
||||
'update:currentItems': value => true
|
||||
},
|
||||
setup(props, {
|
||||
slots
|
||||
}) {
|
||||
const groupBy = useProxiedModel(props, 'groupBy');
|
||||
const search = toRef(() => props.search);
|
||||
const {
|
||||
items
|
||||
} = useDataIteratorItems(props);
|
||||
const {
|
||||
filteredItems
|
||||
} = useFilter(props, items, search, {
|
||||
transform: item => item.raw
|
||||
});
|
||||
const {
|
||||
initialSortOrder,
|
||||
sortBy,
|
||||
multiSort,
|
||||
mustSort
|
||||
} = createSort(props);
|
||||
const {
|
||||
page,
|
||||
itemsPerPage
|
||||
} = createPagination(props);
|
||||
const {
|
||||
toggleSort
|
||||
} = provideSort({
|
||||
initialSortOrder,
|
||||
sortBy,
|
||||
multiSort,
|
||||
mustSort,
|
||||
page
|
||||
});
|
||||
const {
|
||||
sortByWithGroups,
|
||||
opened,
|
||||
extractRows,
|
||||
isGroupOpen,
|
||||
toggleGroup
|
||||
} = provideGroupBy({
|
||||
groupBy,
|
||||
sortBy
|
||||
});
|
||||
const {
|
||||
sortedItems
|
||||
} = useSortedItems(props, filteredItems, sortByWithGroups, {
|
||||
transform: item => item.raw
|
||||
});
|
||||
const {
|
||||
flatItems
|
||||
} = useGroupedItems(sortedItems, groupBy, opened, false);
|
||||
const manualPagination = toRef(() => !isEmpty(props.itemsLength));
|
||||
const itemsLength = toRef(() => manualPagination.value ? Number(props.itemsLength) : flatItems.value.length);
|
||||
const {
|
||||
startIndex,
|
||||
stopIndex,
|
||||
pageCount,
|
||||
prevPage,
|
||||
nextPage,
|
||||
setItemsPerPage,
|
||||
setPage
|
||||
} = providePagination({
|
||||
page,
|
||||
itemsPerPage,
|
||||
itemsLength
|
||||
});
|
||||
const paginatedItems = shallowRef([]);
|
||||
const currentItems = computed(() => manualPagination.value ? flatItems.value : paginatedItems.value);
|
||||
useToggleScope(() => !manualPagination.value, () => {
|
||||
const {
|
||||
paginatedItems: items
|
||||
} = usePaginatedItems({
|
||||
items: flatItems,
|
||||
startIndex,
|
||||
stopIndex,
|
||||
itemsPerPage
|
||||
});
|
||||
watchEffect(() => {
|
||||
paginatedItems.value = items.value;
|
||||
});
|
||||
});
|
||||
const currentItemsWithoutGroups = computed(() => extractRows(currentItems.value));
|
||||
const {
|
||||
isSelected,
|
||||
select,
|
||||
selectAll,
|
||||
toggleSelect
|
||||
} = provideSelection(props, {
|
||||
allItems: items,
|
||||
currentPage: currentItemsWithoutGroups
|
||||
});
|
||||
const {
|
||||
isExpanded,
|
||||
toggleExpand
|
||||
} = provideExpanded(props);
|
||||
useOptions({
|
||||
page,
|
||||
itemsPerPage,
|
||||
sortBy,
|
||||
groupBy,
|
||||
search
|
||||
});
|
||||
const slotProps = computed(() => ({
|
||||
page: page.value,
|
||||
itemsPerPage: itemsPerPage.value,
|
||||
sortBy: sortBy.value,
|
||||
pageCount: pageCount.value,
|
||||
toggleSort,
|
||||
prevPage,
|
||||
nextPage,
|
||||
setPage,
|
||||
setItemsPerPage,
|
||||
isSelected,
|
||||
select,
|
||||
selectAll,
|
||||
toggleSelect,
|
||||
isExpanded,
|
||||
toggleExpand,
|
||||
isGroupOpen,
|
||||
toggleGroup,
|
||||
items: currentItemsWithoutGroups.value,
|
||||
itemsCount: filteredItems.value.length,
|
||||
groupedItems: currentItems.value
|
||||
}));
|
||||
useRender(() => _createVNode(props.tag, {
|
||||
"class": _normalizeClass(['v-data-iterator', {
|
||||
'v-data-iterator--loading': props.loading
|
||||
}, props.class]),
|
||||
"style": _normalizeStyle(props.style)
|
||||
}, {
|
||||
default: () => [slots.header?.(slotProps.value), _createVNode(MaybeTransition, {
|
||||
"transition": props.transition
|
||||
}, {
|
||||
default: () => [props.loading ? _createVNode(LoaderSlot, {
|
||||
"key": "loader",
|
||||
"name": "v-data-iterator",
|
||||
"active": true
|
||||
}, {
|
||||
default: slotProps => slots.loader?.(slotProps)
|
||||
}) : _createElementVNode("div", {
|
||||
"key": "items"
|
||||
}, [!currentItems.value.length ? slots['no-data']?.() : slots.default?.(slotProps.value)])]
|
||||
}), slots.footer?.(slotProps.value)]
|
||||
}));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VDataIterator.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+60
@@ -0,0 +1,60 @@
|
||||
import type { PropType } from 'vue';
|
||||
import type { GroupableItem } from '../../VDataTable/composables/group.js';
|
||||
import type { SelectableItem } from '../../VDataTable/composables/select.js';
|
||||
import type { InternalItem } from '../../../composables/filter.js';
|
||||
import type { SelectItemKey } from '../../../util/index.js';
|
||||
export interface DataIteratorItemProps {
|
||||
items: any[];
|
||||
itemValue: SelectItemKey;
|
||||
itemSelectable: SelectItemKey;
|
||||
returnObject: boolean;
|
||||
}
|
||||
export interface DataIteratorItem<T = any> extends Omit<InternalItem<T>, 'type'>, GroupableItem<T>, SelectableItem {
|
||||
value: unknown;
|
||||
}
|
||||
export declare const makeDataIteratorItemsProps: <Defaults extends {
|
||||
items?: unknown;
|
||||
itemValue?: unknown;
|
||||
itemSelectable?: unknown;
|
||||
returnObject?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
items: unknown extends Defaults["items"] ? {
|
||||
type: PropType<DataIteratorItemProps['items']>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: PropType<DataIteratorItemProps['items']>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["items"] ? any[] : any[] | Defaults["items"]>;
|
||||
default: unknown extends Defaults["items"] ? any[] : any[] | Defaults["items"];
|
||||
};
|
||||
itemValue: unknown extends Defaults["itemValue"] ? {
|
||||
type: PropType<SelectItemKey>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<SelectItemKey>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["itemValue"] ? SelectItemKey : Defaults["itemValue"] | SelectItemKey>;
|
||||
default: unknown extends Defaults["itemValue"] ? SelectItemKey : Defaults["itemValue"] | NonNullable<SelectItemKey>;
|
||||
};
|
||||
itemSelectable: unknown extends Defaults["itemSelectable"] ? {
|
||||
type: PropType<SelectItemKey>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: PropType<SelectItemKey>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["itemSelectable"] ? SelectItemKey : Defaults["itemSelectable"] | SelectItemKey>;
|
||||
default: unknown extends Defaults["itemSelectable"] ? SelectItemKey : Defaults["itemSelectable"] | NonNullable<SelectItemKey>;
|
||||
};
|
||||
returnObject: unknown extends Defaults["returnObject"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["returnObject"] ? boolean : boolean | Defaults["returnObject"]>;
|
||||
default: unknown extends Defaults["returnObject"] ? boolean : boolean | Defaults["returnObject"];
|
||||
};
|
||||
};
|
||||
export declare function transformItem(props: Omit<DataIteratorItemProps, 'items'>, item: any): DataIteratorItem;
|
||||
export declare function transformItems(props: Omit<DataIteratorItemProps, 'items'>, items: DataIteratorItemProps['items']): DataIteratorItem<any>[];
|
||||
export declare function useDataIteratorItems(props: DataIteratorItemProps): {
|
||||
items: import("vue").ComputedRef<DataIteratorItem<any>[]>;
|
||||
};
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
// Utilities
|
||||
import { computed } from 'vue';
|
||||
import { getPropertyFromItem, propsFactory } from "../../../util/index.js"; // Types
|
||||
// Composables
|
||||
export const makeDataIteratorItemsProps = propsFactory({
|
||||
items: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
itemValue: {
|
||||
type: [String, Array, Function],
|
||||
default: 'id'
|
||||
},
|
||||
itemSelectable: {
|
||||
type: [String, Array, Function],
|
||||
default: null
|
||||
},
|
||||
returnObject: Boolean
|
||||
}, 'DataIterator-items');
|
||||
export function transformItem(props, item) {
|
||||
const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue);
|
||||
const selectable = getPropertyFromItem(item, props.itemSelectable, true);
|
||||
return {
|
||||
type: 'item',
|
||||
value,
|
||||
selectable,
|
||||
raw: item
|
||||
};
|
||||
}
|
||||
export function transformItems(props, items) {
|
||||
const array = [];
|
||||
for (const item of items) {
|
||||
array.push(transformItem(props, item));
|
||||
}
|
||||
return array;
|
||||
}
|
||||
export function useDataIteratorItems(props) {
|
||||
const items = computed(() => transformItems(props, props.items));
|
||||
return {
|
||||
items
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=items.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"items.js","names":["computed","getPropertyFromItem","propsFactory","makeDataIteratorItemsProps","items","type","Array","default","itemValue","String","Function","itemSelectable","returnObject","Boolean","transformItem","props","item","value","selectable","raw","transformItems","array","push","useDataIteratorItems"],"sources":["../../../../src/components/VDataIterator/composables/items.ts"],"sourcesContent":["// Utilities\nimport { computed } from 'vue'\nimport { getPropertyFromItem, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { GroupableItem } from '@/components/VDataTable/composables/group'\nimport type { SelectableItem } from '@/components/VDataTable/composables/select'\nimport type { InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport interface DataIteratorItemProps {\n items: any[]\n itemValue: SelectItemKey\n itemSelectable: SelectItemKey\n returnObject: boolean\n}\n\nexport interface DataIteratorItem<T = any> extends Omit<InternalItem<T>, 'type'>, GroupableItem<T>, SelectableItem {\n value: unknown\n}\n\n// Composables\nexport const makeDataIteratorItemsProps = propsFactory({\n items: {\n type: Array as PropType<DataIteratorItemProps['items']>,\n default: () => ([]),\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'id',\n },\n itemSelectable: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: null,\n },\n returnObject: Boolean,\n}, 'DataIterator-items')\n\nexport function transformItem (\n props: Omit<DataIteratorItemProps, 'items'>,\n item: any\n): DataIteratorItem {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue)\n const selectable = getPropertyFromItem(item, props.itemSelectable, true)\n\n return {\n type: 'item',\n value,\n selectable,\n raw: item,\n }\n}\n\nexport function transformItems (\n props: Omit<DataIteratorItemProps, 'items'>,\n items: DataIteratorItemProps['items']\n) {\n const array: DataIteratorItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nexport function useDataIteratorItems (props: DataIteratorItemProps) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,KAAK;AAAA,SACrBC,mBAAmB,EAAEC,YAAY,kCAE1C;AAkBA;AACA,OAAO,MAAMC,0BAA0B,GAAGD,YAAY,CAAC;EACrDE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAAiD;IACvDC,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAA4B;IAC1DH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAA4B;IAC1DH,OAAO,EAAE;EACX,CAAC;EACDK,YAAY,EAAEC;AAChB,CAAC,EAAE,oBAAoB,CAAC;AAExB,OAAO,SAASC,aAAaA,CAC3BC,KAA2C,EAC3CC,IAAS,EACS;EAClB,MAAMC,KAAK,GAAGF,KAAK,CAACH,YAAY,GAAGI,IAAI,GAAGf,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,SAAS,CAAC;EACpF,MAAMU,UAAU,GAAGjB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EAExE,OAAO;IACLN,IAAI,EAAE,MAAM;IACZY,KAAK;IACLC,UAAU;IACVC,GAAG,EAAEH;EACP,CAAC;AACH;AAEA,OAAO,SAASI,cAAcA,CAC5BL,KAA2C,EAC3CX,KAAqC,EACrC;EACA,MAAMiB,KAAyB,GAAG,EAAE;EAEpC,KAAK,MAAML,IAAI,IAAIZ,KAAK,EAAE;IACxBiB,KAAK,CAACC,IAAI,CAACR,aAAa,CAACC,KAAK,EAAEC,IAAI,CAAC,CAAC;EACxC;EAEA,OAAOK,KAAK;AACd;AAEA,OAAO,SAASE,oBAAoBA,CAAER,KAA4B,EAAE;EAClE,MAAMX,KAAK,GAAGJ,QAAQ,CAAC,MAAMoB,cAAc,CAACL,KAAK,EAAEA,KAAK,CAACX,KAAK,CAAC,CAAC;EAEhE,OAAO;IAAEA;EAAM,CAAC;AAClB","ignoreList":[]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
export { VDataIterator } from './VDataIterator.js';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export { VDataIterator } from "./VDataIterator.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VDataIterator"],"sources":["../../../src/components/VDataIterator/index.ts"],"sourcesContent":["export { VDataIterator } from './VDataIterator'\n"],"mappings":"SAASA,aAAa","ignoreList":[]}
|
||||
Reference in New Issue
Block a user