vuetify 3.5.9 → 3.5.10

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 (147) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +106 -6
  3. package/dist/json/importMap-labs.json +8 -4
  4. package/dist/json/importMap.json +122 -122
  5. package/dist/json/tags.json +30 -0
  6. package/dist/json/web-types.json +582 -15
  7. package/dist/vuetify-labs.css +2456 -2414
  8. package/dist/vuetify-labs.d.ts +2711 -1996
  9. package/dist/vuetify-labs.esm.js +518 -40
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +518 -39
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +681 -676
  14. package/dist/vuetify.d.ts +2356 -2303
  15. package/dist/vuetify.esm.js +605 -330
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +604 -328
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +1106 -1098
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/index.d.mts +15 -15
  23. package/lib/components/VApp/index.d.mts +8 -8
  24. package/lib/components/VAppBar/index.d.mts +7 -7
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -4
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/index.d.mts +94 -94
  28. package/lib/components/VAvatar/index.d.mts +8 -8
  29. package/lib/components/VBadge/index.d.mts +7 -7
  30. package/lib/components/VBanner/index.d.mts +20 -20
  31. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  32. package/lib/components/VBreadcrumbs/index.d.mts +27 -26
  33. package/lib/components/VBtnGroup/index.d.mts +8 -8
  34. package/lib/components/VCard/index.d.mts +32 -32
  35. package/lib/components/VCarousel/index.d.mts +6 -6
  36. package/lib/components/VCheckbox/index.d.mts +44 -44
  37. package/lib/components/VChip/index.d.mts +7 -7
  38. package/lib/components/VCode/index.d.mts +8 -8
  39. package/lib/components/VCombobox/VCombobox.mjs +5 -4
  40. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  41. package/lib/components/VCombobox/index.d.mts +94 -94
  42. package/lib/components/VDataTable/index.d.mts +6 -6
  43. package/lib/components/VDatePicker/VDatePickerMonth.mjs +10 -4
  44. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  45. package/lib/components/VDatePicker/index.d.mts +10 -10
  46. package/lib/components/VDefaultsProvider/index.d.mts +8 -8
  47. package/lib/components/VDialog/index.d.mts +12 -6
  48. package/lib/components/VDivider/index.d.mts +8 -8
  49. package/lib/components/VExpansionPanel/index.d.mts +19 -19
  50. package/lib/components/VField/VField.css +2 -0
  51. package/lib/components/VField/VField.mjs +1 -1
  52. package/lib/components/VField/VField.mjs.map +1 -1
  53. package/lib/components/VField/VField.sass +2 -0
  54. package/lib/components/VField/index.d.mts +28 -28
  55. package/lib/components/VFileInput/index.d.mts +133 -133
  56. package/lib/components/VFooter/index.d.mts +8 -8
  57. package/lib/components/VGrid/index.d.mts +32 -32
  58. package/lib/components/VIcon/VIcon.css +4 -0
  59. package/lib/components/VIcon/VIcon.mjs +7 -3
  60. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  61. package/lib/components/VIcon/VIcon.sass +4 -0
  62. package/lib/components/VIcon/_variables.scss +1 -0
  63. package/lib/components/VIcon/index.d.mts +25 -16
  64. package/lib/components/VImg/index.d.mts +4 -4
  65. package/lib/components/VInput/index.d.mts +21 -21
  66. package/lib/components/VKbd/index.d.mts +8 -8
  67. package/lib/components/VLabel/index.d.mts +8 -8
  68. package/lib/components/VLayout/index.d.mts +16 -16
  69. package/lib/components/VLazy/index.d.mts +8 -8
  70. package/lib/components/VList/VListItem.mjs +2 -2
  71. package/lib/components/VList/VListItem.mjs.map +1 -1
  72. package/lib/components/VList/index.d.mts +48 -48
  73. package/lib/components/VLocaleProvider/index.d.mts +12 -12
  74. package/lib/components/VMain/index.d.mts +8 -8
  75. package/lib/components/VMenu/VMenu.mjs +3 -0
  76. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  77. package/lib/components/VMenu/index.d.mts +14 -8
  78. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +1 -1
  79. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +22 -8
  80. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  81. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +2 -1
  82. package/lib/components/VNavigationDrawer/index.d.mts +11 -11
  83. package/lib/components/VOtpInput/VOtpInput.mjs +7 -2
  84. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  85. package/lib/components/VOtpInput/index.d.mts +31 -31
  86. package/lib/components/VOverlay/VOverlay.mjs +8 -3
  87. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  88. package/lib/components/VOverlay/index.d.mts +3 -0
  89. package/lib/components/VOverlay/scrollStrategies.mjs +2 -2
  90. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  91. package/lib/components/VPagination/index.d.mts +7 -7
  92. package/lib/components/VProgressLinear/VProgressLinear.css +0 -1
  93. package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
  94. package/lib/components/VProgressLinear/index.d.mts +7 -7
  95. package/lib/components/VRadioGroup/index.d.mts +44 -44
  96. package/lib/components/VRangeSlider/index.d.mts +47 -47
  97. package/lib/components/VRating/index.d.mts +7 -7
  98. package/lib/components/VResponsive/index.d.mts +8 -8
  99. package/lib/components/VSelect/index.d.mts +94 -94
  100. package/lib/components/VSheet/index.d.mts +8 -8
  101. package/lib/components/VSkeletonLoader/index.d.mts +8 -8
  102. package/lib/components/VSlider/index.d.mts +47 -47
  103. package/lib/components/VSnackbar/index.d.mts +25 -19
  104. package/lib/components/VStepper/index.d.mts +41 -41
  105. package/lib/components/VSwitch/index.d.mts +39 -39
  106. package/lib/components/VSystemBar/index.d.mts +8 -8
  107. package/lib/components/VTabs/index.d.mts +15 -15
  108. package/lib/components/VTextField/index.d.mts +173 -173
  109. package/lib/components/VTextarea/index.d.mts +119 -119
  110. package/lib/components/VThemeProvider/index.d.mts +8 -8
  111. package/lib/components/VTimeline/index.d.mts +8 -8
  112. package/lib/components/VToolbar/index.d.mts +8 -8
  113. package/lib/components/VTooltip/index.d.mts +14 -8
  114. package/lib/components/VWindow/index.d.mts +10 -10
  115. package/lib/components/index.d.mts +1869 -1832
  116. package/lib/components/transitions/index.d.mts +128 -128
  117. package/lib/composables/date/adapters/vuetify.mjs +1 -1
  118. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  119. package/lib/composables/theme.mjs +1 -1
  120. package/lib/composables/theme.mjs.map +1 -1
  121. package/lib/entry-bundler.mjs +3 -2
  122. package/lib/entry-bundler.mjs.map +1 -1
  123. package/lib/framework.mjs +1 -1
  124. package/lib/framework.mjs.map +1 -1
  125. package/lib/index.d.mts +37 -36
  126. package/lib/labs/VCalendar/index.d.mts +32 -32
  127. package/lib/labs/VFab/index.d.mts +15 -15
  128. package/lib/labs/VNumberInput/VNumberInput.css +38 -0
  129. package/lib/labs/VNumberInput/VNumberInput.mjs +209 -0
  130. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -0
  131. package/lib/labs/VNumberInput/VNumberInput.sass +47 -0
  132. package/lib/labs/VNumberInput/_variables.scss +1 -0
  133. package/lib/labs/VNumberInput/index.d.mts +607 -0
  134. package/lib/labs/VNumberInput/index.mjs +2 -0
  135. package/lib/labs/VNumberInput/index.mjs.map +1 -0
  136. package/lib/labs/VPicker/index.d.mts +8 -8
  137. package/lib/labs/VSparkline/index.d.mts +7 -7
  138. package/lib/labs/VSpeedDial/VSpeedDial.mjs +9 -5
  139. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -1
  140. package/lib/labs/VSpeedDial/index.d.mts +120 -24
  141. package/lib/labs/VTreeview/index.d.mts +8 -8
  142. package/lib/labs/components.d.mts +788 -95
  143. package/lib/labs/components.mjs +1 -0
  144. package/lib/labs/components.mjs.map +1 -1
  145. package/lib/locale/no.mjs +1 -1
  146. package/lib/locale/no.mjs.map +1 -1
  147. package/package.json +2 -2
@@ -1655,9 +1655,9 @@ declare const VListImg: {
1655
1655
  } & {
1656
1656
  class?: any;
1657
1657
  } & {
1658
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1658
+ $children?: vue.VNodeChild | {
1659
1659
  default?: (() => vue.VNodeChild) | undefined;
1660
- };
1660
+ } | (() => vue.VNodeChild);
1661
1661
  'v-slots'?: {
1662
1662
  default?: false | (() => vue.VNodeChild) | undefined;
1663
1663
  } | undefined;
@@ -1671,9 +1671,9 @@ declare const VListImg: {
1671
1671
  } & {
1672
1672
  class?: any;
1673
1673
  } & {
1674
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1674
+ $children?: vue.VNodeChild | {
1675
1675
  default?: (() => vue.VNodeChild) | undefined;
1676
- };
1676
+ } | (() => vue.VNodeChild);
1677
1677
  'v-slots'?: {
1678
1678
  default?: false | (() => vue.VNodeChild) | undefined;
1679
1679
  } | undefined;
@@ -1699,9 +1699,9 @@ declare const VListImg: {
1699
1699
  } & {
1700
1700
  class?: any;
1701
1701
  } & {
1702
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1702
+ $children?: vue.VNodeChild | {
1703
1703
  default?: (() => vue.VNodeChild) | undefined;
1704
- };
1704
+ } | (() => vue.VNodeChild);
1705
1705
  'v-slots'?: {
1706
1706
  default?: false | (() => vue.VNodeChild) | undefined;
1707
1707
  } | undefined;
@@ -1722,9 +1722,9 @@ declare const VListImg: {
1722
1722
  } & {
1723
1723
  class?: any;
1724
1724
  } & {
1725
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1725
+ $children?: vue.VNodeChild | {
1726
1726
  default?: (() => vue.VNodeChild) | undefined;
1727
- };
1727
+ } | (() => vue.VNodeChild);
1728
1728
  'v-slots'?: {
1729
1729
  default?: false | (() => vue.VNodeChild) | undefined;
1730
1730
  } | undefined;
@@ -1771,9 +1771,9 @@ declare const VListItemAction: {
1771
1771
  } & {
1772
1772
  class?: any;
1773
1773
  } & {
1774
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1774
+ $children?: vue.VNodeChild | {
1775
1775
  default?: (() => vue.VNodeChild) | undefined;
1776
- };
1776
+ } | (() => vue.VNodeChild);
1777
1777
  'v-slots'?: {
1778
1778
  default?: false | (() => vue.VNodeChild) | undefined;
1779
1779
  } | undefined;
@@ -1787,9 +1787,9 @@ declare const VListItemAction: {
1787
1787
  } & {
1788
1788
  class?: any;
1789
1789
  } & {
1790
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1790
+ $children?: vue.VNodeChild | {
1791
1791
  default?: (() => vue.VNodeChild) | undefined;
1792
- };
1792
+ } | (() => vue.VNodeChild);
1793
1793
  'v-slots'?: {
1794
1794
  default?: false | (() => vue.VNodeChild) | undefined;
1795
1795
  } | undefined;
@@ -1819,9 +1819,9 @@ declare const VListItemAction: {
1819
1819
  } & {
1820
1820
  class?: any;
1821
1821
  } & {
1822
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1822
+ $children?: vue.VNodeChild | {
1823
1823
  default?: (() => vue.VNodeChild) | undefined;
1824
- };
1824
+ } | (() => vue.VNodeChild);
1825
1825
  'v-slots'?: {
1826
1826
  default?: false | (() => vue.VNodeChild) | undefined;
1827
1827
  } | undefined;
@@ -1844,9 +1844,9 @@ declare const VListItemAction: {
1844
1844
  } & {
1845
1845
  class?: any;
1846
1846
  } & {
1847
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1847
+ $children?: vue.VNodeChild | {
1848
1848
  default?: (() => vue.VNodeChild) | undefined;
1849
- };
1849
+ } | (() => vue.VNodeChild);
1850
1850
  'v-slots'?: {
1851
1851
  default?: false | (() => vue.VNodeChild) | undefined;
1852
1852
  } | undefined;
@@ -1897,9 +1897,9 @@ declare const VListItemMedia: {
1897
1897
  } & {
1898
1898
  class?: any;
1899
1899
  } & {
1900
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1900
+ $children?: vue.VNodeChild | {
1901
1901
  default?: (() => vue.VNodeChild) | undefined;
1902
- };
1902
+ } | (() => vue.VNodeChild);
1903
1903
  'v-slots'?: {
1904
1904
  default?: false | (() => vue.VNodeChild) | undefined;
1905
1905
  } | undefined;
@@ -1913,9 +1913,9 @@ declare const VListItemMedia: {
1913
1913
  } & {
1914
1914
  class?: any;
1915
1915
  } & {
1916
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1916
+ $children?: vue.VNodeChild | {
1917
1917
  default?: (() => vue.VNodeChild) | undefined;
1918
- };
1918
+ } | (() => vue.VNodeChild);
1919
1919
  'v-slots'?: {
1920
1920
  default?: false | (() => vue.VNodeChild) | undefined;
1921
1921
  } | undefined;
@@ -1945,9 +1945,9 @@ declare const VListItemMedia: {
1945
1945
  } & {
1946
1946
  class?: any;
1947
1947
  } & {
1948
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1948
+ $children?: vue.VNodeChild | {
1949
1949
  default?: (() => vue.VNodeChild) | undefined;
1950
- };
1950
+ } | (() => vue.VNodeChild);
1951
1951
  'v-slots'?: {
1952
1952
  default?: false | (() => vue.VNodeChild) | undefined;
1953
1953
  } | undefined;
@@ -1970,9 +1970,9 @@ declare const VListItemMedia: {
1970
1970
  } & {
1971
1971
  class?: any;
1972
1972
  } & {
1973
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
1973
+ $children?: vue.VNodeChild | {
1974
1974
  default?: (() => vue.VNodeChild) | undefined;
1975
- };
1975
+ } | (() => vue.VNodeChild);
1976
1976
  'v-slots'?: {
1977
1977
  default?: false | (() => vue.VNodeChild) | undefined;
1978
1978
  } | undefined;
@@ -2021,9 +2021,9 @@ declare const VListItemSubtitle: {
2021
2021
  } & {
2022
2022
  class?: any;
2023
2023
  } & {
2024
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2024
+ $children?: vue.VNodeChild | {
2025
2025
  default?: (() => vue.VNodeChild) | undefined;
2026
- };
2026
+ } | (() => vue.VNodeChild);
2027
2027
  'v-slots'?: {
2028
2028
  default?: false | (() => vue.VNodeChild) | undefined;
2029
2029
  } | undefined;
@@ -2037,9 +2037,9 @@ declare const VListItemSubtitle: {
2037
2037
  } & {
2038
2038
  class?: any;
2039
2039
  } & {
2040
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2040
+ $children?: vue.VNodeChild | {
2041
2041
  default?: (() => vue.VNodeChild) | undefined;
2042
- };
2042
+ } | (() => vue.VNodeChild);
2043
2043
  'v-slots'?: {
2044
2044
  default?: false | (() => vue.VNodeChild) | undefined;
2045
2045
  } | undefined;
@@ -2065,9 +2065,9 @@ declare const VListItemSubtitle: {
2065
2065
  } & {
2066
2066
  class?: any;
2067
2067
  } & {
2068
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2068
+ $children?: vue.VNodeChild | {
2069
2069
  default?: (() => vue.VNodeChild) | undefined;
2070
- };
2070
+ } | (() => vue.VNodeChild);
2071
2071
  'v-slots'?: {
2072
2072
  default?: false | (() => vue.VNodeChild) | undefined;
2073
2073
  } | undefined;
@@ -2088,9 +2088,9 @@ declare const VListItemSubtitle: {
2088
2088
  } & {
2089
2089
  class?: any;
2090
2090
  } & {
2091
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2091
+ $children?: vue.VNodeChild | {
2092
2092
  default?: (() => vue.VNodeChild) | undefined;
2093
- };
2093
+ } | (() => vue.VNodeChild);
2094
2094
  'v-slots'?: {
2095
2095
  default?: false | (() => vue.VNodeChild) | undefined;
2096
2096
  } | undefined;
@@ -2135,9 +2135,9 @@ declare const VListItemTitle: {
2135
2135
  } & {
2136
2136
  class?: any;
2137
2137
  } & {
2138
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2138
+ $children?: vue.VNodeChild | {
2139
2139
  default?: (() => vue.VNodeChild) | undefined;
2140
- };
2140
+ } | (() => vue.VNodeChild);
2141
2141
  'v-slots'?: {
2142
2142
  default?: false | (() => vue.VNodeChild) | undefined;
2143
2143
  } | undefined;
@@ -2151,9 +2151,9 @@ declare const VListItemTitle: {
2151
2151
  } & {
2152
2152
  class?: any;
2153
2153
  } & {
2154
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2154
+ $children?: vue.VNodeChild | {
2155
2155
  default?: (() => vue.VNodeChild) | undefined;
2156
- };
2156
+ } | (() => vue.VNodeChild);
2157
2157
  'v-slots'?: {
2158
2158
  default?: false | (() => vue.VNodeChild) | undefined;
2159
2159
  } | undefined;
@@ -2179,9 +2179,9 @@ declare const VListItemTitle: {
2179
2179
  } & {
2180
2180
  class?: any;
2181
2181
  } & {
2182
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2182
+ $children?: vue.VNodeChild | {
2183
2183
  default?: (() => vue.VNodeChild) | undefined;
2184
- };
2184
+ } | (() => vue.VNodeChild);
2185
2185
  'v-slots'?: {
2186
2186
  default?: false | (() => vue.VNodeChild) | undefined;
2187
2187
  } | undefined;
@@ -2202,9 +2202,9 @@ declare const VListItemTitle: {
2202
2202
  } & {
2203
2203
  class?: any;
2204
2204
  } & {
2205
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2205
+ $children?: vue.VNodeChild | {
2206
2206
  default?: (() => vue.VNodeChild) | undefined;
2207
- };
2207
+ } | (() => vue.VNodeChild);
2208
2208
  'v-slots'?: {
2209
2209
  default?: false | (() => vue.VNodeChild) | undefined;
2210
2210
  } | undefined;
@@ -2253,9 +2253,9 @@ declare const VListSubheader: {
2253
2253
  title?: string | undefined;
2254
2254
  class?: any;
2255
2255
  } & {
2256
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2256
+ $children?: vue.VNodeChild | {
2257
2257
  default?: (() => vue.VNodeChild) | undefined;
2258
- };
2258
+ } | (() => vue.VNodeChild);
2259
2259
  'v-slots'?: {
2260
2260
  default?: false | (() => vue.VNodeChild) | undefined;
2261
2261
  } | undefined;
@@ -2271,9 +2271,9 @@ declare const VListSubheader: {
2271
2271
  title?: string | undefined;
2272
2272
  class?: any;
2273
2273
  } & {
2274
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2274
+ $children?: vue.VNodeChild | {
2275
2275
  default?: (() => vue.VNodeChild) | undefined;
2276
- };
2276
+ } | (() => vue.VNodeChild);
2277
2277
  'v-slots'?: {
2278
2278
  default?: false | (() => vue.VNodeChild) | undefined;
2279
2279
  } | undefined;
@@ -2305,9 +2305,9 @@ declare const VListSubheader: {
2305
2305
  title?: string | undefined;
2306
2306
  class?: any;
2307
2307
  } & {
2308
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2308
+ $children?: vue.VNodeChild | {
2309
2309
  default?: (() => vue.VNodeChild) | undefined;
2310
- };
2310
+ } | (() => vue.VNodeChild);
2311
2311
  'v-slots'?: {
2312
2312
  default?: false | (() => vue.VNodeChild) | undefined;
2313
2313
  } | undefined;
@@ -2332,9 +2332,9 @@ declare const VListSubheader: {
2332
2332
  title?: string | undefined;
2333
2333
  class?: any;
2334
2334
  } & {
2335
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
2335
+ $children?: vue.VNodeChild | {
2336
2336
  default?: (() => vue.VNodeChild) | undefined;
2337
- };
2337
+ } | (() => vue.VNodeChild);
2338
2338
  'v-slots'?: {
2339
2339
  default?: false | (() => vue.VNodeChild) | undefined;
2340
2340
  } | undefined;
@@ -12,12 +12,12 @@ declare const VLocaleProvider: {
12
12
  rtl?: boolean | undefined;
13
13
  class?: any;
14
14
  locale?: string | undefined;
15
- messages?: Record<string, any> | undefined;
16
15
  fallbackLocale?: string | undefined;
16
+ messages?: Record<string, any> | undefined;
17
17
  } & {
18
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
18
+ $children?: vue.VNodeChild | {
19
19
  default?: (() => vue.VNodeChild) | undefined;
20
- };
20
+ } | (() => vue.VNodeChild);
21
21
  'v-slots'?: {
22
22
  default?: false | (() => vue.VNodeChild) | undefined;
23
23
  } | undefined;
@@ -29,12 +29,12 @@ declare const VLocaleProvider: {
29
29
  rtl?: boolean | undefined;
30
30
  class?: any;
31
31
  locale?: string | undefined;
32
- messages?: Record<string, any> | undefined;
33
32
  fallbackLocale?: string | undefined;
33
+ messages?: Record<string, any> | undefined;
34
34
  } & {
35
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
35
+ $children?: vue.VNodeChild | {
36
36
  default?: (() => vue.VNodeChild) | undefined;
37
- };
37
+ } | (() => vue.VNodeChild);
38
38
  'v-slots'?: {
39
39
  default?: false | (() => vue.VNodeChild) | undefined;
40
40
  } | undefined;
@@ -60,12 +60,12 @@ declare const VLocaleProvider: {
60
60
  rtl?: boolean | undefined;
61
61
  class?: any;
62
62
  locale?: string | undefined;
63
- messages?: Record<string, any> | undefined;
64
63
  fallbackLocale?: string | undefined;
64
+ messages?: Record<string, any> | undefined;
65
65
  } & {
66
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
66
+ $children?: vue.VNodeChild | {
67
67
  default?: (() => vue.VNodeChild) | undefined;
68
- };
68
+ } | (() => vue.VNodeChild);
69
69
  'v-slots'?: {
70
70
  default?: false | (() => vue.VNodeChild) | undefined;
71
71
  } | undefined;
@@ -84,12 +84,12 @@ declare const VLocaleProvider: {
84
84
  rtl?: boolean | undefined;
85
85
  class?: any;
86
86
  locale?: string | undefined;
87
- messages?: Record<string, any> | undefined;
88
87
  fallbackLocale?: string | undefined;
88
+ messages?: Record<string, any> | undefined;
89
89
  } & {
90
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
90
+ $children?: vue.VNodeChild | {
91
91
  default?: (() => vue.VNodeChild) | undefined;
92
- };
92
+ } | (() => vue.VNodeChild);
93
93
  'v-slots'?: {
94
94
  default?: false | (() => vue.VNodeChild) | undefined;
95
95
  } | undefined;
@@ -13,9 +13,9 @@ declare const VMain: {
13
13
  } & {
14
14
  class?: any;
15
15
  } & {
16
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
16
+ $children?: vue.VNodeChild | {
17
17
  default?: (() => vue.VNodeChild) | undefined;
18
- };
18
+ } | (() => vue.VNodeChild);
19
19
  'v-slots'?: {
20
20
  default?: false | (() => vue.VNodeChild) | undefined;
21
21
  } | undefined;
@@ -28,9 +28,9 @@ declare const VMain: {
28
28
  } & {
29
29
  class?: any;
30
30
  } & {
31
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
31
+ $children?: vue.VNodeChild | {
32
32
  default?: (() => vue.VNodeChild) | undefined;
33
- };
33
+ } | (() => vue.VNodeChild);
34
34
  'v-slots'?: {
35
35
  default?: false | (() => vue.VNodeChild) | undefined;
36
36
  } | undefined;
@@ -58,9 +58,9 @@ declare const VMain: {
58
58
  } & {
59
59
  class?: any;
60
60
  } & {
61
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
61
+ $children?: vue.VNodeChild | {
62
62
  default?: (() => vue.VNodeChild) | undefined;
63
- };
63
+ } | (() => vue.VNodeChild);
64
64
  'v-slots'?: {
65
65
  default?: false | (() => vue.VNodeChild) | undefined;
66
66
  } | undefined;
@@ -81,9 +81,9 @@ declare const VMain: {
81
81
  } & {
82
82
  class?: any;
83
83
  } & {
84
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
84
+ $children?: vue.VNodeChild | {
85
85
  default?: (() => vue.VNodeChild) | undefined;
86
- };
86
+ } | (() => vue.VNodeChild);
87
87
  'v-slots'?: {
88
88
  default?: false | (() => vue.VNodeChild) | undefined;
89
89
  } | undefined;
@@ -101,6 +101,9 @@ export const VMenu = genericComponent()({
101
101
  isActive.value = false;
102
102
  overlay.value?.activatorEl?.focus();
103
103
  }
104
+ } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
105
+ isActive.value = false;
106
+ parent?.closeParents();
104
107
  }
105
108
  }
106
109
  function onActivatorKeydown(e) {
@@ -1 +1 @@
1
- {"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","provide","ref","shallowRef","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","getUid","isClickInsideElement","omit","propsFactory","useRender","makeVMenuProps","id","String","closeDelay","closeOnContentClick","locationStrategy","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","uid","overlay","parent","openChildren","register","unregister","closeParents","e","setTimeout","contentEl","onFocusIn","before","relatedTarget","after","target","globalTop","document","includes","contains","focusable","focus","val","addEventListener","once","removeEventListener","onClickOutside","onKeydown","disabled","key","nextElement","shiftKey","el","tabIndex","activatorEl","onActivatorKeydown","preventDefault","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n getUid,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition as Component },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(0)\n provide(VMenuSymbol, {\n register () {\n ++openChildren.value\n },\n unregister () {\n --openChildren.value\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value &&\n (e == null || (e && !isClickInsideElement(e, overlay.value!.contentEl!)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n document.addEventListener('focusin', onFocusIn, { once: true })\n } else {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n }\n })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab') {\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n focusChild(el, 'prev')\n }\n } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n id={ id.value }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","provide","ref","shallowRef","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","getUid","isClickInsideElement","omit","propsFactory","useRender","makeVMenuProps","id","String","closeDelay","closeOnContentClick","locationStrategy","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","uid","overlay","parent","openChildren","register","unregister","closeParents","e","setTimeout","contentEl","onFocusIn","before","relatedTarget","after","target","globalTop","document","includes","contains","focusable","focus","val","addEventListener","once","removeEventListener","onClickOutside","onKeydown","disabled","key","nextElement","shiftKey","el","tabIndex","activatorEl","onActivatorKeydown","preventDefault","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n getUid,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition as Component },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(0)\n provide(VMenuSymbol, {\n register () {\n ++openChildren.value\n },\n unregister () {\n --openChildren.value\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value &&\n (e == null || (e && !isClickInsideElement(e, overlay.value!.contentEl!)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n document.addEventListener('focusin', onFocusIn, { once: true })\n } else {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n }\n })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab') {\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {\n isActive.value = false\n parent?.closeParents()\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n focusChild(el, 'prev')\n }\n } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n id={ id.value }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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"}
@@ -451,6 +451,7 @@ declare const VMenu: {
451
451
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
452
452
  }, {
453
453
  activatorEl: vue.Ref<HTMLElement | undefined>;
454
+ scrimEl: vue.Ref<HTMLElement | undefined>;
454
455
  target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
455
456
  animateClick: () => void;
456
457
  contentEl: vue.Ref<HTMLElement | undefined>;
@@ -598,15 +599,16 @@ declare const VMenu: {
598
599
  onAfterLeave?: (() => any) | undefined;
599
600
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
600
601
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
601
- }, "target" | "activatorEl" | "animateClick" | "contentEl" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
602
+ }, "target" | "activatorEl" | "scrimEl" | "animateClick" | "contentEl" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
602
603
  activatorEl: vue.Ref<HTMLElement | undefined>;
604
+ scrimEl: vue.Ref<HTMLElement | undefined>;
603
605
  target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
604
606
  animateClick: () => void;
605
607
  contentEl: vue.Ref<HTMLElement | undefined>;
606
608
  globalTop: Readonly<vue.Ref<boolean>>;
607
609
  localTop: vue.ComputedRef<boolean>;
608
610
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
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, {
611
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "contentClass" | "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, {
610
612
  'update:modelValue': (value: boolean) => boolean;
611
613
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
612
614
  location: Anchor;
@@ -1099,6 +1101,7 @@ declare const VMenu: {
1099
1101
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
1100
1102
  }, {
1101
1103
  activatorEl: vue.Ref<HTMLElement | undefined>;
1104
+ scrimEl: vue.Ref<HTMLElement | undefined>;
1102
1105
  target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
1103
1106
  animateClick: () => void;
1104
1107
  contentEl: vue.Ref<HTMLElement | undefined>;
@@ -1246,15 +1249,16 @@ declare const VMenu: {
1246
1249
  onAfterLeave?: (() => any) | undefined;
1247
1250
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1248
1251
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
1249
- }, "target" | "activatorEl" | "animateClick" | "contentEl" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
1252
+ }, "target" | "activatorEl" | "scrimEl" | "animateClick" | "contentEl" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
1250
1253
  activatorEl: vue.Ref<HTMLElement | undefined>;
1254
+ scrimEl: vue.Ref<HTMLElement | undefined>;
1251
1255
  target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
1252
1256
  animateClick: () => void;
1253
1257
  contentEl: vue.Ref<HTMLElement | undefined>;
1254
1258
  globalTop: Readonly<vue.Ref<boolean>>;
1255
1259
  localTop: vue.ComputedRef<boolean>;
1256
1260
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
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}`>, {}, {}, {}, {
1261
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "contentClass" | "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}`>, {}, {}, {}, {
1258
1262
  location: Anchor;
1259
1263
  origin: "auto" | Anchor | "overlap";
1260
1264
  transition: NonNullable<string | boolean | (vue.TransitionProps & {
@@ -1653,6 +1657,7 @@ declare const VMenu: {
1653
1657
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
1654
1658
  }, {
1655
1659
  activatorEl: vue.Ref<HTMLElement | undefined>;
1660
+ scrimEl: vue.Ref<HTMLElement | undefined>;
1656
1661
  target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
1657
1662
  animateClick: () => void;
1658
1663
  contentEl: vue.Ref<HTMLElement | undefined>;
@@ -1800,15 +1805,16 @@ declare const VMenu: {
1800
1805
  onAfterLeave?: (() => any) | undefined;
1801
1806
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1802
1807
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
1803
- }, "target" | "activatorEl" | "animateClick" | "contentEl" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
1808
+ }, "target" | "activatorEl" | "scrimEl" | "animateClick" | "contentEl" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
1804
1809
  activatorEl: vue.Ref<HTMLElement | undefined>;
1810
+ scrimEl: vue.Ref<HTMLElement | undefined>;
1805
1811
  target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
1806
1812
  animateClick: () => void;
1807
1813
  contentEl: vue.Ref<HTMLElement | undefined>;
1808
1814
  globalTop: Readonly<vue.Ref<boolean>>;
1809
1815
  localTop: vue.ComputedRef<boolean>;
1810
1816
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
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, {
1817
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "contentClass" | "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, {
1812
1818
  'update:modelValue': (value: boolean) => boolean;
1813
1819
  }, string, {
1814
1820
  location: Anchor;
@@ -1899,8 +1905,8 @@ declare const VMenu: {
1899
1905
  disabled: BooleanConstructor;
1900
1906
  class: vue.PropType<any>;
1901
1907
  theme: StringConstructor;
1902
- contentClass: null;
1903
1908
  modelValue: BooleanConstructor;
1909
+ contentClass: null;
1904
1910
  activator: vue.PropType<Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined>;
1905
1911
  locationStrategy: Omit<{
1906
1912
  type: vue.PropType<"connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
@@ -2014,8 +2020,8 @@ declare const VMenu: {
2014
2020
  disabled: BooleanConstructor;
2015
2021
  class: vue.PropType<any>;
2016
2022
  theme: StringConstructor;
2017
- contentClass: null;
2018
2023
  modelValue: BooleanConstructor;
2024
+ contentClass: null;
2019
2025
  activator: vue.PropType<Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined>;
2020
2026
  locationStrategy: Omit<{
2021
2027
  type: vue.PropType<"connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
@@ -74,7 +74,7 @@
74
74
  width: 100%;
75
75
  z-index: -1;
76
76
  }
77
- .v-navigation-drawer__img img {
77
+ .v-navigation-drawer__img img:not(.v-img__img) {
78
78
  height: inherit;
79
79
  object-fit: cover;
80
80
  width: inherit;
@@ -1,8 +1,10 @@
1
- import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
1
+ import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
2
  // Styles
3
3
  import "./VNavigationDrawer.css";
4
4
 
5
- // Composables
5
+ // Components
6
+ import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs";
7
+ import { VImg } from "../VImg/index.mjs"; // Composables
6
8
  import { useSticky } from "./sticky.mjs";
7
9
  import { useTouch } from "./touch.mjs";
8
10
  import { useRtl } from "../../composables/index.mjs";
@@ -220,12 +222,24 @@ export const VNavigationDrawer = genericComponent()({
220
222
  default: () => [hasImage && _createVNode("div", {
221
223
  "key": "image",
222
224
  "class": "v-navigation-drawer__img"
223
- }, [slots.image ? slots.image?.({
224
- image: props.image
225
- }) : _createVNode("img", {
226
- "src": props.image,
227
- "alt": ""
228
- }, null)]), slots.prepend && _createVNode("div", {
225
+ }, [!slots.image ? _createVNode(VImg, {
226
+ "key": "image-img",
227
+ "alt": "",
228
+ "cover": true,
229
+ "height": "inherit",
230
+ "src": props.image
231
+ }, null) : _createVNode(VDefaultsProvider, {
232
+ "key": "image-defaults",
233
+ "disabled": !props.image,
234
+ "defaults": {
235
+ VImg: {
236
+ alt: '',
237
+ cover: true,
238
+ height: 'inherit',
239
+ src: props.image
240
+ }
241
+ }
242
+ }, slots.image)]), slots.prepend && _createVNode("div", {
229
243
  "class": "v-navigation-drawer__prepend"
230
244
  }, [slots.prepend?.()]), _createVNode("div", {
231
245
  "class": "v-navigation-drawer__content"