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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +8 -3
  2. package/dist/json/attributes.json +1893 -1885
  3. package/dist/json/importMap-labs.json +34 -34
  4. package/dist/json/importMap.json +140 -140
  5. package/dist/json/tags.json +2 -0
  6. package/dist/json/web-types.json +3286 -3266
  7. package/dist/vuetify-labs.cjs +36 -15
  8. package/dist/vuetify-labs.css +5222 -5222
  9. package/dist/vuetify-labs.d.ts +401 -213
  10. package/dist/vuetify-labs.esm.js +36 -15
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +36 -15
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +36 -15
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +5419 -5419
  17. package/dist/vuetify.d.ts +345 -189
  18. package/dist/vuetify.esm.js +36 -15
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +36 -15
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +24 -19
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAppBar/VAppBarNavIcon.d.ts +20 -10
  26. package/lib/components/VAutocomplete/VAutocomplete.d.ts +21 -7
  27. package/lib/components/VAutocomplete/VAutocomplete.js +2 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  29. package/lib/components/VBtn/VBtn.d.ts +20 -10
  30. package/lib/components/VCard/VCard.d.ts +20 -10
  31. package/lib/components/VCheckbox/VCheckbox.d.ts +20 -10
  32. package/lib/components/VCheckbox/VCheckboxBtn.d.ts +20 -10
  33. package/lib/components/VChip/VChip.d.ts +20 -10
  34. package/lib/components/VCombobox/VCombobox.d.ts +21 -7
  35. package/lib/components/VCombobox/VCombobox.js +2 -1
  36. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  37. package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +20 -10
  38. package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +20 -10
  39. package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +20 -10
  40. package/lib/components/VFab/VFab.d.ts +20 -10
  41. package/lib/components/VList/VList.d.ts +13 -0
  42. package/lib/components/VList/VList.js +4 -1
  43. package/lib/components/VList/VList.js.map +1 -1
  44. package/lib/components/VList/VListItem.d.ts +23 -10
  45. package/lib/components/VList/VListItem.js +7 -3
  46. package/lib/components/VList/VListItem.js.map +1 -1
  47. package/lib/components/VList/list.d.ts +9 -2
  48. package/lib/components/VList/list.js +7 -0
  49. package/lib/components/VList/list.js.map +1 -1
  50. package/lib/components/VRadio/VRadio.d.ts +20 -10
  51. package/lib/components/VRadioGroup/VRadioGroup.d.ts +20 -10
  52. package/lib/components/VSelect/VSelect.d.ts +33 -11
  53. package/lib/components/VSelectionControl/VSelectionControl.d.ts +20 -10
  54. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +28 -14
  55. package/lib/components/VSlider/VSliderThumb.d.ts +20 -10
  56. package/lib/components/VStepper/VStepperItem.d.ts +28 -14
  57. package/lib/components/VSwitch/VSwitch.d.ts +20 -10
  58. package/lib/components/VTabs/VTab.d.ts +56 -28
  59. package/lib/directives/ripple/index.d.ts +2 -1
  60. package/lib/directives/ripple/index.js +12 -7
  61. package/lib/directives/ripple/index.js.map +1 -1
  62. package/lib/entry-bundler.js +1 -1
  63. package/lib/framework.d.ts +53 -53
  64. package/lib/framework.js +1 -1
  65. package/lib/labs/VFileUpload/VFileUploadItem.d.ts +20 -10
  66. package/lib/labs/VStepperVertical/VStepperVertical.d.ts +20 -10
  67. package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +20 -10
  68. package/lib/labs/VTreeview/VTreeview.d.ts +13 -0
  69. package/lib/labs/VTreeview/VTreeviewItem.d.ts +20 -10
  70. package/package.json +1 -1
@@ -97,14 +97,18 @@ export declare const makeStepperItemProps: <Defaults extends {
97
97
  default: boolean;
98
98
  }, "type" | "default"> & {
99
99
  type: PropType<unknown extends Defaults["ripple"] ? boolean | {
100
- class: string;
100
+ class?: string;
101
+ keys?: number[];
101
102
  } | undefined : boolean | {
102
- class: string;
103
+ class?: string;
104
+ keys?: number[];
103
105
  } | Defaults["ripple"] | undefined>;
104
106
  default: unknown extends Defaults["ripple"] ? boolean | {
105
- class: string;
107
+ class?: string;
108
+ keys?: number[];
106
109
  } | undefined : NonNullable<boolean | {
107
- class: string;
110
+ class?: string;
111
+ keys?: number[];
108
112
  } | undefined> | Defaults["ripple"];
109
113
  };
110
114
  rules: unknown extends Defaults["rules"] ? {
@@ -213,14 +217,18 @@ export declare const makeVStepperItemProps: <Defaults extends {
213
217
  default: boolean;
214
218
  }, "type" | "default"> & {
215
219
  type: PropType<unknown extends Defaults["ripple"] ? boolean | {
216
- class: string;
220
+ class?: string;
221
+ keys?: number[];
217
222
  } | undefined : boolean | {
218
- class: string;
223
+ class?: string;
224
+ keys?: number[];
219
225
  } | Defaults["ripple"] | undefined>;
220
226
  default: unknown extends Defaults["ripple"] ? boolean | {
221
- class: string;
227
+ class?: string;
228
+ keys?: number[];
222
229
  } | undefined : NonNullable<boolean | {
223
- class: string;
230
+ class?: string;
231
+ keys?: number[];
224
232
  } | undefined> | Defaults["ripple"];
225
233
  };
226
234
  rules: unknown extends Defaults["rules"] ? {
@@ -241,7 +249,8 @@ export declare const VStepperItem: {
241
249
  disabled: boolean;
242
250
  rules: readonly ValidationRule[];
243
251
  ripple: boolean | {
244
- class: string;
252
+ class?: string;
253
+ keys?: number[];
245
254
  } | undefined;
246
255
  completeIcon: IconValue;
247
256
  editable: boolean;
@@ -286,7 +295,8 @@ export declare const VStepperItem: {
286
295
  disabled: boolean;
287
296
  rules: readonly ValidationRule[];
288
297
  ripple: boolean | {
289
- class: string;
298
+ class?: string;
299
+ keys?: number[];
290
300
  } | undefined;
291
301
  completeIcon: IconValue;
292
302
  editable: boolean;
@@ -310,7 +320,8 @@ export declare const VStepperItem: {
310
320
  disabled: boolean;
311
321
  rules: readonly ValidationRule[];
312
322
  ripple: boolean | {
313
- class: string;
323
+ class?: string;
324
+ keys?: number[];
314
325
  } | undefined;
315
326
  completeIcon: IconValue;
316
327
  editable: boolean;
@@ -351,7 +362,8 @@ export declare const VStepperItem: {
351
362
  disabled: boolean;
352
363
  rules: readonly ValidationRule[];
353
364
  ripple: boolean | {
354
- class: string;
365
+ class?: string;
366
+ keys?: number[];
355
367
  } | undefined;
356
368
  completeIcon: IconValue;
357
369
  editable: boolean;
@@ -367,7 +379,8 @@ export declare const VStepperItem: {
367
379
  disabled: boolean;
368
380
  rules: readonly ValidationRule[];
369
381
  ripple: boolean | {
370
- class: string;
382
+ class?: string;
383
+ keys?: number[];
371
384
  } | undefined;
372
385
  completeIcon: IconValue;
373
386
  editable: boolean;
@@ -412,7 +425,8 @@ export declare const VStepperItem: {
412
425
  disabled: boolean;
413
426
  rules: readonly ValidationRule[];
414
427
  ripple: boolean | {
415
- class: string;
428
+ class?: string;
429
+ keys?: number[];
416
430
  } | undefined;
417
431
  completeIcon: IconValue;
418
432
  editable: boolean;
@@ -145,14 +145,18 @@ export declare const makeVSwitchProps: <Defaults extends {
145
145
  default: boolean;
146
146
  }, "type" | "default"> & {
147
147
  type: import("vue").PropType<unknown extends Defaults["ripple"] ? boolean | {
148
- class: string;
148
+ class?: string;
149
+ keys?: number[];
149
150
  } | undefined : boolean | {
150
- class: string;
151
+ class?: string;
152
+ keys?: number[];
151
153
  } | Defaults["ripple"] | undefined>;
152
154
  default: unknown extends Defaults["ripple"] ? boolean | {
153
- class: string;
155
+ class?: string;
156
+ keys?: number[];
154
157
  } | undefined : NonNullable<boolean | {
155
- class: string;
158
+ class?: string;
159
+ keys?: number[];
156
160
  } | undefined> | Defaults["ripple"];
157
161
  };
158
162
  multiple: unknown extends Defaults["multiple"] ? {
@@ -391,7 +395,8 @@ export declare const VSwitch: {
391
395
  valueComparator: typeof import("../../util/index.js").deepEqual;
392
396
  density: import("../../composables/density.js").Density;
393
397
  ripple: boolean | {
394
- class: string;
398
+ class?: string;
399
+ keys?: number[];
395
400
  } | undefined;
396
401
  centerAffix: boolean;
397
402
  glow: boolean;
@@ -452,7 +457,8 @@ export declare const VSwitch: {
452
457
  valueComparator: typeof import("../../util/index.js").deepEqual;
453
458
  density: import("../../composables/density.js").Density;
454
459
  ripple: boolean | {
455
- class: string;
460
+ class?: string;
461
+ keys?: number[];
456
462
  } | undefined;
457
463
  centerAffix: boolean;
458
464
  glow: boolean;
@@ -505,7 +511,8 @@ export declare const VSwitch: {
505
511
  valueComparator: typeof import("../../util/index.js").deepEqual;
506
512
  density: import("../../composables/density.js").Density;
507
513
  ripple: boolean | {
508
- class: string;
514
+ class?: string;
515
+ keys?: number[];
509
516
  } | undefined;
510
517
  centerAffix: boolean;
511
518
  glow: boolean;
@@ -562,7 +569,8 @@ export declare const VSwitch: {
562
569
  valueComparator: typeof import("../../util/index.js").deepEqual;
563
570
  density: import("../../composables/density.js").Density;
564
571
  ripple: boolean | {
565
- class: string;
572
+ class?: string;
573
+ keys?: number[];
566
574
  } | undefined;
567
575
  centerAffix: boolean;
568
576
  glow: boolean;
@@ -592,7 +600,8 @@ export declare const VSwitch: {
592
600
  valueComparator: typeof import("../../util/index.js").deepEqual;
593
601
  density: import("../../composables/density.js").Density;
594
602
  ripple: boolean | {
595
- class: string;
603
+ class?: string;
604
+ keys?: number[];
596
605
  } | undefined;
597
606
  centerAffix: boolean;
598
607
  glow: boolean;
@@ -653,7 +662,8 @@ export declare const VSwitch: {
653
662
  valueComparator: typeof import("../../util/index.js").deepEqual;
654
663
  density: import("../../composables/density.js").Density;
655
664
  ripple: boolean | {
656
- class: string;
665
+ class?: string;
666
+ keys?: number[];
657
667
  } | undefined;
658
668
  centerAffix: boolean;
659
669
  glow: boolean;
@@ -265,14 +265,18 @@ export declare const makeVTabProps: <Defaults extends {
265
265
  default: boolean;
266
266
  }, "type" | "default"> & {
267
267
  type: PropType<unknown extends Defaults["ripple"] ? boolean | {
268
- class: string;
268
+ class?: string;
269
+ keys?: number[];
269
270
  } | undefined : boolean | {
270
- class: string;
271
+ class?: string;
272
+ keys?: number[];
271
273
  } | Defaults["ripple"] | undefined>;
272
274
  default: unknown extends Defaults["ripple"] ? boolean | {
273
- class: string;
275
+ class?: string;
276
+ keys?: number[];
274
277
  } | undefined : NonNullable<boolean | {
275
- class: string;
278
+ class?: string;
279
+ keys?: number[];
276
280
  } | undefined> | Defaults["ripple"];
277
281
  };
278
282
  fixed: unknown extends Defaults["fixed"] ? BooleanConstructor : {
@@ -316,7 +320,8 @@ export declare const VTab: {
316
320
  slim: boolean;
317
321
  stacked: boolean;
318
322
  ripple: boolean | {
319
- class: string;
323
+ class?: string;
324
+ keys?: number[];
320
325
  } | undefined;
321
326
  hideSlider: boolean;
322
327
  } & {
@@ -384,7 +389,8 @@ export declare const VTab: {
384
389
  slim: boolean;
385
390
  stacked: boolean;
386
391
  ripple: boolean | {
387
- class: string;
392
+ class?: string;
393
+ keys?: number[];
388
394
  } | undefined;
389
395
  }> & Omit<{
390
396
  symbol: any;
@@ -403,7 +409,8 @@ export declare const VTab: {
403
409
  slim: boolean;
404
410
  stacked: boolean;
405
411
  ripple: boolean | {
406
- class: string;
412
+ class?: string;
413
+ keys?: number[];
407
414
  } | undefined;
408
415
  location?: import("../../util/index.js").Anchor | null | undefined;
409
416
  height?: string | number | undefined;
@@ -487,7 +494,8 @@ export declare const VTab: {
487
494
  slim: boolean;
488
495
  stacked: boolean;
489
496
  ripple: boolean | {
490
- class: string;
497
+ class?: string;
498
+ keys?: number[];
491
499
  } | undefined;
492
500
  } & {
493
501
  location?: import("../../util/index.js").Anchor | null | undefined;
@@ -564,7 +572,8 @@ export declare const VTab: {
564
572
  slim: boolean;
565
573
  stacked: boolean;
566
574
  ripple: boolean | {
567
- class: string;
575
+ class?: string;
576
+ keys?: number[];
568
577
  } | undefined;
569
578
  }, {}, string, import("vue").SlotsType<Partial<{
570
579
  default: () => import("vue").VNode[];
@@ -611,7 +620,8 @@ export declare const VTab: {
611
620
  slim: boolean;
612
621
  stacked: boolean;
613
622
  ripple: boolean | {
614
- class: string;
623
+ class?: string;
624
+ keys?: number[];
615
625
  } | undefined;
616
626
  }> & Omit<{
617
627
  symbol: any;
@@ -630,7 +640,8 @@ export declare const VTab: {
630
640
  slim: boolean;
631
641
  stacked: boolean;
632
642
  ripple: boolean | {
633
- class: string;
643
+ class?: string;
644
+ keys?: number[];
634
645
  } | undefined;
635
646
  } & {
636
647
  location?: import("../../util/index.js").Anchor | null | undefined;
@@ -706,7 +717,8 @@ export declare const VTab: {
706
717
  slim: boolean;
707
718
  stacked: boolean;
708
719
  ripple: boolean | {
709
- class: string;
720
+ class?: string;
721
+ keys?: number[];
710
722
  } | undefined;
711
723
  hideSlider: boolean;
712
724
  }, true, {}, import("vue").SlotsType<Partial<{
@@ -738,7 +750,8 @@ export declare const VTab: {
738
750
  slim: boolean;
739
751
  stacked: boolean;
740
752
  ripple: boolean | {
741
- class: string;
753
+ class?: string;
754
+ keys?: number[];
742
755
  } | undefined;
743
756
  hideSlider: boolean;
744
757
  } & {
@@ -806,7 +819,8 @@ export declare const VTab: {
806
819
  slim: boolean;
807
820
  stacked: boolean;
808
821
  ripple: boolean | {
809
- class: string;
822
+ class?: string;
823
+ keys?: number[];
810
824
  } | undefined;
811
825
  }> & Omit<{
812
826
  symbol: any;
@@ -825,7 +839,8 @@ export declare const VTab: {
825
839
  slim: boolean;
826
840
  stacked: boolean;
827
841
  ripple: boolean | {
828
- class: string;
842
+ class?: string;
843
+ keys?: number[];
829
844
  } | undefined;
830
845
  location?: import("../../util/index.js").Anchor | null | undefined;
831
846
  height?: string | number | undefined;
@@ -909,7 +924,8 @@ export declare const VTab: {
909
924
  slim: boolean;
910
925
  stacked: boolean;
911
926
  ripple: boolean | {
912
- class: string;
927
+ class?: string;
928
+ keys?: number[];
913
929
  } | undefined;
914
930
  } & {
915
931
  location?: import("../../util/index.js").Anchor | null | undefined;
@@ -986,7 +1002,8 @@ export declare const VTab: {
986
1002
  slim: boolean;
987
1003
  stacked: boolean;
988
1004
  ripple: boolean | {
989
- class: string;
1005
+ class?: string;
1006
+ keys?: number[];
990
1007
  } | undefined;
991
1008
  }, {}, string, import("vue").SlotsType<Partial<{
992
1009
  default: () => import("vue").VNode[];
@@ -1033,7 +1050,8 @@ export declare const VTab: {
1033
1050
  slim: boolean;
1034
1051
  stacked: boolean;
1035
1052
  ripple: boolean | {
1036
- class: string;
1053
+ class?: string;
1054
+ keys?: number[];
1037
1055
  } | undefined;
1038
1056
  }> & Omit<{
1039
1057
  symbol: any;
@@ -1052,7 +1070,8 @@ export declare const VTab: {
1052
1070
  slim: boolean;
1053
1071
  stacked: boolean;
1054
1072
  ripple: boolean | {
1055
- class: string;
1073
+ class?: string;
1074
+ keys?: number[];
1056
1075
  } | undefined;
1057
1076
  } & {
1058
1077
  location?: import("../../util/index.js").Anchor | null | undefined;
@@ -1128,7 +1147,8 @@ export declare const VTab: {
1128
1147
  slim: boolean;
1129
1148
  stacked: boolean;
1130
1149
  ripple: boolean | {
1131
- class: string;
1150
+ class?: string;
1151
+ keys?: number[];
1132
1152
  } | undefined;
1133
1153
  hideSlider: boolean;
1134
1154
  }>;
@@ -1152,7 +1172,8 @@ export declare const VTab: {
1152
1172
  slim: boolean;
1153
1173
  stacked: boolean;
1154
1174
  ripple: boolean | {
1155
- class: string;
1175
+ class?: string;
1176
+ keys?: number[];
1156
1177
  } | undefined;
1157
1178
  hideSlider: boolean;
1158
1179
  } & {
@@ -1220,7 +1241,8 @@ export declare const VTab: {
1220
1241
  slim: boolean;
1221
1242
  stacked: boolean;
1222
1243
  ripple: boolean | {
1223
- class: string;
1244
+ class?: string;
1245
+ keys?: number[];
1224
1246
  } | undefined;
1225
1247
  }> & Omit<{
1226
1248
  symbol: any;
@@ -1239,7 +1261,8 @@ export declare const VTab: {
1239
1261
  slim: boolean;
1240
1262
  stacked: boolean;
1241
1263
  ripple: boolean | {
1242
- class: string;
1264
+ class?: string;
1265
+ keys?: number[];
1243
1266
  } | undefined;
1244
1267
  location?: import("../../util/index.js").Anchor | null | undefined;
1245
1268
  height?: string | number | undefined;
@@ -1323,7 +1346,8 @@ export declare const VTab: {
1323
1346
  slim: boolean;
1324
1347
  stacked: boolean;
1325
1348
  ripple: boolean | {
1326
- class: string;
1349
+ class?: string;
1350
+ keys?: number[];
1327
1351
  } | undefined;
1328
1352
  } & {
1329
1353
  location?: import("../../util/index.js").Anchor | null | undefined;
@@ -1400,7 +1424,8 @@ export declare const VTab: {
1400
1424
  slim: boolean;
1401
1425
  stacked: boolean;
1402
1426
  ripple: boolean | {
1403
- class: string;
1427
+ class?: string;
1428
+ keys?: number[];
1404
1429
  } | undefined;
1405
1430
  }, {}, string, import("vue").SlotsType<Partial<{
1406
1431
  default: () => import("vue").VNode[];
@@ -1447,7 +1472,8 @@ export declare const VTab: {
1447
1472
  slim: boolean;
1448
1473
  stacked: boolean;
1449
1474
  ripple: boolean | {
1450
- class: string;
1475
+ class?: string;
1476
+ keys?: number[];
1451
1477
  } | undefined;
1452
1478
  }> & Omit<{
1453
1479
  symbol: any;
@@ -1466,7 +1492,8 @@ export declare const VTab: {
1466
1492
  slim: boolean;
1467
1493
  stacked: boolean;
1468
1494
  ripple: boolean | {
1469
- class: string;
1495
+ class?: string;
1496
+ keys?: number[];
1470
1497
  } | undefined;
1471
1498
  } & {
1472
1499
  location?: import("../../util/index.js").Anchor | null | undefined;
@@ -1542,7 +1569,8 @@ export declare const VTab: {
1542
1569
  slim: boolean;
1543
1570
  stacked: boolean;
1544
1571
  ripple: boolean | {
1545
- class: string;
1572
+ class?: string;
1573
+ keys?: number[];
1546
1574
  } | undefined;
1547
1575
  hideSlider: boolean;
1548
1576
  }, {}, string, import("vue").SlotsType<Partial<{
@@ -1,7 +1,8 @@
1
1
  import type { DirectiveBinding } from 'vue';
2
2
  export interface RippleDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {
3
3
  value?: boolean | {
4
- class: string;
4
+ class?: string;
5
+ keys?: number[];
5
6
  };
6
7
  modifiers: {
7
8
  center?: boolean;
@@ -189,8 +189,8 @@ function rippleCancelShow(e) {
189
189
  window.clearTimeout(element._ripple.showTimer);
190
190
  }
191
191
  let keyboardRipple = false;
192
- function keyboardRippleShow(e) {
193
- if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
192
+ function keyboardRippleShow(e, keys) {
193
+ if (!keyboardRipple && keys.includes(e.keyCode)) {
194
194
  keyboardRipple = true;
195
195
  rippleShow(e);
196
196
  }
@@ -218,9 +218,12 @@ function updateRipple(el, binding, wasEnabled) {
218
218
  el._ripple.enabled = enabled;
219
219
  el._ripple.centered = modifiers.center;
220
220
  el._ripple.circle = modifiers.circle;
221
- if (isObject(value) && value.class) {
222
- el._ripple.class = value.class;
221
+ const bindingValue = isObject(value) ? value : {};
222
+ if (bindingValue.class) {
223
+ el._ripple.class = bindingValue.class;
223
224
  }
225
+ const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
226
+ el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
224
227
  if (enabled && !wasEnabled) {
225
228
  if (modifiers.stop) {
226
229
  el.addEventListener('touchstart', rippleStop, {
@@ -242,7 +245,7 @@ function updateRipple(el, binding, wasEnabled) {
242
245
  el.addEventListener('mousedown', rippleShow);
243
246
  el.addEventListener('mouseup', rippleHide);
244
247
  el.addEventListener('mouseleave', rippleHide);
245
- el.addEventListener('keydown', keyboardRippleShow);
248
+ el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
246
249
  el.addEventListener('keyup', keyboardRippleHide);
247
250
  el.addEventListener('blur', focusRippleHide);
248
251
 
@@ -262,7 +265,9 @@ function removeListeners(el) {
262
265
  el.removeEventListener('touchcancel', rippleHide);
263
266
  el.removeEventListener('mouseup', rippleHide);
264
267
  el.removeEventListener('mouseleave', rippleHide);
265
- el.removeEventListener('keydown', keyboardRippleShow);
268
+ if (el._ripple?.keyDownHandler) {
269
+ el.removeEventListener('keydown', el._ripple.keyDownHandler);
270
+ }
266
271
  el.removeEventListener('keyup', keyboardRippleHide);
267
272
  el.removeEventListener('dragstart', rippleHide);
268
273
  el.removeEventListener('blur', focusRippleHide);
@@ -271,8 +276,8 @@ function mounted(el, binding) {
271
276
  updateRipple(el, binding, false);
272
277
  }
273
278
  function unmounted(el) {
274
- delete el._ripple;
275
279
  removeListeners(el);
280
+ delete el._ripple;
276
281
  }
277
282
  function updated(el, binding) {
278
283
  if (binding.value === binding.oldValue) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isObject","keyCodes","stopSymbol","Symbol","DELAY_RIPPLE","transform","el","value","style","webkitTransform","isTouchEvent","e","constructor","name","isKeyboardEvent","calculate","arguments","length","undefined","localX","localY","offset","getBoundingClientRect","target","touches","clientX","left","clientY","top","radius","scale","_ripple","circle","clientWidth","center","Math","sqrt","clientHeight","centerX","centerY","x","y","ripples","show","enabled","container","document","createElement","animation","appendChild","className","class","size","width","height","computed","window","getComputedStyle","position","dataset","previousPosition","classList","add","activated","String","performance","now","requestAnimationFrame","remove","hide","getElementsByClassName","isHiding","diff","Number","delay","max","setTimeout","parentNode","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","clearTimeout","type","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","enter","space","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","modifiers","stop","addEventListener","passive","removeListeners","removeEventListener","mounted","unmounted","updated","oldValue","Ripple"],"sources":["../../../src/directives/ripple/index.ts"],"sourcesContent":["// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { isObject, keyCodes } from '@/util'\n\n// Types\nimport type { DirectiveBinding } from 'vue'\n\nconst stopSymbol = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [stopSymbol]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\ninterface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nexport interface RippleDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: boolean | { class: string }\n modifiers: {\n center?: boolean\n circle?: boolean\n stop?: boolean\n }\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple?.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el?._ripple?.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n })\n })\n },\n\n hide (el: HTMLElement | null) {\n if (!el?._ripple?.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleStop (e: VuetifyRippleEvent) {\n e[stopSymbol] = true\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element?._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: RippleDirectiveBinding, wasEnabled: boolean) {\n const { value, modifiers } = binding\n const enabled = isRippleEnabled(value)\n if (!enabled) {\n ripples.hide(el)\n }\n\n el._ripple = el._ripple ?? {}\n el._ripple.enabled = enabled\n el._ripple.centered = modifiers.center\n el._ripple.circle = modifiers.circle\n if (isObject(value) && value.class) {\n el._ripple.class = value.class\n }\n\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, { passive: true })\n el.addEventListener('mousedown', rippleStop)\n return\n }\n\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction mounted (el: HTMLElement, binding: RippleDirectiveBinding) {\n updateRipple(el, binding, false)\n}\n\nfunction unmounted (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction updated (el: HTMLElement, binding: RippleDirectiveBinding) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Ripple\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["isObject","keyCodes","stopSymbol","Symbol","DELAY_RIPPLE","transform","el","value","style","webkitTransform","isTouchEvent","e","constructor","name","isKeyboardEvent","calculate","arguments","length","undefined","localX","localY","offset","getBoundingClientRect","target","touches","clientX","left","clientY","top","radius","scale","_ripple","circle","clientWidth","center","Math","sqrt","clientHeight","centerX","centerY","x","y","ripples","show","enabled","container","document","createElement","animation","appendChild","className","class","size","width","height","computed","window","getComputedStyle","position","dataset","previousPosition","classList","add","activated","String","performance","now","requestAnimationFrame","remove","hide","getElementsByClassName","isHiding","diff","Number","delay","max","setTimeout","parentNode","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","clearTimeout","type","rippleCancelShow","keyboardRipple","keyboardRippleShow","keys","includes","keyCode","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","modifiers","bindingValue","allowedKeys","enter","space","keyDownHandler","stop","addEventListener","passive","removeListeners","removeEventListener","mounted","unmounted","updated","oldValue","Ripple"],"sources":["../../../src/directives/ripple/index.ts"],"sourcesContent":["// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { isObject, keyCodes } from '@/util'\n\n// Types\nimport type { DirectiveBinding } from 'vue'\n\nconst stopSymbol = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [stopSymbol]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\ninterface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nexport interface RippleDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: boolean | {\n class?: string\n keys?: number[]\n }\n modifiers: {\n center?: boolean\n circle?: boolean\n stop?: boolean\n }\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple?.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el?._ripple?.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n })\n })\n },\n\n hide (el: HTMLElement | null) {\n if (!el?._ripple?.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any) {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleStop (e: VuetifyRippleEvent) {\n e[stopSymbol] = true\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element?._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent, keys: number[]) {\n if (!keyboardRipple && keys.includes(e.keyCode)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: RippleDirectiveBinding, wasEnabled: boolean) {\n const { value, modifiers } = binding\n\n const enabled = isRippleEnabled(value)\n if (!enabled) {\n ripples.hide(el)\n }\n\n el._ripple = el._ripple ?? {}\n el._ripple.enabled = enabled\n el._ripple.centered = modifiers.center\n el._ripple.circle = modifiers.circle\n\n const bindingValue = isObject(value) ? value : {}\n if (bindingValue.class) {\n el._ripple.class = bindingValue.class\n }\n\n const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space]\n el._ripple.keyDownHandler = (e: KeyboardEvent) => keyboardRippleShow(e, allowedKeys)\n\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, { passive: true })\n el.addEventListener('mousedown', rippleStop)\n return\n }\n\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys))\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n if (el._ripple?.keyDownHandler) {\n el.removeEventListener('keydown', el._ripple.keyDownHandler)\n }\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction mounted (el: HTMLElement, binding: RippleDirectiveBinding) {\n updateRipple(el, binding, false)\n}\n\nfunction unmounted (el: HTMLElement) {\n removeListeners(el)\n delete el._ripple\n}\n\nfunction updated (el: HTMLElement, binding: RippleDirectiveBinding) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Ripple\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.8.7-dev.2025-05-27";
19
+ export const version = "3.8.7-dev.2025-05-30";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";