routie dev init since i didn't adhere to any proper guidance up until now

This commit is contained in:
2026-04-29 22:27:29 -06:00
commit e1dabb71e2
15301 changed files with 3562618 additions and 0 deletions
@@ -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>;
@@ -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
File diff suppressed because one or more lines are too long
@@ -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>[]>;
};
@@ -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
@@ -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":[]}
@@ -0,0 +1 @@
export { VDataIterator } from './VDataIterator.js';
+2
View File
@@ -0,0 +1,2 @@
export { VDataIterator } from "./VDataIterator.js";
//# sourceMappingURL=index.js.map
@@ -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":[]}