@vuetify/nightly 3.9.0-beta.1-dev.2025-07-02 → 3.9.0-beta.1-dev.2025-07-05
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 +15 -3
- package/dist/json/attributes.json +3282 -3290
- package/dist/json/importMap-labs.json +14 -14
- package/dist/json/importMap.json +148 -148
- package/dist/json/tags.json +2 -4
- package/dist/json/web-types.json +6453 -6474
- package/dist/vuetify-labs.cjs +121 -61
- package/dist/vuetify-labs.css +4564 -4553
- package/dist/vuetify-labs.d.ts +101 -111
- package/dist/vuetify-labs.esm.js +121 -61
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +121 -61
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +121 -61
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4097 -4086
- package/dist/vuetify.d.ts +101 -111
- package/dist/vuetify.esm.js +121 -61
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +121 -61
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +73 -59
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.css +12 -1
- package/lib/components/VDataTable/VDataTable.d.ts +20 -38
- package/lib/components/VDataTable/VDataTable.sass +12 -2
- package/lib/components/VDataTable/VDataTableColumn.d.ts +9 -3
- package/lib/components/VDataTable/VDataTableColumn.js +12 -3
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
- package/lib/components/VDataTable/VDataTableHeaders.js +5 -4
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.js +2 -0
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +10 -23
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +10 -23
- package/lib/components/VDataTable/composables/headers.d.ts +22 -14
- package/lib/components/VDataTable/composables/headers.js +51 -22
- package/lib/components/VDataTable/composables/headers.js.map +1 -1
- package/lib/components/VDataTable/types.d.ts +3 -1
- package/lib/components/VDataTable/types.js.map +1 -1
- package/lib/components/VList/VListGroup.d.ts +13 -0
- package/lib/components/VList/VListGroup.js +2 -1
- package/lib/components/VList/VListGroup.js.map +1 -1
- package/lib/components/VList/VListItem.d.ts +6 -3
- package/lib/components/VList/VListItem.js +1 -1
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VTreeview/VTreeview.d.ts +6 -21
- package/lib/components/VTreeview/VTreeview.js +6 -9
- package/lib/components/VTreeview/VTreeview.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewGroup.d.ts +13 -0
- package/lib/components/VTreeview/VTreeviewItem.d.ts +18 -9
- package/lib/components/VTreeview/VTreeviewItem.js +1 -1
- package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
- package/lib/composables/nested/nested.d.ts +7 -4
- package/lib/composables/nested/nested.js +16 -6
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/composables/nested/selectStrategies.d.ts +2 -1
- package/lib/composables/nested/selectStrategies.js +22 -11
- package/lib/composables/nested/selectStrategies.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +56 -53
- package/lib/framework.js +1 -1
- package/package.json +1 -1
@@ -9,7 +9,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
9
9
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
10
10
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
11
11
|
readonly title?: string | undefined;
|
12
|
-
readonly fixed?: boolean | undefined;
|
12
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
13
13
|
readonly align?: "start" | "end" | "center" | undefined;
|
14
14
|
readonly width?: number | string | undefined;
|
15
15
|
readonly minWidth?: number | string | undefined;
|
@@ -29,7 +29,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
29
29
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
30
30
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
31
31
|
readonly title?: string | undefined;
|
32
|
-
readonly fixed?: boolean | undefined;
|
32
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
33
33
|
readonly align?: "start" | "end" | "center" | undefined;
|
34
34
|
readonly width?: number | string | undefined;
|
35
35
|
readonly minWidth?: number | string | undefined;
|
@@ -52,7 +52,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
52
52
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
53
53
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
54
54
|
readonly title?: string | undefined;
|
55
|
-
readonly fixed?: boolean | undefined;
|
55
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
56
56
|
readonly align?: "start" | "end" | "center" | undefined;
|
57
57
|
readonly width?: number | string | undefined;
|
58
58
|
readonly minWidth?: number | string | undefined;
|
@@ -72,7 +72,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
72
72
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
73
73
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
74
74
|
readonly title?: string | undefined;
|
75
|
-
readonly fixed?: boolean | undefined;
|
75
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
76
76
|
readonly align?: "start" | "end" | "center" | undefined;
|
77
77
|
readonly width?: number | string | undefined;
|
78
78
|
readonly minWidth?: number | string | undefined;
|
@@ -94,7 +94,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
94
94
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
95
95
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
96
96
|
readonly title?: string | undefined;
|
97
|
-
readonly fixed?: boolean | undefined;
|
97
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
98
98
|
readonly align?: "start" | "end" | "center" | undefined;
|
99
99
|
readonly width?: number | string | undefined;
|
100
100
|
readonly minWidth?: number | string | undefined;
|
@@ -114,7 +114,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
114
114
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
115
115
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
116
116
|
readonly title?: string | undefined;
|
117
|
-
readonly fixed?: boolean | undefined;
|
117
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
118
118
|
readonly align?: "start" | "end" | "center" | undefined;
|
119
119
|
readonly width?: number | string | undefined;
|
120
120
|
readonly minWidth?: number | string | undefined;
|
@@ -137,7 +137,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
137
137
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
138
138
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
139
139
|
readonly title?: string | undefined;
|
140
|
-
readonly fixed?: boolean | undefined;
|
140
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
141
141
|
readonly align?: "start" | "end" | "center" | undefined;
|
142
142
|
readonly width?: number | string | undefined;
|
143
143
|
readonly minWidth?: number | string | undefined;
|
@@ -157,7 +157,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
157
157
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
158
158
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
159
159
|
readonly title?: string | undefined;
|
160
|
-
readonly fixed?: boolean | undefined;
|
160
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
161
161
|
readonly align?: "start" | "end" | "center" | undefined;
|
162
162
|
readonly width?: number | string | undefined;
|
163
163
|
readonly minWidth?: number | string | undefined;
|
@@ -179,7 +179,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
179
179
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
180
180
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
181
181
|
readonly title?: string | undefined;
|
182
|
-
readonly fixed?: boolean | undefined;
|
182
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
183
183
|
readonly align?: "start" | "end" | "center" | undefined;
|
184
184
|
readonly width?: number | string | undefined;
|
185
185
|
readonly minWidth?: number | string | undefined;
|
@@ -199,7 +199,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
|
|
199
199
|
readonly key?: "data-table-group" | "data-table-select" | "data-table-expand" | (string & {}) | undefined;
|
200
200
|
readonly value?: import("../../../util/index.js").SelectItemKey<Record<string, any>>;
|
201
201
|
readonly title?: string | undefined;
|
202
|
-
readonly fixed?: boolean | undefined;
|
202
|
+
readonly fixed?: boolean | "start" | "end" | undefined;
|
203
203
|
readonly align?: "start" | "end" | "center" | undefined;
|
204
204
|
readonly width?: number | string | undefined;
|
205
205
|
readonly minWidth?: number | string | undefined;
|
@@ -234,7 +234,7 @@ export declare function createHeaders(props: HeaderProps, options?: {
|
|
234
234
|
showExpand?: Ref<boolean>;
|
235
235
|
}): {
|
236
236
|
headers: Ref<{
|
237
|
-
fixed?: boolean | undefined;
|
237
|
+
fixed?: boolean | "start" | "end" | undefined;
|
238
238
|
filter?: import("../../../composables/filter.js").FilterFunction | undefined;
|
239
239
|
sort?: DataTableCompareFunction | undefined;
|
240
240
|
width?: number | string | undefined;
|
@@ -250,12 +250,14 @@ export declare function createHeaders(props: HeaderProps, options?: {
|
|
250
250
|
key: string | null;
|
251
251
|
value: import("../../../util/index.js").SelectItemKey | null;
|
252
252
|
fixedOffset?: number | undefined;
|
253
|
+
fixedEndOffset?: number | undefined;
|
253
254
|
lastFixed?: boolean | undefined;
|
255
|
+
firstFixedEnd?: boolean | undefined;
|
254
256
|
colspan?: number | undefined;
|
255
257
|
rowspan?: number | undefined;
|
256
258
|
children?: /*elided*/ any[] | undefined;
|
257
259
|
}[][], InternalDataTableHeader[][] | {
|
258
|
-
fixed?: boolean | undefined;
|
260
|
+
fixed?: boolean | "start" | "end" | undefined;
|
259
261
|
filter?: import("../../../composables/filter.js").FilterFunction | undefined;
|
260
262
|
sort?: DataTableCompareFunction | undefined;
|
261
263
|
width?: number | string | undefined;
|
@@ -271,13 +273,15 @@ export declare function createHeaders(props: HeaderProps, options?: {
|
|
271
273
|
key: string | null;
|
272
274
|
value: import("../../../util/index.js").SelectItemKey | null;
|
273
275
|
fixedOffset?: number | undefined;
|
276
|
+
fixedEndOffset?: number | undefined;
|
274
277
|
lastFixed?: boolean | undefined;
|
278
|
+
firstFixedEnd?: boolean | undefined;
|
275
279
|
colspan?: number | undefined;
|
276
280
|
rowspan?: number | undefined;
|
277
281
|
children?: /*elided*/ any[] | undefined;
|
278
282
|
}[][]>;
|
279
283
|
columns: Ref<{
|
280
|
-
fixed?: boolean | undefined;
|
284
|
+
fixed?: boolean | "start" | "end" | undefined;
|
281
285
|
filter?: import("../../../composables/filter.js").FilterFunction | undefined;
|
282
286
|
sort?: DataTableCompareFunction | undefined;
|
283
287
|
width?: number | string | undefined;
|
@@ -293,12 +297,14 @@ export declare function createHeaders(props: HeaderProps, options?: {
|
|
293
297
|
key: string | null;
|
294
298
|
value: import("../../../util/index.js").SelectItemKey | null;
|
295
299
|
fixedOffset?: number | undefined;
|
300
|
+
fixedEndOffset?: number | undefined;
|
296
301
|
lastFixed?: boolean | undefined;
|
302
|
+
firstFixedEnd?: boolean | undefined;
|
297
303
|
colspan?: number | undefined;
|
298
304
|
rowspan?: number | undefined;
|
299
305
|
children?: /*elided*/ any[] | undefined;
|
300
306
|
}[], InternalDataTableHeader[] | {
|
301
|
-
fixed?: boolean | undefined;
|
307
|
+
fixed?: boolean | "start" | "end" | undefined;
|
302
308
|
filter?: import("../../../composables/filter.js").FilterFunction | undefined;
|
303
309
|
sort?: DataTableCompareFunction | undefined;
|
304
310
|
width?: number | string | undefined;
|
@@ -314,7 +320,9 @@ export declare function createHeaders(props: HeaderProps, options?: {
|
|
314
320
|
key: string | null;
|
315
321
|
value: import("../../../util/index.js").SelectItemKey | null;
|
316
322
|
fixedOffset?: number | undefined;
|
323
|
+
fixedEndOffset?: number | undefined;
|
317
324
|
lastFixed?: boolean | undefined;
|
325
|
+
firstFixedEnd?: boolean | undefined;
|
318
326
|
colspan?: number | undefined;
|
319
327
|
rowspan?: number | undefined;
|
320
328
|
children?: /*elided*/ any[] | undefined;
|
@@ -87,20 +87,28 @@ function getDepth(item) {
|
|
87
87
|
}
|
88
88
|
function parseFixedColumns(items) {
|
89
89
|
let seenFixed = false;
|
90
|
-
function setFixed(item) {
|
91
|
-
let
|
90
|
+
function setFixed(item, side) {
|
91
|
+
let parentFixedSide = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
|
92
92
|
if (!item) return;
|
93
|
-
if (
|
94
|
-
item.fixed =
|
93
|
+
if (parentFixedSide !== 'none') {
|
94
|
+
item.fixed = parentFixedSide;
|
95
95
|
}
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
96
|
+
|
97
|
+
// normalize to simplify logic below
|
98
|
+
if (item.fixed === true) {
|
99
|
+
item.fixed = 'start';
|
100
|
+
}
|
101
|
+
const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
|
102
|
+
if (item.fixed === side) {
|
103
|
+
if (orderedChildren) {
|
104
|
+
for (const child of orderedChildren) {
|
105
|
+
setFixed(child, side, side);
|
100
106
|
}
|
101
107
|
} else {
|
102
|
-
if (!seenFixed) {
|
108
|
+
if (!seenFixed && side === 'start') {
|
103
109
|
item.lastFixed = true;
|
110
|
+
} else if (!seenFixed && side === 'end') {
|
111
|
+
item.firstFixedEnd = true;
|
104
112
|
} else if (isNaN(Number(item.width))) {
|
105
113
|
consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
|
106
114
|
} else {
|
@@ -109,36 +117,57 @@ function parseFixedColumns(items) {
|
|
109
117
|
seenFixed = true;
|
110
118
|
}
|
111
119
|
} else {
|
112
|
-
if (
|
113
|
-
for (
|
114
|
-
setFixed(
|
120
|
+
if (orderedChildren) {
|
121
|
+
for (const child of orderedChildren) {
|
122
|
+
setFixed(child, side);
|
115
123
|
}
|
116
124
|
} else {
|
117
125
|
seenFixed = false;
|
118
126
|
}
|
119
127
|
}
|
120
128
|
}
|
121
|
-
for (
|
122
|
-
setFixed(
|
129
|
+
for (const item of items.toReversed()) {
|
130
|
+
setFixed(item, 'start');
|
131
|
+
}
|
132
|
+
for (const item of items) {
|
133
|
+
setFixed(item, 'end');
|
123
134
|
}
|
124
135
|
function setFixedOffset(item) {
|
125
|
-
let
|
126
|
-
if (!item) return
|
136
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
137
|
+
if (!item) return offset;
|
127
138
|
if (item.children) {
|
128
|
-
item.fixedOffset =
|
139
|
+
item.fixedOffset = offset;
|
129
140
|
for (const child of item.children) {
|
130
|
-
|
141
|
+
offset = setFixedOffset(child, offset);
|
131
142
|
}
|
132
|
-
} else if (item.fixed) {
|
133
|
-
item.fixedOffset =
|
134
|
-
|
143
|
+
} else if (item.fixed && item.fixed !== 'end') {
|
144
|
+
item.fixedOffset = offset;
|
145
|
+
offset += parseFloat(item.width || '0') || 0;
|
135
146
|
}
|
136
|
-
return
|
147
|
+
return offset;
|
137
148
|
}
|
138
149
|
let fixedOffset = 0;
|
139
150
|
for (const item of items) {
|
140
151
|
fixedOffset = setFixedOffset(item, fixedOffset);
|
141
152
|
}
|
153
|
+
function setFixedEndOffset(item) {
|
154
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
155
|
+
if (!item) return offset;
|
156
|
+
if (item.children) {
|
157
|
+
item.fixedEndOffset = offset;
|
158
|
+
for (const child of item.children) {
|
159
|
+
offset = setFixedEndOffset(child, offset);
|
160
|
+
}
|
161
|
+
} else if (item.fixed === 'end') {
|
162
|
+
item.fixedEndOffset = offset;
|
163
|
+
offset += parseFloat(item.width || '0') || 0;
|
164
|
+
}
|
165
|
+
return offset;
|
166
|
+
}
|
167
|
+
let fixedEndOffset = 0;
|
168
|
+
for (const item of items.toReversed()) {
|
169
|
+
fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
|
170
|
+
}
|
142
171
|
}
|
143
172
|
function parse(items, maxDepth) {
|
144
173
|
const headers = [];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"headers.js","names":["capitalize","inject","provide","ref","watchEffect","consoleError","propsFactory","makeDataTableHeaderProps","headers","Array","VDataTableHeadersSymbol","Symbol","for","defaultHeader","title","sortable","defaultActionHeader","width","priorityQueue","arr","arguments","length","undefined","queue","map","element","priority","enqueue","added","i","item","splice","push","size","count","whole","Math","floor","dequeue","shift","extractLeaves","columns","children","child","extractKeys","keys","Set","key","add","getDefaultItem","includes","getDepth","depth","max","parseFixedColumns","items","seenFixed","setFixed","parentFixed","fixed","lastFixed","isNaN","Number","minWidth","setFixedOffset","fixedOffset","parseFloat","parse","maxDepth","currentDepth","rowSize","row","fraction","diff","rowspan","colspan","sort","pow","flat","convertToInternalHeaders","internalHeaders","defaultItem","value","internalItem","createHeaders","props","options","sortFunctions","sortRawFunctions","filterFunctions","_headers","Object","slice","groupBy","has","unshift","showSelect","showExpand","parsed","flatHeaders","header","sortRaw","filter","data","useHeaders","Error"],"sources":["../../../../src/components/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue'\nimport { consoleError, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableCompareFunction, DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { FilterKeyFunctions } from '@/composables/filter'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array as PropType<DeepReadonly<DataTableHeader[]>>,\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[]> | undefined\n items: any[]\n}\n\nconst defaultHeader = { title: '', sortable: false }\nconst defaultActionHeader = { ...defaultHeader, width: 48 }\n\nfunction priorityQueue <T> (arr: T[] = []) {\n const queue: { element: T, priority: number }[] = arr.map(element => ({ element, priority: 0 }))\n\n return {\n enqueue: (element: T, priority: number) => {\n let added = false\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i]\n if (item.priority > priority) {\n queue.splice(i, 0, { element, priority })\n added = true\n break\n }\n }\n\n if (!added) queue.push({ element, priority })\n },\n size: () => queue.length,\n count: () => {\n let count = 0\n\n if (!queue.length) return 0\n\n const whole = Math.floor(queue[0].priority)\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1\n }\n\n return count\n },\n dequeue: () => {\n return queue.shift()\n },\n }\n}\n\nfunction extractLeaves (item: InternalDataTableHeader, columns: InternalDataTableHeader[] = []) {\n if (!item.children) {\n columns.push(item)\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns)\n }\n }\n\n return columns\n}\n\nfunction extractKeys (headers: DeepReadonly<DataTableHeader[]>, keys = new Set<string>()) {\n for (const item of headers) {\n if (item.key) keys.add(item.key)\n\n if (item.children) {\n extractKeys(item.children, keys)\n }\n }\n\n return keys\n}\n\nfunction getDefaultItem (item: DeepReadonly<DataTableHeader>) {\n if (!item.key) return undefined\n if (item.key === 'data-table-group') return defaultHeader\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader\n return undefined\n}\n\nfunction getDepth (item: InternalDataTableHeader, depth = 0): number {\n if (!item.children) return depth\n\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)))\n}\n\nfunction parseFixedColumns (items: InternalDataTableHeader[]) {\n let seenFixed = false\n function setFixed (item: InternalDataTableHeader, parentFixed = false) {\n if (!item) return\n\n if (parentFixed) {\n item.fixed = true\n }\n\n if (item.fixed) {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], true)\n }\n } else {\n if (!seenFixed) {\n item.lastFixed = true\n } else if (isNaN(Number(item.width))) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`)\n } else {\n item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0)\n }\n seenFixed = true\n }\n } else {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i])\n }\n } else {\n seenFixed = false\n }\n }\n }\n\n for (let i = items.length - 1; i >= 0; i--) {\n setFixed(items[i])\n }\n\n function setFixedOffset (item: InternalDataTableHeader, fixedOffset = 0) {\n if (!item) return fixedOffset\n\n if (item.children) {\n item.fixedOffset = fixedOffset\n for (const child of item.children) {\n fixedOffset = setFixedOffset(child, fixedOffset)\n }\n } else if (item.fixed) {\n item.fixedOffset = fixedOffset\n fixedOffset += parseFloat(item.width || '0') || 0\n }\n\n return fixedOffset\n }\n\n let fixedOffset = 0\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset)\n }\n}\n\nfunction parse (items: InternalDataTableHeader[], maxDepth: number) {\n const headers: InternalDataTableHeader[][] = []\n let currentDepth = 0\n const queue = priorityQueue(items)\n\n while (queue.size() > 0) {\n let rowSize = queue.count()\n const row: InternalDataTableHeader[] = []\n let fraction = 1\n while (rowSize > 0) {\n const { element: item, priority } = queue.dequeue()!\n const diff = maxDepth - currentDepth - getDepth(item)\n\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1,\n })\n\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + (fraction / Math.pow(10, currentDepth + 2))\n queue.enqueue(child, currentDepth + diff + sort)\n }\n }\n\n fraction += 1\n rowSize -= 1\n }\n currentDepth += 1\n headers.push(row)\n }\n\n const columns = items.map(item => extractLeaves(item)).flat()\n\n return { columns, headers }\n}\n\nfunction convertToInternalHeaders (items: DeepReadonly<DataTableHeader[]>) {\n const internalHeaders: InternalDataTableHeader[] = []\n for (const item of items) {\n const defaultItem = { ...getDefaultItem(item), ...item }\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null)\n const value = defaultItem.value ?? key ?? null\n const internalItem: InternalDataTableHeader = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined,\n }\n\n internalHeaders.push(internalItem)\n }\n\n return internalHeaders\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n const sortFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const sortRawFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const filterFunctions = ref<FilterKeyFunctions>({})\n\n watchEffect(() => {\n const _headers = props.headers ||\n Object.keys(props.items[0] ?? {}).map(key => ({ key, title: capitalize(key) })) as never\n\n const items = _headers.slice()\n const keys = extractKeys(items)\n\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({ key: 'data-table-group', title: 'Group' })\n }\n\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({ key: 'data-table-select' })\n }\n\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({ key: 'data-table-expand' })\n }\n\n const internalHeaders = convertToInternalHeaders(items)\n\n parseFixedColumns(internalHeaders)\n\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1\n const parsed = parse(internalHeaders, maxDepth)\n\n headers.value = parsed.headers\n columns.value = parsed.columns\n\n const flatHeaders = parsed.headers.flat(1)\n\n for (const header of flatHeaders) {\n if (!header.key) continue\n\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort\n }\n\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw\n }\n }\n\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter\n }\n }\n })\n\n const data = { headers, columns, sortFunctions, sortRawFunctions, filterFunctions }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"headers.js","names":["capitalize","inject","provide","ref","watchEffect","consoleError","propsFactory","makeDataTableHeaderProps","headers","Array","VDataTableHeadersSymbol","Symbol","for","defaultHeader","title","sortable","defaultActionHeader","width","priorityQueue","arr","arguments","length","undefined","queue","map","element","priority","enqueue","added","i","item","splice","push","size","count","whole","Math","floor","dequeue","shift","extractLeaves","columns","children","child","extractKeys","keys","Set","key","add","getDefaultItem","includes","getDepth","depth","max","parseFixedColumns","items","seenFixed","setFixed","side","parentFixedSide","fixed","orderedChildren","toReversed","lastFixed","firstFixedEnd","isNaN","Number","minWidth","setFixedOffset","offset","fixedOffset","parseFloat","setFixedEndOffset","fixedEndOffset","parse","maxDepth","currentDepth","rowSize","row","fraction","diff","rowspan","colspan","sort","pow","flat","convertToInternalHeaders","internalHeaders","defaultItem","value","internalItem","createHeaders","props","options","sortFunctions","sortRawFunctions","filterFunctions","_headers","Object","slice","groupBy","has","unshift","showSelect","showExpand","parsed","flatHeaders","header","sortRaw","filter","data","useHeaders","Error"],"sources":["../../../../src/components/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue'\nimport { consoleError, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableCompareFunction, DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { FilterKeyFunctions } from '@/composables/filter'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array as PropType<DeepReadonly<DataTableHeader[]>>,\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[]> | undefined\n items: any[]\n}\n\nconst defaultHeader = { title: '', sortable: false }\nconst defaultActionHeader = { ...defaultHeader, width: 48 }\n\nfunction priorityQueue <T> (arr: T[] = []) {\n const queue: { element: T, priority: number }[] = arr.map(element => ({ element, priority: 0 }))\n\n return {\n enqueue: (element: T, priority: number) => {\n let added = false\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i]\n if (item.priority > priority) {\n queue.splice(i, 0, { element, priority })\n added = true\n break\n }\n }\n\n if (!added) queue.push({ element, priority })\n },\n size: () => queue.length,\n count: () => {\n let count = 0\n\n if (!queue.length) return 0\n\n const whole = Math.floor(queue[0].priority)\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1\n }\n\n return count\n },\n dequeue: () => {\n return queue.shift()\n },\n }\n}\n\nfunction extractLeaves (item: InternalDataTableHeader, columns: InternalDataTableHeader[] = []) {\n if (!item.children) {\n columns.push(item)\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns)\n }\n }\n\n return columns\n}\n\nfunction extractKeys (headers: DeepReadonly<DataTableHeader[]>, keys = new Set<string>()) {\n for (const item of headers) {\n if (item.key) keys.add(item.key)\n\n if (item.children) {\n extractKeys(item.children, keys)\n }\n }\n\n return keys\n}\n\nfunction getDefaultItem (item: DeepReadonly<DataTableHeader>) {\n if (!item.key) return undefined\n if (item.key === 'data-table-group') return defaultHeader\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader\n return undefined\n}\n\nfunction getDepth (item: InternalDataTableHeader, depth = 0): number {\n if (!item.children) return depth\n\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)))\n}\n\nfunction parseFixedColumns (items: InternalDataTableHeader[]) {\n let seenFixed = false\n\n function setFixed (\n item: InternalDataTableHeader,\n side: 'start' | 'end',\n parentFixedSide: 'start' | 'end' | 'none' = 'none'\n ) {\n if (!item) return\n\n if (parentFixedSide !== 'none') {\n item.fixed = parentFixedSide\n }\n\n // normalize to simplify logic below\n if (item.fixed === true) {\n item.fixed = 'start'\n }\n\n const orderedChildren = side === 'start'\n ? item.children?.toReversed()\n : item.children\n\n if (item.fixed === side) {\n if (orderedChildren) {\n for (const child of orderedChildren) {\n setFixed(child, side, side)\n }\n } else {\n if (!seenFixed && side === 'start') {\n item.lastFixed = true\n } else if (!seenFixed && side === 'end') {\n item.firstFixedEnd = true\n } else if (isNaN(Number(item.width))) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`)\n } else {\n item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0)\n }\n seenFixed = true\n }\n } else {\n if (orderedChildren) {\n for (const child of orderedChildren) {\n setFixed(child, side)\n }\n } else {\n seenFixed = false\n }\n }\n }\n\n for (const item of items.toReversed()) {\n setFixed(item, 'start')\n }\n\n for (const item of items) {\n setFixed(item, 'end')\n }\n\n function setFixedOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedOffset = offset\n for (const child of item.children) {\n offset = setFixedOffset(child, offset)\n }\n } else if (item.fixed && item.fixed !== 'end') {\n item.fixedOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n }\n\n let fixedOffset = 0\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset)\n }\n\n function setFixedEndOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedEndOffset = offset\n for (const child of item.children) {\n offset = setFixedEndOffset(child, offset)\n }\n } else if (item.fixed === 'end') {\n item.fixedEndOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n }\n\n let fixedEndOffset = 0\n for (const item of items.toReversed()) {\n fixedEndOffset = setFixedEndOffset(item, fixedEndOffset)\n }\n}\n\nfunction parse (items: InternalDataTableHeader[], maxDepth: number) {\n const headers: InternalDataTableHeader[][] = []\n let currentDepth = 0\n const queue = priorityQueue(items)\n\n while (queue.size() > 0) {\n let rowSize = queue.count()\n const row: InternalDataTableHeader[] = []\n let fraction = 1\n while (rowSize > 0) {\n const { element: item, priority } = queue.dequeue()!\n const diff = maxDepth - currentDepth - getDepth(item)\n\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1,\n })\n\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + (fraction / Math.pow(10, currentDepth + 2))\n queue.enqueue(child, currentDepth + diff + sort)\n }\n }\n\n fraction += 1\n rowSize -= 1\n }\n currentDepth += 1\n headers.push(row)\n }\n\n const columns = items.map(item => extractLeaves(item)).flat()\n\n return { columns, headers }\n}\n\nfunction convertToInternalHeaders (items: DeepReadonly<DataTableHeader[]>) {\n const internalHeaders: InternalDataTableHeader[] = []\n for (const item of items) {\n const defaultItem = { ...getDefaultItem(item), ...item }\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null)\n const value = defaultItem.value ?? key ?? null\n const internalItem: InternalDataTableHeader = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined,\n }\n\n internalHeaders.push(internalItem)\n }\n\n return internalHeaders\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n const sortFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const sortRawFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const filterFunctions = ref<FilterKeyFunctions>({})\n\n watchEffect(() => {\n const _headers = props.headers ||\n Object.keys(props.items[0] ?? {}).map(key => ({ key, title: capitalize(key) })) as never\n\n const items = _headers.slice()\n const keys = extractKeys(items)\n\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({ key: 'data-table-group', title: 'Group' })\n }\n\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({ key: 'data-table-select' })\n }\n\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({ key: 'data-table-expand' })\n }\n\n const internalHeaders = convertToInternalHeaders(items)\n\n parseFixedColumns(internalHeaders)\n\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1\n const parsed = parse(internalHeaders, maxDepth)\n\n headers.value = parsed.headers\n columns.value = parsed.columns\n\n const flatHeaders = parsed.headers.flat(1)\n\n for (const header of flatHeaders) {\n if (!header.key) continue\n\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort\n }\n\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw\n }\n }\n\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter\n }\n }\n })\n\n const data = { headers, columns, sortFunctions, sortRawFunctions, filterFunctions }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -8,7 +8,7 @@ export type DataTableHeader<T = Record<string, any>> = {
|
|
8
8
|
key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {});
|
9
9
|
value?: SelectItemKey<T>;
|
10
10
|
title?: string;
|
11
|
-
fixed?: boolean;
|
11
|
+
fixed?: boolean | 'start' | 'end';
|
12
12
|
align?: 'start' | 'end' | 'center';
|
13
13
|
width?: number | string;
|
14
14
|
minWidth?: number | string;
|
@@ -27,7 +27,9 @@ export type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'c
|
|
27
27
|
value: SelectItemKey | null;
|
28
28
|
sortable: boolean;
|
29
29
|
fixedOffset?: number;
|
30
|
+
fixedEndOffset?: number;
|
30
31
|
lastFixed?: boolean;
|
32
|
+
firstFixedEnd?: boolean;
|
31
33
|
nowrap?: boolean;
|
32
34
|
colspan?: number;
|
33
35
|
rowspan?: number;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number | null\n\nexport type DataTableHeader<T = Record<string, any>> = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey<T>\n title?: string\n\n fixed?: boolean\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: number | string\n maxWidth?: number | string\n nowrap?: boolean\n\n headerProps?: Record<string, any>\n cellProps?: HeaderCellProps\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n sortRaw?: DataTableCompareFunction\n filter?: FilterFunction\n\n children?: DataTableHeader<T>[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n lastFixed?: boolean\n nowrap?: boolean\n colspan?: number\n rowspan?: number\n children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends InternalItem<T>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n\nexport type RowProps<T> = Record<string, any> | RowPropsFunction<T>\nexport type RowPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>\n) => Record<string, any>\n\nexport type CellProps<T> = Record<string, any> | CellPropsFunction<T>\nexport type CellPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>\n) => Record<string, any>\n\nexport type HeaderCellProps = Record<string, any> | HeaderCellPropsFunction\nexport type HeaderCellPropsFunction = (\n data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>\n) => Record<string, any>\n"],"mappings":"","ignoreList":[]}
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number | null\n\nexport type DataTableHeader<T = Record<string, any>> = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey<T>\n title?: string\n\n fixed?: boolean | 'start' | 'end'\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: number | string\n maxWidth?: number | string\n nowrap?: boolean\n\n headerProps?: Record<string, any>\n cellProps?: HeaderCellProps\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n sortRaw?: DataTableCompareFunction\n filter?: FilterFunction\n\n children?: DataTableHeader<T>[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n fixedEndOffset?: number\n lastFixed?: boolean\n firstFixedEnd?: boolean\n nowrap?: boolean\n colspan?: number\n rowspan?: number\n children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends InternalItem<T>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n\nexport type RowProps<T> = Record<string, any> | RowPropsFunction<T>\nexport type RowPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>\n) => Record<string, any>\n\nexport type CellProps<T> = Record<string, any> | CellPropsFunction<T>\nexport type CellPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>\n) => Record<string, any>\n\nexport type HeaderCellProps = Record<string, any> | HeaderCellPropsFunction\nexport type HeaderCellPropsFunction = (\n data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>\n) => Record<string, any>\n"],"mappings":"","ignoreList":[]}
|
@@ -14,6 +14,7 @@ export declare const makeVListGroupProps: <Defaults extends {
|
|
14
14
|
baseColor?: unknown;
|
15
15
|
color?: unknown;
|
16
16
|
collapseIcon?: unknown;
|
17
|
+
disabled?: unknown;
|
17
18
|
expandIcon?: unknown;
|
18
19
|
rawId?: unknown;
|
19
20
|
prependIcon?: unknown;
|
@@ -69,6 +70,10 @@ export declare const makeVListGroupProps: <Defaults extends {
|
|
69
70
|
type: import("vue").PropType<unknown extends Defaults["collapseIcon"] ? IconValue : IconValue | Defaults["collapseIcon"]>;
|
70
71
|
default: unknown extends Defaults["collapseIcon"] ? IconValue : NonNullable<IconValue> | Defaults["collapseIcon"];
|
71
72
|
};
|
73
|
+
disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
|
74
|
+
type: import("vue").PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
|
75
|
+
default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
|
76
|
+
};
|
72
77
|
expandIcon: unknown extends Defaults["expandIcon"] ? {
|
73
78
|
type: import("vue").PropType<IconValue>;
|
74
79
|
default: string;
|
@@ -111,6 +116,7 @@ export declare const makeVListGroupProps: <Defaults extends {
|
|
111
116
|
export declare const VListGroup: {
|
112
117
|
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
113
118
|
style: import("vue").StyleValue;
|
119
|
+
disabled: boolean;
|
114
120
|
tag: string | import("../../util/index.js").JSXComponent;
|
115
121
|
subgroup: boolean;
|
116
122
|
collapseIcon: IconValue;
|
@@ -151,6 +157,7 @@ export declare const VListGroup: {
|
|
151
157
|
isOpen: import("vue").ComputedRef<boolean>;
|
152
158
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
153
159
|
style: import("vue").StyleValue;
|
160
|
+
disabled: boolean;
|
154
161
|
tag: string | import("../../util/index.js").JSXComponent;
|
155
162
|
subgroup: boolean;
|
156
163
|
collapseIcon: IconValue;
|
@@ -171,6 +178,7 @@ export declare const VListGroup: {
|
|
171
178
|
Defaults: {};
|
172
179
|
}, {
|
173
180
|
style: import("vue").StyleValue;
|
181
|
+
disabled: boolean;
|
174
182
|
tag: string | import("../../util/index.js").JSXComponent;
|
175
183
|
subgroup: boolean;
|
176
184
|
collapseIcon: IconValue;
|
@@ -211,6 +219,7 @@ export declare const VListGroup: {
|
|
211
219
|
isOpen: import("vue").ComputedRef<boolean>;
|
212
220
|
}, {}, {}, {}, {
|
213
221
|
style: import("vue").StyleValue;
|
222
|
+
disabled: boolean;
|
214
223
|
tag: string | import("../../util/index.js").JSXComponent;
|
215
224
|
subgroup: boolean;
|
216
225
|
collapseIcon: IconValue;
|
@@ -222,6 +231,7 @@ export declare const VListGroup: {
|
|
222
231
|
__isSuspense?: never;
|
223
232
|
} & import("vue").ComponentOptionsBase<{
|
224
233
|
style: import("vue").StyleValue;
|
234
|
+
disabled: boolean;
|
225
235
|
tag: string | import("../../util/index.js").JSXComponent;
|
226
236
|
subgroup: boolean;
|
227
237
|
collapseIcon: IconValue;
|
@@ -262,6 +272,7 @@ export declare const VListGroup: {
|
|
262
272
|
isOpen: import("vue").ComputedRef<boolean>;
|
263
273
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
264
274
|
style: import("vue").StyleValue;
|
275
|
+
disabled: boolean;
|
265
276
|
tag: string | import("../../util/index.js").JSXComponent;
|
266
277
|
subgroup: boolean;
|
267
278
|
collapseIcon: IconValue;
|
@@ -290,6 +301,7 @@ export declare const VListGroup: {
|
|
290
301
|
type: import("vue").PropType<IconValue>;
|
291
302
|
default: string;
|
292
303
|
};
|
304
|
+
disabled: BooleanConstructor;
|
293
305
|
expandIcon: {
|
294
306
|
type: import("vue").PropType<IconValue>;
|
295
307
|
default: string;
|
@@ -318,6 +330,7 @@ export declare const VListGroup: {
|
|
318
330
|
type: import("vue").PropType<IconValue>;
|
319
331
|
default: string;
|
320
332
|
};
|
333
|
+
disabled: BooleanConstructor;
|
321
334
|
expandIcon: {
|
322
335
|
type: import("vue").PropType<IconValue>;
|
323
336
|
default: string;
|
@@ -30,6 +30,7 @@ export const makeVListGroupProps = propsFactory({
|
|
30
30
|
type: IconValue,
|
31
31
|
default: '$collapse'
|
32
32
|
},
|
33
|
+
disabled: Boolean,
|
33
34
|
expandIcon: {
|
34
35
|
type: IconValue,
|
35
36
|
default: '$expand'
|
@@ -55,7 +56,7 @@ export const VListGroup = genericComponent()({
|
|
55
56
|
isOpen,
|
56
57
|
open,
|
57
58
|
id: _id
|
58
|
-
} = useNestedItem(() => props.value, true);
|
59
|
+
} = useNestedItem(() => props.value, () => props.disabled, true);
|
59
60
|
const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
|
60
61
|
const list = useList();
|
61
62
|
const {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VListGroup.js","names":["VExpandTransition","VDefaultsProvider","useList","makeComponentProps","IconValue","useNestedGroupActivator","useNestedItem","useSsrBoot","makeTagProps","MaybeTransition","computed","defineComponent","genericComponent","propsFactory","useRender","VListGroupActivator","name","setup","_","_ref","slots","default","makeVListGroupProps","activeColor","String","baseColor","color","collapseIcon","type","expandIcon","rawId","Number","prependIcon","appendIcon","fluid","
|
1
|
+
{"version":3,"file":"VListGroup.js","names":["VExpandTransition","VDefaultsProvider","useList","makeComponentProps","IconValue","useNestedGroupActivator","useNestedItem","useSsrBoot","makeTagProps","MaybeTransition","computed","defineComponent","genericComponent","propsFactory","useRender","VListGroupActivator","name","setup","_","_ref","slots","default","makeVListGroupProps","activeColor","String","baseColor","color","collapseIcon","type","disabled","Boolean","expandIcon","rawId","Number","prependIcon","appendIcon","fluid","subgroup","title","value","VListGroup","props","_ref2","isOpen","open","id","_id","list","isBooted","onClick","e","includes","target","tagName","activatorProps","class","toggleIcon","activatorDefaults","VListItem","active","_createVNode","tag","_normalizeClass","hasPrepend","_normalizeStyle","style","activator","component","_withDirectives","_createElementVNode","_vShow"],"sources":["../../../src/components/VList/VListGroup.tsx"],"sourcesContent":["// Components\nimport { VExpandTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useList } from './list'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedGroupActivator, useNestedItem } from '@/composables/nested/nested'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VListGroupSlots = {\n default: never\n activator: { isOpen: boolean, props: Record<string, unknown> }\n}\n\nconst VListGroupActivator = defineComponent({\n name: 'VListGroupActivator',\n\n setup (_, { slots }) {\n useNestedGroupActivator()\n\n return () => slots.default?.()\n },\n})\n\nexport const makeVListGroupProps = propsFactory({\n /* @deprecated */\n activeColor: String,\n baseColor: String,\n color: String,\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n disabled: Boolean,\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n rawId: [String, Number],\n prependIcon: IconValue,\n appendIcon: IconValue,\n fluid: Boolean,\n subgroup: Boolean,\n title: String,\n value: null,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListGroup')\n\nexport const VListGroup = genericComponent<VListGroupSlots>()({\n name: 'VListGroup',\n\n props: makeVListGroupProps(),\n\n setup (props, { slots }) {\n const { isOpen, open, id: _id } = useNestedItem(() => props.value, () => props.disabled, true)\n const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`)\n const list = useList()\n const { isBooted } = useSsrBoot()\n\n function onClick (e: Event) {\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n open(!isOpen.value, e)\n }\n\n const activatorProps = computed(() => ({\n onClick,\n class: 'v-list-group__header',\n id: id.value,\n }))\n\n const toggleIcon = computed(() => isOpen.value ? props.collapseIcon : props.expandIcon)\n const activatorDefaults = computed(() => ({\n VListItem: {\n active: isOpen.value,\n activeColor: props.activeColor,\n baseColor: props.baseColor,\n color: props.color,\n prependIcon: props.prependIcon || (props.subgroup && toggleIcon.value),\n appendIcon: props.appendIcon || (!props.subgroup && toggleIcon.value),\n title: props.title,\n value: props.value,\n },\n }))\n\n useRender(() => (\n <props.tag\n class={[\n 'v-list-group',\n {\n 'v-list-group--prepend': list?.hasPrepend.value,\n 'v-list-group--fluid': props.fluid,\n 'v-list-group--subgroup': props.subgroup,\n 'v-list-group--open': isOpen.value,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { slots.activator && (\n <VDefaultsProvider defaults={ activatorDefaults.value }>\n <VListGroupActivator>\n { slots.activator({ props: activatorProps.value, isOpen: isOpen.value }) }\n </VListGroupActivator>\n </VDefaultsProvider>\n )}\n\n <MaybeTransition transition={{ component: VExpandTransition }} disabled={ !isBooted.value }>\n <div class=\"v-list-group__items\" role=\"group\" aria-labelledby={ id.value } v-show={ isOpen.value }>\n { slots.default?.() }\n </div>\n </MaybeTransition>\n </props.tag>\n ))\n\n return {\n isOpen,\n }\n },\n})\n\nexport type VListGroup = InstanceType<typeof VListGroup>\n"],"mappings":"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","ignoreList":[]}
|
@@ -400,13 +400,14 @@ export declare const VListItem: {
|
|
400
400
|
root: {
|
401
401
|
children: import("vue").Ref<Map<unknown, unknown[]>>;
|
402
402
|
parents: import("vue").Ref<Map<unknown, unknown>>;
|
403
|
+
disabled: import("vue").Ref<Set<unknown>>;
|
403
404
|
activatable: import("vue").Ref<boolean>;
|
404
405
|
selectable: import("vue").Ref<boolean>;
|
405
406
|
opened: import("vue").Ref<Set<unknown>>;
|
406
407
|
activated: import("vue").Ref<Set<unknown>>;
|
407
408
|
selected: import("vue").Ref<Map<unknown, "on" | "off" | "indeterminate">>;
|
408
409
|
selectedValues: import("vue").Ref<unknown[]>;
|
409
|
-
register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
|
410
|
+
register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
|
410
411
|
unregister: (id: unknown) => void;
|
411
412
|
open: (id: unknown, value: boolean, event?: Event) => void;
|
412
413
|
activate: (id: unknown, value: boolean, event?: Event) => void;
|
@@ -533,13 +534,14 @@ export declare const VListItem: {
|
|
533
534
|
root: {
|
534
535
|
children: import("vue").Ref<Map<unknown, unknown[]>>;
|
535
536
|
parents: import("vue").Ref<Map<unknown, unknown>>;
|
537
|
+
disabled: import("vue").Ref<Set<unknown>>;
|
536
538
|
activatable: import("vue").Ref<boolean>;
|
537
539
|
selectable: import("vue").Ref<boolean>;
|
538
540
|
opened: import("vue").Ref<Set<unknown>>;
|
539
541
|
activated: import("vue").Ref<Set<unknown>>;
|
540
542
|
selected: import("vue").Ref<Map<unknown, "on" | "off" | "indeterminate">>;
|
541
543
|
selectedValues: import("vue").Ref<unknown[]>;
|
542
|
-
register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
|
544
|
+
register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
|
543
545
|
unregister: (id: unknown) => void;
|
544
546
|
open: (id: unknown, value: boolean, event?: Event) => void;
|
545
547
|
activate: (id: unknown, value: boolean, event?: Event) => void;
|
@@ -655,13 +657,14 @@ export declare const VListItem: {
|
|
655
657
|
root: {
|
656
658
|
children: import("vue").Ref<Map<unknown, unknown[]>>;
|
657
659
|
parents: import("vue").Ref<Map<unknown, unknown>>;
|
660
|
+
disabled: import("vue").Ref<Set<unknown>>;
|
658
661
|
activatable: import("vue").Ref<boolean>;
|
659
662
|
selectable: import("vue").Ref<boolean>;
|
660
663
|
opened: import("vue").Ref<Set<unknown>>;
|
661
664
|
activated: import("vue").Ref<Set<unknown>>;
|
662
665
|
selected: import("vue").Ref<Map<unknown, "on" | "off" | "indeterminate">>;
|
663
666
|
selectedValues: import("vue").Ref<unknown[]>;
|
664
|
-
register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
|
667
|
+
register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
|
665
668
|
unregister: (id: unknown) => void;
|
666
669
|
open: (id: unknown, value: boolean, event?: Event) => void;
|
667
670
|
activate: (id: unknown, value: boolean, event?: Event) => void;
|
@@ -102,7 +102,7 @@ export const VListItem = genericComponent()({
|
|
102
102
|
parent,
|
103
103
|
openOnSelect,
|
104
104
|
id: uid
|
105
|
-
} = useNestedItem(id, false);
|
105
|
+
} = useNestedItem(id, () => props.disabled, false);
|
106
106
|
const list = useList();
|
107
107
|
const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
|
108
108
|
const isLink = toRef(() => props.link !== false && link.isLink.value);
|