@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.
Files changed (70) hide show
  1. package/CHANGELOG.md +10 -3
  2. package/dist/json/attributes.json +2098 -2022
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +168 -168
  5. package/dist/json/tags.json +19 -0
  6. package/dist/json/web-types.json +4252 -4050
  7. package/dist/vuetify-labs.cjs +77 -24
  8. package/dist/vuetify-labs.css +5349 -5343
  9. package/dist/vuetify-labs.d.ts +329 -61
  10. package/dist/vuetify-labs.esm.js +77 -24
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +77 -24
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +77 -24
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +2939 -2933
  17. package/dist/vuetify.d.ts +329 -61
  18. package/dist/vuetify.esm.js +77 -24
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +77 -24
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +252 -249
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataIterator/VDataIterator.d.ts +1 -0
  26. package/lib/components/VDataIterator/VDataIterator.js +1 -0
  27. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  28. package/lib/components/VDataTable/VDataTable.css +7 -1
  29. package/lib/components/VDataTable/VDataTable.d.ts +164 -0
  30. package/lib/components/VDataTable/VDataTable.sass +4 -1
  31. package/lib/components/VDataTable/VDataTableColumn.d.ts +4 -1
  32. package/lib/components/VDataTable/VDataTableColumn.js +6 -2
  33. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  34. package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +57 -3
  35. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +27 -12
  36. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  37. package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
  38. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTableRow.d.ts +51 -0
  40. package/lib/components/VDataTable/VDataTableRow.js +17 -4
  41. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTableRows.d.ts +100 -0
  43. package/lib/components/VDataTable/VDataTableRows.js +9 -4
  44. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  45. package/lib/components/VDataTable/VDataTableServer.d.ts +110 -0
  46. package/lib/components/VDataTable/VDataTableVirtual.d.ts +110 -0
  47. package/lib/components/VDataTable/composables/headers.d.ts +14 -0
  48. package/lib/components/VDataTable/types.d.ts +1 -0
  49. package/lib/components/VDataTable/types.js.map +1 -1
  50. package/lib/components/VFileInput/VFileInput.d.ts +25 -0
  51. package/lib/components/VFileInput/VFileInput.js +11 -1
  52. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  53. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +6 -4
  54. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  55. package/lib/components/VWindow/VWindow.js +2 -2
  56. package/lib/components/VWindow/VWindow.js.map +1 -1
  57. package/lib/entry-bundler.js +1 -1
  58. package/lib/framework.d.ts +62 -61
  59. package/lib/framework.js +1 -1
  60. package/lib/iconsets/fa.js +2 -0
  61. package/lib/iconsets/fa.js.map +1 -1
  62. package/lib/iconsets/fa4.js +2 -0
  63. package/lib/iconsets/fa4.js.map +1 -1
  64. package/lib/iconsets/md.js +2 -0
  65. package/lib/iconsets/md.js.map +1 -1
  66. package/lib/iconsets/mdi-svg.js +2 -0
  67. package/lib/iconsets/mdi-svg.js.map +1 -1
  68. package/lib/iconsets/mdi.js +2 -0
  69. package/lib/iconsets/mdi.js.map +1 -1
  70. 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, {}, true, {}, import("vue").SlotsType<Partial<{
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, {}, {}, string, import("vue").SlotsType<Partial<{
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"; // Utilities
9
- import { computed } from 'vue';
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) ? '$expand' : '$next';
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
- }) ?? _createElementVNode("td", null, [_createVNode(VCheckboxBtn, {
78
- "modelValue": modelValue,
79
- "indeterminate": indeterminate,
80
- "onUpdate:modelValue": selectGroup
81
- }, null)]);
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 _createElementVNode("td", null, null);
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","_createElementVNode","depth","value","map","column","key","icon","onClick","count","length","_createVNode","default","_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'\n\n// Utilities\nimport { computed } 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}, '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 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) ? '$expand' : '$next'\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 class=\"v-data-table-group-header-row__column\">\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 }\n\n 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 <td>\n <VCheckboxBtn\n modelValue={ modelValue }\n indeterminate={ indeterminate }\n onUpdate:modelValue={ selectGroup }\n />\n </td>\n )\n }\n\n return <td />\n })}\n </tr>\n )\n },\n})\n"],"mappings":";AAAA;AAAA,SACSA,gBAAgB;AAAA,SAChBC,IAAI;AAAA,SACJC,YAAY,iCAErB;AAAA,SACSC,UAAU;AAAA,SACVC,UAAU;AAAA,SACVC,YAAY,mCAErB;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,+BAEvC;AASA,OAAO,MAAMC,iCAAiC,GAAGD,YAAY,CAAC;EAC5DE,IAAI,EAAE;IACJC,IAAI,EAAEC,MAAyB;IAC/BC,QAAQ,EAAE;EACZ;AACF,CAAC,EAAE,0BAA0B,CAAC;AAE9B,OAAO,MAAMC,wBAAwB,GAAGP,gBAAgB,CAAgC,CAAC,CAAC;EACxFQ,IAAI,EAAE,0BAA0B;EAEhCC,KAAK,EAAEP,iCAAiC,CAAC,CAAC;EAE1CQ,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE,WAAW;MAAEC,WAAW;MAAEC;IAAY,CAAC,GAAGnB,UAAU,CAAC,CAAC;IAC9D,MAAM;MAAEoB,UAAU;MAAEC,cAAc;MAAEC;IAAO,CAAC,GAAGpB,YAAY,CAAC,CAAC;IAC7D,MAAM;MAAEqB;IAAQ,CAAC,GAAGtB,UAAU,CAAC,CAAC;IAEhC,MAAMuB,IAAI,GAAGrB,QAAQ,CAAC,MAAM;MAC1B,OAAOgB,WAAW,CAAC,CAACN,KAAK,CAACN,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,OAAO,MAAAkB,mBAAA;MAAA;MAAA,SAGI;QACL,uCAAuC,EAAEZ,KAAK,CAACN,IAAI,CAACmB;MACtD;IAAC,IAECH,OAAO,CAACI,KAAK,CAACC,GAAG,CAACC,MAAM,IAAI;MAC5B,IAAIA,MAAM,CAACC,GAAG,KAAK,kBAAkB,EAAE;QACrC,MAAMC,IAAI,GAAGd,WAAW,CAACJ,KAAK,CAACN,IAAI,CAAC,GAAG,SAAS,GAAG,OAAO;QAC1D,MAAMyB,OAAO,GAAGA,CAAA,KAAMd,WAAW,CAACL,KAAK,CAACN,IAAI,CAAC;QAE7C,OAAOS,KAAK,CAAC,kBAAkB,CAAC,GAAG;UAAET,IAAI,EAAEM,KAAK,CAACN,IAAI;UAAE0B,KAAK,EAAET,IAAI,CAACG,KAAK,CAACO,MAAM;UAAErB,KAAK,EAAE;YAAEkB,IAAI;YAAEC;UAAQ;QAAE,CAAC,CAAC,IAAAG,YAAA,CAAAtC,gBAAA;UAAA;QAAA;UAAAuC,OAAA,EAAAA,CAAA,MAAAD,YAAA,CAAArC,IAAA;YAAA;YAAA;YAAA,QAK/FiC,IAAI;YAAA,WACDC;UAAO,UAAAP,mBAAA,gBAEXZ,KAAK,CAACN,IAAI,CAACoB,KAAK,IAAAF,mBAAA,gBAAAY,gBAAA,OACfb,IAAI,CAACG,KAAK,CAACO,MAAM,EAAAG,gBAAA;QAAA,EAE7B;MACH;MAEA,IAAIR,MAAM,CAACC,GAAG,KAAK,mBAAmB,EAAE;QACtC,MAAMQ,UAAU,GAAGlB,UAAU,CAACI,IAAI,CAACG,KAAK,CAAC;QACzC,MAAMY,aAAa,GAAGlB,cAAc,CAACG,IAAI,CAACG,KAAK,CAAC,IAAI,CAACW,UAAU;QAC/D,MAAME,WAAW,GAAIC,CAAU,IAAKnB,MAAM,CAACE,IAAI,CAACG,KAAK,EAAEc,CAAC,CAAC;QACzD,OAAOzB,KAAK,CAAC,mBAAmB,CAAC,GAAG;UAAEH,KAAK,EAAE;YAAEyB,UAAU;YAAEC,aAAa;YAAE,qBAAqB,EAAEC;UAAY;QAAE,CAAC,CAAC,IAAAf,mBAAA,cAAAU,YAAA,CAAApC,YAAA;UAAA,cAG9FuC,UAAU;UAAA,iBACPC,aAAa;UAAA,uBACPC;QAAW,UAGtC;MACH;MAEA,OAAAf,mBAAA;IACF,CAAC,CAAC,EAEL;EACH;AACF,CAAC,CAAC","ignoreList":[]}
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"; // Utilities
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": column.key === 'data-table-select' || column.key === 'data-table-expand',
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) ? '$collapse' : '$expand',
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) ? '$collapse' : '$expand',
151
+ "icon": isExpanded(item) ? props.collapseIcon : props.expandIcon,
139
152
  "size": "small",
140
153
  "variant": "text",
141
154
  "onClick": withModifiers(() => toggleExpand(item), ['stop'])