@vuetify/nightly 3.10.4-dev.2025-10-01 → 3.10.4-dev.2025-10-06
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -3
- package/dist/json/attributes.json +1626 -1610
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +208 -208
- package/dist/json/tags.json +4 -0
- package/dist/json/web-types.json +3135 -3091
- package/dist/vuetify-labs.cjs +93 -30
- package/dist/vuetify-labs.css +4262 -4262
- package/dist/vuetify-labs.d.ts +209 -105
- package/dist/vuetify-labs.esm.js +93 -30
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +93 -30
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +93 -30
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3923 -3923
- package/dist/vuetify.d.ts +209 -105
- package/dist/vuetify.esm.js +93 -30
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +93 -30
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +40 -37
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDataIterator/VDataIterator.d.ts +52 -11
- package/lib/components/VDataIterator/VDataIterator.js +2 -0
- package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.d.ts +78 -18
- package/lib/components/VDataTable/VDataTable.js +9 -5
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +2 -2
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +54 -13
- package/lib/components/VDataTable/VDataTableServer.js +8 -4
- package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +54 -13
- package/lib/components/VDataTable/VDataTableVirtual.js +7 -3
- package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
- package/lib/components/VDataTable/composables/sort.d.ts +36 -8
- package/lib/components/VDataTable/composables/sort.js +55 -14
- package/lib/components/VDataTable/composables/sort.js.map +1 -1
- package/lib/components/VTreeview/VTreeview.d.ts +6 -0
- package/lib/components/VTreeview/VTreeviewChildren.d.ts +9 -0
- package/lib/components/VTreeview/VTreeviewChildren.js +6 -1
- package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +71 -71
- package/lib/framework.js +1 -1
- package/lib/util/indentLines.d.ts +1 -0
- package/lib/util/indentLines.js +7 -4
- package/lib/util/indentLines.js.map +1 -1
- package/package.json +1 -1
|
@@ -32,8 +32,10 @@ export declare const makeVDataTableVirtualProps: <Defaults extends {
|
|
|
32
32
|
expandOnClick?: unknown;
|
|
33
33
|
showExpand?: unknown;
|
|
34
34
|
expanded?: unknown;
|
|
35
|
+
initialSortOrder?: unknown;
|
|
35
36
|
sortBy?: unknown;
|
|
36
37
|
customKeySort?: unknown;
|
|
38
|
+
multiSort?: unknown;
|
|
37
39
|
mustSort?: unknown;
|
|
38
40
|
groupBy?: unknown;
|
|
39
41
|
items?: unknown;
|
|
@@ -55,7 +57,6 @@ export declare const makeVDataTableVirtualProps: <Defaults extends {
|
|
|
55
57
|
headers?: unknown;
|
|
56
58
|
color?: unknown;
|
|
57
59
|
disableSort?: unknown;
|
|
58
|
-
multiSort?: unknown;
|
|
59
60
|
sortAscIcon?: unknown;
|
|
60
61
|
sortDescIcon?: unknown;
|
|
61
62
|
headerProps?: unknown;
|
|
@@ -152,6 +153,18 @@ export declare const makeVDataTableVirtualProps: <Defaults extends {
|
|
|
152
153
|
type: import("vue").PropType<unknown extends Defaults["expanded"] ? readonly string[] : readonly string[] | Defaults["expanded"]>;
|
|
153
154
|
default: unknown extends Defaults["expanded"] ? readonly string[] : readonly string[] | Defaults["expanded"];
|
|
154
155
|
};
|
|
156
|
+
initialSortOrder: unknown extends Defaults["initialSortOrder"] ? {
|
|
157
|
+
type: import("vue").PropType<"asc" | "desc">;
|
|
158
|
+
default: string;
|
|
159
|
+
validator: (v: any) => boolean;
|
|
160
|
+
} : Omit<{
|
|
161
|
+
type: import("vue").PropType<"asc" | "desc">;
|
|
162
|
+
default: string;
|
|
163
|
+
validator: (v: any) => boolean;
|
|
164
|
+
}, "default" | "type"> & {
|
|
165
|
+
type: import("vue").PropType<unknown extends Defaults["initialSortOrder"] ? "asc" | "desc" : "asc" | "desc" | Defaults["initialSortOrder"]>;
|
|
166
|
+
default: unknown extends Defaults["initialSortOrder"] ? "asc" | "desc" : Defaults["initialSortOrder"] | NonNullable<"asc" | "desc">;
|
|
167
|
+
};
|
|
155
168
|
sortBy: unknown extends Defaults["sortBy"] ? {
|
|
156
169
|
type: import("vue").PropType<readonly import("../../types.js").DataTableSortItem[]>;
|
|
157
170
|
default: () => never[];
|
|
@@ -166,6 +179,16 @@ export declare const makeVDataTableVirtualProps: <Defaults extends {
|
|
|
166
179
|
type: import("vue").PropType<unknown extends Defaults["customKeySort"] ? Record<string, import("../../types.js").DataTableCompareFunction> : Record<string, import("../../types.js").DataTableCompareFunction> | Defaults["customKeySort"]>;
|
|
167
180
|
default: unknown extends Defaults["customKeySort"] ? Record<string, import("../../types.js").DataTableCompareFunction> : Record<string, import("../../types.js").DataTableCompareFunction> | Defaults["customKeySort"];
|
|
168
181
|
};
|
|
182
|
+
multiSort: unknown extends Defaults["multiSort"] ? {
|
|
183
|
+
type: import("vue").PropType<boolean | import("./composables/sort.js").MultiSortProps>;
|
|
184
|
+
default: boolean;
|
|
185
|
+
} : Omit<{
|
|
186
|
+
type: import("vue").PropType<boolean | import("./composables/sort.js").MultiSortProps>;
|
|
187
|
+
default: boolean;
|
|
188
|
+
}, "default" | "type"> & {
|
|
189
|
+
type: import("vue").PropType<unknown extends Defaults["multiSort"] ? boolean | import("./composables/sort.js").MultiSortProps : boolean | import("./composables/sort.js").MultiSortProps | Defaults["multiSort"]>;
|
|
190
|
+
default: unknown extends Defaults["multiSort"] ? boolean | import("./composables/sort.js").MultiSortProps : Defaults["multiSort"] | NonNullable<boolean | import("./composables/sort.js").MultiSortProps>;
|
|
191
|
+
};
|
|
169
192
|
mustSort: unknown extends Defaults["mustSort"] ? BooleanConstructor : {
|
|
170
193
|
type: import("vue").PropType<unknown extends Defaults["mustSort"] ? boolean : boolean | Defaults["mustSort"]>;
|
|
171
194
|
default: unknown extends Defaults["mustSort"] ? boolean : boolean | Defaults["mustSort"];
|
|
@@ -538,10 +561,6 @@ export declare const makeVDataTableVirtualProps: <Defaults extends {
|
|
|
538
561
|
type: import("vue").PropType<unknown extends Defaults["disableSort"] ? boolean : boolean | Defaults["disableSort"]>;
|
|
539
562
|
default: unknown extends Defaults["disableSort"] ? boolean : boolean | Defaults["disableSort"];
|
|
540
563
|
};
|
|
541
|
-
multiSort: unknown extends Defaults["multiSort"] ? BooleanConstructor : {
|
|
542
|
-
type: import("vue").PropType<unknown extends Defaults["multiSort"] ? boolean : boolean | Defaults["multiSort"]>;
|
|
543
|
-
default: unknown extends Defaults["multiSort"] ? boolean : boolean | Defaults["multiSort"];
|
|
544
|
-
};
|
|
545
564
|
sortAscIcon: unknown extends Defaults["sortAscIcon"] ? {
|
|
546
565
|
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
|
547
566
|
default: string;
|
|
@@ -689,7 +708,9 @@ export declare const VDataTableVirtual: {
|
|
|
689
708
|
expandOnClick: boolean;
|
|
690
709
|
showExpand: boolean;
|
|
691
710
|
expanded: readonly string[];
|
|
711
|
+
initialSortOrder: "asc" | "desc";
|
|
692
712
|
sortBy: readonly import("../../types.js").DataTableSortItem[];
|
|
713
|
+
multiSort: boolean | import("./composables/sort.js").MultiSortProps;
|
|
693
714
|
mustSort: boolean;
|
|
694
715
|
groupBy: readonly import("../../types.js").DataTableSortItem[];
|
|
695
716
|
returnObject: boolean;
|
|
@@ -701,7 +722,6 @@ export declare const VDataTableVirtual: {
|
|
|
701
722
|
itemHeight: string | number;
|
|
702
723
|
itemKey: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
|
703
724
|
disableSort: boolean;
|
|
704
|
-
multiSort: boolean;
|
|
705
725
|
sortAscIcon: import("../../composables/icons.js").IconValue;
|
|
706
726
|
sortDescIcon: import("../../composables/icons.js").IconValue;
|
|
707
727
|
sticky: boolean;
|
|
@@ -754,7 +774,9 @@ export declare const VDataTableVirtual: {
|
|
|
754
774
|
expandOnClick: boolean;
|
|
755
775
|
showExpand: boolean;
|
|
756
776
|
expanded: readonly string[];
|
|
777
|
+
initialSortOrder: "asc" | "desc";
|
|
757
778
|
sortBy: readonly import("../../types.js").DataTableSortItem[];
|
|
779
|
+
multiSort: boolean | import("./composables/sort.js").MultiSortProps;
|
|
758
780
|
mustSort: boolean;
|
|
759
781
|
groupBy: readonly import("../../types.js").DataTableSortItem[];
|
|
760
782
|
returnObject: boolean;
|
|
@@ -766,7 +788,6 @@ export declare const VDataTableVirtual: {
|
|
|
766
788
|
itemHeight: string | number;
|
|
767
789
|
itemKey: SelectItemKey;
|
|
768
790
|
disableSort: boolean;
|
|
769
|
-
multiSort: boolean;
|
|
770
791
|
sortAscIcon: import("../../composables/icons.js").IconValue;
|
|
771
792
|
sortDescIcon: import("../../composables/icons.js").IconValue;
|
|
772
793
|
sticky: boolean;
|
|
@@ -891,7 +912,9 @@ export declare const VDataTableVirtual: {
|
|
|
891
912
|
expandOnClick: boolean;
|
|
892
913
|
showExpand: boolean;
|
|
893
914
|
expanded: readonly string[];
|
|
915
|
+
initialSortOrder: "asc" | "desc";
|
|
894
916
|
sortBy: readonly import("../../types.js").DataTableSortItem[];
|
|
917
|
+
multiSort: boolean | import("./composables/sort.js").MultiSortProps;
|
|
895
918
|
mustSort: boolean;
|
|
896
919
|
groupBy: readonly import("../../types.js").DataTableSortItem[];
|
|
897
920
|
returnObject: boolean;
|
|
@@ -903,7 +926,6 @@ export declare const VDataTableVirtual: {
|
|
|
903
926
|
itemHeight: string | number;
|
|
904
927
|
itemKey: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
|
905
928
|
disableSort: boolean;
|
|
906
|
-
multiSort: boolean;
|
|
907
929
|
sortAscIcon: import("../../composables/icons.js").IconValue;
|
|
908
930
|
sortDescIcon: import("../../composables/icons.js").IconValue;
|
|
909
931
|
sticky: boolean;
|
|
@@ -950,7 +972,9 @@ export declare const VDataTableVirtual: {
|
|
|
950
972
|
expandOnClick: boolean;
|
|
951
973
|
showExpand: boolean;
|
|
952
974
|
expanded: readonly string[];
|
|
975
|
+
initialSortOrder: "asc" | "desc";
|
|
953
976
|
sortBy: readonly import("../../types.js").DataTableSortItem[];
|
|
977
|
+
multiSort: boolean | import("./composables/sort.js").MultiSortProps;
|
|
954
978
|
mustSort: boolean;
|
|
955
979
|
groupBy: readonly import("../../types.js").DataTableSortItem[];
|
|
956
980
|
returnObject: boolean;
|
|
@@ -962,7 +986,6 @@ export declare const VDataTableVirtual: {
|
|
|
962
986
|
itemHeight: string | number;
|
|
963
987
|
itemKey: SelectItemKey;
|
|
964
988
|
disableSort: boolean;
|
|
965
|
-
multiSort: boolean;
|
|
966
989
|
sortAscIcon: import("../../composables/icons.js").IconValue;
|
|
967
990
|
sortDescIcon: import("../../composables/icons.js").IconValue;
|
|
968
991
|
sticky: boolean;
|
|
@@ -991,7 +1014,9 @@ export declare const VDataTableVirtual: {
|
|
|
991
1014
|
expandOnClick: boolean;
|
|
992
1015
|
showExpand: boolean;
|
|
993
1016
|
expanded: readonly string[];
|
|
1017
|
+
initialSortOrder: "asc" | "desc";
|
|
994
1018
|
sortBy: readonly import("../../types.js").DataTableSortItem[];
|
|
1019
|
+
multiSort: boolean | import("./composables/sort.js").MultiSortProps;
|
|
995
1020
|
mustSort: boolean;
|
|
996
1021
|
groupBy: readonly import("../../types.js").DataTableSortItem[];
|
|
997
1022
|
returnObject: boolean;
|
|
@@ -1003,7 +1028,6 @@ export declare const VDataTableVirtual: {
|
|
|
1003
1028
|
itemHeight: string | number;
|
|
1004
1029
|
itemKey: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
|
1005
1030
|
disableSort: boolean;
|
|
1006
|
-
multiSort: boolean;
|
|
1007
1031
|
sortAscIcon: import("../../composables/icons.js").IconValue;
|
|
1008
1032
|
sortDescIcon: import("../../composables/icons.js").IconValue;
|
|
1009
1033
|
sticky: boolean;
|
|
@@ -1056,7 +1080,9 @@ export declare const VDataTableVirtual: {
|
|
|
1056
1080
|
expandOnClick: boolean;
|
|
1057
1081
|
showExpand: boolean;
|
|
1058
1082
|
expanded: readonly string[];
|
|
1083
|
+
initialSortOrder: "asc" | "desc";
|
|
1059
1084
|
sortBy: readonly import("../../types.js").DataTableSortItem[];
|
|
1085
|
+
multiSort: boolean | import("./composables/sort.js").MultiSortProps;
|
|
1060
1086
|
mustSort: boolean;
|
|
1061
1087
|
groupBy: readonly import("../../types.js").DataTableSortItem[];
|
|
1062
1088
|
returnObject: boolean;
|
|
@@ -1068,7 +1094,6 @@ export declare const VDataTableVirtual: {
|
|
|
1068
1094
|
itemHeight: string | number;
|
|
1069
1095
|
itemKey: SelectItemKey;
|
|
1070
1096
|
disableSort: boolean;
|
|
1071
|
-
multiSort: boolean;
|
|
1072
1097
|
sortAscIcon: import("../../composables/icons.js").IconValue;
|
|
1073
1098
|
sortDescIcon: import("../../composables/icons.js").IconValue;
|
|
1074
1099
|
sticky: boolean;
|
|
@@ -1266,11 +1291,20 @@ export declare const VDataTableVirtual: {
|
|
|
1266
1291
|
type: import("vue").PropType<readonly string[]>;
|
|
1267
1292
|
default: () => never[];
|
|
1268
1293
|
};
|
|
1294
|
+
initialSortOrder: {
|
|
1295
|
+
type: import("vue").PropType<"asc" | "desc">;
|
|
1296
|
+
default: string;
|
|
1297
|
+
validator: (v: any) => boolean;
|
|
1298
|
+
};
|
|
1269
1299
|
sortBy: {
|
|
1270
1300
|
type: import("vue").PropType<readonly import("../../types.js").DataTableSortItem[]>;
|
|
1271
1301
|
default: () => never[];
|
|
1272
1302
|
};
|
|
1273
1303
|
customKeySort: import("vue").PropType<Record<string, import("../../types.js").DataTableCompareFunction>>;
|
|
1304
|
+
multiSort: {
|
|
1305
|
+
type: import("vue").PropType<boolean | import("./composables/sort.js").MultiSortProps>;
|
|
1306
|
+
default: boolean;
|
|
1307
|
+
};
|
|
1274
1308
|
mustSort: BooleanConstructor;
|
|
1275
1309
|
groupBy: {
|
|
1276
1310
|
type: import("vue").PropType<readonly import("../../types.js").DataTableSortItem[]>;
|
|
@@ -1370,7 +1404,6 @@ export declare const VDataTableVirtual: {
|
|
|
1370
1404
|
}[]>;
|
|
1371
1405
|
color: StringConstructor;
|
|
1372
1406
|
disableSort: BooleanConstructor;
|
|
1373
|
-
multiSort: BooleanConstructor;
|
|
1374
1407
|
sortAscIcon: {
|
|
1375
1408
|
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
|
1376
1409
|
default: string;
|
|
@@ -1446,11 +1479,20 @@ export declare const VDataTableVirtual: {
|
|
|
1446
1479
|
type: import("vue").PropType<readonly string[]>;
|
|
1447
1480
|
default: () => never[];
|
|
1448
1481
|
};
|
|
1482
|
+
initialSortOrder: {
|
|
1483
|
+
type: import("vue").PropType<"asc" | "desc">;
|
|
1484
|
+
default: string;
|
|
1485
|
+
validator: (v: any) => boolean;
|
|
1486
|
+
};
|
|
1449
1487
|
sortBy: {
|
|
1450
1488
|
type: import("vue").PropType<readonly import("../../types.js").DataTableSortItem[]>;
|
|
1451
1489
|
default: () => never[];
|
|
1452
1490
|
};
|
|
1453
1491
|
customKeySort: import("vue").PropType<Record<string, import("../../types.js").DataTableCompareFunction>>;
|
|
1492
|
+
multiSort: {
|
|
1493
|
+
type: import("vue").PropType<boolean | import("./composables/sort.js").MultiSortProps>;
|
|
1494
|
+
default: boolean;
|
|
1495
|
+
};
|
|
1454
1496
|
mustSort: BooleanConstructor;
|
|
1455
1497
|
groupBy: {
|
|
1456
1498
|
type: import("vue").PropType<readonly import("../../types.js").DataTableSortItem[]>;
|
|
@@ -1550,7 +1592,6 @@ export declare const VDataTableVirtual: {
|
|
|
1550
1592
|
}[]>;
|
|
1551
1593
|
color: StringConstructor;
|
|
1552
1594
|
disableSort: BooleanConstructor;
|
|
1553
|
-
multiSort: BooleanConstructor;
|
|
1554
1595
|
sortAscIcon: {
|
|
1555
1596
|
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
|
1556
1597
|
default: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mergeProps as _mergeProps, createVNode as _createVNode, createElementVNode as _createElementVNode } from "vue";
|
|
2
2
|
// Components
|
|
3
3
|
import { makeDataTableProps } from "./VDataTable.js";
|
|
4
4
|
import { VDataTableHeaders } from "./VDataTableHeaders.js";
|
|
@@ -43,6 +43,7 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
43
43
|
groupBy
|
|
44
44
|
} = createGroupBy(props);
|
|
45
45
|
const {
|
|
46
|
+
initialSortOrder,
|
|
46
47
|
sortBy,
|
|
47
48
|
multiSort,
|
|
48
49
|
mustSort
|
|
@@ -74,6 +75,7 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
74
75
|
const {
|
|
75
76
|
toggleSort
|
|
76
77
|
} = provideSort({
|
|
78
|
+
initialSortOrder,
|
|
77
79
|
sortBy,
|
|
78
80
|
multiSort,
|
|
79
81
|
mustSort
|
|
@@ -166,7 +168,7 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
166
168
|
headers: headers.value
|
|
167
169
|
}));
|
|
168
170
|
useRender(() => {
|
|
169
|
-
const dataTableHeadersProps = VDataTableHeaders.filterProps(props);
|
|
171
|
+
const dataTableHeadersProps = VDataTableHeaders.filterProps(omit(props, ['multiSort']));
|
|
170
172
|
const dataTableRowsProps = VDataTableRows.filterProps(props);
|
|
171
173
|
const tableProps = VTable.filterProps(props);
|
|
172
174
|
return _createVNode(VTable, _mergeProps({
|
|
@@ -188,7 +190,9 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
188
190
|
}
|
|
189
191
|
}, [_createElementVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createElementVNode("thead", {
|
|
190
192
|
"key": "thead"
|
|
191
|
-
}, [_createVNode(VDataTableHeaders, dataTableHeadersProps,
|
|
193
|
+
}, [_createVNode(VDataTableHeaders, _mergeProps(dataTableHeadersProps, {
|
|
194
|
+
"multiSort": !!props.multiSort
|
|
195
|
+
}), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && _createElementVNode("tbody", {
|
|
192
196
|
"key": "tbody"
|
|
193
197
|
}, [_createElementVNode("tr", {
|
|
194
198
|
"ref": markerRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableVirtual.js","names":["makeDataTableProps","VDataTableHeaders","VDataTableRow","VDataTableRows","VTable","VVirtualScrollItem","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","useDataTableItems","useOptions","provideSelection","createSort","provideSort","useSortedItems","provideDefaults","makeFilterProps","useFilter","makeVirtualProps","useVirtual","computed","shallowRef","toRef","toRefs","convertToUnit","genericComponent","omit","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","setup","_ref","attrs","slots","groupBy","sortBy","multiSort","mustSort","disableSort","columns","headers","filterFunctions","sortFunctions","sortRawFunctions","showSelect","showExpand","items","search","filteredItems","transform","item","customKeyFilter","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","raw","flatItems","allItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","currentPage","isExpanded","toggleExpand","containerRef","markerRef","paddingTop","paddingBottom","computedItems","handleItemResize","handleScroll","handleScrollend","calculateVisibleItems","scrollToIndex","displayItems","map","page","itemsPerPage","hideNoData","noDataText","loading","loadingText","slotProps","internalItems","groupedItems","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","fixedHeader","sticky","top","wrapper","_createElementVNode","height","colgroup","hideDefaultHeader","thead","hideDefaultBody","border","length","itemSlotProps","internalItem","index","default","_ref2","itemRef","tbody","tfoot","bottom"],"sources":["../../../src/components/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRow } from './VDataTableRow'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\nimport { VVirtualScrollItem } from '@/components/VVirtualScroll/VVirtualScrollItem'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { computed, shallowRef, toRef, toRefs } from 'vue'\nimport { convertToUnit, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DeepReadonly } from 'vue'\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { CellProps, DataTableHeader, RowProps } from '@/components/VDataTable/types'\nimport type { GenericProps, SelectItemKey, TemplateRef } from '@/util'\n\ntype VDataTableVirtualSlotProps<T> = Omit<\n VDataTableSlotProps<T>,\n | 'setItemsPerPage'\n | 'page'\n | 'pageCount'\n | 'itemsPerPage'\n>\n\nexport type VDataTableVirtualSlots<T> = VDataTableRowsSlots<T> & VDataTableHeadersSlots & {\n colgroup: VDataTableVirtualSlotProps<T>\n top: VDataTableVirtualSlotProps<T>\n headers: VDataTableHeadersSlots['headers']\n tbody: VDataTableVirtualSlotProps<T>\n thead: VDataTableVirtualSlotProps<T>\n tfoot: VDataTableVirtualSlotProps<T>\n bottom: VDataTableVirtualSlotProps<T>\n 'body.prepend': VDataTableVirtualSlotProps<T>\n 'body.append': VDataTableVirtualSlotProps<T>\n item: {\n itemRef: TemplateRef\n }\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...omit(makeDataTableProps(), ['hideDefaultFooter']),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps(),\n}, 'VDataTableVirtual')\n\ntype ItemType<T> = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTableVirtual = genericComponent<new <T extends readonly any[], V>(\n props: {\n items?: T\n itemValue?: SelectItemKey<ItemType<T>>\n rowProps?: RowProps<ItemType<T>>\n cellProps?: CellProps<ItemType<T>>\n itemSelectable?: SelectItemKey<ItemType<T>>\n headers?: DeepReadonly<DataTableHeader<ItemType<T>>[]>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableVirtualSlots<ItemType<T>>,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { disableSort } = toRefs(props)\n\n const {\n columns,\n headers,\n filterFunctions,\n sortFunctions,\n sortRawFunctions,\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(() => props.showSelect),\n showExpand: toRef(() => props.showExpand),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(() => props.search)\n const { filteredItems } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions,\n })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy, disableSort })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({ ...item.raw, ...item.columns }),\n sortFunctions,\n sortRawFunctions,\n })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened, () => !!slots['group-summary'])\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const {\n containerRef,\n markerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n handleScrollend,\n calculateVisibleItems,\n scrollToIndex,\n } = useVirtual(props, flatItems)\n const displayItems = computed(() => computedItems.value.map(item => item.raw))\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(() => props.hideNoData),\n noDataText: toRef(() => props.noDataText),\n loading: toRef(() => props.loading),\n loadingText: toRef(() => props.loadingText),\n },\n })\n\n const slotProps = computed<VDataTableVirtualSlotProps<any>>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value.map(item => item.raw),\n internalItems: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n fixedHeader={ props.fixedHeader || props.sticky }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n <div\n ref={ containerRef }\n onScrollPassive={ handleScroll }\n onScrollend={ handleScrollend }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n { slots.colgroup?.(slotProps.value) }\n { !props.hideDefaultHeader && (\n <thead key=\"thead\">\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n v-slots={ slots }\n />\n </thead>\n )}\n { slots.thead?.(slotProps.value) }\n { !props.hideDefaultBody && (\n <tbody key=\"tbody\">\n <tr ref={ markerRef } style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: 0, border: 0 }}></td>\n </tr>\n\n { slots['body.prepend']?.(slotProps.value) }\n\n <VDataTableRows\n { ...attrs }\n { ...dataTableRowsProps }\n items={ displayItems.value }\n >\n {{\n ...slots,\n item: itemSlotProps => (\n <VVirtualScrollItem\n key={ itemSlotProps.internalItem.index }\n renderless\n onUpdate:height={ height => handleItemResize(itemSlotProps.internalItem.index, height) }\n >\n { ({ itemRef }) => (\n slots.item?.({ ...itemSlotProps, itemRef }) ?? (\n <VDataTableRow\n { ...itemSlotProps.props }\n ref={ itemRef }\n key={ itemSlotProps.internalItem.index }\n index={ itemSlotProps.internalItem.index }\n v-slots={ slots }\n />\n )\n )}\n </VVirtualScrollItem>\n ),\n }}\n </VDataTableRows>\n\n { slots['body.append']?.(slotProps.value) }\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: 0, border: 0 }}></td>\n </tr>\n </tbody>\n )}\n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n </table>\n </div>\n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n </VTable>\n )\n })\n\n return {\n calculateVisibleItems,\n scrollToIndex,\n }\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VDataTableVirtual.js","names":["makeDataTableProps","VDataTableHeaders","VDataTableRow","VDataTableRows","VTable","VVirtualScrollItem","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","useDataTableItems","useOptions","provideSelection","createSort","provideSort","useSortedItems","provideDefaults","makeFilterProps","useFilter","makeVirtualProps","useVirtual","computed","shallowRef","toRef","toRefs","convertToUnit","genericComponent","omit","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","setup","_ref","attrs","slots","groupBy","initialSortOrder","sortBy","multiSort","mustSort","disableSort","columns","headers","filterFunctions","sortFunctions","sortRawFunctions","showSelect","showExpand","items","search","filteredItems","transform","item","customKeyFilter","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","raw","flatItems","allItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","currentPage","isExpanded","toggleExpand","containerRef","markerRef","paddingTop","paddingBottom","computedItems","handleItemResize","handleScroll","handleScrollend","calculateVisibleItems","scrollToIndex","displayItems","map","page","itemsPerPage","hideNoData","noDataText","loading","loadingText","slotProps","internalItems","groupedItems","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","fixedHeader","sticky","top","wrapper","_createElementVNode","height","colgroup","hideDefaultHeader","thead","hideDefaultBody","border","length","itemSlotProps","internalItem","index","default","_ref2","itemRef","tbody","tfoot","bottom"],"sources":["../../../src/components/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRow } from './VDataTableRow'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\nimport { VVirtualScrollItem } from '@/components/VVirtualScroll/VVirtualScrollItem'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { computed, shallowRef, toRef, toRefs } from 'vue'\nimport { convertToUnit, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DeepReadonly } from 'vue'\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { CellProps, DataTableHeader, RowProps } from '@/components/VDataTable/types'\nimport type { GenericProps, SelectItemKey, TemplateRef } from '@/util'\n\ntype VDataTableVirtualSlotProps<T> = Omit<\n VDataTableSlotProps<T>,\n | 'setItemsPerPage'\n | 'page'\n | 'pageCount'\n | 'itemsPerPage'\n>\n\nexport type VDataTableVirtualSlots<T> = VDataTableRowsSlots<T> & VDataTableHeadersSlots & {\n colgroup: VDataTableVirtualSlotProps<T>\n top: VDataTableVirtualSlotProps<T>\n headers: VDataTableHeadersSlots['headers']\n tbody: VDataTableVirtualSlotProps<T>\n thead: VDataTableVirtualSlotProps<T>\n tfoot: VDataTableVirtualSlotProps<T>\n bottom: VDataTableVirtualSlotProps<T>\n 'body.prepend': VDataTableVirtualSlotProps<T>\n 'body.append': VDataTableVirtualSlotProps<T>\n item: {\n itemRef: TemplateRef\n }\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...omit(makeDataTableProps(), ['hideDefaultFooter']),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps(),\n}, 'VDataTableVirtual')\n\ntype ItemType<T> = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTableVirtual = genericComponent<new <T extends readonly any[], V>(\n props: {\n items?: T\n itemValue?: SelectItemKey<ItemType<T>>\n rowProps?: RowProps<ItemType<T>>\n cellProps?: CellProps<ItemType<T>>\n itemSelectable?: SelectItemKey<ItemType<T>>\n headers?: DeepReadonly<DataTableHeader<ItemType<T>>[]>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableVirtualSlots<ItemType<T>>,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { initialSortOrder, sortBy, multiSort, mustSort } = createSort(props)\n const { disableSort } = toRefs(props)\n\n const {\n columns,\n headers,\n filterFunctions,\n sortFunctions,\n sortRawFunctions,\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(() => props.showSelect),\n showExpand: toRef(() => props.showExpand),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(() => props.search)\n const { filteredItems } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions,\n })\n\n const { toggleSort } = provideSort({ initialSortOrder, sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy, disableSort })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({ ...item.raw, ...item.columns }),\n sortFunctions,\n sortRawFunctions,\n })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened, () => !!slots['group-summary'])\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const {\n containerRef,\n markerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n handleScrollend,\n calculateVisibleItems,\n scrollToIndex,\n } = useVirtual(props, flatItems)\n const displayItems = computed(() => computedItems.value.map(item => item.raw))\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(() => props.hideNoData),\n noDataText: toRef(() => props.noDataText),\n loading: toRef(() => props.loading),\n loadingText: toRef(() => props.loadingText),\n },\n })\n\n const slotProps = computed<VDataTableVirtualSlotProps<any>>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value.map(item => item.raw),\n internalItems: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableHeadersProps = VDataTableHeaders.filterProps(omit(props, ['multiSort']))\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n fixedHeader={ props.fixedHeader || props.sticky }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n <div\n ref={ containerRef }\n onScrollPassive={ handleScroll }\n onScrollend={ handleScrollend }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n { slots.colgroup?.(slotProps.value) }\n { !props.hideDefaultHeader && (\n <thead key=\"thead\">\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n multiSort={ !!props.multiSort }\n v-slots={ slots }\n />\n </thead>\n )}\n { slots.thead?.(slotProps.value) }\n { !props.hideDefaultBody && (\n <tbody key=\"tbody\">\n <tr ref={ markerRef } style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: 0, border: 0 }}></td>\n </tr>\n\n { slots['body.prepend']?.(slotProps.value) }\n\n <VDataTableRows\n { ...attrs }\n { ...dataTableRowsProps }\n items={ displayItems.value }\n >\n {{\n ...slots,\n item: itemSlotProps => (\n <VVirtualScrollItem\n key={ itemSlotProps.internalItem.index }\n renderless\n onUpdate:height={ height => handleItemResize(itemSlotProps.internalItem.index, height) }\n >\n { ({ itemRef }) => (\n slots.item?.({ ...itemSlotProps, itemRef }) ?? (\n <VDataTableRow\n { ...itemSlotProps.props }\n ref={ itemRef }\n key={ itemSlotProps.internalItem.index }\n index={ itemSlotProps.internalItem.index }\n v-slots={ slots }\n />\n )\n )}\n </VVirtualScrollItem>\n ),\n }}\n </VDataTableRows>\n\n { slots['body.append']?.(slotProps.value) }\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: 0, border: 0 }}></td>\n </tr>\n </tbody>\n )}\n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n </table>\n </div>\n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n </VTable>\n )\n })\n\n return {\n calculateVisibleItems,\n scrollToIndex,\n }\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,11 +3,24 @@ import type { PropType, Ref } from 'vue';
|
|
|
3
3
|
import type { DataTableCompareFunction, InternalDataTableHeader } from '../types.js';
|
|
4
4
|
import type { InternalItem } from '../../../composables/filter.js';
|
|
5
5
|
export declare const makeDataTableSortProps: <Defaults extends {
|
|
6
|
+
initialSortOrder?: unknown;
|
|
6
7
|
sortBy?: unknown;
|
|
7
8
|
customKeySort?: unknown;
|
|
8
9
|
multiSort?: unknown;
|
|
9
10
|
mustSort?: unknown;
|
|
10
11
|
} = {}>(defaults?: Defaults | undefined) => {
|
|
12
|
+
initialSortOrder: unknown extends Defaults["initialSortOrder"] ? {
|
|
13
|
+
type: PropType<"asc" | "desc">;
|
|
14
|
+
default: string;
|
|
15
|
+
validator: (v: any) => boolean;
|
|
16
|
+
} : Omit<{
|
|
17
|
+
type: PropType<"asc" | "desc">;
|
|
18
|
+
default: string;
|
|
19
|
+
validator: (v: any) => boolean;
|
|
20
|
+
}, "default" | "type"> & {
|
|
21
|
+
type: PropType<unknown extends Defaults["initialSortOrder"] ? "asc" | "desc" : "asc" | "desc" | Defaults["initialSortOrder"]>;
|
|
22
|
+
default: unknown extends Defaults["initialSortOrder"] ? "asc" | "desc" : Defaults["initialSortOrder"] | NonNullable<"asc" | "desc">;
|
|
23
|
+
};
|
|
11
24
|
sortBy: unknown extends Defaults["sortBy"] ? {
|
|
12
25
|
type: PropType<readonly SortItem[]>;
|
|
13
26
|
default: () => never[];
|
|
@@ -22,9 +35,15 @@ export declare const makeDataTableSortProps: <Defaults extends {
|
|
|
22
35
|
type: PropType<unknown extends Defaults["customKeySort"] ? Record<string, DataTableCompareFunction> : Record<string, DataTableCompareFunction> | Defaults["customKeySort"]>;
|
|
23
36
|
default: unknown extends Defaults["customKeySort"] ? Record<string, DataTableCompareFunction> : Record<string, DataTableCompareFunction> | Defaults["customKeySort"];
|
|
24
37
|
};
|
|
25
|
-
multiSort: unknown extends Defaults["multiSort"] ?
|
|
26
|
-
type: PropType<
|
|
27
|
-
default:
|
|
38
|
+
multiSort: unknown extends Defaults["multiSort"] ? {
|
|
39
|
+
type: PropType<boolean | MultiSortProps>;
|
|
40
|
+
default: boolean;
|
|
41
|
+
} : Omit<{
|
|
42
|
+
type: PropType<boolean | MultiSortProps>;
|
|
43
|
+
default: boolean;
|
|
44
|
+
}, "default" | "type"> & {
|
|
45
|
+
type: PropType<unknown extends Defaults["multiSort"] ? boolean | MultiSortProps : boolean | MultiSortProps | Defaults["multiSort"]>;
|
|
46
|
+
default: unknown extends Defaults["multiSort"] ? boolean | MultiSortProps : Defaults["multiSort"] | NonNullable<boolean | MultiSortProps>;
|
|
28
47
|
};
|
|
29
48
|
mustSort: unknown extends Defaults["mustSort"] ? BooleanConstructor : {
|
|
30
49
|
type: PropType<unknown extends Defaults["mustSort"] ? boolean : boolean | Defaults["mustSort"]>;
|
|
@@ -35,32 +54,41 @@ export type SortItem = {
|
|
|
35
54
|
key: string;
|
|
36
55
|
order?: boolean | 'asc' | 'desc';
|
|
37
56
|
};
|
|
57
|
+
export type MultiSortProps = {
|
|
58
|
+
key?: 'ctrl';
|
|
59
|
+
mode?: MultiSortMode;
|
|
60
|
+
modifier?: 'alt' | 'shift';
|
|
61
|
+
};
|
|
62
|
+
export type MultiSortMode = 'append' | 'prepend';
|
|
38
63
|
type SortProps = {
|
|
64
|
+
initialSortOrder: 'asc' | 'desc';
|
|
39
65
|
sortBy: readonly SortItem[];
|
|
40
66
|
'onUpdate:sortBy': ((value: any) => void) | undefined;
|
|
67
|
+
multiSort: boolean | MultiSortProps;
|
|
41
68
|
mustSort: boolean;
|
|
42
|
-
multiSort: boolean;
|
|
43
69
|
};
|
|
44
70
|
export declare function createSort(props: SortProps): {
|
|
71
|
+
initialSortOrder: Readonly<Ref<"asc" | "desc", "asc" | "desc">>;
|
|
45
72
|
sortBy: Ref<readonly SortItem[], readonly SortItem[]> & {
|
|
46
73
|
readonly externalValue: readonly SortItem[];
|
|
47
74
|
};
|
|
75
|
+
multiSort: Readonly<Ref<boolean | MultiSortProps, boolean | MultiSortProps>>;
|
|
48
76
|
mustSort: Readonly<Ref<boolean, boolean>>;
|
|
49
|
-
multiSort: Readonly<Ref<boolean, boolean>>;
|
|
50
77
|
};
|
|
51
78
|
export declare function provideSort(options: {
|
|
79
|
+
initialSortOrder: Ref<'asc' | 'desc'>;
|
|
52
80
|
sortBy: Ref<readonly SortItem[]>;
|
|
81
|
+
multiSort: Ref<boolean | MultiSortProps>;
|
|
53
82
|
mustSort: Ref<boolean>;
|
|
54
|
-
multiSort: Ref<boolean>;
|
|
55
83
|
page?: Ref<number>;
|
|
56
84
|
}): {
|
|
57
85
|
sortBy: Ref<readonly SortItem[], readonly SortItem[]>;
|
|
58
|
-
toggleSort: (column: InternalDataTableHeader) => void;
|
|
86
|
+
toggleSort: (column: InternalDataTableHeader, event?: KeyboardEvent | PointerEvent | undefined) => void;
|
|
59
87
|
isSorted: (column: InternalDataTableHeader) => boolean;
|
|
60
88
|
};
|
|
61
89
|
export declare function useSort(): {
|
|
62
90
|
sortBy: Ref<readonly SortItem[], readonly SortItem[]>;
|
|
63
|
-
toggleSort: (column: InternalDataTableHeader) => void;
|
|
91
|
+
toggleSort: (column: InternalDataTableHeader, event?: KeyboardEvent | PointerEvent | undefined) => void;
|
|
64
92
|
isSorted: (column: InternalDataTableHeader) => boolean;
|
|
65
93
|
};
|
|
66
94
|
// TODO: abstract into project composable
|
|
@@ -2,60 +2,101 @@
|
|
|
2
2
|
import { useLocale } from "../../../composables/locale.js";
|
|
3
3
|
import { useProxiedModel } from "../../../composables/proxiedModel.js"; // Utilities
|
|
4
4
|
import { computed, inject, provide, toRef } from 'vue';
|
|
5
|
-
import { getObjectValueByPath, isEmpty, propsFactory } from "../../../util/index.js"; // Types
|
|
5
|
+
import { getObjectValueByPath, isEmpty, isObject, propsFactory } from "../../../util/index.js"; // Types
|
|
6
6
|
export const makeDataTableSortProps = propsFactory({
|
|
7
|
+
initialSortOrder: {
|
|
8
|
+
type: String,
|
|
9
|
+
default: 'asc',
|
|
10
|
+
validator: v => !v || ['asc', 'desc'].includes(v)
|
|
11
|
+
},
|
|
7
12
|
sortBy: {
|
|
8
13
|
type: Array,
|
|
9
14
|
default: () => []
|
|
10
15
|
},
|
|
11
16
|
customKeySort: Object,
|
|
12
|
-
multiSort:
|
|
17
|
+
multiSort: {
|
|
18
|
+
type: [Boolean, Object],
|
|
19
|
+
default: false
|
|
20
|
+
},
|
|
13
21
|
mustSort: Boolean
|
|
14
22
|
}, 'DataTable-sort');
|
|
15
23
|
const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
|
|
16
24
|
export function createSort(props) {
|
|
25
|
+
const initialSortOrder = toRef(() => props.initialSortOrder);
|
|
17
26
|
const sortBy = useProxiedModel(props, 'sortBy');
|
|
18
27
|
const mustSort = toRef(() => props.mustSort);
|
|
19
28
|
const multiSort = toRef(() => props.multiSort);
|
|
20
29
|
return {
|
|
30
|
+
initialSortOrder,
|
|
21
31
|
sortBy,
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
multiSort,
|
|
33
|
+
mustSort
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function resolveMultiSort(multiSort, event) {
|
|
37
|
+
if (!isObject(multiSort)) {
|
|
38
|
+
return {
|
|
39
|
+
active: !!multiSort
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const {
|
|
43
|
+
key,
|
|
44
|
+
mode,
|
|
45
|
+
modifier
|
|
46
|
+
} = multiSort;
|
|
47
|
+
const reverseMode = modifier === 'alt' && event?.altKey || modifier === 'shift' && event?.shiftKey;
|
|
48
|
+
return {
|
|
49
|
+
active: !key || event?.ctrlKey || event?.metaKey || false,
|
|
50
|
+
mode: reverseMode ? mode === 'append' ? 'prepend' : 'append' : mode
|
|
24
51
|
};
|
|
25
52
|
}
|
|
26
53
|
export function provideSort(options) {
|
|
27
54
|
const {
|
|
55
|
+
initialSortOrder,
|
|
28
56
|
sortBy,
|
|
29
57
|
mustSort,
|
|
30
58
|
multiSort,
|
|
31
59
|
page
|
|
32
60
|
} = options;
|
|
33
|
-
const toggleSort = column => {
|
|
61
|
+
const toggleSort = (column, event) => {
|
|
34
62
|
if (column.key == null) return;
|
|
35
63
|
let newSortBy = sortBy.value.map(x => ({
|
|
36
64
|
...x
|
|
37
65
|
})) ?? [];
|
|
38
66
|
const item = newSortBy.find(x => x.key === column.key);
|
|
67
|
+
const initialOrder = initialSortOrder.value;
|
|
68
|
+
const secondaryOrder = initialSortOrder.value === 'desc' ? 'asc' : 'desc';
|
|
39
69
|
if (!item) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
70
|
+
const {
|
|
71
|
+
active,
|
|
72
|
+
mode
|
|
73
|
+
} = resolveMultiSort(multiSort.value, event);
|
|
74
|
+
if (active) {
|
|
75
|
+
if (mode === 'prepend') {
|
|
76
|
+
newSortBy.unshift({
|
|
77
|
+
key: column.key,
|
|
78
|
+
order: initialOrder
|
|
79
|
+
});
|
|
80
|
+
} else {
|
|
81
|
+
newSortBy.push({
|
|
82
|
+
key: column.key,
|
|
83
|
+
order: initialOrder
|
|
84
|
+
});
|
|
85
|
+
}
|
|
45
86
|
} else {
|
|
46
87
|
newSortBy = [{
|
|
47
88
|
key: column.key,
|
|
48
|
-
order:
|
|
89
|
+
order: initialOrder
|
|
49
90
|
}];
|
|
50
91
|
}
|
|
51
|
-
} else if (item.order ===
|
|
92
|
+
} else if (item.order === secondaryOrder) {
|
|
52
93
|
if (mustSort.value && newSortBy.length === 1) {
|
|
53
|
-
item.order =
|
|
94
|
+
item.order = initialSortOrder.value;
|
|
54
95
|
} else {
|
|
55
96
|
newSortBy = newSortBy.filter(x => x.key !== column.key);
|
|
56
97
|
}
|
|
57
98
|
} else {
|
|
58
|
-
item.order =
|
|
99
|
+
item.order = secondaryOrder;
|
|
59
100
|
}
|
|
60
101
|
sortBy.value = newSortBy;
|
|
61
102
|
if (page) page.value = 1;
|