vuetify 3.5.5 → 3.5.7

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 (86) hide show
  1. package/dist/_component-variables-labs.sass +2 -0
  2. package/dist/json/attributes.json +352 -40
  3. package/dist/json/importMap-labs.json +16 -8
  4. package/dist/json/importMap.json +122 -118
  5. package/dist/json/tags.json +93 -0
  6. package/dist/json/web-types.json +1084 -52
  7. package/dist/vuetify-labs.css +2121 -1996
  8. package/dist/vuetify-labs.d.ts +1336 -128
  9. package/dist/vuetify-labs.esm.js +332 -81
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +332 -81
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +838 -839
  14. package/dist/vuetify.d.ts +320 -145
  15. package/dist/vuetify.esm.js +87 -75
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +87 -75
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +60 -58
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VApp/index.d.mts +8 -6
  23. package/lib/components/VAutocomplete/VAutocomplete.css +4 -4
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +33 -29
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  27. package/lib/components/VCheckbox/VCheckbox.mjs +3 -1
  28. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  29. package/lib/components/VCombobox/VCombobox.css +4 -4
  30. package/lib/components/VCombobox/VCombobox.mjs +22 -23
  31. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  32. package/lib/components/VCombobox/VCombobox.sass +1 -1
  33. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  34. package/lib/components/VDataIterator/index.d.mts +50 -94
  35. package/lib/components/VDataTable/index.d.mts +214 -1
  36. package/lib/components/VDataTable/index.mjs +1 -0
  37. package/lib/components/VDataTable/index.mjs.map +1 -1
  38. package/lib/components/VExpansionPanel/VExpansionPanel.css +4 -7
  39. package/lib/components/VExpansionPanel/VExpansionPanel.sass +4 -3
  40. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -0
  41. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  42. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +2 -0
  43. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  44. package/lib/components/VExpansionPanel/index.d.mts +27 -0
  45. package/lib/components/VLayout/index.d.mts +8 -6
  46. package/lib/components/VSelect/VSelect.mjs +20 -18
  47. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  48. package/lib/components/VToolbar/VToolbar.css +3 -1
  49. package/lib/components/VToolbar/VToolbar.sass +2 -1
  50. package/lib/components/index.d.mts +279 -106
  51. package/lib/composables/filter.mjs +1 -1
  52. package/lib/composables/filter.mjs.map +1 -1
  53. package/lib/composables/goto.mjs +2 -2
  54. package/lib/composables/goto.mjs.map +1 -1
  55. package/lib/composables/layout.mjs.map +1 -1
  56. package/lib/entry-bundler.mjs +1 -1
  57. package/lib/framework.mjs +1 -1
  58. package/lib/index.d.mts +42 -39
  59. package/lib/labs/VEmptyState/VEmptyState.css +59 -0
  60. package/lib/labs/VEmptyState/VEmptyState.mjs +145 -0
  61. package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -0
  62. package/lib/labs/VEmptyState/VEmptyState.sass +53 -0
  63. package/lib/labs/VEmptyState/_variables.scss +22 -0
  64. package/lib/labs/VEmptyState/index.d.mts +415 -0
  65. package/lib/labs/VEmptyState/index.mjs +2 -0
  66. package/lib/labs/VEmptyState/index.mjs.map +1 -0
  67. package/lib/labs/VFab/VFab.css +69 -0
  68. package/lib/labs/VFab/VFab.mjs +114 -0
  69. package/lib/labs/VFab/VFab.mjs.map +1 -0
  70. package/lib/labs/VFab/VFab.sass +82 -0
  71. package/lib/labs/VFab/_mixins.scss +22 -0
  72. package/lib/labs/VFab/_variables.scss +33 -0
  73. package/lib/labs/VFab/index.d.mts +656 -0
  74. package/lib/labs/VFab/index.mjs +2 -0
  75. package/lib/labs/VFab/index.mjs.map +1 -0
  76. package/lib/labs/VSparkline/VBarline.mjs +4 -4
  77. package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
  78. package/lib/labs/VSparkline/VTrendline.mjs +6 -2
  79. package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
  80. package/lib/labs/VSparkline/index.d.mts +12 -0
  81. package/lib/labs/VSparkline/util/line.mjs +2 -0
  82. package/lib/labs/VSparkline/util/line.mjs.map +1 -1
  83. package/lib/labs/components.d.mts +1066 -2
  84. package/lib/labs/components.mjs +2 -0
  85. package/lib/labs/components.mjs.map +1 -1
  86. package/package.json +2 -2
@@ -1,6 +1,31 @@
1
1
  import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, PropType, Ref } from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, VNodeChild, VNode, PropType, Ref } from 'vue';
3
3
 
4
+ type SlotsToProps<U extends RawSlots, T = MakeInternalSlots<U>> = {
5
+ $children?: (VNodeChild | (T extends {
6
+ default: infer V;
7
+ } ? V : {}) | {
8
+ [K in keyof T]?: T[K];
9
+ });
10
+ 'v-slots'?: {
11
+ [K in keyof T]?: T[K] | false;
12
+ };
13
+ } & {
14
+ [K in keyof T as `v-slot:${K & string}`]?: T[K] | false;
15
+ };
16
+ type RawSlots = Record<string, unknown>;
17
+ type Slot<T> = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild;
18
+ type VueSlot<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[];
19
+ type MakeInternalSlots<T extends RawSlots> = {
20
+ [K in keyof T]: Slot<T[K]>;
21
+ };
22
+ type MakeSlots<T extends RawSlots> = {
23
+ [K in keyof T]: VueSlot<T[K]>;
24
+ };
25
+ type GenericProps<Props, Slots extends Record<string, unknown>> = {
26
+ $props: Props & SlotsToProps<Slots>;
27
+ $slots: MakeSlots<Slots>;
28
+ };
4
29
  interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
5
30
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
6
31
  }
@@ -182,7 +207,7 @@ interface DataIteratorItem<T = any> extends GroupableItem<T>, SelectableItem {
182
207
  value: unknown;
183
208
  }
184
209
 
185
- type VDataIteratorSlotProps = {
210
+ type VDataIteratorSlotProps<T> = {
186
211
  page: number;
187
212
  itemsPerPage: number;
188
213
  sortBy: readonly SortItem[];
@@ -200,8 +225,14 @@ type VDataIteratorSlotProps = {
200
225
  toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand'];
201
226
  isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen'];
202
227
  toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup'];
203
- items: readonly DataIteratorItem[];
204
- groupedItems: readonly (DataIteratorItem | Group<DataIteratorItem>)[];
228
+ items: readonly DataIteratorItem<T>[];
229
+ groupedItems: readonly (DataIteratorItem<T> | Group<DataIteratorItem<T>>)[];
230
+ };
231
+ type VDataIteratorSlots<T> = {
232
+ default: VDataIteratorSlotProps<T>;
233
+ header: VDataIteratorSlotProps<T>;
234
+ footer: VDataIteratorSlotProps<T>;
235
+ 'no-data': never;
205
236
  };
206
237
  declare const VDataIterator: {
207
238
  new (...args: any[]): vue.CreateComponentPublicInstance<{
@@ -211,7 +242,6 @@ declare const VDataIterator: {
211
242
  expanded: readonly string[];
212
243
  tag: string;
213
244
  sortBy: readonly SortItem[];
214
- items: any[];
215
245
  modelValue: readonly any[];
216
246
  valueComparator: typeof deepEqual;
217
247
  selectStrategy: "all" | "page" | "single";
@@ -234,24 +264,6 @@ declare const VDataIterator: {
234
264
  customKeyFilter?: FilterKeyFunctions | undefined;
235
265
  filterKeys?: FilterKeys | undefined;
236
266
  customKeySort?: Record<string, DataTableCompareFunction> | undefined;
237
- } & {
238
- $children?: vue.VNodeChild | {
239
- default?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
240
- header?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
241
- footer?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
242
- 'no-data'?: (() => vue.VNodeChild) | undefined;
243
- } | ((arg: VDataIteratorSlotProps) => vue.VNodeChild);
244
- 'v-slots'?: {
245
- default?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
246
- header?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
247
- footer?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
248
- 'no-data'?: false | (() => vue.VNodeChild) | undefined;
249
- } | undefined;
250
- } & {
251
- "v-slot:default"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
252
- "v-slot:header"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
253
- "v-slot:footer"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
254
- "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined;
255
267
  } & {
256
268
  "onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
257
269
  "onUpdate:sortBy"?: ((value: any) => any) | undefined;
@@ -261,7 +273,7 @@ declare const VDataIterator: {
261
273
  "onUpdate:itemsPerPage"?: ((value: number) => any) | undefined;
262
274
  "onUpdate:options"?: ((value: any) => any) | undefined;
263
275
  "onUpdate:currentItems"?: ((value: any) => any) | undefined;
264
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
276
+ }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
265
277
  'update:modelValue': (value: any[]) => boolean;
266
278
  'update:groupBy': (value: any) => boolean;
267
279
  'update:page': (value: number) => boolean;
@@ -270,14 +282,13 @@ declare const VDataIterator: {
270
282
  'update:options': (value: any) => boolean;
271
283
  'update:expanded': (value: any) => boolean;
272
284
  'update:currentItems': (value: any) => boolean;
273
- }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
285
+ }, "$children" | "v-slot:default" | "v-slots" | "items" | "v-slot:header" | "v-slot:no-data" | "v-slot:footer">, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
274
286
  page: string | number;
275
287
  loading: boolean;
276
288
  style: vue.StyleValue;
277
289
  expanded: readonly string[];
278
290
  tag: string;
279
291
  sortBy: readonly SortItem[];
280
- items: any[];
281
292
  modelValue: readonly any[];
282
293
  valueComparator: typeof deepEqual;
283
294
  selectStrategy: "all" | "page" | "single";
@@ -300,24 +311,6 @@ declare const VDataIterator: {
300
311
  customKeyFilter?: FilterKeyFunctions | undefined;
301
312
  filterKeys?: FilterKeys | undefined;
302
313
  customKeySort?: Record<string, DataTableCompareFunction> | undefined;
303
- } & {
304
- $children?: vue.VNodeChild | {
305
- default?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
306
- header?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
307
- footer?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
308
- 'no-data'?: (() => vue.VNodeChild) | undefined;
309
- } | ((arg: VDataIteratorSlotProps) => vue.VNodeChild);
310
- 'v-slots'?: {
311
- default?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
312
- header?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
313
- footer?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
314
- 'no-data'?: false | (() => vue.VNodeChild) | undefined;
315
- } | undefined;
316
- } & {
317
- "v-slot:default"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
318
- "v-slot:header"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
319
- "v-slot:footer"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
320
- "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined;
321
314
  } & {
322
315
  "onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
323
316
  "onUpdate:sortBy"?: ((value: any) => any) | undefined;
@@ -334,7 +327,6 @@ declare const VDataIterator: {
334
327
  expanded: readonly string[];
335
328
  tag: string;
336
329
  sortBy: readonly SortItem[];
337
- items: any[];
338
330
  modelValue: readonly any[];
339
331
  valueComparator: typeof deepEqual;
340
332
  selectStrategy: "all" | "page" | "single";
@@ -351,13 +343,13 @@ declare const VDataIterator: {
351
343
  showExpand: boolean;
352
344
  itemsPerPage: NonNullable<string | number>;
353
345
  }, true, {}, vue.SlotsType<Partial<{
354
- default: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
346
+ default: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
355
347
  [key: string]: any;
356
348
  }>[];
357
- header: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
349
+ header: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
358
350
  [key: string]: any;
359
351
  }>[];
360
- footer: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
352
+ footer: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
361
353
  [key: string]: any;
362
354
  }>[];
363
355
  'no-data': () => vue.VNode<vue.RendererNode, vue.RendererElement, {
@@ -377,7 +369,6 @@ declare const VDataIterator: {
377
369
  expanded: readonly string[];
378
370
  tag: string;
379
371
  sortBy: readonly SortItem[];
380
- items: any[];
381
372
  modelValue: readonly any[];
382
373
  valueComparator: typeof deepEqual;
383
374
  selectStrategy: "all" | "page" | "single";
@@ -400,24 +391,6 @@ declare const VDataIterator: {
400
391
  customKeyFilter?: FilterKeyFunctions | undefined;
401
392
  filterKeys?: FilterKeys | undefined;
402
393
  customKeySort?: Record<string, DataTableCompareFunction> | undefined;
403
- } & {
404
- $children?: vue.VNodeChild | {
405
- default?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
406
- header?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
407
- footer?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
408
- 'no-data'?: (() => vue.VNodeChild) | undefined;
409
- } | ((arg: VDataIteratorSlotProps) => vue.VNodeChild);
410
- 'v-slots'?: {
411
- default?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
412
- header?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
413
- footer?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
414
- 'no-data'?: false | (() => vue.VNodeChild) | undefined;
415
- } | undefined;
416
- } & {
417
- "v-slot:default"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
418
- "v-slot:header"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
419
- "v-slot:footer"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
420
- "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined;
421
394
  } & {
422
395
  "onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
423
396
  "onUpdate:sortBy"?: ((value: any) => any) | undefined;
@@ -434,7 +407,6 @@ declare const VDataIterator: {
434
407
  expanded: readonly string[];
435
408
  tag: string;
436
409
  sortBy: readonly SortItem[];
437
- items: any[];
438
410
  modelValue: readonly any[];
439
411
  valueComparator: typeof deepEqual;
440
412
  selectStrategy: "all" | "page" | "single";
@@ -461,7 +433,6 @@ declare const VDataIterator: {
461
433
  expanded: readonly string[];
462
434
  tag: string;
463
435
  sortBy: readonly SortItem[];
464
- items: any[];
465
436
  modelValue: readonly any[];
466
437
  valueComparator: typeof deepEqual;
467
438
  selectStrategy: "all" | "page" | "single";
@@ -484,24 +455,6 @@ declare const VDataIterator: {
484
455
  customKeyFilter?: FilterKeyFunctions | undefined;
485
456
  filterKeys?: FilterKeys | undefined;
486
457
  customKeySort?: Record<string, DataTableCompareFunction> | undefined;
487
- } & {
488
- $children?: vue.VNodeChild | {
489
- default?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
490
- header?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
491
- footer?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
492
- 'no-data'?: (() => vue.VNodeChild) | undefined;
493
- } | ((arg: VDataIteratorSlotProps) => vue.VNodeChild);
494
- 'v-slots'?: {
495
- default?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
496
- header?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
497
- footer?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
498
- 'no-data'?: false | (() => vue.VNodeChild) | undefined;
499
- } | undefined;
500
- } & {
501
- "v-slot:default"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
502
- "v-slot:header"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
503
- "v-slot:footer"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
504
- "v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined;
505
458
  } & {
506
459
  "onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
507
460
  "onUpdate:sortBy"?: ((value: any) => any) | undefined;
@@ -511,7 +464,7 @@ declare const VDataIterator: {
511
464
  "onUpdate:itemsPerPage"?: ((value: number) => any) | undefined;
512
465
  "onUpdate:options"?: ((value: any) => any) | undefined;
513
466
  "onUpdate:currentItems"?: ((value: any) => any) | undefined;
514
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
467
+ }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
515
468
  'update:modelValue': (value: any[]) => boolean;
516
469
  'update:groupBy': (value: any) => boolean;
517
470
  'update:page': (value: number) => boolean;
@@ -520,14 +473,13 @@ declare const VDataIterator: {
520
473
  'update:options': (value: any) => boolean;
521
474
  'update:expanded': (value: any) => boolean;
522
475
  'update:currentItems': (value: any) => boolean;
523
- }, string, {
476
+ }, "$children" | "v-slot:default" | "v-slots" | "items" | "v-slot:header" | "v-slot:no-data" | "v-slot:footer">, string, {
524
477
  page: string | number;
525
478
  loading: boolean;
526
479
  style: vue.StyleValue;
527
480
  expanded: readonly string[];
528
481
  tag: string;
529
482
  sortBy: readonly SortItem[];
530
- items: any[];
531
483
  modelValue: readonly any[];
532
484
  valueComparator: typeof deepEqual;
533
485
  selectStrategy: "all" | "page" | "single";
@@ -544,19 +496,23 @@ declare const VDataIterator: {
544
496
  showExpand: boolean;
545
497
  itemsPerPage: NonNullable<string | number>;
546
498
  }, {}, string, vue.SlotsType<Partial<{
547
- default: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
499
+ default: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
548
500
  [key: string]: any;
549
501
  }>[];
550
- header: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
502
+ header: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
551
503
  [key: string]: any;
552
504
  }>[];
553
- footer: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
505
+ footer: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
554
506
  [key: string]: any;
555
507
  }>[];
556
508
  'no-data': () => vue.VNode<vue.RendererNode, vue.RendererElement, {
557
509
  [key: string]: any;
558
510
  }>[];
559
- }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
511
+ }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T>(props: {
512
+ items?: readonly T[] | undefined;
513
+ }, slots: VDataIteratorSlots<T>) => GenericProps<{
514
+ items?: readonly T[] | undefined;
515
+ }, VDataIteratorSlots<T>>) & FilterPropsOptions<{
560
516
  tag: {
561
517
  type: StringConstructor;
562
518
  default: string;
@@ -239,6 +239,219 @@ type VDataTableHeadersSlots = {
239
239
  } & {
240
240
  [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps;
241
241
  };
242
+ declare const VDataTableHeaders: {
243
+ new (...args: any[]): vue.CreateComponentPublicInstance<{
244
+ sticky: boolean;
245
+ multiSort: boolean;
246
+ sortAscIcon: IconValue;
247
+ sortDescIcon: IconValue;
248
+ } & {
249
+ color?: string | undefined;
250
+ loading?: string | boolean | undefined;
251
+ headerProps?: Record<string, any> | undefined;
252
+ } & {
253
+ $children?: {} | vue.VNodeChild | {
254
+ [x: `header.${string}`]: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
255
+ headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
256
+ loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
257
+ 'header.data-table-select'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
258
+ 'header.data-table-expand'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
259
+ };
260
+ 'v-slots'?: {
261
+ [x: `header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
262
+ headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
263
+ loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
264
+ 'header.data-table-select'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
265
+ 'header.data-table-expand'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
266
+ } | undefined;
267
+ } & {
268
+ [x: `v-slot:header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
269
+ "v-slot:headers"?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
270
+ "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
271
+ "v-slot:header.data-table-select"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
272
+ "v-slot:header.data-table-expand"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
273
+ }, void, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
274
+ sticky: boolean;
275
+ multiSort: boolean;
276
+ sortAscIcon: IconValue;
277
+ sortDescIcon: IconValue;
278
+ } & {
279
+ color?: string | undefined;
280
+ loading?: string | boolean | undefined;
281
+ headerProps?: Record<string, any> | undefined;
282
+ } & {
283
+ $children?: {} | vue.VNodeChild | {
284
+ [x: `header.${string}`]: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
285
+ headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
286
+ loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
287
+ 'header.data-table-select'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
288
+ 'header.data-table-expand'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
289
+ };
290
+ 'v-slots'?: {
291
+ [x: `header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
292
+ headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
293
+ loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
294
+ 'header.data-table-select'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
295
+ 'header.data-table-expand'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
296
+ } | undefined;
297
+ } & {
298
+ [x: `v-slot:header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
299
+ "v-slot:headers"?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
300
+ "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
301
+ "v-slot:header.data-table-select"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
302
+ "v-slot:header.data-table-expand"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
303
+ }, {
304
+ sticky: boolean;
305
+ multiSort: boolean;
306
+ sortAscIcon: IconValue;
307
+ sortDescIcon: IconValue;
308
+ }, true, {}, vue.SlotsType<Partial<{
309
+ [x: `header.${string}`]: (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
310
+ [key: string]: any;
311
+ }>[];
312
+ headers: (arg: HeadersSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
313
+ [key: string]: any;
314
+ }>[];
315
+ loader: (arg: LoaderSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
316
+ [key: string]: any;
317
+ }>[];
318
+ 'header.data-table-select': (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
319
+ [key: string]: any;
320
+ }>[];
321
+ 'header.data-table-expand': (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
322
+ [key: string]: any;
323
+ }>[];
324
+ }>>, {
325
+ P: {};
326
+ B: {};
327
+ D: {};
328
+ C: {};
329
+ M: {};
330
+ Defaults: {};
331
+ }, {
332
+ sticky: boolean;
333
+ multiSort: boolean;
334
+ sortAscIcon: IconValue;
335
+ sortDescIcon: IconValue;
336
+ } & {
337
+ color?: string | undefined;
338
+ loading?: string | boolean | undefined;
339
+ headerProps?: Record<string, any> | undefined;
340
+ } & {
341
+ $children?: {} | vue.VNodeChild | {
342
+ [x: `header.${string}`]: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
343
+ headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
344
+ loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
345
+ 'header.data-table-select'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
346
+ 'header.data-table-expand'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
347
+ };
348
+ 'v-slots'?: {
349
+ [x: `header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
350
+ headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
351
+ loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
352
+ 'header.data-table-select'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
353
+ 'header.data-table-expand'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
354
+ } | undefined;
355
+ } & {
356
+ [x: `v-slot:header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
357
+ "v-slot:headers"?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
358
+ "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
359
+ "v-slot:header.data-table-select"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
360
+ "v-slot:header.data-table-expand"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
361
+ }, {}, {}, {}, {}, {
362
+ sticky: boolean;
363
+ multiSort: boolean;
364
+ sortAscIcon: IconValue;
365
+ sortDescIcon: IconValue;
366
+ }>;
367
+ __isFragment?: undefined;
368
+ __isTeleport?: undefined;
369
+ __isSuspense?: undefined;
370
+ } & vue.ComponentOptionsBase<{
371
+ sticky: boolean;
372
+ multiSort: boolean;
373
+ sortAscIcon: IconValue;
374
+ sortDescIcon: IconValue;
375
+ } & {
376
+ color?: string | undefined;
377
+ loading?: string | boolean | undefined;
378
+ headerProps?: Record<string, any> | undefined;
379
+ } & {
380
+ $children?: {} | vue.VNodeChild | {
381
+ [x: `header.${string}`]: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
382
+ headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
383
+ loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
384
+ 'header.data-table-select'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
385
+ 'header.data-table-expand'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
386
+ };
387
+ 'v-slots'?: {
388
+ [x: `header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
389
+ headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
390
+ loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
391
+ 'header.data-table-select'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
392
+ 'header.data-table-expand'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
393
+ } | undefined;
394
+ } & {
395
+ [x: `v-slot:header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
396
+ "v-slot:headers"?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
397
+ "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
398
+ "v-slot:header.data-table-select"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
399
+ "v-slot:header.data-table-expand"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
400
+ }, void, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
401
+ sticky: boolean;
402
+ multiSort: boolean;
403
+ sortAscIcon: IconValue;
404
+ sortDescIcon: IconValue;
405
+ }, {}, string, vue.SlotsType<Partial<{
406
+ [x: `header.${string}`]: (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
407
+ [key: string]: any;
408
+ }>[];
409
+ headers: (arg: HeadersSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
410
+ [key: string]: any;
411
+ }>[];
412
+ loader: (arg: LoaderSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
413
+ [key: string]: any;
414
+ }>[];
415
+ 'header.data-table-select': (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
416
+ [key: string]: any;
417
+ }>[];
418
+ 'header.data-table-expand': (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
419
+ [key: string]: any;
420
+ }>[];
421
+ }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
422
+ loading: (StringConstructor | BooleanConstructor)[];
423
+ color: StringConstructor;
424
+ sticky: BooleanConstructor;
425
+ multiSort: BooleanConstructor;
426
+ sortAscIcon: {
427
+ type: PropType<IconValue>;
428
+ default: string;
429
+ };
430
+ sortDescIcon: {
431
+ type: PropType<IconValue>;
432
+ default: string;
433
+ };
434
+ headerProps: {
435
+ type: PropType<Record<string, any>>;
436
+ };
437
+ }, vue.ExtractPropTypes<{
438
+ loading: (StringConstructor | BooleanConstructor)[];
439
+ color: StringConstructor;
440
+ sticky: BooleanConstructor;
441
+ multiSort: BooleanConstructor;
442
+ sortAscIcon: {
443
+ type: PropType<IconValue>;
444
+ default: string;
445
+ };
446
+ sortDescIcon: {
447
+ type: PropType<IconValue>;
448
+ default: string;
449
+ };
450
+ headerProps: {
451
+ type: PropType<Record<string, any>>;
452
+ };
453
+ }>>;
454
+ type VDataTableHeaders = InstanceType<typeof VDataTableHeaders>;
242
455
 
243
456
  type Density = null | 'default' | 'comfortable' | 'compact';
244
457
 
@@ -4176,4 +4389,4 @@ declare const VDataTableServer: {
4176
4389
  }>>;
4177
4390
  type VDataTableServer = InstanceType<typeof VDataTableServer>;
4178
4391
 
4179
- export { VDataTable, VDataTableFooter, VDataTableRow, VDataTableRows, VDataTableServer, VDataTableVirtual };
4392
+ export { VDataTable, VDataTableFooter, VDataTableHeaders, VDataTableRow, VDataTableRows, VDataTableServer, VDataTableVirtual };
@@ -1,4 +1,5 @@
1
1
  export { VDataTable } from "./VDataTable.mjs";
2
+ export { VDataTableHeaders } from "./VDataTableHeaders.mjs";
2
3
  export { VDataTableFooter } from "./VDataTableFooter.mjs";
3
4
  export { VDataTableRows } from "./VDataTableRows.mjs";
4
5
  export { VDataTableRow } from "./VDataTableRow.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["VDataTable","VDataTableFooter","VDataTableRows","VDataTableRow","VDataTableVirtual","VDataTableServer"],"sources":["../../../src/components/VDataTable/index.ts"],"sourcesContent":["export { VDataTable } from './VDataTable'\nexport { VDataTableFooter } from './VDataTableFooter'\nexport { VDataTableRows } from './VDataTableRows'\nexport { VDataTableRow } from './VDataTableRow'\nexport { VDataTableVirtual } from './VDataTableVirtual'\nexport { VDataTableServer } from './VDataTableServer'\n"],"mappings":"SAASA,UAAU;AAAA,SACVC,gBAAgB;AAAA,SAChBC,cAAc;AAAA,SACdC,aAAa;AAAA,SACbC,iBAAiB;AAAA,SACjBC,gBAAgB"}
1
+ {"version":3,"file":"index.mjs","names":["VDataTable","VDataTableHeaders","VDataTableFooter","VDataTableRows","VDataTableRow","VDataTableVirtual","VDataTableServer"],"sources":["../../../src/components/VDataTable/index.ts"],"sourcesContent":["export { VDataTable } from './VDataTable'\nexport { VDataTableHeaders } from './VDataTableHeaders'\nexport { VDataTableFooter } from './VDataTableFooter'\nexport { VDataTableRows } from './VDataTableRows'\nexport { VDataTableRow } from './VDataTableRow'\nexport { VDataTableVirtual } from './VDataTableVirtual'\nexport { VDataTableServer } from './VDataTableServer'\n"],"mappings":"SAASA,UAAU;AAAA,SACVC,iBAAiB;AAAA,SACjBC,gBAAgB;AAAA,SAChBC,cAAc;AAAA,SACdC,aAAa;AAAA,SACbC,iBAAiB;AAAA,SACjBC,gBAAgB"}
@@ -131,23 +131,20 @@
131
131
  opacity: calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
132
132
  }
133
133
  }
134
- .v-expansion-panel-title--active > .v-expansion-panel-title__overlay, .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true] > .v-expansion-panel-title__overlay {
134
+ .v-expansion-panel-title--focusable.v-expansion-panel-title--active .v-expansion-panel-title__overlay {
135
135
  opacity: calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier));
136
136
  }
137
- .v-expansion-panel-title--active:hover > .v-expansion-panel-title__overlay, .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:hover > .v-expansion-panel-title__overlay {
137
+ .v-expansion-panel-title--focusable.v-expansion-panel-title--active:hover .v-expansion-panel-title__overlay {
138
138
  opacity: calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier));
139
139
  }
140
- .v-expansion-panel-title--active:focus-visible > .v-expansion-panel-title__overlay, .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:focus-visible > .v-expansion-panel-title__overlay {
140
+ .v-expansion-panel-title--focusable.v-expansion-panel-title--active:focus-visible .v-expansion-panel-title__overlay {
141
141
  opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
142
142
  }
143
143
  @supports not selector(:focus-visible) {
144
- .v-expansion-panel-title--active:focus > .v-expansion-panel-title__overlay, .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:focus > .v-expansion-panel-title__overlay {
144
+ .v-expansion-panel-title--focusable.v-expansion-panel-title--active:focus .v-expansion-panel-title__overlay {
145
145
  opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
146
146
  }
147
147
  }
148
- .v-expansion-panel-title--active::before {
149
- opacity: 0.12;
150
- }
151
148
 
152
149
  .v-expansion-panel-title__overlay {
153
150
  position: absolute;
@@ -126,10 +126,11 @@
126
126
  transition: .3s min-height settings.$standard-easing
127
127
  width: 100%
128
128
  justify-content: space-between
129
- @include tools.states('.v-expansion-panel-title__overlay', true)
130
129
 
131
- &--active::before
132
- opacity: 0.12
130
+ @include tools.states('.v-expansion-panel-title__overlay', false)
131
+
132
+ &--focusable.v-expansion-panel-title--active
133
+ @include tools.active-states('.v-expansion-panel-title__overlay')
133
134
 
134
135
  .v-expansion-panel-title__overlay
135
136
  @include tools.absolute()
@@ -19,6 +19,7 @@ export const makeVExpansionPanelTitleProps = propsFactory({
19
19
  default: '$collapse'
20
20
  },
21
21
  hideActions: Boolean,
22
+ focusable: Boolean,
22
23
  static: Boolean,
23
24
  ripple: {
24
25
  type: [Boolean, Object],
@@ -53,6 +54,7 @@ export const VExpansionPanelTitle = genericComponent()({
53
54
  useRender(() => _withDirectives(_createVNode("button", {
54
55
  "class": ['v-expansion-panel-title', {
55
56
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
57
+ 'v-expansion-panel-title--focusable': props.focusable,
56
58
  'v-expansion-panel-title--static': props.static
57
59
  }, backgroundColorClasses.value, props.class],
58
60
  "style": [backgroundColorStyles.value, props.style],
@@ -1 +1 @@
1
- {"version":3,"file":"VExpansionPanelTitle.mjs","names":["VExpansionPanelSymbol","VIcon","useBackgroundColor","makeComponentProps","IconValue","Ripple","computed","inject","genericComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","static","ripple","Object","readonly","VExpansionPanelTitle","name","directives","props","setup","_ref","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","slotProps","disabled","value","expanded","isSelected","_withDirectives","_createVNode","class","style","undefined","toggle","actions","_resolveDirective"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"sourcesContent":["// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ninterface ExpansionPanelTitleSlot {\n collapseIcon: IconValue\n disabled: boolean | undefined\n expanded: boolean\n expandIcon: IconValue\n readonly: boolean\n}\n\nexport type VExpansionPanelTitleSlots = {\n default: ExpansionPanelTitleSlot\n actions: ExpansionPanelTitleSlot\n}\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n hideActions: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: false,\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n}, 'VExpansionPanelTitle')\n\nexport const VExpansionPanelTitle = genericComponent<VExpansionPanelTitleSlots>()({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: makeVExpansionPanelTitleProps(),\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly,\n }))\n\n useRender(() => (\n <button\n class={[\n 'v-expansion-panel-title',\n {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n 'v-expansion-panel-title--static': props.static,\n },\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n type=\"button\"\n tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n disabled={ expansionPanel.disabled.value }\n aria-expanded={ expansionPanel.isSelected.value }\n onClick={ !props.readonly ? expansionPanel.toggle : undefined }\n v-ripple={ props.ripple }\n >\n <span class=\"v-expansion-panel-title__overlay\" />\n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n <span class=\"v-expansion-panel-title__icon\">\n {\n slots.actions ? slots.actions(slotProps.value)\n : <VIcon icon={ expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon } />\n }\n </span>\n )}\n </button>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VExpansionPanelTitle.mjs","names":["VExpansionPanelSymbol","VIcon","useBackgroundColor","makeComponentProps","IconValue","Ripple","computed","inject","genericComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","focusable","static","ripple","Object","readonly","VExpansionPanelTitle","name","directives","props","setup","_ref","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","slotProps","disabled","value","expanded","isSelected","_withDirectives","_createVNode","class","style","undefined","toggle","actions","_resolveDirective"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"sourcesContent":["// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ninterface ExpansionPanelTitleSlot {\n collapseIcon: IconValue\n disabled: boolean | undefined\n expanded: boolean\n expandIcon: IconValue\n readonly: boolean\n}\n\nexport type VExpansionPanelTitleSlots = {\n default: ExpansionPanelTitleSlot\n actions: ExpansionPanelTitleSlot\n}\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n hideActions: Boolean,\n focusable: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: false,\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n}, 'VExpansionPanelTitle')\n\nexport const VExpansionPanelTitle = genericComponent<VExpansionPanelTitleSlots>()({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: makeVExpansionPanelTitleProps(),\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly,\n }))\n\n useRender(() => (\n <button\n class={[\n 'v-expansion-panel-title',\n {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n 'v-expansion-panel-title--focusable': props.focusable,\n 'v-expansion-panel-title--static': props.static,\n },\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n type=\"button\"\n tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n disabled={ expansionPanel.disabled.value }\n aria-expanded={ expansionPanel.isSelected.value }\n onClick={ !props.readonly ? expansionPanel.toggle : undefined }\n v-ripple={ props.ripple }\n >\n <span class=\"v-expansion-panel-title__overlay\" />\n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n <span class=\"v-expansion-panel-title__icon\">\n {\n slots.actions ? slots.actions(slotProps.value)\n : <VIcon icon={ expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon } />\n }\n </span>\n )}\n </button>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n"],"mappings":"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"}
@@ -15,6 +15,7 @@ const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
15
15
  export const makeVExpansionPanelsProps = propsFactory({
16
16
  color: String,
17
17
  flat: Boolean,
18
+ focusable: Boolean,
18
19
  static: Boolean,
19
20
  tile: Boolean,
20
21
  variant: {
@@ -49,6 +50,7 @@ export const VExpansionPanels = genericComponent()({
49
50
  readonly: toRef(props, 'readonly')
50
51
  },
51
52
  VExpansionPanelTitle: {
53
+ focusable: toRef(props, 'focusable'),
52
54
  static: toRef(props, 'static')
53
55
  }
54
56
  });