@vuetify/nightly 3.8.7-dev.2025-05-27 → 3.8.7-dev.2025-06-03

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 (91) hide show
  1. package/CHANGELOG.md +12 -3
  2. package/dist/json/attributes.json +3213 -3189
  3. package/dist/json/importMap-labs.json +20 -20
  4. package/dist/json/importMap.json +176 -176
  5. package/dist/json/tags.json +6 -0
  6. package/dist/json/web-types.json +5962 -5902
  7. package/dist/vuetify-labs.cjs +52 -19
  8. package/dist/vuetify-labs.css +5727 -5721
  9. package/dist/vuetify-labs.d.ts +677 -402
  10. package/dist/vuetify-labs.esm.js +52 -19
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +52 -19
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +52 -19
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +4233 -4227
  17. package/dist/vuetify.d.ts +621 -378
  18. package/dist/vuetify.esm.js +52 -19
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +52 -19
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +29 -24
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAppBar/VAppBar.d.ts +15 -3
  26. package/lib/components/VAppBar/VAppBarNavIcon.d.ts +20 -10
  27. package/lib/components/VAutocomplete/VAutocomplete.d.ts +21 -7
  28. package/lib/components/VAutocomplete/VAutocomplete.js +2 -1
  29. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  30. package/lib/components/VBtn/VBtn.d.ts +20 -10
  31. package/lib/components/VCard/VCard.d.ts +20 -10
  32. package/lib/components/VCheckbox/VCheckbox.d.ts +20 -10
  33. package/lib/components/VCheckbox/VCheckboxBtn.d.ts +20 -10
  34. package/lib/components/VChip/VChip.d.ts +20 -10
  35. package/lib/components/VCombobox/VCombobox.d.ts +21 -7
  36. package/lib/components/VCombobox/VCombobox.js +2 -1
  37. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  38. package/lib/components/VDataTable/VDataTable.d.ts +42 -0
  39. package/lib/components/VDataTable/VDataTableServer.d.ts +29 -0
  40. package/lib/components/VDataTable/VDataTableVirtual.d.ts +29 -0
  41. package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +20 -10
  42. package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +20 -10
  43. package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +20 -10
  44. package/lib/components/VFab/VFab.d.ts +20 -10
  45. package/lib/components/VList/VList.d.ts +13 -0
  46. package/lib/components/VList/VList.js +4 -1
  47. package/lib/components/VList/VList.js.map +1 -1
  48. package/lib/components/VList/VListItem.d.ts +23 -10
  49. package/lib/components/VList/VListItem.js +7 -3
  50. package/lib/components/VList/VListItem.js.map +1 -1
  51. package/lib/components/VList/list.d.ts +9 -2
  52. package/lib/components/VList/list.js +7 -0
  53. package/lib/components/VList/list.js.map +1 -1
  54. package/lib/components/VRadio/VRadio.d.ts +20 -10
  55. package/lib/components/VRadioGroup/VRadioGroup.d.ts +20 -10
  56. package/lib/components/VSelect/VSelect.d.ts +33 -11
  57. package/lib/components/VSelectionControl/VSelectionControl.d.ts +20 -10
  58. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +28 -14
  59. package/lib/components/VSlider/VSliderThumb.d.ts +20 -10
  60. package/lib/components/VStepper/VStepperItem.d.ts +28 -14
  61. package/lib/components/VSwitch/VSwitch.d.ts +20 -10
  62. package/lib/components/VTable/VTable.css +6 -0
  63. package/lib/components/VTable/VTable.d.ts +55 -24
  64. package/lib/components/VTable/VTable.js +9 -2
  65. package/lib/components/VTable/VTable.js.map +1 -1
  66. package/lib/components/VTable/VTable.sass +14 -0
  67. package/lib/components/VTable/_variables.scss +1 -0
  68. package/lib/components/VTabs/VTab.d.ts +56 -28
  69. package/lib/components/VToolbar/VToolbar.d.ts +15 -3
  70. package/lib/components/VToolbar/VToolbar.js +6 -3
  71. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  72. package/lib/composables/date/DateAdapter.d.ts +2 -2
  73. package/lib/composables/date/DateAdapter.js.map +1 -1
  74. package/lib/composables/date/adapters/string.d.ts +54 -0
  75. package/lib/composables/date/adapters/string.js +153 -0
  76. package/lib/composables/date/adapters/string.js.map +1 -0
  77. package/lib/composables/date/date.d.ts +2 -2
  78. package/lib/directives/ripple/index.d.ts +2 -1
  79. package/lib/directives/ripple/index.js +12 -7
  80. package/lib/directives/ripple/index.js.map +1 -1
  81. package/lib/entry-bundler.d.ts +2 -2
  82. package/lib/entry-bundler.js +1 -1
  83. package/lib/framework.d.ts +75 -65
  84. package/lib/framework.js +1 -1
  85. package/lib/labs/VFileUpload/VFileUploadItem.d.ts +20 -10
  86. package/lib/labs/VStepperVertical/VStepperVertical.d.ts +20 -10
  87. package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +20 -10
  88. package/lib/labs/VTreeview/VTreeview.d.ts +13 -0
  89. package/lib/labs/VTreeview/VTreeviewItem.d.ts +20 -10
  90. package/lib/labs/entry-bundler.d.ts +2 -2
  91. package/package.json +1 -1
@@ -113,14 +113,18 @@ export declare const makeVExpansionPanelProps: <Defaults extends {
113
113
  default: boolean;
114
114
  }, "type" | "default"> & {
115
115
  type: import("vue").PropType<unknown extends Defaults["ripple"] ? boolean | {
116
- class: string;
116
+ class?: string;
117
+ keys?: number[];
117
118
  } | undefined : boolean | {
118
- class: string;
119
+ class?: string;
120
+ keys?: number[];
119
121
  } | Defaults["ripple"] | undefined>;
120
122
  default: unknown extends Defaults["ripple"] ? boolean | {
121
- class: string;
123
+ class?: string;
124
+ keys?: number[];
122
125
  } | undefined : NonNullable<boolean | {
123
- class: string;
126
+ class?: string;
127
+ keys?: number[];
124
128
  } | undefined> | Defaults["ripple"];
125
129
  };
126
130
  readonly: unknown extends Defaults["readonly"] ? BooleanConstructor : {
@@ -202,7 +206,8 @@ export declare const VExpansionPanel: {
202
206
  focusable: boolean;
203
207
  tile: boolean;
204
208
  ripple: boolean | {
205
- class: string;
209
+ class?: string;
210
+ keys?: number[];
206
211
  } | undefined;
207
212
  collapseIcon: import("../../composables/icons.js").IconValue;
208
213
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -259,7 +264,8 @@ export declare const VExpansionPanel: {
259
264
  rounded: string | number | boolean;
260
265
  tile: boolean;
261
266
  ripple: boolean | {
262
- class: string;
267
+ class?: string;
268
+ keys?: number[];
263
269
  } | undefined;
264
270
  collapseIcon: import("../../composables/icons.js").IconValue;
265
271
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -285,7 +291,8 @@ export declare const VExpansionPanel: {
285
291
  focusable: boolean;
286
292
  tile: boolean;
287
293
  ripple: boolean | {
288
- class: string;
294
+ class?: string;
295
+ keys?: number[];
289
296
  } | undefined;
290
297
  collapseIcon: import("../../composables/icons.js").IconValue;
291
298
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -338,7 +345,8 @@ export declare const VExpansionPanel: {
338
345
  rounded: string | number | boolean;
339
346
  tile: boolean;
340
347
  ripple: boolean | {
341
- class: string;
348
+ class?: string;
349
+ keys?: number[];
342
350
  } | undefined;
343
351
  collapseIcon: import("../../composables/icons.js").IconValue;
344
352
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -357,7 +365,8 @@ export declare const VExpansionPanel: {
357
365
  focusable: boolean;
358
366
  tile: boolean;
359
367
  ripple: boolean | {
360
- class: string;
368
+ class?: string;
369
+ keys?: number[];
361
370
  } | undefined;
362
371
  collapseIcon: import("../../composables/icons.js").IconValue;
363
372
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -414,7 +423,8 @@ export declare const VExpansionPanel: {
414
423
  rounded: string | number | boolean;
415
424
  tile: boolean;
416
425
  ripple: boolean | {
417
- class: string;
426
+ class?: string;
427
+ keys?: number[];
418
428
  } | undefined;
419
429
  collapseIcon: import("../../composables/icons.js").IconValue;
420
430
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -112,14 +112,18 @@ export declare const makeVExpansionPanelTitleProps: <Defaults extends {
112
112
  default: boolean;
113
113
  }, "type" | "default"> & {
114
114
  type: PropType<unknown extends Defaults["ripple"] ? boolean | {
115
- class: string;
115
+ class?: string;
116
+ keys?: number[];
116
117
  } | undefined : boolean | {
117
- class: string;
118
+ class?: string;
119
+ keys?: number[];
118
120
  } | Defaults["ripple"] | undefined>;
119
121
  default: unknown extends Defaults["ripple"] ? boolean | {
120
- class: string;
122
+ class?: string;
123
+ keys?: number[];
121
124
  } | undefined : NonNullable<boolean | {
122
- class: string;
125
+ class?: string;
126
+ keys?: number[];
123
127
  } | undefined> | Defaults["ripple"];
124
128
  };
125
129
  readonly: unknown extends Defaults["readonly"] ? BooleanConstructor : {
@@ -134,7 +138,8 @@ export declare const VExpansionPanelTitle: {
134
138
  static: boolean;
135
139
  focusable: boolean;
136
140
  ripple: boolean | {
137
- class: string;
141
+ class?: string;
142
+ keys?: number[];
138
143
  } | undefined;
139
144
  collapseIcon: IconValue;
140
145
  expandIcon: IconValue;
@@ -166,7 +171,8 @@ export declare const VExpansionPanelTitle: {
166
171
  static: boolean;
167
172
  focusable: boolean;
168
173
  ripple: boolean | {
169
- class: string;
174
+ class?: string;
175
+ keys?: number[];
170
176
  } | undefined;
171
177
  collapseIcon: IconValue;
172
178
  expandIcon: IconValue;
@@ -187,7 +193,8 @@ export declare const VExpansionPanelTitle: {
187
193
  static: boolean;
188
194
  focusable: boolean;
189
195
  ripple: boolean | {
190
- class: string;
196
+ class?: string;
197
+ keys?: number[];
191
198
  } | undefined;
192
199
  collapseIcon: IconValue;
193
200
  expandIcon: IconValue;
@@ -219,7 +226,8 @@ export declare const VExpansionPanelTitle: {
219
226
  static: boolean;
220
227
  focusable: boolean;
221
228
  ripple: boolean | {
222
- class: string;
229
+ class?: string;
230
+ keys?: number[];
223
231
  } | undefined;
224
232
  collapseIcon: IconValue;
225
233
  expandIcon: IconValue;
@@ -234,7 +242,8 @@ export declare const VExpansionPanelTitle: {
234
242
  static: boolean;
235
243
  focusable: boolean;
236
244
  ripple: boolean | {
237
- class: string;
245
+ class?: string;
246
+ keys?: number[];
238
247
  } | undefined;
239
248
  collapseIcon: IconValue;
240
249
  expandIcon: IconValue;
@@ -266,7 +275,8 @@ export declare const VExpansionPanelTitle: {
266
275
  static: boolean;
267
276
  focusable: boolean;
268
277
  ripple: boolean | {
269
- class: string;
278
+ class?: string;
279
+ keys?: number[];
270
280
  } | undefined;
271
281
  collapseIcon: IconValue;
272
282
  expandIcon: IconValue;
@@ -131,14 +131,18 @@ export declare const makeVExpansionPanelsProps: <Defaults extends {
131
131
  default: boolean;
132
132
  }, "type" | "default"> & {
133
133
  type: PropType<unknown extends Defaults["ripple"] ? boolean | {
134
- class: string;
134
+ class?: string;
135
+ keys?: number[];
135
136
  } | undefined : boolean | {
136
- class: string;
137
+ class?: string;
138
+ keys?: number[];
137
139
  } | Defaults["ripple"] | undefined>;
138
140
  default: unknown extends Defaults["ripple"] ? boolean | {
139
- class: string;
141
+ class?: string;
142
+ keys?: number[];
140
143
  } | undefined : NonNullable<boolean | {
141
- class: string;
144
+ class?: string;
145
+ keys?: number[];
142
146
  } | undefined> | Defaults["ripple"];
143
147
  };
144
148
  collapseIcon: unknown extends Defaults["collapseIcon"] ? {
@@ -214,7 +218,8 @@ export declare const VExpansionPanels: {
214
218
  focusable: boolean;
215
219
  tile: boolean;
216
220
  ripple: boolean | {
217
- class: string;
221
+ class?: string;
222
+ keys?: number[];
218
223
  } | undefined;
219
224
  collapseIcon: import("../../composables/icons.js").IconValue;
220
225
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -261,7 +266,8 @@ export declare const VExpansionPanels: {
261
266
  rounded: string | number | boolean;
262
267
  tile: boolean;
263
268
  ripple: boolean | {
264
- class: string;
269
+ class?: string;
270
+ keys?: number[];
265
271
  } | undefined;
266
272
  collapseIcon: import("../../composables/icons.js").IconValue;
267
273
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -288,7 +294,8 @@ export declare const VExpansionPanels: {
288
294
  focusable: boolean;
289
295
  tile: boolean;
290
296
  ripple: boolean | {
291
- class: string;
297
+ class?: string;
298
+ keys?: number[];
292
299
  } | undefined;
293
300
  collapseIcon: import("../../composables/icons.js").IconValue;
294
301
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -333,7 +340,8 @@ export declare const VExpansionPanels: {
333
340
  rounded: string | number | boolean;
334
341
  tile: boolean;
335
342
  ripple: boolean | {
336
- class: string;
343
+ class?: string;
344
+ keys?: number[];
337
345
  } | undefined;
338
346
  collapseIcon: import("../../composables/icons.js").IconValue;
339
347
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -355,7 +363,8 @@ export declare const VExpansionPanels: {
355
363
  focusable: boolean;
356
364
  tile: boolean;
357
365
  ripple: boolean | {
358
- class: string;
366
+ class?: string;
367
+ keys?: number[];
359
368
  } | undefined;
360
369
  collapseIcon: import("../../composables/icons.js").IconValue;
361
370
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -402,7 +411,8 @@ export declare const VExpansionPanels: {
402
411
  rounded: string | number | boolean;
403
412
  tile: boolean;
404
413
  ripple: boolean | {
405
- class: string;
414
+ class?: string;
415
+ keys?: number[];
406
416
  } | undefined;
407
417
  collapseIcon: import("../../composables/icons.js").IconValue;
408
418
  expandIcon: import("../../composables/icons.js").IconValue;
@@ -360,14 +360,18 @@ export declare const makeVFabProps: <Defaults extends {
360
360
  default: boolean;
361
361
  }, "type" | "default"> & {
362
362
  type: import("vue").PropType<unknown extends Defaults["ripple"] ? boolean | {
363
- class: string;
363
+ class?: string;
364
+ keys?: number[];
364
365
  } | undefined : boolean | {
365
- class: string;
366
+ class?: string;
367
+ keys?: number[];
366
368
  } | Defaults["ripple"] | undefined>;
367
369
  default: unknown extends Defaults["ripple"] ? boolean | {
368
- class: string;
370
+ class?: string;
371
+ keys?: number[];
369
372
  } | undefined : NonNullable<boolean | {
370
- class: string;
373
+ class?: string;
374
+ keys?: number[];
371
375
  } | undefined> | Defaults["ripple"];
372
376
  };
373
377
  app: unknown extends Defaults["app"] ? BooleanConstructor : {
@@ -430,7 +434,8 @@ export declare const VFab: {
430
434
  slim: boolean;
431
435
  stacked: boolean;
432
436
  ripple: boolean | {
433
- class: string;
437
+ class?: string;
438
+ keys?: number[];
434
439
  } | undefined;
435
440
  extended: boolean;
436
441
  } & {
@@ -503,7 +508,8 @@ export declare const VFab: {
503
508
  slim: boolean;
504
509
  stacked: boolean;
505
510
  ripple: boolean | {
506
- class: string;
511
+ class?: string;
512
+ keys?: number[];
507
513
  } | undefined;
508
514
  extended: boolean;
509
515
  }, true, {}, import("vue").SlotsType<Partial<{
@@ -543,7 +549,8 @@ export declare const VFab: {
543
549
  slim: boolean;
544
550
  stacked: boolean;
545
551
  ripple: boolean | {
546
- class: string;
552
+ class?: string;
553
+ keys?: number[];
547
554
  } | undefined;
548
555
  extended: boolean;
549
556
  } & {
@@ -614,7 +621,8 @@ export declare const VFab: {
614
621
  slim: boolean;
615
622
  stacked: boolean;
616
623
  ripple: boolean | {
617
- class: string;
624
+ class?: string;
625
+ keys?: number[];
618
626
  } | undefined;
619
627
  extended: boolean;
620
628
  }>;
@@ -649,7 +657,8 @@ export declare const VFab: {
649
657
  slim: boolean;
650
658
  stacked: boolean;
651
659
  ripple: boolean | {
652
- class: string;
660
+ class?: string;
661
+ keys?: number[];
653
662
  } | undefined;
654
663
  extended: boolean;
655
664
  } & {
@@ -722,7 +731,8 @@ export declare const VFab: {
722
731
  slim: boolean;
723
732
  stacked: boolean;
724
733
  ripple: boolean | {
725
- class: string;
734
+ class?: string;
735
+ keys?: number[];
726
736
  } | undefined;
727
737
  extended: boolean;
728
738
  }, {}, string, import("vue").SlotsType<Partial<{
@@ -51,6 +51,7 @@ export declare const makeVListProps: <Defaults extends {
51
51
  activeClass?: unknown;
52
52
  bgColor?: unknown;
53
53
  disabled?: unknown;
54
+ filterable?: unknown;
54
55
  expandIcon?: unknown;
55
56
  collapseIcon?: unknown;
56
57
  lines?: unknown;
@@ -310,6 +311,10 @@ export declare const makeVListProps: <Defaults extends {
310
311
  type: PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
311
312
  default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
312
313
  };
314
+ filterable: unknown extends Defaults["filterable"] ? BooleanConstructor : {
315
+ type: PropType<unknown extends Defaults["filterable"] ? boolean : boolean | Defaults["filterable"]>;
316
+ default: unknown extends Defaults["filterable"] ? boolean : boolean | Defaults["filterable"];
317
+ };
313
318
  expandIcon: unknown extends Defaults["expandIcon"] ? PropType<IconValue> : {
314
319
  type: PropType<unknown extends Defaults["expandIcon"] ? IconValue : IconValue | Defaults["expandIcon"]>;
315
320
  default: unknown extends Defaults["expandIcon"] ? IconValue : NonNullable<IconValue> | Defaults["expandIcon"];
@@ -404,6 +409,7 @@ export declare const VList: {
404
409
  density: import("../../composables/density.js").Density;
405
410
  tile: boolean;
406
411
  slim: boolean;
412
+ filterable: boolean;
407
413
  activatable: boolean;
408
414
  selectable: boolean;
409
415
  openStrategy: import("../../composables/nested/nested.js").OpenStrategyProp;
@@ -477,6 +483,7 @@ export declare const VList: {
477
483
  rounded: string | number | boolean;
478
484
  tile: boolean;
479
485
  slim: boolean;
486
+ filterable: boolean;
480
487
  activatable: boolean;
481
488
  selectable: boolean;
482
489
  openStrategy: import("../../composables/nested/nested.js").OpenStrategyProp;
@@ -527,6 +534,7 @@ export declare const VList: {
527
534
  density: import("../../composables/density.js").Density;
528
535
  tile: boolean;
529
536
  slim: boolean;
537
+ filterable: boolean;
530
538
  activatable: boolean;
531
539
  selectable: boolean;
532
540
  openStrategy: import("../../composables/nested/nested.js").OpenStrategyProp;
@@ -581,6 +589,7 @@ export declare const VList: {
581
589
  rounded: string | number | boolean;
582
590
  tile: boolean;
583
591
  slim: boolean;
592
+ filterable: boolean;
584
593
  activatable: boolean;
585
594
  selectable: boolean;
586
595
  openStrategy: import("../../composables/nested/nested.js").OpenStrategyProp;
@@ -602,6 +611,7 @@ export declare const VList: {
602
611
  density: import("../../composables/density.js").Density;
603
612
  tile: boolean;
604
613
  slim: boolean;
614
+ filterable: boolean;
605
615
  activatable: boolean;
606
616
  selectable: boolean;
607
617
  openStrategy: import("../../composables/nested/nested.js").OpenStrategyProp;
@@ -675,6 +685,7 @@ export declare const VList: {
675
685
  rounded: string | number | boolean;
676
686
  tile: boolean;
677
687
  slim: boolean;
688
+ filterable: boolean;
678
689
  activatable: boolean;
679
690
  selectable: boolean;
680
691
  openStrategy: import("../../composables/nested/nested.js").OpenStrategyProp;
@@ -812,6 +823,7 @@ export declare const VList: {
812
823
  activeClass: StringConstructor;
813
824
  bgColor: StringConstructor;
814
825
  disabled: BooleanConstructor;
826
+ filterable: BooleanConstructor;
815
827
  expandIcon: PropType<IconValue>;
816
828
  collapseIcon: PropType<IconValue>;
817
829
  lines: {
@@ -918,6 +930,7 @@ export declare const VList: {
918
930
  activeClass: StringConstructor;
919
931
  bgColor: StringConstructor;
920
932
  disabled: BooleanConstructor;
933
+ filterable: BooleanConstructor;
921
934
  expandIcon: PropType<IconValue>;
922
935
  collapseIcon: PropType<IconValue>;
923
936
  lines: {
@@ -61,6 +61,7 @@ export const makeVListProps = propsFactory({
61
61
  activeClass: String,
62
62
  bgColor: String,
63
63
  disabled: Boolean,
64
+ filterable: Boolean,
64
65
  expandIcon: IconValue,
65
66
  collapseIcon: IconValue,
66
67
  lines: {
@@ -144,7 +145,9 @@ export const VList = genericComponent()({
144
145
  const activeColor = toRef(() => props.activeColor);
145
146
  const baseColor = toRef(() => props.baseColor);
146
147
  const color = toRef(() => props.color);
147
- createList();
148
+ createList({
149
+ filterable: props.filterable
150
+ });
148
151
  provideDefaults({
149
152
  VListGroup: {
150
153
  activeColor,
@@ -1 +1 @@
1
- {"version":3,"file":"VList.js","names":["VListChildren","createList","makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","provideDefaults","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","makeItemsProps","makeNestedProps","useNested","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","computed","ref","shallowRef","toRef","EventProp","focusChild","genericComponent","getPropertyFromItem","isPrimitive","omit","propsFactory","useRender","transformItem","props","item","type","itemType","title","itemTitle","value","itemValue","undefined","children","itemChildren","itemProps","_props","transformItems","raw","items","array","push","useListItems","makeVListProps","baseColor","String","activeColor","activeClass","bgColor","disabled","Boolean","expandIcon","collapseIcon","lines","default","slim","nav","selectStrategy","openStrategy","variant","VList","name","emits","setup","_ref","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","open","parents","select","getPath","lineClasses","color","VListGroup","VListItem","density","isFocused","contentRef","onFocusin","e","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","target","includes","tagName","key","preventDefault","onMousedown","location","_createVNode","tag","_normalizeClass","class","_normalizeStyle","style","returnObject"],"sources":["../../../src/components/VList/VList.tsx"],"sourcesContent":["// Styles\nimport './VList.sass'\n\n// Components\nimport { VListChildren } from './VListChildren'\n\n// Composables\nimport { createList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeItemsProps } from '@/composables/list-items'\nimport { makeNestedProps, useNested } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef } from 'vue'\nimport {\n EventProp,\n focusChild,\n genericComponent,\n getPropertyFromItem,\n isPrimitive,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VListChildrenSlots } from './VListChildren'\nimport type { ItemProps, ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport interface InternalListItem<T = any> extends ListItem<T> {\n type?: 'item' | 'subheader' | 'divider'\n}\n\nfunction transformItem (props: ItemProps & { itemType?: string }, item: any): InternalListItem {\n const type = getPropertyFromItem(item, props.itemType, 'item')\n const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle)\n const value = getPropertyFromItem(item, props.itemValue, undefined)\n const children = getPropertyFromItem(item, props.itemChildren)\n const itemProps = props.itemProps === true\n ? omit(item, ['children'])\n : getPropertyFromItem(item, props.itemProps)\n\n const _props = {\n title,\n value,\n ...itemProps,\n }\n\n return {\n type,\n title: _props.title,\n value: _props.value,\n props: _props,\n children: type === 'item' && children ? transformItems(props, children) : undefined,\n raw: item,\n }\n}\n\nfunction transformItems (props: ItemProps & { itemType?: string }, items: (string | object)[]) {\n const array: InternalListItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nexport function useListItems (props: ItemProps & { itemType?: string }) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n\nexport const makeVListProps = propsFactory({\n baseColor: String,\n /* @deprecated */\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n expandIcon: IconValue,\n collapseIcon: IconValue,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n slim: Boolean,\n nav: Boolean,\n\n 'onClick:open': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onClick:select': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onUpdate:opened': EventProp<[]>(),\n ...makeNestedProps({\n selectStrategy: 'single-leaf' as const,\n openStrategy: 'list' as const,\n }),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n itemType: {\n type: String,\n default: 'type',\n },\n ...makeItemsProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VList')\n\ntype ItemType<T> = T extends readonly (infer U)[] ? U : never\n\nexport const VList = genericComponent<new <\n T extends readonly any[],\n S = unknown,\n O = unknown\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey<ItemType<T>>\n itemValue?: SelectItemKey<ItemType<T>>\n itemChildren?: SelectItemKey<ItemType<T>>\n itemProps?: SelectItemKey<ItemType<T>>\n selected?: S\n 'onUpdate:selected'?: (value: S) => void\n 'onClick:open'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n 'onClick:select'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n opened?: O\n 'onUpdate:opened'?: (value: O) => void\n },\n slots: VListChildrenSlots<ItemType<T>>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VList',\n\n props: makeVListProps(),\n\n emits: {\n 'update:selected': (value: unknown) => true,\n 'update:activated': (value: unknown) => true,\n 'update:opened': (value: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:activate': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.bgColor)\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { children, open, parents, select, getPath } = useNested(props)\n const lineClasses = toRef(() => props.lines ? `v-list--${props.lines}-line` : undefined)\n const activeColor = toRef(() => props.activeColor)\n const baseColor = toRef(() => props.baseColor)\n const color = toRef(() => props.color)\n\n createList()\n\n provideDefaults({\n VListGroup: {\n activeColor,\n baseColor,\n color,\n expandIcon: toRef(() => props.expandIcon),\n collapseIcon: toRef(() => props.collapseIcon),\n },\n VListItem: {\n activeClass: toRef(() => props.activeClass),\n activeColor,\n baseColor,\n color,\n density: toRef(() => props.density),\n disabled: toRef(() => props.disabled),\n lines: toRef(() => props.lines),\n nav: toRef(() => props.nav),\n slim: toRef(() => props.slim),\n variant: toRef(() => props.variant),\n },\n })\n\n const isFocused = shallowRef(false)\n const contentRef = ref<HTMLElement>()\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n } else if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n } else {\n return\n }\n\n e.preventDefault()\n }\n\n function onMousedown (e: MouseEvent) {\n isFocused.value = true\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last' | number) {\n if (contentRef.value) {\n return focusChild(contentRef.value, location)\n }\n }\n\n useRender(() => {\n return (\n <props.tag\n ref={ contentRef }\n class={[\n 'v-list',\n {\n 'v-list--disabled': props.disabled,\n 'v-list--nav': props.nav,\n 'v-list--slim': props.slim,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ props.disabled ? -1 : 0 }\n role=\"listbox\"\n aria-activedescendant={ undefined }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onFocus={ onFocus }\n onKeydown={ onKeydown }\n onMousedown={ onMousedown }\n >\n <VListChildren\n items={ items.value }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n </props.tag>\n )\n })\n\n return {\n open,\n select,\n focus,\n children,\n parents,\n getPath,\n }\n },\n})\n\nexport type VList = InstanceType<typeof VList>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VList.js","names":["VListChildren","createList","makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","provideDefaults","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","makeItemsProps","makeNestedProps","useNested","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","computed","ref","shallowRef","toRef","EventProp","focusChild","genericComponent","getPropertyFromItem","isPrimitive","omit","propsFactory","useRender","transformItem","props","item","type","itemType","title","itemTitle","value","itemValue","undefined","children","itemChildren","itemProps","_props","transformItems","raw","items","array","push","useListItems","makeVListProps","baseColor","String","activeColor","activeClass","bgColor","disabled","Boolean","filterable","expandIcon","collapseIcon","lines","default","slim","nav","selectStrategy","openStrategy","variant","VList","name","emits","setup","_ref","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","open","parents","select","getPath","lineClasses","color","VListGroup","VListItem","density","isFocused","contentRef","onFocusin","e","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","target","includes","tagName","key","preventDefault","onMousedown","location","_createVNode","tag","_normalizeClass","class","_normalizeStyle","style","returnObject"],"sources":["../../../src/components/VList/VList.tsx"],"sourcesContent":["// Styles\nimport './VList.sass'\n\n// Components\nimport { VListChildren } from './VListChildren'\n\n// Composables\nimport { createList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeItemsProps } from '@/composables/list-items'\nimport { makeNestedProps, useNested } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef } from 'vue'\nimport {\n EventProp,\n focusChild,\n genericComponent,\n getPropertyFromItem,\n isPrimitive,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VListChildrenSlots } from './VListChildren'\nimport type { ItemProps, ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport interface InternalListItem<T = any> extends ListItem<T> {\n type?: 'item' | 'subheader' | 'divider'\n}\n\nfunction transformItem (props: ItemProps & { itemType?: string }, item: any): InternalListItem {\n const type = getPropertyFromItem(item, props.itemType, 'item')\n const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle)\n const value = getPropertyFromItem(item, props.itemValue, undefined)\n const children = getPropertyFromItem(item, props.itemChildren)\n const itemProps = props.itemProps === true\n ? omit(item, ['children'])\n : getPropertyFromItem(item, props.itemProps)\n\n const _props = {\n title,\n value,\n ...itemProps,\n }\n\n return {\n type,\n title: _props.title,\n value: _props.value,\n props: _props,\n children: type === 'item' && children ? transformItems(props, children) : undefined,\n raw: item,\n }\n}\n\nfunction transformItems (props: ItemProps & { itemType?: string }, items: (string | object)[]) {\n const array: InternalListItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nexport function useListItems (props: ItemProps & { itemType?: string }) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n\nexport const makeVListProps = propsFactory({\n baseColor: String,\n /* @deprecated */\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n filterable: Boolean,\n expandIcon: IconValue,\n collapseIcon: IconValue,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n slim: Boolean,\n nav: Boolean,\n\n 'onClick:open': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onClick:select': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onUpdate:opened': EventProp<[]>(),\n ...makeNestedProps({\n selectStrategy: 'single-leaf' as const,\n openStrategy: 'list' as const,\n }),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n itemType: {\n type: String,\n default: 'type',\n },\n ...makeItemsProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VList')\n\ntype ItemType<T> = T extends readonly (infer U)[] ? U : never\n\nexport const VList = genericComponent<new <\n T extends readonly any[],\n S = unknown,\n O = unknown\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey<ItemType<T>>\n itemValue?: SelectItemKey<ItemType<T>>\n itemChildren?: SelectItemKey<ItemType<T>>\n itemProps?: SelectItemKey<ItemType<T>>\n selected?: S\n 'onUpdate:selected'?: (value: S) => void\n 'onClick:open'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n 'onClick:select'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n opened?: O\n 'onUpdate:opened'?: (value: O) => void\n },\n slots: VListChildrenSlots<ItemType<T>>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VList',\n\n props: makeVListProps(),\n\n emits: {\n 'update:selected': (value: unknown) => true,\n 'update:activated': (value: unknown) => true,\n 'update:opened': (value: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:activate': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.bgColor)\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { children, open, parents, select, getPath } = useNested(props)\n const lineClasses = toRef(() => props.lines ? `v-list--${props.lines}-line` : undefined)\n const activeColor = toRef(() => props.activeColor)\n const baseColor = toRef(() => props.baseColor)\n const color = toRef(() => props.color)\n\n createList({\n filterable: props.filterable,\n })\n\n provideDefaults({\n VListGroup: {\n activeColor,\n baseColor,\n color,\n expandIcon: toRef(() => props.expandIcon),\n collapseIcon: toRef(() => props.collapseIcon),\n },\n VListItem: {\n activeClass: toRef(() => props.activeClass),\n activeColor,\n baseColor,\n color,\n density: toRef(() => props.density),\n disabled: toRef(() => props.disabled),\n lines: toRef(() => props.lines),\n nav: toRef(() => props.nav),\n slim: toRef(() => props.slim),\n variant: toRef(() => props.variant),\n },\n })\n\n const isFocused = shallowRef(false)\n const contentRef = ref<HTMLElement>()\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n } else if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n } else {\n return\n }\n\n e.preventDefault()\n }\n\n function onMousedown (e: MouseEvent) {\n isFocused.value = true\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last' | number) {\n if (contentRef.value) {\n return focusChild(contentRef.value, location)\n }\n }\n\n useRender(() => {\n return (\n <props.tag\n ref={ contentRef }\n class={[\n 'v-list',\n {\n 'v-list--disabled': props.disabled,\n 'v-list--nav': props.nav,\n 'v-list--slim': props.slim,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ props.disabled ? -1 : 0 }\n role=\"listbox\"\n aria-activedescendant={ undefined }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onFocus={ onFocus }\n onKeydown={ onKeydown }\n onMousedown={ onMousedown }\n >\n <VListChildren\n items={ items.value }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n </props.tag>\n )\n })\n\n return {\n open,\n select,\n focus,\n children,\n parents,\n getPath,\n }\n },\n})\n\nexport type VList = InstanceType<typeof VList>\n"],"mappings":"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","ignoreList":[]}
@@ -261,14 +261,18 @@ export declare const makeVListItemProps: <Defaults extends {
261
261
  default: boolean;
262
262
  }, "type" | "default"> & {
263
263
  type: PropType<unknown extends Defaults["ripple"] ? boolean | {
264
- class: string;
264
+ class?: string;
265
+ keys?: number[];
265
266
  } | undefined : boolean | {
266
- class: string;
267
+ class?: string;
268
+ keys?: number[];
267
269
  } | Defaults["ripple"] | undefined>;
268
270
  default: unknown extends Defaults["ripple"] ? boolean | {
269
- class: string;
271
+ class?: string;
272
+ keys?: number[];
270
273
  } | undefined : NonNullable<boolean | {
271
- class: string;
274
+ class?: string;
275
+ keys?: number[];
272
276
  } | undefined> | Defaults["ripple"];
273
277
  };
274
278
  slim: unknown extends Defaults["slim"] ? BooleanConstructor : {
@@ -321,7 +325,8 @@ export declare const VListItem: {
321
325
  tile: boolean;
322
326
  slim: boolean;
323
327
  ripple: boolean | {
324
- class: string;
328
+ class?: string;
329
+ keys?: number[];
325
330
  } | undefined;
326
331
  } & {
327
332
  link?: boolean | undefined;
@@ -382,6 +387,7 @@ export declare const VListItem: {
382
387
  isGroupActivator: boolean | undefined;
383
388
  isSelected: import("vue").ComputedRef<boolean>;
384
389
  list: {
390
+ filterable: import("vue").MaybeRefOrGetter<boolean>;
385
391
  hasPrepend: import("vue").Ref<boolean>;
386
392
  updateHasPrepend: (value: boolean) => void;
387
393
  } | null;
@@ -423,7 +429,8 @@ export declare const VListItem: {
423
429
  tile: boolean;
424
430
  slim: boolean;
425
431
  ripple: boolean | {
426
- class: string;
432
+ class?: string;
433
+ keys?: number[];
427
434
  } | undefined;
428
435
  subtitle: string | number | boolean;
429
436
  }, true, {}, import("vue").SlotsType<Partial<{
@@ -451,7 +458,8 @@ export declare const VListItem: {
451
458
  tile: boolean;
452
459
  slim: boolean;
453
460
  ripple: boolean | {
454
- class: string;
461
+ class?: string;
462
+ keys?: number[];
455
463
  } | undefined;
456
464
  } & {
457
465
  link?: boolean | undefined;
@@ -512,6 +520,7 @@ export declare const VListItem: {
512
520
  isGroupActivator: boolean | undefined;
513
521
  isSelected: import("vue").ComputedRef<boolean>;
514
522
  list: {
523
+ filterable: import("vue").MaybeRefOrGetter<boolean>;
515
524
  hasPrepend: import("vue").Ref<boolean>;
516
525
  updateHasPrepend: (value: boolean) => void;
517
526
  } | null;
@@ -551,7 +560,8 @@ export declare const VListItem: {
551
560
  tile: boolean;
552
561
  slim: boolean;
553
562
  ripple: boolean | {
554
- class: string;
563
+ class?: string;
564
+ keys?: number[];
555
565
  } | undefined;
556
566
  subtitle: string | number | boolean;
557
567
  }>;
@@ -570,7 +580,8 @@ export declare const VListItem: {
570
580
  tile: boolean;
571
581
  slim: boolean;
572
582
  ripple: boolean | {
573
- class: string;
583
+ class?: string;
584
+ keys?: number[];
574
585
  } | undefined;
575
586
  } & {
576
587
  link?: boolean | undefined;
@@ -631,6 +642,7 @@ export declare const VListItem: {
631
642
  isGroupActivator: boolean | undefined;
632
643
  isSelected: import("vue").ComputedRef<boolean>;
633
644
  list: {
645
+ filterable: import("vue").MaybeRefOrGetter<boolean>;
634
646
  hasPrepend: import("vue").Ref<boolean>;
635
647
  updateHasPrepend: (value: boolean) => void;
636
648
  } | null;
@@ -672,7 +684,8 @@ export declare const VListItem: {
672
684
  tile: boolean;
673
685
  slim: boolean;
674
686
  ripple: boolean | {
675
- class: string;
687
+ class?: string;
688
+ keys?: number[];
676
689
  } | undefined;
677
690
  subtitle: string | number | boolean;
678
691
  }, {}, string, import("vue").SlotsType<Partial<{
@@ -23,7 +23,7 @@ import { makeThemeProps, provideTheme } from "../../composables/theme.js";
23
23
  import { genOverlays, makeVariantProps, useVariant } from "../../composables/variant.js"; // Directives
24
24
  import vRipple from "../../directives/ripple/index.js"; // Utilities
25
25
  import { computed, onBeforeMount, toDisplayString, toRef, watch } from 'vue';
26
- import { deprecate, EventProp, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
26
+ import { deprecate, EventProp, genericComponent, keyCodes, propsFactory, useRender } from "../../util/index.js"; // Types
27
27
  export const makeVListItemProps = propsFactory({
28
28
  active: {
29
29
  type: Boolean,
@@ -154,6 +154,9 @@ export const VListItem = genericComponent()({
154
154
  roundedClasses
155
155
  } = useRounded(roundedProps);
156
156
  const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
157
+ const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
158
+ keys: [keyCodes.enter]
159
+ } : props.ripple);
157
160
  const slotProps = computed(() => ({
158
161
  isActive: isActive.value,
159
162
  select,
@@ -178,8 +181,9 @@ export const VListItem = genericComponent()({
178
181
  function onKeyDown(e) {
179
182
  const target = e.target;
180
183
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
181
- if (e.key === 'Enter' || e.key === ' ') {
184
+ if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
182
185
  e.preventDefault();
186
+ e.stopPropagation();
183
187
  e.target.dispatchEvent(new MouseEvent('click', e));
184
188
  }
185
189
  }
@@ -289,7 +293,7 @@ export const VListItem = genericComponent()({
289
293
  }), _createElementVNode("div", {
290
294
  "class": "v-list-item__spacer"
291
295
  }, null)])]
292
- }), [[vRipple, isClickable.value && props.ripple]]);
296
+ }), [[vRipple, isClickable.value && rippleOptions.value]]);
293
297
  });
294
298
  return {
295
299
  activate,