vuetify 3.5.1 → 3.5.3

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 (87) hide show
  1. package/dist/json/attributes.json +39 -27
  2. package/dist/json/importMap.json +100 -100
  3. package/dist/json/tags.json +6 -3
  4. package/dist/json/web-types.json +101 -65
  5. package/dist/vuetify-labs.css +1717 -1712
  6. package/dist/vuetify-labs.d.ts +191 -92
  7. package/dist/vuetify-labs.esm.js +49 -30
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +49 -30
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1154 -1149
  12. package/dist/vuetify.d.ts +215 -116
  13. package/dist/vuetify.esm.js +49 -30
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +49 -30
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +25 -26
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/index.d.mts +12 -0
  21. package/lib/components/VAvatar/VAvatar.mjs +16 -2
  22. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  23. package/lib/components/VBottomSheet/index.d.mts +6 -0
  24. package/lib/components/VCheckbox/VCheckbox.css +3 -0
  25. package/lib/components/VCheckbox/VCheckbox.sass +3 -0
  26. package/lib/components/VCheckbox/_variables.scss +3 -0
  27. package/lib/components/VChip/VChip.css +0 -1
  28. package/lib/components/VChip/VChip.mjs +2 -1
  29. package/lib/components/VChip/VChip.mjs.map +1 -1
  30. package/lib/components/VChip/VChip.sass +0 -1
  31. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -1
  32. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  33. package/lib/components/VColorPicker/VColorPickerEdit.mjs +1 -1
  34. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  35. package/lib/components/VColorPicker/util/index.mjs +1 -1
  36. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  37. package/lib/components/VCombobox/index.d.mts +12 -0
  38. package/lib/components/VDatePicker/VDatePicker.mjs +1 -1
  39. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  40. package/lib/components/VDatePicker/VDatePickerMonth.mjs +2 -3
  41. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  42. package/lib/components/VDatePicker/index.d.mts +45 -63
  43. package/lib/components/VDialog/index.d.mts +21 -3
  44. package/lib/components/VLabel/VLabel.mjs +5 -4
  45. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  46. package/lib/components/VLabel/index.d.mts +6 -9
  47. package/lib/components/VList/VListItem.css +19 -6
  48. package/lib/components/VList/VListItem.sass +16 -3
  49. package/lib/components/VList/_variables.scss +6 -4
  50. package/lib/components/VMenu/VMenu.mjs +1 -0
  51. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  52. package/lib/components/VMenu/index.d.mts +21 -3
  53. package/lib/components/VOverlay/VOverlay.css +1 -1
  54. package/lib/components/VOverlay/VOverlay.mjs +4 -2
  55. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  56. package/lib/components/VOverlay/_variables.scss +1 -1
  57. package/lib/components/VOverlay/index.d.mts +6 -0
  58. package/lib/components/VOverlay/scrollStrategies.mjs +3 -0
  59. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  60. package/lib/components/VSelect/index.d.mts +12 -0
  61. package/lib/components/VSelectionControl/VSelectionControl.mjs +4 -2
  62. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  63. package/lib/components/VSnackbar/index.d.mts +21 -3
  64. package/lib/components/VSwitch/VSwitch.css +3 -0
  65. package/lib/components/VSwitch/VSwitch.sass +3 -0
  66. package/lib/components/VSwitch/_variables.scss +1 -0
  67. package/lib/components/VTable/VTable.css +15 -28
  68. package/lib/components/VTable/VTable.sass +6 -13
  69. package/lib/components/VTable/_variables.scss +1 -1
  70. package/lib/components/VTooltip/index.d.mts +21 -3
  71. package/lib/components/VWindow/VWindow.css +1 -1
  72. package/lib/components/VWindow/VWindow.sass +1 -1
  73. package/lib/components/index.d.mts +183 -84
  74. package/lib/composables/calendar.mjs +1 -1
  75. package/lib/composables/calendar.mjs.map +1 -1
  76. package/lib/composables/date/adapters/vuetify.mjs +2 -8
  77. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  78. package/lib/composables/group.mjs +4 -1
  79. package/lib/composables/group.mjs.map +1 -1
  80. package/lib/composables/validation.mjs +1 -1
  81. package/lib/composables/validation.mjs.map +1 -1
  82. package/lib/entry-bundler.mjs +1 -1
  83. package/lib/framework.mjs +1 -1
  84. package/lib/index.d.mts +32 -32
  85. package/lib/labs/VCalendar/index.d.mts +8 -8
  86. package/lib/labs/components.d.mts +8 -8
  87. package/package.json +2 -2
@@ -121,6 +121,7 @@ declare const VMenu: {
121
121
  maxWidth?: string | number | undefined;
122
122
  minHeight?: string | number | undefined;
123
123
  minWidth?: string | number | undefined;
124
+ opacity?: string | number | undefined;
124
125
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
125
126
  class?: any;
126
127
  theme?: string | undefined;
@@ -226,6 +227,7 @@ declare const VMenu: {
226
227
  maxWidth?: string | number | undefined;
227
228
  minHeight?: string | number | undefined;
228
229
  minWidth?: string | number | undefined;
230
+ opacity?: string | number | undefined;
229
231
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
230
232
  class?: any;
231
233
  theme?: string | undefined;
@@ -300,6 +302,7 @@ declare const VMenu: {
300
302
  maxWidth?: string | number | undefined;
301
303
  minHeight?: string | number | undefined;
302
304
  minWidth?: string | number | undefined;
305
+ opacity?: string | number | undefined;
303
306
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
304
307
  class?: any;
305
308
  theme?: string | undefined;
@@ -401,6 +404,7 @@ declare const VMenu: {
401
404
  maxWidth?: string | number | undefined;
402
405
  minHeight?: string | number | undefined;
403
406
  minWidth?: string | number | undefined;
407
+ opacity?: string | number | undefined;
404
408
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
405
409
  class?: any;
406
410
  theme?: string | undefined;
@@ -549,6 +553,7 @@ declare const VMenu: {
549
553
  maxWidth?: string | number | undefined;
550
554
  minHeight?: string | number | undefined;
551
555
  minWidth?: string | number | undefined;
556
+ opacity?: string | number | undefined;
552
557
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
553
558
  class?: any;
554
559
  theme?: string | undefined;
@@ -601,7 +606,7 @@ declare const VMenu: {
601
606
  globalTop: Readonly<vue.Ref<boolean>>;
602
607
  localTop: vue.ComputedRef<boolean>;
603
608
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
604
- }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
609
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
605
610
  'update:modelValue': (value: boolean) => boolean;
606
611
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
607
612
  location: Anchor;
@@ -639,6 +644,7 @@ declare const VMenu: {
639
644
  maxWidth?: string | number | undefined;
640
645
  minHeight?: string | number | undefined;
641
646
  minWidth?: string | number | undefined;
647
+ opacity?: string | number | undefined;
642
648
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
643
649
  class?: any;
644
650
  theme?: string | undefined;
@@ -763,6 +769,7 @@ declare const VMenu: {
763
769
  maxWidth?: string | number | undefined;
764
770
  minHeight?: string | number | undefined;
765
771
  minWidth?: string | number | undefined;
772
+ opacity?: string | number | undefined;
766
773
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
767
774
  class?: any;
768
775
  theme?: string | undefined;
@@ -868,6 +875,7 @@ declare const VMenu: {
868
875
  maxWidth?: string | number | undefined;
869
876
  minHeight?: string | number | undefined;
870
877
  minWidth?: string | number | undefined;
878
+ opacity?: string | number | undefined;
871
879
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
872
880
  class?: any;
873
881
  theme?: string | undefined;
@@ -942,6 +950,7 @@ declare const VMenu: {
942
950
  maxWidth?: string | number | undefined;
943
951
  minHeight?: string | number | undefined;
944
952
  minWidth?: string | number | undefined;
953
+ opacity?: string | number | undefined;
945
954
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
946
955
  class?: any;
947
956
  theme?: string | undefined;
@@ -1043,6 +1052,7 @@ declare const VMenu: {
1043
1052
  maxWidth?: string | number | undefined;
1044
1053
  minHeight?: string | number | undefined;
1045
1054
  minWidth?: string | number | undefined;
1055
+ opacity?: string | number | undefined;
1046
1056
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1047
1057
  class?: any;
1048
1058
  theme?: string | undefined;
@@ -1191,6 +1201,7 @@ declare const VMenu: {
1191
1201
  maxWidth?: string | number | undefined;
1192
1202
  minHeight?: string | number | undefined;
1193
1203
  minWidth?: string | number | undefined;
1204
+ opacity?: string | number | undefined;
1194
1205
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1195
1206
  class?: any;
1196
1207
  theme?: string | undefined;
@@ -1243,7 +1254,7 @@ declare const VMenu: {
1243
1254
  globalTop: Readonly<vue.Ref<boolean>>;
1244
1255
  localTop: vue.ComputedRef<boolean>;
1245
1256
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
1246
- }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, {}, {}, {}, {
1257
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, {}, {}, {}, {
1247
1258
  location: Anchor;
1248
1259
  origin: "auto" | Anchor | "overlap";
1249
1260
  transition: NonNullable<string | boolean | (vue.TransitionProps & {
@@ -1312,6 +1323,7 @@ declare const VMenu: {
1312
1323
  maxWidth?: string | number | undefined;
1313
1324
  minHeight?: string | number | undefined;
1314
1325
  minWidth?: string | number | undefined;
1326
+ opacity?: string | number | undefined;
1315
1327
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1316
1328
  class?: any;
1317
1329
  theme?: string | undefined;
@@ -1417,6 +1429,7 @@ declare const VMenu: {
1417
1429
  maxWidth?: string | number | undefined;
1418
1430
  minHeight?: string | number | undefined;
1419
1431
  minWidth?: string | number | undefined;
1432
+ opacity?: string | number | undefined;
1420
1433
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1421
1434
  class?: any;
1422
1435
  theme?: string | undefined;
@@ -1491,6 +1504,7 @@ declare const VMenu: {
1491
1504
  maxWidth?: string | number | undefined;
1492
1505
  minHeight?: string | number | undefined;
1493
1506
  minWidth?: string | number | undefined;
1507
+ opacity?: string | number | undefined;
1494
1508
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1495
1509
  class?: any;
1496
1510
  theme?: string | undefined;
@@ -1592,6 +1606,7 @@ declare const VMenu: {
1592
1606
  maxWidth?: string | number | undefined;
1593
1607
  minHeight?: string | number | undefined;
1594
1608
  minWidth?: string | number | undefined;
1609
+ opacity?: string | number | undefined;
1595
1610
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1596
1611
  class?: any;
1597
1612
  theme?: string | undefined;
@@ -1740,6 +1755,7 @@ declare const VMenu: {
1740
1755
  maxWidth?: string | number | undefined;
1741
1756
  minHeight?: string | number | undefined;
1742
1757
  minWidth?: string | number | undefined;
1758
+ opacity?: string | number | undefined;
1743
1759
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1744
1760
  class?: any;
1745
1761
  theme?: string | undefined;
@@ -1792,7 +1808,7 @@ declare const VMenu: {
1792
1808
  globalTop: Readonly<vue.Ref<boolean>>;
1793
1809
  localTop: vue.ComputedRef<boolean>;
1794
1810
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
1795
- }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
1811
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
1796
1812
  'update:modelValue': (value: boolean) => boolean;
1797
1813
  }, string, {
1798
1814
  location: Anchor;
@@ -1851,6 +1867,7 @@ declare const VMenu: {
1851
1867
  maxWidth: (StringConstructor | NumberConstructor)[];
1852
1868
  minHeight: (StringConstructor | NumberConstructor)[];
1853
1869
  minWidth: (StringConstructor | NumberConstructor)[];
1870
+ opacity: (StringConstructor | NumberConstructor)[];
1854
1871
  transition: Omit<{
1855
1872
  type: vue.PropType<string | boolean | (vue.TransitionProps & {
1856
1873
  component?: Component | undefined;
@@ -1965,6 +1982,7 @@ declare const VMenu: {
1965
1982
  maxWidth: (StringConstructor | NumberConstructor)[];
1966
1983
  minHeight: (StringConstructor | NumberConstructor)[];
1967
1984
  minWidth: (StringConstructor | NumberConstructor)[];
1985
+ opacity: (StringConstructor | NumberConstructor)[];
1968
1986
  transition: Omit<{
1969
1987
  type: vue.PropType<string | boolean | (vue.TransitionProps & {
1970
1988
  component?: Component | undefined;
@@ -45,7 +45,7 @@ html.v-overlay-scroll-blocked {
45
45
  border-radius: inherit;
46
46
  bottom: 0;
47
47
  left: 0;
48
- opacity: 0.32;
48
+ opacity: var(--v-overlay-opacity, 0.32);
49
49
  position: fixed;
50
50
  right: 0;
51
51
  top: 0;
@@ -50,6 +50,7 @@ export const makeVOverlayProps = propsFactory({
50
50
  contentClass: null,
51
51
  contentProps: null,
52
52
  disabled: Boolean,
53
+ opacity: [Number, String],
53
54
  noClickAnimation: Boolean,
54
55
  modelValue: Boolean,
55
56
  persistent: Boolean,
@@ -236,7 +237,7 @@ export const VOverlay = genericComponent()({
236
237
  ref: activatorRef,
237
238
  targetRef
238
239
  }, activatorEvents.value, props.activatorProps)
239
- }), !props.disabled && isMounted.value && hasContent.value && _createVNode(Teleport, {
240
+ }), isMounted.value && hasContent.value && _createVNode(Teleport, {
240
241
  "disabled": !teleportTarget.value,
241
242
  "to": teleportTarget.value
242
243
  }, {
@@ -247,12 +248,13 @@ export const VOverlay = genericComponent()({
247
248
  'v-overlay--contained': props.contained
248
249
  }, themeClasses.value, rtlClasses.value, props.class],
249
250
  "style": [stackStyles.value, {
251
+ '--v-overlay-opacity': props.opacity,
250
252
  top: convertToUnit(top.value)
251
253
  }, props.style],
252
254
  "ref": root
253
255
  }, scopeId, attrs), [_createVNode(Scrim, _mergeProps({
254
256
  "color": scrimColor,
255
- "modelValue": !!props.scrim && isActive.value
257
+ "modelValue": isActive.value && !!props.scrim
256
258
  }, scrimEvents.value), null), _createVNode(MaybeTransition, {
257
259
  "appear": true,
258
260
  "persisted": true,
@@ -1 +1 @@
1
- {"version":3,"file":"VOverlay.mjs","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","toRef","Transition","watch","animate","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","noClickAnimation","persistent","scrim","zIndex","Number","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","afterLeave","setup","_ref","slots","attrs","emit","model","isActive","get","set","v","teleportTarget","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","dimensionStyles","isMounted","scopeId","root","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any> }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value && globalTop.value\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n ref: activatorRef,\n targetRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { !props.disabled && isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n { top: convertToUnit(top.value) },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ !!props.scrim && isActive.value }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VOverlay.mjs","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","toRef","Transition","watch","animate","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","afterLeave","setup","_ref","slots","attrs","emit","model","isActive","get","set","v","teleportTarget","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","dimensionStyles","isMounted","scopeId","root","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any> }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value && globalTop.value\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n ref: activatorRef,\n targetRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  // Defaults
2
- $overlay-opacity: 0.32 !default;
2
+ $overlay-opacity: var(--v-overlay-opacity, 0.32) !default;
3
3
  $overlay-scrim-background: rgb(var(--v-theme-on-surface)) !default;
@@ -118,6 +118,7 @@ declare const VOverlay: {
118
118
  maxWidth?: string | number | undefined;
119
119
  minHeight?: string | number | undefined;
120
120
  minWidth?: string | number | undefined;
121
+ opacity?: string | number | undefined;
121
122
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
122
123
  class?: any;
123
124
  theme?: string | undefined;
@@ -207,6 +208,7 @@ declare const VOverlay: {
207
208
  maxWidth?: string | number | undefined;
208
209
  minHeight?: string | number | undefined;
209
210
  minWidth?: string | number | undefined;
211
+ opacity?: string | number | undefined;
210
212
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
211
213
  class?: any;
212
214
  theme?: string | undefined;
@@ -330,6 +332,7 @@ declare const VOverlay: {
330
332
  maxWidth?: string | number | undefined;
331
333
  minHeight?: string | number | undefined;
332
334
  minWidth?: string | number | undefined;
335
+ opacity?: string | number | undefined;
333
336
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
334
337
  class?: any;
335
338
  theme?: string | undefined;
@@ -446,6 +449,7 @@ declare const VOverlay: {
446
449
  maxWidth?: string | number | undefined;
447
450
  minHeight?: string | number | undefined;
448
451
  minWidth?: string | number | undefined;
452
+ opacity?: string | number | undefined;
449
453
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
450
454
  class?: any;
451
455
  theme?: string | undefined;
@@ -611,6 +615,7 @@ declare const VOverlay: {
611
615
  contentClass: null;
612
616
  contentProps: null;
613
617
  disabled: BooleanConstructor;
618
+ opacity: (StringConstructor | NumberConstructor)[];
614
619
  noClickAnimation: BooleanConstructor;
615
620
  modelValue: BooleanConstructor;
616
621
  persistent: BooleanConstructor;
@@ -693,6 +698,7 @@ declare const VOverlay: {
693
698
  contentClass: null;
694
699
  contentProps: null;
695
700
  disabled: BooleanConstructor;
701
+ opacity: (StringConstructor | NumberConstructor)[];
696
702
  noClickAnimation: BooleanConstructor;
697
703
  modelValue: BooleanConstructor;
698
704
  persistent: BooleanConstructor;
@@ -61,12 +61,15 @@ function blockScrollStrategy(data, props) {
61
61
  scrollElements.forEach((el, i) => {
62
62
  const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));
63
63
  const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));
64
+ const scrollBehavior = el.style.scrollBehavior;
65
+ el.style.scrollBehavior = 'auto';
64
66
  el.style.removeProperty('--v-body-scroll-x');
65
67
  el.style.removeProperty('--v-body-scroll-y');
66
68
  el.style.removeProperty('--v-scrollbar-offset');
67
69
  el.classList.remove('v-overlay-scroll-blocked');
68
70
  el.scrollLeft = -x;
69
71
  el.scrollTop = -y;
72
+ el.style.scrollBehavior = scrollBehavior;
70
73
  });
71
74
  if (scrollableParent) {
72
75
  data.root.value.classList.remove('v-overlay--scroll-blocked');
@@ -1 +1 @@
1
- {"version":3,"file":"scrollStrategies.mjs","names":["effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","active","run","onScroll","e","bindScroll","targetEl","contentEl","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n targetEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\ntype ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"scrollStrategies.mjs","names":["effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","active","run","onScroll","e","bindScroll","targetEl","contentEl","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","scrollBehavior","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n targetEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\ntype ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n\n el.style.scrollBehavior = scrollBehavior\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"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"}
@@ -646,6 +646,7 @@ declare const VSelect: {
646
646
  maxWidth?: string | number | undefined;
647
647
  minHeight?: string | number | undefined;
648
648
  minWidth?: string | number | undefined;
649
+ opacity?: string | number | undefined;
649
650
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
650
651
  class?: any;
651
652
  theme?: string | undefined;
@@ -719,6 +720,7 @@ declare const VSelect: {
719
720
  maxWidth?: string | number | undefined;
720
721
  minHeight?: string | number | undefined;
721
722
  minWidth?: string | number | undefined;
723
+ opacity?: string | number | undefined;
722
724
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
723
725
  class?: any;
724
726
  theme?: string | undefined;
@@ -1181,6 +1183,7 @@ declare const VSelect: {
1181
1183
  maxWidth?: string | number | undefined;
1182
1184
  minHeight?: string | number | undefined;
1183
1185
  minWidth?: string | number | undefined;
1186
+ opacity?: string | number | undefined;
1184
1187
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1185
1188
  class?: any;
1186
1189
  theme?: string | undefined;
@@ -1254,6 +1257,7 @@ declare const VSelect: {
1254
1257
  maxWidth?: string | number | undefined;
1255
1258
  minHeight?: string | number | undefined;
1256
1259
  minWidth?: string | number | undefined;
1260
+ opacity?: string | number | undefined;
1257
1261
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1258
1262
  class?: any;
1259
1263
  theme?: string | undefined;
@@ -1826,6 +1830,7 @@ declare const VSelect: {
1826
1830
  maxWidth?: string | number | undefined;
1827
1831
  minHeight?: string | number | undefined;
1828
1832
  minWidth?: string | number | undefined;
1833
+ opacity?: string | number | undefined;
1829
1834
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1830
1835
  class?: any;
1831
1836
  theme?: string | undefined;
@@ -1899,6 +1904,7 @@ declare const VSelect: {
1899
1904
  maxWidth?: string | number | undefined;
1900
1905
  minHeight?: string | number | undefined;
1901
1906
  minWidth?: string | number | undefined;
1907
+ opacity?: string | number | undefined;
1902
1908
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1903
1909
  class?: any;
1904
1910
  theme?: string | undefined;
@@ -2408,6 +2414,7 @@ declare const VSelect: {
2408
2414
  maxWidth?: string | number | undefined;
2409
2415
  minHeight?: string | number | undefined;
2410
2416
  minWidth?: string | number | undefined;
2417
+ opacity?: string | number | undefined;
2411
2418
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
2412
2419
  class?: any;
2413
2420
  theme?: string | undefined;
@@ -2481,6 +2488,7 @@ declare const VSelect: {
2481
2488
  maxWidth?: string | number | undefined;
2482
2489
  minHeight?: string | number | undefined;
2483
2490
  minWidth?: string | number | undefined;
2491
+ opacity?: string | number | undefined;
2484
2492
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
2485
2493
  class?: any;
2486
2494
  theme?: string | undefined;
@@ -3204,6 +3212,7 @@ declare const VSelect: {
3204
3212
  maxWidth?: string | number | undefined;
3205
3213
  minHeight?: string | number | undefined;
3206
3214
  minWidth?: string | number | undefined;
3215
+ opacity?: string | number | undefined;
3207
3216
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
3208
3217
  class?: any;
3209
3218
  theme?: string | undefined;
@@ -3277,6 +3286,7 @@ declare const VSelect: {
3277
3286
  maxWidth?: string | number | undefined;
3278
3287
  minHeight?: string | number | undefined;
3279
3288
  minWidth?: string | number | undefined;
3289
+ opacity?: string | number | undefined;
3280
3290
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
3281
3291
  class?: any;
3282
3292
  theme?: string | undefined;
@@ -3839,6 +3849,7 @@ declare const VSelect: {
3839
3849
  maxWidth?: string | number | undefined;
3840
3850
  minHeight?: string | number | undefined;
3841
3851
  minWidth?: string | number | undefined;
3852
+ opacity?: string | number | undefined;
3842
3853
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
3843
3854
  class?: any;
3844
3855
  theme?: string | undefined;
@@ -3912,6 +3923,7 @@ declare const VSelect: {
3912
3923
  maxWidth?: string | number | undefined;
3913
3924
  minHeight?: string | number | undefined;
3914
3925
  minWidth?: string | number | undefined;
3926
+ opacity?: string | number | undefined;
3915
3927
  target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
3916
3928
  class?: any;
3917
3929
  theme?: string | undefined;
@@ -125,6 +125,9 @@ export const VSelectionControl = genericComponent()({
125
125
  isFocused.value = false;
126
126
  isFocusVisible.value = false;
127
127
  }
128
+ function onClickLabel(e) {
129
+ e.stopPropagation();
130
+ }
128
131
  function onInput(e) {
129
132
  if (!isInteractive.value) return;
130
133
  if (props.readonly && group) {
@@ -191,8 +194,7 @@ export const VSelectionControl = genericComponent()({
191
194
  "icon": icon.value
192
195
  }, null), inputNode])]), [[_resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && _createVNode(VLabel, {
193
196
  "for": id.value,
194
- "clickable": true,
195
- "onClick": e => e.stopPropagation()
197
+ "onClick": onClickLabel
196
198
  }, {
197
199
  default: () => [label]
198
200
  })]);