@vuetify/nightly 3.9.3-dev.2025-07-31 → 3.9.3-dev.2025-08-02
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 +2098 -2022
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +168 -168
- package/dist/json/tags.json +19 -0
- package/dist/json/web-types.json +4252 -4050
- package/dist/vuetify-labs.cjs +77 -24
- package/dist/vuetify-labs.css +5349 -5343
- package/dist/vuetify-labs.d.ts +329 -61
- package/dist/vuetify-labs.esm.js +77 -24
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +77 -24
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +77 -24
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2939 -2933
- package/dist/vuetify.d.ts +329 -61
- package/dist/vuetify.esm.js +77 -24
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +77 -24
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +252 -249
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDataIterator/VDataIterator.d.ts +1 -0
- package/lib/components/VDataIterator/VDataIterator.js +1 -0
- package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.css +7 -1
- package/lib/components/VDataTable/VDataTable.d.ts +164 -0
- package/lib/components/VDataTable/VDataTable.sass +4 -1
- package/lib/components/VDataTable/VDataTableColumn.d.ts +4 -1
- package/lib/components/VDataTable/VDataTableColumn.js +6 -2
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +57 -3
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +27 -12
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.d.ts +51 -0
- package/lib/components/VDataTable/VDataTableRow.js +17 -4
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRows.d.ts +100 -0
- package/lib/components/VDataTable/VDataTableRows.js +9 -4
- package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +110 -0
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +110 -0
- package/lib/components/VDataTable/composables/headers.d.ts +14 -0
- package/lib/components/VDataTable/types.d.ts +1 -0
- package/lib/components/VDataTable/types.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.d.ts +25 -0
- package/lib/components/VFileInput/VFileInput.js +11 -1
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js +6 -4
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/lib/components/VWindow/VWindow.js +2 -2
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +62 -61
- package/lib/framework.js +1 -1
- package/lib/iconsets/fa.js +2 -0
- package/lib/iconsets/fa.js.map +1 -1
- package/lib/iconsets/fa4.js +2 -0
- package/lib/iconsets/fa4.js.map +1 -1
- package/lib/iconsets/md.js +2 -0
- package/lib/iconsets/md.js.map +1 -1
- package/lib/iconsets/mdi-svg.js +2 -0
- package/lib/iconsets/mdi-svg.js.map +1 -1
- package/lib/iconsets/mdi.js +2 -0
- package/lib/iconsets/mdi.js.map +1 -1
- package/package.json +1 -1
@@ -1,3 +1,4 @@
|
|
1
|
+
import { IconValue } from "../../composables/icons.js";
|
1
2
|
import type { PropType } from 'vue';
|
2
3
|
import type { Group } from './composables/group.js';
|
3
4
|
export type VDataTableGroupHeaderRowSlots = {
|
@@ -12,6 +13,8 @@ export type VDataTableGroupHeaderRowSlots = {
|
|
12
13
|
};
|
13
14
|
export declare const makeVDataTableGroupHeaderRowProps: <Defaults extends {
|
14
15
|
item?: unknown;
|
16
|
+
groupCollapseIcon?: unknown;
|
17
|
+
groupExpandIcon?: unknown;
|
15
18
|
} = {}>(defaults?: Defaults | undefined) => {
|
16
19
|
item: unknown extends Defaults["item"] ? {
|
17
20
|
type: PropType<Group>;
|
@@ -23,10 +26,32 @@ export declare const makeVDataTableGroupHeaderRowProps: <Defaults extends {
|
|
23
26
|
type: PropType<unknown extends Defaults["item"] ? Group<any> : Group<any> | Defaults["item"]>;
|
24
27
|
default: unknown extends Defaults["item"] ? Group<any> : Group<any> | Defaults["item"];
|
25
28
|
};
|
29
|
+
groupCollapseIcon: unknown extends Defaults["groupCollapseIcon"] ? {
|
30
|
+
type: PropType<IconValue>;
|
31
|
+
default: string;
|
32
|
+
} : Omit<{
|
33
|
+
type: PropType<IconValue>;
|
34
|
+
default: string;
|
35
|
+
}, "type" | "default"> & {
|
36
|
+
type: PropType<unknown extends Defaults["groupCollapseIcon"] ? IconValue : IconValue | Defaults["groupCollapseIcon"]>;
|
37
|
+
default: unknown extends Defaults["groupCollapseIcon"] ? IconValue : NonNullable<IconValue> | Defaults["groupCollapseIcon"];
|
38
|
+
};
|
39
|
+
groupExpandIcon: unknown extends Defaults["groupExpandIcon"] ? {
|
40
|
+
type: PropType<IconValue>;
|
41
|
+
default: string;
|
42
|
+
} : Omit<{
|
43
|
+
type: PropType<IconValue>;
|
44
|
+
default: string;
|
45
|
+
}, "type" | "default"> & {
|
46
|
+
type: PropType<unknown extends Defaults["groupExpandIcon"] ? IconValue : IconValue | Defaults["groupExpandIcon"]>;
|
47
|
+
default: unknown extends Defaults["groupExpandIcon"] ? IconValue : NonNullable<IconValue> | Defaults["groupExpandIcon"];
|
48
|
+
};
|
26
49
|
};
|
27
50
|
export declare const VDataTableGroupHeaderRow: {
|
28
51
|
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
29
52
|
item: Group<any>;
|
53
|
+
groupCollapseIcon: IconValue;
|
54
|
+
groupExpandIcon: IconValue;
|
30
55
|
} & {} & {
|
31
56
|
$children?: {} | import("vue").VNodeChild | {
|
32
57
|
$stable?: boolean;
|
@@ -59,7 +84,10 @@ export declare const VDataTableGroupHeaderRow: {
|
|
59
84
|
"v-slot:data-table-select"?: false | ((arg: {
|
60
85
|
props: Record<string, unknown>;
|
61
86
|
}) => import("vue").VNodeChild) | undefined;
|
62
|
-
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
87
|
+
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
88
|
+
groupCollapseIcon: IconValue;
|
89
|
+
groupExpandIcon: IconValue;
|
90
|
+
}, true, {}, import("vue").SlotsType<Partial<{
|
63
91
|
'data-table-group': (arg: {
|
64
92
|
item: Group;
|
65
93
|
count: number;
|
@@ -77,6 +105,8 @@ export declare const VDataTableGroupHeaderRow: {
|
|
77
105
|
Defaults: {};
|
78
106
|
}, {
|
79
107
|
item: Group<any>;
|
108
|
+
groupCollapseIcon: IconValue;
|
109
|
+
groupExpandIcon: IconValue;
|
80
110
|
} & {} & {
|
81
111
|
$children?: {} | import("vue").VNodeChild | {
|
82
112
|
$stable?: boolean;
|
@@ -109,12 +139,17 @@ export declare const VDataTableGroupHeaderRow: {
|
|
109
139
|
"v-slot:data-table-select"?: false | ((arg: {
|
110
140
|
props: Record<string, unknown>;
|
111
141
|
}) => import("vue").VNodeChild) | undefined;
|
112
|
-
}, () => JSX.Element, {}, {}, {}, {
|
142
|
+
}, () => JSX.Element, {}, {}, {}, {
|
143
|
+
groupCollapseIcon: IconValue;
|
144
|
+
groupExpandIcon: IconValue;
|
145
|
+
}>;
|
113
146
|
__isFragment?: never;
|
114
147
|
__isTeleport?: never;
|
115
148
|
__isSuspense?: never;
|
116
149
|
} & import("vue").ComponentOptionsBase<{
|
117
150
|
item: Group<any>;
|
151
|
+
groupCollapseIcon: IconValue;
|
152
|
+
groupExpandIcon: IconValue;
|
118
153
|
} & {} & {
|
119
154
|
$children?: {} | import("vue").VNodeChild | {
|
120
155
|
$stable?: boolean;
|
@@ -147,7 +182,10 @@ export declare const VDataTableGroupHeaderRow: {
|
|
147
182
|
"v-slot:data-table-select"?: false | ((arg: {
|
148
183
|
props: Record<string, unknown>;
|
149
184
|
}) => import("vue").VNodeChild) | undefined;
|
150
|
-
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
185
|
+
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
186
|
+
groupCollapseIcon: IconValue;
|
187
|
+
groupExpandIcon: IconValue;
|
188
|
+
}, {}, string, import("vue").SlotsType<Partial<{
|
151
189
|
'data-table-group': (arg: {
|
152
190
|
item: Group;
|
153
191
|
count: number;
|
@@ -161,9 +199,25 @@ export declare const VDataTableGroupHeaderRow: {
|
|
161
199
|
type: PropType<Group>;
|
162
200
|
required: true;
|
163
201
|
};
|
202
|
+
groupCollapseIcon: {
|
203
|
+
type: PropType<IconValue>;
|
204
|
+
default: string;
|
205
|
+
};
|
206
|
+
groupExpandIcon: {
|
207
|
+
type: PropType<IconValue>;
|
208
|
+
default: string;
|
209
|
+
};
|
164
210
|
}, import("vue").ExtractPropTypes<{
|
165
211
|
item: {
|
166
212
|
type: PropType<Group>;
|
167
213
|
required: true;
|
168
214
|
};
|
215
|
+
groupCollapseIcon: {
|
216
|
+
type: PropType<IconValue>;
|
217
|
+
default: string;
|
218
|
+
};
|
219
|
+
groupExpandIcon: {
|
220
|
+
type: PropType<IconValue>;
|
221
|
+
default: string;
|
222
|
+
};
|
169
223
|
}>>;
|
@@ -5,13 +5,22 @@ import { VBtn } from "../VBtn/index.js";
|
|
5
5
|
import { VCheckboxBtn } from "../VCheckbox/index.js"; // Composables
|
6
6
|
import { useGroupBy } from "./composables/group.js";
|
7
7
|
import { useHeaders } from "./composables/headers.js";
|
8
|
-
import { useSelection } from "./composables/select.js";
|
9
|
-
import {
|
8
|
+
import { useSelection } from "./composables/select.js";
|
9
|
+
import { IconValue } from "../../composables/icons.js"; // Utilities
|
10
|
+
import { computed, toRef } from 'vue';
|
10
11
|
import { genericComponent, propsFactory } from "../../util/index.js"; // Types
|
11
12
|
export const makeVDataTableGroupHeaderRowProps = propsFactory({
|
12
13
|
item: {
|
13
14
|
type: Object,
|
14
15
|
required: true
|
16
|
+
},
|
17
|
+
groupCollapseIcon: {
|
18
|
+
type: IconValue,
|
19
|
+
default: '$tableGroupCollapse'
|
20
|
+
},
|
21
|
+
groupExpandIcon: {
|
22
|
+
type: IconValue,
|
23
|
+
default: '$tableGroupExpand'
|
15
24
|
}
|
16
25
|
}, 'VDataTableGroupHeaderRow');
|
17
26
|
export const VDataTableGroupHeaderRow = genericComponent()({
|
@@ -37,6 +46,7 @@ export const VDataTableGroupHeaderRow = genericComponent()({
|
|
37
46
|
const rows = computed(() => {
|
38
47
|
return extractRows([props.item]);
|
39
48
|
});
|
49
|
+
const colspan = toRef(() => columns.value.length - (columns.value.some(c => c.key === 'data-table-select') ? 1 : 0));
|
40
50
|
return () => _createElementVNode("tr", {
|
41
51
|
"class": "v-data-table-group-header-row",
|
42
52
|
"style": {
|
@@ -44,7 +54,7 @@ export const VDataTableGroupHeaderRow = genericComponent()({
|
|
44
54
|
}
|
45
55
|
}, [columns.value.map(column => {
|
46
56
|
if (column.key === 'data-table-group') {
|
47
|
-
const icon = isGroupOpen(props.item) ?
|
57
|
+
const icon = isGroupOpen(props.item) ? props.groupCollapseIcon : props.groupExpandIcon;
|
48
58
|
const onClick = () => toggleGroup(props.item);
|
49
59
|
return slots['data-table-group']?.({
|
50
60
|
item: props.item,
|
@@ -54,7 +64,8 @@ export const VDataTableGroupHeaderRow = genericComponent()({
|
|
54
64
|
onClick
|
55
65
|
}
|
56
66
|
}) ?? _createVNode(VDataTableColumn, {
|
57
|
-
"class": "v-data-table-group-header-row__column"
|
67
|
+
"class": "v-data-table-group-header-row__column",
|
68
|
+
"colspan": colspan.value
|
58
69
|
}, {
|
59
70
|
default: () => [_createVNode(VBtn, {
|
60
71
|
"size": "small",
|
@@ -63,8 +74,7 @@ export const VDataTableGroupHeaderRow = genericComponent()({
|
|
63
74
|
"onClick": onClick
|
64
75
|
}, null), _createElementVNode("span", null, [props.item.value]), _createElementVNode("span", null, [_createTextVNode("("), rows.value.length, _createTextVNode(")")])]
|
65
76
|
});
|
66
|
-
}
|
67
|
-
if (column.key === 'data-table-select') {
|
77
|
+
} else if (column.key === 'data-table-select') {
|
68
78
|
const modelValue = isSelected(rows.value);
|
69
79
|
const indeterminate = isSomeSelected(rows.value) && !modelValue;
|
70
80
|
const selectGroup = v => select(rows.value, v);
|
@@ -74,13 +84,18 @@ export const VDataTableGroupHeaderRow = genericComponent()({
|
|
74
84
|
indeterminate,
|
75
85
|
'onUpdate:modelValue': selectGroup
|
76
86
|
}
|
77
|
-
}) ??
|
78
|
-
"
|
79
|
-
"
|
80
|
-
|
81
|
-
|
87
|
+
}) ?? _createVNode(VDataTableColumn, {
|
88
|
+
"class": "v-data-table__td--select-row",
|
89
|
+
"noPadding": true
|
90
|
+
}, {
|
91
|
+
default: () => [_createVNode(VCheckboxBtn, {
|
92
|
+
"modelValue": modelValue,
|
93
|
+
"indeterminate": indeterminate,
|
94
|
+
"onUpdate:modelValue": selectGroup
|
95
|
+
}, null)]
|
96
|
+
});
|
82
97
|
}
|
83
|
-
return
|
98
|
+
return '';
|
84
99
|
})]);
|
85
100
|
}
|
86
101
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VDataTableGroupHeaderRow.js","names":["VDataTableColumn","VBtn","VCheckboxBtn","useGroupBy","useHeaders","useSelection","computed","genericComponent","propsFactory","makeVDataTableGroupHeaderRowProps","item","type","Object","required","VDataTableGroupHeaderRow","name","props","setup","_ref","slots","isGroupOpen","toggleGroup","extractRows","isSelected","isSomeSelected","select","columns","rows","
|
1
|
+
{"version":3,"file":"VDataTableGroupHeaderRow.js","names":["VDataTableColumn","VBtn","VCheckboxBtn","useGroupBy","useHeaders","useSelection","IconValue","computed","toRef","genericComponent","propsFactory","makeVDataTableGroupHeaderRowProps","item","type","Object","required","groupCollapseIcon","default","groupExpandIcon","VDataTableGroupHeaderRow","name","props","setup","_ref","slots","isGroupOpen","toggleGroup","extractRows","isSelected","isSomeSelected","select","columns","rows","colspan","value","length","some","c","key","_createElementVNode","depth","map","column","icon","onClick","count","_createVNode","_createTextVNode","modelValue","indeterminate","selectGroup","v"],"sources":["../../../src/components/VDataTable/VDataTableGroupHeaderRow.tsx"],"sourcesContent":["// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useGroupBy } from './composables/group'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Group } from './composables/group'\n\nexport type VDataTableGroupHeaderRowSlots = {\n 'data-table-group': { item: Group, count: number, props: Record<string, unknown> }\n 'data-table-select': { props: Record<string, unknown> }\n}\n\nexport const makeVDataTableGroupHeaderRowProps = propsFactory({\n item: {\n type: Object as PropType<Group>,\n required: true,\n },\n groupCollapseIcon: {\n type: IconValue,\n default: '$tableGroupCollapse',\n },\n groupExpandIcon: {\n type: IconValue,\n default: '$tableGroupExpand',\n },\n}, 'VDataTableGroupHeaderRow')\n\nexport const VDataTableGroupHeaderRow = genericComponent<VDataTableGroupHeaderRowSlots>()({\n name: 'VDataTableGroupHeaderRow',\n\n props: makeVDataTableGroupHeaderRowProps(),\n\n setup (props, { slots }) {\n const { isGroupOpen, toggleGroup, extractRows } = useGroupBy()\n const { isSelected, isSomeSelected, select } = useSelection()\n const { columns } = useHeaders()\n\n const rows = computed(() => {\n return extractRows([props.item])\n })\n\n const colspan = toRef(() => columns.value.length - (columns.value.some(c => c.key === 'data-table-select') ? 1 : 0))\n\n return () => (\n <tr\n class=\"v-data-table-group-header-row\"\n style={{\n '--v-data-table-group-header-row-depth': props.item.depth,\n }}\n >\n { columns.value.map(column => {\n if (column.key === 'data-table-group') {\n const icon = isGroupOpen(props.item) ? props.groupCollapseIcon : props.groupExpandIcon\n const onClick = () => toggleGroup(props.item)\n\n return slots['data-table-group']?.({ item: props.item, count: rows.value.length, props: { icon, onClick } }) ?? (\n <VDataTableColumn\n class=\"v-data-table-group-header-row__column\"\n colspan={ colspan.value }\n >\n <VBtn\n size=\"small\"\n variant=\"text\"\n icon={ icon }\n onClick={ onClick }\n />\n <span>{ props.item.value }</span>\n <span>({ rows.value.length })</span>\n </VDataTableColumn>\n )\n } else if (column.key === 'data-table-select') {\n const modelValue = isSelected(rows.value)\n const indeterminate = isSomeSelected(rows.value) && !modelValue\n const selectGroup = (v: boolean) => select(rows.value, v)\n return slots['data-table-select']?.({ props: { modelValue, indeterminate, 'onUpdate:modelValue': selectGroup } }) ?? (\n <VDataTableColumn class=\"v-data-table__td--select-row\" noPadding>\n <VCheckboxBtn\n modelValue={ modelValue }\n indeterminate={ indeterminate }\n onUpdate:modelValue={ selectGroup }\n />\n </VDataTableColumn>\n )\n }\n\n return ''\n })}\n </tr>\n )\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
@@ -113,6 +113,7 @@ export const VDataTableHeaders = genericComponent()({
|
|
113
113
|
y
|
114
114
|
} = _ref2;
|
115
115
|
const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
|
116
|
+
const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title;
|
116
117
|
const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {});
|
117
118
|
return _createVNode(VDataTableColumn, _mergeProps({
|
118
119
|
"tag": "th",
|
@@ -135,6 +136,7 @@ export const VDataTableHeaders = genericComponent()({
|
|
135
136
|
"lastFixed": column.lastFixed,
|
136
137
|
"firstFixedEnd": column.firstFixedEnd,
|
137
138
|
"noPadding": noPadding,
|
139
|
+
"empty": isEmpty,
|
138
140
|
"tabindex": column.sortable ? 0 : undefined,
|
139
141
|
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
140
142
|
"onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
|
@@ -152,6 +154,7 @@ export const VDataTableHeaders = genericComponent()({
|
|
152
154
|
getSortIcon
|
153
155
|
};
|
154
156
|
if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
|
157
|
+
if (isEmpty) return '';
|
155
158
|
if (column.key === 'data-table-select') {
|
156
159
|
return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && _createVNode(VCheckboxBtn, {
|
157
160
|
"modelValue": allSelected.value,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VDataTableHeaders.js","names":["VDataTableColumn","VCheckboxBtn","VChip","VIcon","VSelect","useHeaders","useSelection","useSort","useBackgroundColor","makeDisplayProps","useDisplay","IconValue","LoaderSlot","makeLoaderProps","useLoader","useLocale","computed","mergeProps","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableHeadersProps","color","String","disableSort","Boolean","fixedHeader","multiSort","sortAscIcon","type","default","sortDescIcon","headerProps","Object","sticky","VDataTableHeaders","name","props","setup","_ref","slots","t","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","columns","headers","loaderClasses","getFixedStyles","column","y","fixed","undefined","fixedSide","position","left","fixedOffset","right","fixedEndOffset","top","handleEnterKeyPress","event","key","getSortIcon","item","value","find","order","backgroundColorClasses","backgroundColorStyles","displayClasses","mobile","slotProps","headerCellClasses","VDataTableHeaderCell","_ref2","x","noPadding","_createVNode","_mergeProps","align","sortable","width","minWidth","maxWidth","colspan","rowspan","nowrap","lastFixed","firstFixedEnd","columnSlotName","columnSlotProps","_createElementVNode","title","_normalizeClass","_normalizeStyle","findIndex","VDataTableMobileHeaderCell","displayItems","filter","appendIcon","showSelectColumn","length","onClick:clear","onClick:append","chip","raw","e","preventDefault","stopPropagation","_Fragment","map","row","loading","loader"],"sources":["../../../src/components/VDataTable/VDataTableHeaders.tsx"],"sourcesContent":["// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VIcon } from '@/components/VIcon'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, mergeProps } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType, UnwrapRef } from 'vue'\nimport type { provideSelection } from './composables/select'\nimport type { provideSort } from './composables/sort'\nimport type { InternalDataTableHeader } from './types'\nimport type { ItemProps } from '@/composables/list-items'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n isSorted: ReturnType<typeof provideSort>['isSorted']\n}\n\nexport type VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n isSorted: ReturnType<typeof provideSort>['isSorted']\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: HeadersSlotProps\n loader: LoaderSlotProps\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & { [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n disableSort: Boolean,\n fixedHeader: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n headerProps: {\n type: Object as PropType<Record<string, any>>,\n },\n\n /** @deprecated */\n sticky: Boolean,\n\n ...makeDisplayProps(),\n ...makeLoaderProps(),\n}, 'VDataTableHeaders')\n\nexport const VDataTableHeaders = genericComponent<VDataTableHeadersSlots>()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll, showSelectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n function getFixedStyles (column: InternalDataTableHeader, y: number): CSSProperties | undefined {\n if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined\n\n const fixedSide = typeof column.fixed === 'string' ? column.fixed\n : column.fixed ? 'start'\n : 'none'\n\n return {\n position: 'sticky',\n left: fixedSide === 'start' ? convertToUnit(column.fixedOffset) : undefined,\n right: fixedSide === 'end' ? convertToUnit(column.fixedEndOffset) : undefined,\n top: (props.sticky || props.fixedHeader) ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n function handleEnterKeyPress (event: KeyboardEvent, column: InternalDataTableHeader) {\n if (event.key === 'Enter' && !props.disableSort) {\n toggleSort(column)\n }\n }\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n\n const { displayClasses, mobile } = useDisplay(props)\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n } satisfies HeadersSlotProps))\n\n const headerCellClasses = computed(() => ([\n 'v-data-table__th',\n {\n 'v-data-table__th--sticky': (props.sticky || props.fixedHeader),\n },\n displayClasses.value,\n loaderClasses.value,\n ]))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {})\n\n return (\n <VDataTableColumn\n tag=\"th\"\n align={ column.align }\n class={[\n {\n 'v-data-table__th--sortable': column.sortable && !props.disableSort,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed,\n },\n ...headerCellClasses.value,\n ]}\n style={{\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n colspan={ column.colspan }\n rowspan={ column.rowspan }\n fixed={ column.fixed }\n nowrap={ column.nowrap }\n lastFixed={ column.lastFixed }\n firstFixedEnd={ column.firstFixedEnd }\n noPadding={ noPadding }\n tabindex={ column.sortable ? 0 : undefined }\n onClick={ column.sortable ? () => toggleSort(column) : undefined }\n onKeydown={ column.sortable ? (event: KeyboardEvent) => handleEnterKeyPress(event, column) : undefined }\n { ...headerProps }\n >\n {{\n default: () => {\n const columnSlotName = `header.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && (\n <VCheckboxBtn\n modelValue={ allSelected.value }\n indeterminate={ someSelected.value && !allSelected.value }\n onUpdate:modelValue={ selectAll }\n />\n ))\n }\n\n return (\n <div class=\"v-data-table-header__content\">\n <span>{ column.title }</span>\n { column.sortable && !props.disableSort && (\n <VIcon\n key=\"icon\"\n class=\"v-data-table-header__sort-icon\"\n icon={ getSortIcon(column) }\n />\n )}\n { props.multiSort && isSorted(column) && (\n <div\n key=\"badge\"\n class={[\n 'v-data-table-header__sort-badge',\n ...backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n </div>\n )}\n </div>\n )\n },\n }}\n </VDataTableColumn>\n )\n }\n\n const VDataTableMobileHeaderCell = () => {\n const displayItems = computed<ItemProps['items']>(() => {\n return columns.value.filter(column => column?.sortable && !props.disableSort)\n })\n\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select')\n\n if (showSelectColumn == null) return\n\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff'\n })\n\n return (\n <VDataTableColumn\n tag=\"th\"\n class={[\n ...headerCellClasses.value,\n ]}\n colspan={ headers.value.length + 1 }\n { ...props.headerProps }\n >\n <div class=\"v-data-table-header__content\">\n <VSelect\n chips\n class=\"v-data-table__td-sort-select\"\n clearable\n density=\"default\"\n items={ displayItems.value }\n label={ t('$vuetify.dataTable.sortBy') }\n multiple={ props.multiSort }\n variant=\"underlined\"\n onClick:clear={ () => sortBy.value = [] }\n appendIcon={ appendIcon.value }\n onClick:append={ () => selectAll(!allSelected.value) }\n >\n {{\n chip: props => (\n <VChip\n onClick={ props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { props.item.title }\n <VIcon\n class={[\n 'v-data-table__td-sort-icon',\n isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active',\n ]}\n icon={ getSortIcon(props.item.raw) }\n size=\"small\"\n />\n </VChip>\n ),\n }}\n </VSelect>\n </div>\n </VDataTableColumn>\n )\n }\n\n useRender(() => {\n return mobile.value ? (\n <tr>\n <VDataTableMobileHeaderCell />\n </tr>\n ) : (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n <tr>\n { row.map((column, x) => (\n <VDataTableHeaderCell column={ column } x={ x } y={ y } />\n ))}\n </tr>\n ))}\n\n { props.loading && (\n <tr class=\"v-data-table-progress\">\n <th colspan={ columns.value.length }>\n <LoaderSlot\n name=\"v-data-table-progress\"\n absolute\n active\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n v-slots={{ default: slots.loader }}\n />\n </th>\n </tr>\n )}\n </>\n )\n })\n },\n})\n\nexport type VDataTableHeaders = InstanceType<typeof VDataTableHeaders>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VDataTableHeaders.js","names":["VDataTableColumn","VCheckboxBtn","VChip","VIcon","VSelect","useHeaders","useSelection","useSort","useBackgroundColor","makeDisplayProps","useDisplay","IconValue","LoaderSlot","makeLoaderProps","useLoader","useLocale","computed","mergeProps","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableHeadersProps","color","String","disableSort","Boolean","fixedHeader","multiSort","sortAscIcon","type","default","sortDescIcon","headerProps","Object","sticky","VDataTableHeaders","name","props","setup","_ref","slots","t","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","columns","headers","loaderClasses","getFixedStyles","column","y","fixed","undefined","fixedSide","position","left","fixedOffset","right","fixedEndOffset","top","handleEnterKeyPress","event","key","getSortIcon","item","value","find","order","backgroundColorClasses","backgroundColorStyles","displayClasses","mobile","slotProps","headerCellClasses","VDataTableHeaderCell","_ref2","x","noPadding","isEmpty","width","title","_createVNode","_mergeProps","align","sortable","minWidth","maxWidth","colspan","rowspan","nowrap","lastFixed","firstFixedEnd","columnSlotName","columnSlotProps","_createElementVNode","_normalizeClass","_normalizeStyle","findIndex","VDataTableMobileHeaderCell","displayItems","filter","appendIcon","showSelectColumn","length","onClick:clear","onClick:append","chip","raw","e","preventDefault","stopPropagation","_Fragment","map","row","loading","loader"],"sources":["../../../src/components/VDataTable/VDataTableHeaders.tsx"],"sourcesContent":["// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VIcon } from '@/components/VIcon'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, mergeProps } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType, UnwrapRef } from 'vue'\nimport type { provideSelection } from './composables/select'\nimport type { provideSort } from './composables/sort'\nimport type { InternalDataTableHeader } from './types'\nimport type { ItemProps } from '@/composables/list-items'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n isSorted: ReturnType<typeof provideSort>['isSorted']\n}\n\nexport type VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n isSorted: ReturnType<typeof provideSort>['isSorted']\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: HeadersSlotProps\n loader: LoaderSlotProps\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & { [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n disableSort: Boolean,\n fixedHeader: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n headerProps: {\n type: Object as PropType<Record<string, any>>,\n },\n\n /** @deprecated */\n sticky: Boolean,\n\n ...makeDisplayProps(),\n ...makeLoaderProps(),\n}, 'VDataTableHeaders')\n\nexport const VDataTableHeaders = genericComponent<VDataTableHeadersSlots>()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll, showSelectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n function getFixedStyles (column: InternalDataTableHeader, y: number): CSSProperties | undefined {\n if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined\n\n const fixedSide = typeof column.fixed === 'string' ? column.fixed\n : column.fixed ? 'start'\n : 'none'\n\n return {\n position: 'sticky',\n left: fixedSide === 'start' ? convertToUnit(column.fixedOffset) : undefined,\n right: fixedSide === 'end' ? convertToUnit(column.fixedEndOffset) : undefined,\n top: (props.sticky || props.fixedHeader) ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n function handleEnterKeyPress (event: KeyboardEvent, column: InternalDataTableHeader) {\n if (event.key === 'Enter' && !props.disableSort) {\n toggleSort(column)\n }\n }\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n\n const { displayClasses, mobile } = useDisplay(props)\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n } satisfies HeadersSlotProps))\n\n const headerCellClasses = computed(() => ([\n 'v-data-table__th',\n {\n 'v-data-table__th--sticky': (props.sticky || props.fixedHeader),\n },\n displayClasses.value,\n loaderClasses.value,\n ]))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {})\n\n return (\n <VDataTableColumn\n tag=\"th\"\n align={ column.align }\n class={[\n {\n 'v-data-table__th--sortable': column.sortable && !props.disableSort,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed,\n },\n ...headerCellClasses.value,\n ]}\n style={{\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n colspan={ column.colspan }\n rowspan={ column.rowspan }\n fixed={ column.fixed }\n nowrap={ column.nowrap }\n lastFixed={ column.lastFixed }\n firstFixedEnd={ column.firstFixedEnd }\n noPadding={ noPadding }\n empty={ isEmpty }\n tabindex={ column.sortable ? 0 : undefined }\n onClick={ column.sortable ? () => toggleSort(column) : undefined }\n onKeydown={ column.sortable ? (event: KeyboardEvent) => handleEnterKeyPress(event, column) : undefined }\n { ...headerProps }\n >\n {{\n default: () => {\n const columnSlotName = `header.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (isEmpty) return ''\n\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && (\n <VCheckboxBtn\n modelValue={ allSelected.value }\n indeterminate={ someSelected.value && !allSelected.value }\n onUpdate:modelValue={ selectAll }\n />\n ))\n }\n\n return (\n <div class=\"v-data-table-header__content\">\n <span>{ column.title }</span>\n { column.sortable && !props.disableSort && (\n <VIcon\n key=\"icon\"\n class=\"v-data-table-header__sort-icon\"\n icon={ getSortIcon(column) }\n />\n )}\n { props.multiSort && isSorted(column) && (\n <div\n key=\"badge\"\n class={[\n 'v-data-table-header__sort-badge',\n ...backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n </div>\n )}\n </div>\n )\n },\n }}\n </VDataTableColumn>\n )\n }\n\n const VDataTableMobileHeaderCell = () => {\n const displayItems = computed<ItemProps['items']>(() => {\n return columns.value.filter(column => column?.sortable && !props.disableSort)\n })\n\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select')\n\n if (showSelectColumn == null) return\n\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff'\n })\n\n return (\n <VDataTableColumn\n tag=\"th\"\n class={[\n ...headerCellClasses.value,\n ]}\n colspan={ headers.value.length + 1 }\n { ...props.headerProps }\n >\n <div class=\"v-data-table-header__content\">\n <VSelect\n chips\n class=\"v-data-table__td-sort-select\"\n clearable\n density=\"default\"\n items={ displayItems.value }\n label={ t('$vuetify.dataTable.sortBy') }\n multiple={ props.multiSort }\n variant=\"underlined\"\n onClick:clear={ () => sortBy.value = [] }\n appendIcon={ appendIcon.value }\n onClick:append={ () => selectAll(!allSelected.value) }\n >\n {{\n chip: props => (\n <VChip\n onClick={ props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { props.item.title }\n <VIcon\n class={[\n 'v-data-table__td-sort-icon',\n isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active',\n ]}\n icon={ getSortIcon(props.item.raw) }\n size=\"small\"\n />\n </VChip>\n ),\n }}\n </VSelect>\n </div>\n </VDataTableColumn>\n )\n }\n\n useRender(() => {\n return mobile.value ? (\n <tr>\n <VDataTableMobileHeaderCell />\n </tr>\n ) : (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n <tr>\n { row.map((column, x) => (\n <VDataTableHeaderCell column={ column } x={ x } y={ y } />\n ))}\n </tr>\n ))}\n\n { props.loading && (\n <tr class=\"v-data-table-progress\">\n <th colspan={ columns.value.length }>\n <LoaderSlot\n name=\"v-data-table-progress\"\n absolute\n active\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n v-slots={{ default: slots.loader }}\n />\n </th>\n </tr>\n )}\n </>\n )\n })\n },\n})\n\nexport type VDataTableHeaders = InstanceType<typeof VDataTableHeaders>\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { IconValue } from "../../composables/icons.js";
|
1
2
|
import type { PropType } from 'vue';
|
2
3
|
import type { CellProps, DataTableItem, ItemKeySlot } from './types.js';
|
3
4
|
import type { VDataTableHeaderCellColumnSlotProps } from './VDataTableHeaders.js';
|
@@ -20,6 +21,8 @@ export declare const makeVDataTableRowProps: <Defaults extends {
|
|
20
21
|
index?: unknown;
|
21
22
|
item?: unknown;
|
22
23
|
cellProps?: unknown;
|
24
|
+
collapseIcon?: unknown;
|
25
|
+
expandIcon?: unknown;
|
23
26
|
onClick?: unknown;
|
24
27
|
onContextmenu?: unknown;
|
25
28
|
onDblclick?: unknown;
|
@@ -50,6 +53,26 @@ export declare const makeVDataTableRowProps: <Defaults extends {
|
|
50
53
|
type: PropType<unknown extends Defaults["cellProps"] ? CellProps<any> : CellProps<any> | Defaults["cellProps"]>;
|
51
54
|
default: unknown extends Defaults["cellProps"] ? CellProps<any> : NonNullable<CellProps<any>> | Defaults["cellProps"];
|
52
55
|
};
|
56
|
+
collapseIcon: unknown extends Defaults["collapseIcon"] ? {
|
57
|
+
type: PropType<IconValue>;
|
58
|
+
default: string;
|
59
|
+
} : Omit<{
|
60
|
+
type: PropType<IconValue>;
|
61
|
+
default: string;
|
62
|
+
}, "type" | "default"> & {
|
63
|
+
type: PropType<unknown extends Defaults["collapseIcon"] ? IconValue : IconValue | Defaults["collapseIcon"]>;
|
64
|
+
default: unknown extends Defaults["collapseIcon"] ? IconValue : NonNullable<IconValue> | Defaults["collapseIcon"];
|
65
|
+
};
|
66
|
+
expandIcon: unknown extends Defaults["expandIcon"] ? {
|
67
|
+
type: PropType<IconValue>;
|
68
|
+
default: string;
|
69
|
+
} : Omit<{
|
70
|
+
type: PropType<IconValue>;
|
71
|
+
default: string;
|
72
|
+
}, "type" | "default"> & {
|
73
|
+
type: PropType<unknown extends Defaults["expandIcon"] ? IconValue : IconValue | Defaults["expandIcon"]>;
|
74
|
+
default: unknown extends Defaults["expandIcon"] ? IconValue : NonNullable<IconValue> | Defaults["expandIcon"];
|
75
|
+
};
|
53
76
|
onClick: unknown extends Defaults["onClick"] ? PropType<(args_0: MouseEvent) => void> : {
|
54
77
|
type: PropType<unknown extends Defaults["onClick"] ? (args_0: MouseEvent) => void : ((args_0: MouseEvent) => void) | Defaults["onClick"]>;
|
55
78
|
default: unknown extends Defaults["onClick"] ? (args_0: MouseEvent) => void : ((args_0: MouseEvent) => void) | Defaults["onClick"];
|
@@ -66,6 +89,8 @@ export declare const makeVDataTableRowProps: <Defaults extends {
|
|
66
89
|
export declare const VDataTableRow: {
|
67
90
|
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
68
91
|
mobile: boolean | null;
|
92
|
+
collapseIcon: IconValue;
|
93
|
+
expandIcon: IconValue;
|
69
94
|
} & {
|
70
95
|
index?: number | undefined;
|
71
96
|
onClick?: ((args_0: MouseEvent) => void) | undefined;
|
@@ -74,6 +99,8 @@ export declare const VDataTableRow: {
|
|
74
99
|
mobileBreakpoint?: number | import("../../composables/display.js").DisplayBreakpoint | undefined;
|
75
100
|
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Omit<Record<string, any>, "item" | "$children" | "v-slots" | "cellProps" | `v-slot:header.${string}` | `v-slot:item.${string}`>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
76
101
|
mobile: boolean | null;
|
102
|
+
collapseIcon: IconValue;
|
103
|
+
expandIcon: IconValue;
|
77
104
|
}, true, {}, import("vue").SlotsType<Partial<{
|
78
105
|
[x: `item.${string}`]: (arg: ItemKeySlot<unknown>) => import("vue").VNode[];
|
79
106
|
[x: `header.${string}`]: (arg: VDataTableHeaderCellColumnSlotProps) => import("vue").VNode[];
|
@@ -90,6 +117,8 @@ export declare const VDataTableRow: {
|
|
90
117
|
Defaults: {};
|
91
118
|
}, {
|
92
119
|
mobile: boolean | null;
|
120
|
+
collapseIcon: IconValue;
|
121
|
+
expandIcon: IconValue;
|
93
122
|
} & {
|
94
123
|
index?: number | undefined;
|
95
124
|
onClick?: ((args_0: MouseEvent) => void) | undefined;
|
@@ -98,12 +127,16 @@ export declare const VDataTableRow: {
|
|
98
127
|
mobileBreakpoint?: number | import("../../composables/display.js").DisplayBreakpoint | undefined;
|
99
128
|
}, {}, {}, {}, {}, {
|
100
129
|
mobile: boolean | null;
|
130
|
+
collapseIcon: IconValue;
|
131
|
+
expandIcon: IconValue;
|
101
132
|
}>;
|
102
133
|
__isFragment?: never;
|
103
134
|
__isTeleport?: never;
|
104
135
|
__isSuspense?: never;
|
105
136
|
} & import("vue").ComponentOptionsBase<{
|
106
137
|
mobile: boolean | null;
|
138
|
+
collapseIcon: IconValue;
|
139
|
+
expandIcon: IconValue;
|
107
140
|
} & {
|
108
141
|
index?: number | undefined;
|
109
142
|
onClick?: ((args_0: MouseEvent) => void) | undefined;
|
@@ -112,6 +145,8 @@ export declare const VDataTableRow: {
|
|
112
145
|
mobileBreakpoint?: number | import("../../composables/display.js").DisplayBreakpoint | undefined;
|
113
146
|
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Omit<Record<string, any>, "item" | "$children" | "v-slots" | "cellProps" | `v-slot:header.${string}` | `v-slot:item.${string}`>, string, {
|
114
147
|
mobile: boolean | null;
|
148
|
+
collapseIcon: IconValue;
|
149
|
+
expandIcon: IconValue;
|
115
150
|
}, {}, string, import("vue").SlotsType<Partial<{
|
116
151
|
[x: `item.${string}`]: (arg: ItemKeySlot<unknown>) => import("vue").VNode[];
|
117
152
|
[x: `header.${string}`]: (arg: VDataTableHeaderCellColumnSlotProps) => import("vue").VNode[];
|
@@ -131,6 +166,14 @@ export declare const VDataTableRow: {
|
|
131
166
|
index: NumberConstructor;
|
132
167
|
item: PropType<DataTableItem>;
|
133
168
|
cellProps: PropType<CellProps<any>>;
|
169
|
+
collapseIcon: {
|
170
|
+
type: PropType<IconValue>;
|
171
|
+
default: string;
|
172
|
+
};
|
173
|
+
expandIcon: {
|
174
|
+
type: PropType<IconValue>;
|
175
|
+
default: string;
|
176
|
+
};
|
134
177
|
onClick: PropType<(args_0: MouseEvent) => void>;
|
135
178
|
onContextmenu: PropType<(args_0: MouseEvent) => void>;
|
136
179
|
onDblclick: PropType<(args_0: MouseEvent) => void>;
|
@@ -143,6 +186,14 @@ export declare const VDataTableRow: {
|
|
143
186
|
index: NumberConstructor;
|
144
187
|
item: PropType<DataTableItem>;
|
145
188
|
cellProps: PropType<CellProps<any>>;
|
189
|
+
collapseIcon: {
|
190
|
+
type: PropType<IconValue>;
|
191
|
+
default: string;
|
192
|
+
};
|
193
|
+
expandIcon: {
|
194
|
+
type: PropType<IconValue>;
|
195
|
+
default: string;
|
196
|
+
};
|
146
197
|
onClick: PropType<(args_0: MouseEvent) => void>;
|
147
198
|
onContextmenu: PropType<(args_0: MouseEvent) => void>;
|
148
199
|
onDblclick: PropType<(args_0: MouseEvent) => void>;
|
@@ -7,13 +7,22 @@ import { useExpanded } from "./composables/expand.js";
|
|
7
7
|
import { useHeaders } from "./composables/headers.js";
|
8
8
|
import { useSelection } from "./composables/select.js";
|
9
9
|
import { useSort } from "./composables/sort.js";
|
10
|
-
import { makeDisplayProps, useDisplay } from "../../composables/display.js";
|
10
|
+
import { makeDisplayProps, useDisplay } from "../../composables/display.js";
|
11
|
+
import { IconValue } from "../../composables/icons.js"; // Utilities
|
11
12
|
import { toDisplayString, withModifiers } from 'vue';
|
12
13
|
import { EventProp, genericComponent, getObjectValueByPath, propsFactory, useRender } from "../../util/index.js"; // Types
|
13
14
|
export const makeVDataTableRowProps = propsFactory({
|
14
15
|
index: Number,
|
15
16
|
item: Object,
|
16
17
|
cellProps: [Object, Function],
|
18
|
+
collapseIcon: {
|
19
|
+
type: IconValue,
|
20
|
+
default: '$collapse'
|
21
|
+
},
|
22
|
+
expandIcon: {
|
23
|
+
type: IconValue,
|
24
|
+
default: '$expand'
|
25
|
+
},
|
17
26
|
onClick: EventProp(),
|
18
27
|
onContextmenu: EventProp(),
|
19
28
|
onDblclick: EventProp(),
|
@@ -94,8 +103,11 @@ export const VDataTableRow = genericComponent()({
|
|
94
103
|
internalItem: slotProps.internalItem,
|
95
104
|
value: slotProps.value
|
96
105
|
}) : column.cellProps;
|
106
|
+
const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
|
107
|
+
const isEmpty = column.key === 'data-table-group' && column.width === 0 && !column.title;
|
97
108
|
return _createVNode(VDataTableColumn, _mergeProps({
|
98
109
|
"align": column.align,
|
110
|
+
"indent": column.intent,
|
99
111
|
"class": {
|
100
112
|
'v-data-table__td--expanded-row': column.key === 'data-table-expand',
|
101
113
|
'v-data-table__td--select-row': column.key === 'data-table-select'
|
@@ -106,7 +118,8 @@ export const VDataTableRow = genericComponent()({
|
|
106
118
|
"lastFixed": column.lastFixed,
|
107
119
|
"firstFixedEnd": column.firstFixedEnd,
|
108
120
|
"maxWidth": !mobile.value ? column.maxWidth : undefined,
|
109
|
-
"noPadding":
|
121
|
+
"noPadding": noPadding,
|
122
|
+
"empty": isEmpty,
|
110
123
|
"nowrap": column.nowrap,
|
111
124
|
"width": !mobile.value ? column.width : undefined
|
112
125
|
}, cellProps, columnCellProps), {
|
@@ -129,13 +142,13 @@ export const VDataTableRow = genericComponent()({
|
|
129
142
|
return slots['item.data-table-expand']?.({
|
130
143
|
...slotProps,
|
131
144
|
props: {
|
132
|
-
icon: isExpanded(item) ?
|
145
|
+
icon: isExpanded(item) ? props.collapseIcon : props.expandIcon,
|
133
146
|
size: 'small',
|
134
147
|
variant: 'text',
|
135
148
|
onClick: withModifiers(() => toggleExpand(item), ['stop'])
|
136
149
|
}
|
137
150
|
}) ?? _createVNode(VBtn, {
|
138
|
-
"icon": isExpanded(item) ?
|
151
|
+
"icon": isExpanded(item) ? props.collapseIcon : props.expandIcon,
|
139
152
|
"size": "small",
|
140
153
|
"variant": "text",
|
141
154
|
"onClick": withModifiers(() => toggleExpand(item), ['stop'])
|