@dimailn/vuetify 2.7.2-alpha28 → 2.7.2-alpha29

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 (255) hide show
  1. package/dist/vuetify.js +1416 -304
  2. package/dist/vuetify.js.map +1 -1
  3. package/dist/vuetify.min.css +1 -1
  4. package/dist/vuetify.min.js +2 -2
  5. package/es5/components/VAlert/VAlert.js +38 -8
  6. package/es5/components/VAlert/VAlert.js.map +1 -1
  7. package/es5/components/VAutocomplete/VAutocomplete.js +1 -0
  8. package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
  9. package/es5/components/VBadge/VBadge.js +28 -0
  10. package/es5/components/VBadge/VBadge.js.map +1 -1
  11. package/es5/components/VBanner/VBanner.js +34 -6
  12. package/es5/components/VBanner/VBanner.js.map +1 -1
  13. package/es5/components/VBottomNavigation/VBottomNavigation.js +25 -0
  14. package/es5/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  15. package/es5/components/VCarousel/VCarousel.js +28 -3
  16. package/es5/components/VCarousel/VCarousel.js.map +1 -1
  17. package/es5/components/VCheckbox/VSimpleCheckbox.js +30 -2
  18. package/es5/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
  19. package/es5/components/VColorPicker/VColorPicker.js +30 -2
  20. package/es5/components/VColorPicker/VColorPicker.js.map +1 -1
  21. package/es5/components/VCombobox/VCombobox.js +1 -0
  22. package/es5/components/VCombobox/VCombobox.js.map +1 -1
  23. package/es5/components/VDataIterator/VDataFooter.js +16 -7
  24. package/es5/components/VDataIterator/VDataFooter.js.map +1 -1
  25. package/es5/components/VDataIterator/VDataIterator.js +42 -47
  26. package/es5/components/VDataIterator/VDataIterator.js.map +1 -1
  27. package/es5/components/VDataTable/RowGroup.js +46 -15
  28. package/es5/components/VDataTable/RowGroup.js.map +1 -1
  29. package/es5/components/VDataTable/VDataTable.js +10 -18
  30. package/es5/components/VDataTable/VDataTable.js.map +1 -1
  31. package/es5/components/VDataTable/VDataTableHeader.js.map +1 -1
  32. package/es5/components/VDataTable/VDataTableHeaderDesktop.js +3 -0
  33. package/es5/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  34. package/es5/components/VDataTable/VDataTableHeaderMobile.js +28 -37
  35. package/es5/components/VDataTable/VDataTableHeaderMobile.js.map +1 -1
  36. package/es5/components/VDataTable/VEditDialog.js +3 -4
  37. package/es5/components/VDataTable/VEditDialog.js.map +1 -1
  38. package/es5/components/VDataTable/VSimpleTable.js +1 -1
  39. package/es5/components/VDataTable/VSimpleTable.js.map +1 -1
  40. package/es5/components/VDataTable/VVirtualTable.js +5 -5
  41. package/es5/components/VDataTable/VVirtualTable.js.map +1 -1
  42. package/es5/components/VDataTable/mixins/header.js +1 -1
  43. package/es5/components/VDataTable/mixins/header.js.map +1 -1
  44. package/es5/components/VDatePicker/VDatePicker.js +21 -9
  45. package/es5/components/VDatePicker/VDatePicker.js.map +1 -1
  46. package/es5/components/VDatePicker/VDatePickerHeader.js +24 -8
  47. package/es5/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  48. package/es5/components/VDatePicker/VDatePickerTitle.js +33 -8
  49. package/es5/components/VDatePicker/VDatePickerTitle.js.map +1 -1
  50. package/es5/components/VDatePicker/VDatePickerYears.js +38 -13
  51. package/es5/components/VDatePicker/VDatePickerYears.js.map +1 -1
  52. package/es5/components/VDatePicker/mixins/date-picker-table.js +33 -17
  53. package/es5/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
  54. package/es5/components/VInput/VInput.js +36 -8
  55. package/es5/components/VInput/VInput.js.map +1 -1
  56. package/es5/components/VList/VListGroup.js +47 -21
  57. package/es5/components/VList/VListGroup.js.map +1 -1
  58. package/es5/components/VList/VListItem.js +29 -4
  59. package/es5/components/VList/VListItem.js.map +1 -1
  60. package/es5/components/VMenu/VMenu.js +55 -30
  61. package/es5/components/VMenu/VMenu.js.map +1 -1
  62. package/es5/components/VMessages/VMessages.js +30 -7
  63. package/es5/components/VMessages/VMessages.js.map +1 -1
  64. package/es5/components/VNavigationDrawer/VNavigationDrawer.js +36 -9
  65. package/es5/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  66. package/es5/components/VOverlay/VOverlay.js +28 -0
  67. package/es5/components/VOverlay/VOverlay.js.map +1 -1
  68. package/es5/components/VPagination/VPagination.js +30 -6
  69. package/es5/components/VPagination/VPagination.js.map +1 -1
  70. package/es5/components/VProgressLinear/VProgressLinear.js +28 -0
  71. package/es5/components/VProgressLinear/VProgressLinear.js.map +1 -1
  72. package/es5/components/VRadioGroup/VRadioGroup.js +28 -0
  73. package/es5/components/VRadioGroup/VRadioGroup.js.map +1 -1
  74. package/es5/components/VRating/VRating.js +45 -17
  75. package/es5/components/VRating/VRating.js.map +1 -1
  76. package/es5/components/VSelect/VSelect.js +112 -84
  77. package/es5/components/VSelect/VSelect.js.map +1 -1
  78. package/es5/components/VSelect/VSelectList.js +58 -17
  79. package/es5/components/VSelect/VSelectList.js.map +1 -1
  80. package/es5/components/VSlider/VSlider.js +42 -16
  81. package/es5/components/VSlider/VSlider.js.map +1 -1
  82. package/es5/components/VSpeedDial/VSpeedDial.js +10 -8
  83. package/es5/components/VSpeedDial/VSpeedDial.js.map +1 -1
  84. package/es5/components/VTabs/VTabs.js +45 -17
  85. package/es5/components/VTabs/VTabs.js.map +1 -1
  86. package/es5/framework.js +1 -1
  87. package/es5/mixins/validatable/index.js +24 -0
  88. package/es5/mixins/validatable/index.js.map +1 -1
  89. package/es5/util/console.js +49 -18
  90. package/es5/util/console.js.map +1 -1
  91. package/es5/util/helpers.js +5 -1
  92. package/es5/util/helpers.js.map +1 -1
  93. package/lib/components/VAlert/VAlert.js +12 -6
  94. package/lib/components/VAlert/VAlert.js.map +1 -1
  95. package/lib/components/VAutocomplete/VAutocomplete.js +1 -0
  96. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  97. package/lib/components/VBadge/VBadge.js +11 -0
  98. package/lib/components/VBadge/VBadge.js.map +1 -1
  99. package/lib/components/VBanner/VBanner.js +11 -0
  100. package/lib/components/VBanner/VBanner.js.map +1 -1
  101. package/lib/components/VBottomNavigation/VBottomNavigation.js +7 -0
  102. package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  103. package/lib/components/VCarousel/VCarousel.js +7 -0
  104. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  105. package/lib/components/VCheckbox/VSimpleCheckbox.js +11 -0
  106. package/lib/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
  107. package/lib/components/VColorPicker/VColorPicker.js +12 -1
  108. package/lib/components/VColorPicker/VColorPicker.js.map +1 -1
  109. package/lib/components/VCombobox/VCombobox.js +1 -0
  110. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  111. package/lib/components/VDataIterator/VDataFooter.js +14 -7
  112. package/lib/components/VDataIterator/VDataFooter.js.map +1 -1
  113. package/lib/components/VDataIterator/VDataIterator.js +26 -31
  114. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  115. package/lib/components/VDataTable/RowGroup.js +30 -14
  116. package/lib/components/VDataTable/RowGroup.js.map +1 -1
  117. package/lib/components/VDataTable/VDataTable.js +8 -15
  118. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  119. package/lib/components/VDataTable/VDataTableHeader.js +1 -1
  120. package/lib/components/VDataTable/VDataTableHeader.js.map +1 -1
  121. package/lib/components/VDataTable/VDataTableHeaderDesktop.js +3 -0
  122. package/lib/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  123. package/lib/components/VDataTable/VDataTableHeaderMobile.js +17 -25
  124. package/lib/components/VDataTable/VDataTableHeaderMobile.js.map +1 -1
  125. package/lib/components/VDataTable/VEditDialog.js +3 -4
  126. package/lib/components/VDataTable/VEditDialog.js.map +1 -1
  127. package/lib/components/VDataTable/VSimpleTable.js +1 -1
  128. package/lib/components/VDataTable/VSimpleTable.js.map +1 -1
  129. package/lib/components/VDataTable/VVirtualTable.js +1 -2
  130. package/lib/components/VDataTable/VVirtualTable.js.map +1 -1
  131. package/lib/components/VDataTable/mixins/header.js +1 -1
  132. package/lib/components/VDataTable/mixins/header.js.map +1 -1
  133. package/lib/components/VDatePicker/VDatePicker.js +7 -1
  134. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  135. package/lib/components/VDatePicker/VDatePickerHeader.js +12 -1
  136. package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  137. package/lib/components/VDatePicker/VDatePickerTitle.js +11 -0
  138. package/lib/components/VDatePicker/VDatePickerTitle.js.map +1 -1
  139. package/lib/components/VDatePicker/VDatePickerYears.js +11 -1
  140. package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
  141. package/lib/components/VDatePicker/mixins/date-picker-table.js +12 -1
  142. package/lib/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
  143. package/lib/components/VInput/VInput.js +13 -3
  144. package/lib/components/VInput/VInput.js.map +1 -1
  145. package/lib/components/VList/VListGroup.js +16 -8
  146. package/lib/components/VList/VListGroup.js.map +1 -1
  147. package/lib/components/VList/VListItem.js +8 -1
  148. package/lib/components/VList/VListItem.js.map +1 -1
  149. package/lib/components/VMenu/VMenu.js +14 -3
  150. package/lib/components/VMenu/VMenu.js.map +1 -1
  151. package/lib/components/VMessages/VMessages.js +13 -2
  152. package/lib/components/VMessages/VMessages.js.map +1 -1
  153. package/lib/components/VNavigationDrawer/VNavigationDrawer.js +11 -2
  154. package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  155. package/lib/components/VOverlay/VOverlay.js +11 -0
  156. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  157. package/lib/components/VPagination/VPagination.js +11 -0
  158. package/lib/components/VPagination/VPagination.js.map +1 -1
  159. package/lib/components/VProgressLinear/VProgressLinear.js +11 -0
  160. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  161. package/lib/components/VRadioGroup/VRadioGroup.js +11 -0
  162. package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
  163. package/lib/components/VRating/VRating.js +11 -0
  164. package/lib/components/VRating/VRating.js.map +1 -1
  165. package/lib/components/VSelect/VSelect.js +52 -36
  166. package/lib/components/VSelect/VSelect.js.map +1 -1
  167. package/lib/components/VSelect/VSelectList.js +21 -3
  168. package/lib/components/VSelect/VSelectList.js.map +1 -1
  169. package/lib/components/VSlider/VSlider.js +11 -1
  170. package/lib/components/VSlider/VSlider.js.map +1 -1
  171. package/lib/components/VSpeedDial/VSpeedDial.js +7 -7
  172. package/lib/components/VSpeedDial/VSpeedDial.js.map +1 -1
  173. package/lib/components/VTabs/VTabs.js +11 -0
  174. package/lib/components/VTabs/VTabs.js.map +1 -1
  175. package/lib/framework.js +1 -1
  176. package/lib/mixins/validatable/index.js +7 -1
  177. package/lib/mixins/validatable/index.js.map +1 -1
  178. package/lib/util/console.js +47 -17
  179. package/lib/util/console.js.map +1 -1
  180. package/lib/util/helpers.js +5 -1
  181. package/lib/util/helpers.js.map +1 -1
  182. package/package.json +1 -1
  183. package/src/components/VAlert/VAlert.ts +17 -7
  184. package/src/components/VAlert/__tests__/VAlert.spec.ts +78 -50
  185. package/src/components/VAlert/__tests__/__snapshots__/VAlert.spec.ts.snap +16 -18
  186. package/src/components/VAutocomplete/VAutocomplete.ts +22 -0
  187. package/src/components/VAutocomplete/__tests__/VAutocomplete.spec.ts +51 -53
  188. package/src/components/VAutocomplete/__tests__/VAutocomplete2.spec.ts +77 -48
  189. package/src/components/VAutocomplete/__tests__/VAutocomplete3.spec.ts +101 -39
  190. package/src/components/VBadge/VBadge.ts +13 -0
  191. package/src/components/VBanner/VBanner.ts +13 -0
  192. package/src/components/VBottomNavigation/VBottomNavigation.ts +10 -0
  193. package/src/components/VCarousel/VCarousel.ts +11 -0
  194. package/src/components/VCheckbox/VSimpleCheckbox.ts +13 -0
  195. package/src/components/VColorPicker/VColorPicker.ts +13 -0
  196. package/src/components/VCombobox/VCombobox.ts +23 -0
  197. package/src/components/VCombobox/__tests__/VCombobox-multiple.spec.ts +118 -110
  198. package/src/components/VCombobox/__tests__/VCombobox.spec.ts +119 -93
  199. package/src/components/VDataIterator/VDataFooter.ts +14 -9
  200. package/src/components/VDataIterator/VDataIterator.ts +46 -34
  201. package/src/components/VDataIterator/__tests__/VDataFooter.spec.ts +38 -39
  202. package/src/components/VDataIterator/__tests__/VDataIterator.spec.ts +90 -122
  203. package/src/components/VDataIterator/__tests__/__snapshots__/VDataFooter.spec.ts.snap +92 -82
  204. package/src/components/VDataIterator/__tests__/__snapshots__/VDataIterator.spec.ts.snap +79 -69
  205. package/src/components/VDataTable/RowGroup.ts +33 -16
  206. package/src/components/VDataTable/VDataTable.ts +8 -15
  207. package/src/components/VDataTable/VDataTableHeader.ts +2 -2
  208. package/src/components/VDataTable/VDataTableHeaderDesktop.ts +4 -0
  209. package/src/components/VDataTable/VDataTableHeaderMobile.ts +16 -25
  210. package/src/components/VDataTable/VEditDialog.ts +3 -3
  211. package/src/components/VDataTable/VSimpleTable.ts +2 -3
  212. package/src/components/VDataTable/VVirtualTable.ts +1 -2
  213. package/src/components/VDataTable/__tests__/VDataTable.spec.ts +18 -22
  214. package/src/components/VDataTable/__tests__/VDataTableHeader.spec.ts +39 -29
  215. package/src/components/VDataTable/__tests__/VEditDialog.spec.ts +7 -2
  216. package/src/components/VDataTable/__tests__/VSimpleTable.spec.ts +11 -16
  217. package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +2543 -2086
  218. package/src/components/VDataTable/__tests__/__snapshots__/VDataTableHeader.spec.ts.snap +115 -144
  219. package/src/components/VDataTable/__tests__/__snapshots__/VEditDialog.spec.ts.snap +4 -12
  220. package/src/components/VDataTable/__tests__/__snapshots__/VSimpleTable.spec.ts.snap +22 -18
  221. package/src/components/VDataTable/mixins/__tests__/__snapshots__/header.spec.ts.snap +9 -12
  222. package/src/components/VDataTable/mixins/__tests__/header.spec.ts +15 -15
  223. package/src/components/VDataTable/mixins/header.ts +1 -1
  224. package/src/components/VDatePicker/VDatePicker.ts +11 -1
  225. package/src/components/VDatePicker/VDatePickerHeader.ts +13 -0
  226. package/src/components/VDatePicker/VDatePickerTitle.ts +12 -0
  227. package/src/components/VDatePicker/VDatePickerYears.ts +13 -0
  228. package/src/components/VDatePicker/mixins/date-picker-table.ts +13 -0
  229. package/src/components/VInput/VInput.ts +18 -5
  230. package/src/components/VList/VListGroup.ts +22 -10
  231. package/src/components/VList/VListItem.ts +10 -1
  232. package/src/components/VMenu/VMenu.ts +21 -3
  233. package/src/components/VMenu/__tests__/VMenu.spec.ts +90 -69
  234. package/src/components/VMenu/__tests__/__snapshots__/VMenu.spec.ts.snap +3 -5
  235. package/src/components/VMessages/VMessages.ts +15 -4
  236. package/src/components/VMessages/__tests__/VMessages.spec.ts +43 -5
  237. package/src/components/VMessages/__tests__/__snapshots__/VMessages.spec.ts.snap +16 -25
  238. package/src/components/VNavigationDrawer/VNavigationDrawer.ts +21 -11
  239. package/src/components/VOverlay/VOverlay.ts +12 -0
  240. package/src/components/VPagination/VPagination.ts +23 -9
  241. package/src/components/VProgressLinear/VProgressLinear.ts +13 -0
  242. package/src/components/VRadioGroup/VRadioGroup.ts +14 -0
  243. package/src/components/VRating/VRating.ts +13 -0
  244. package/src/components/VSelect/VSelect.ts +60 -43
  245. package/src/components/VSelect/VSelectList.ts +29 -8
  246. package/src/components/VSlider/VSlider.ts +14 -1
  247. package/src/components/VSpeedDial/VSpeedDial.ts +7 -8
  248. package/src/components/VSpeedDial/__tests__/VSpeedDial.spec.ts +21 -13
  249. package/src/components/VSpeedDial/__tests__/__snapshots__/VSpeedDial.spec.ts.snap +6 -6
  250. package/src/components/VTabs/VTabs.ts +14 -0
  251. package/src/mixins/validatable/index.ts +11 -1
  252. package/src/util/__tests__/console.spec.ts +124 -11
  253. package/src/util/__tests__/helpers.spec.ts +59 -31
  254. package/src/util/console.ts +43 -24
  255. package/src/util/helpers.ts +8 -4
@@ -10,6 +10,7 @@ import Toggleable from './../../mixins/toggleable'
10
10
  // Utilities
11
11
  import mixins from '../../util/mixins'
12
12
  import { getSlot } from '../../util/helpers'
13
+ import { breaking } from '../../util/console'
13
14
 
14
15
  // Types
15
16
  import { VNode } from 'vue'
@@ -75,6 +76,17 @@ export default mixins(
75
76
  },
76
77
  },
77
78
 
79
+ created () {
80
+ const breakingProps = [
81
+ ['value', 'modelValue'],
82
+ ]
83
+
84
+ /* istanbul ignore next */
85
+ breakingProps.forEach(([original, replacement]) => {
86
+ if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)
87
+ })
88
+ },
89
+
78
90
  methods: {
79
91
  genContent () {
80
92
  return h('div', {
@@ -1,4 +1,4 @@
1
- import {h, withDirectives} from 'vue'
1
+ import { h, withDirectives } from 'vue'
2
2
  import './VPagination.sass'
3
3
 
4
4
  import VIcon from '../VIcon'
@@ -13,9 +13,10 @@ import Themeable from '../../mixins/themeable'
13
13
 
14
14
  // Utilities
15
15
  import mixins from '../../util/mixins'
16
+ import { breaking } from '../../util/console'
16
17
 
17
18
  // Types
18
- import { VNode, CreateElement, VNodeChildrenArrayContents } from 'vue'
19
+ import type { VNode, CreateElement, VNodeChildrenArrayContents } from 'vue'
19
20
 
20
21
  /* @vue/component */
21
22
  export default mixins(
@@ -25,7 +26,6 @@ export default mixins(
25
26
  ).extend({
26
27
  name: 'v-pagination',
27
28
 
28
-
29
29
  props: {
30
30
  circle: Boolean,
31
31
  disabled: Boolean,
@@ -81,7 +81,7 @@ export default mixins(
81
81
  },
82
82
 
83
83
  computed: {
84
- value() {
84
+ value () {
85
85
  return this.modelValue
86
86
  },
87
87
  classes (): object {
@@ -139,6 +139,18 @@ export default mixins(
139
139
  },
140
140
  },
141
141
 
142
+ created () {
143
+ const breakingProps = [
144
+ ['value', 'modelValue'],
145
+ ['onInput', 'onUpdate:modelValue'],
146
+ ]
147
+
148
+ /* istanbul ignore next */
149
+ breakingProps.forEach(([original, replacement]) => {
150
+ if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)
151
+ })
152
+ },
153
+
142
154
  watch: {
143
155
  value () {
144
156
  this.init()
@@ -226,14 +238,14 @@ export default mixins(
226
238
  },
227
239
  genList (h: CreateElement, children: VNodeChildrenArrayContents): VNode {
228
240
  return withDirectives(h('ul', {
229
- class: this.classes
241
+ class: this.classes,
230
242
  }, children), [
231
243
  [
232
244
  Resize,
233
245
  this.onResize,
234
246
  '',
235
- { quiet: true }
236
- ]
247
+ { quiet: true },
248
+ ],
237
249
  ])
238
250
  },
239
251
  },
@@ -244,13 +256,15 @@ export default mixins(
244
256
  this.$vuetify.rtl ? this.nextIcon : this.prevIcon,
245
257
  this.value <= 1,
246
258
  this.previous,
247
- this.$vuetify.lang.t(this.previousAriaLabel)),
259
+ this.$vuetify.lang.t(this.previousAriaLabel),
260
+ ),
248
261
  this.genItems(h),
249
262
  this.genIcon(h,
250
263
  this.$vuetify.rtl ? this.prevIcon : this.nextIcon,
251
264
  this.value >= this.length,
252
265
  this.next,
253
- this.$vuetify.lang.t(this.nextAriaLabel)),
266
+ this.$vuetify.lang.t(this.nextAriaLabel),
267
+ ),
254
268
  ]
255
269
 
256
270
  return h('nav', {
@@ -19,6 +19,7 @@ import Themeable from '../../mixins/themeable'
19
19
  // Utilities
20
20
  import { convertToUnit, getSlot } from '../../util/helpers'
21
21
  import mixins from '../../util/mixins'
22
+ import { breaking } from '../../util/console'
22
23
 
23
24
  // Types
24
25
  import { VNode } from 'vue'
@@ -191,6 +192,18 @@ export default baseMixins.extend({
191
192
  },
192
193
  },
193
194
 
195
+ created () {
196
+ const breakingProps = [
197
+ ['value', 'modelValue'],
198
+ ['onChange', 'onUpdate:modelValue'],
199
+ ]
200
+
201
+ /* istanbul ignore next */
202
+ breakingProps.forEach(([original, replacement]) => {
203
+ if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)
204
+ })
205
+ },
206
+
194
207
  watch: {
195
208
  modelValue (val) {
196
209
  this.internalLazyValue = val
@@ -9,6 +9,7 @@ import { BaseItemGroup } from '../VItemGroup/VItemGroup'
9
9
  // Utilities
10
10
  import { mergeProps, h } from 'vue'
11
11
  import mixins from '../../util/mixins'
12
+ import { breaking } from '../../util/console'
12
13
 
13
14
  // Types
14
15
  import type { PropType } from 'vue'
@@ -56,6 +57,19 @@ export default baseMixins.extend({
56
57
  },
57
58
  },
58
59
 
60
+ created () {
61
+ const breakingProps = [
62
+ ['value', 'modelValue'],
63
+ ['onInput', 'onUpdate:modelValue'],
64
+ ['onChange', 'onUpdate:modelValue'],
65
+ ]
66
+
67
+ /* istanbul ignore next */
68
+ breakingProps.forEach(([original, replacement]) => {
69
+ if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)
70
+ })
71
+ },
72
+
59
73
  methods: {
60
74
  genDefaultSlot () {
61
75
  return h('div', {
@@ -16,6 +16,7 @@ import Ripple from '../../directives/ripple'
16
16
  // Utilities
17
17
  import { createRange } from '../../util/helpers'
18
18
  import mixins from '../../util/mixins'
19
+ import { breaking } from '../../util/console'
19
20
 
20
21
  // Types
21
22
  import { VNode, VNodeDirective, VNodeChildren } from 'vue'
@@ -127,6 +128,18 @@ export default mixins(
127
128
  },
128
129
  },
129
130
 
131
+ created () {
132
+ const breakingProps = [
133
+ ['value', 'modelValue'],
134
+ ['onInput', 'onUpdate:modelValue'],
135
+ ]
136
+
137
+ /* istanbul ignore next */
138
+ breakingProps.forEach(([original, replacement]) => {
139
+ if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)
140
+ })
141
+ },
142
+
130
143
  watch: {
131
144
  internalValue (val) {
132
145
  val !== this.modelValue && this.$emit('update:modelValue', val)
@@ -22,7 +22,7 @@ import ClickOutside from '../../directives/click-outside'
22
22
  // Utilities
23
23
  import mergeData from '../../util/mergeData'
24
24
  import { getPropertyFromItem, getObjectValueByPath, keyCodes, normalizeAttrs } from '../../util/helpers'
25
- import { consoleError } from '../../util/console'
25
+ import { consoleError, breaking } from '../../util/console'
26
26
 
27
27
  // Types
28
28
  import mixins from '../../util/mixins'
@@ -72,6 +72,7 @@ export default baseMixins.extend({
72
72
  type: null as unknown as PropType<string | boolean | Element | VNode>,
73
73
  default: false,
74
74
  },
75
+ auto: Boolean,
75
76
  cacheItems: Boolean,
76
77
  chips: Boolean,
77
78
  clearable: Boolean,
@@ -103,6 +104,7 @@ export default baseMixins.extend({
103
104
  type: [String, Array, Object],
104
105
  default: () => defaultMenuProps,
105
106
  },
107
+ minWidth: [String, Number],
106
108
  multiple: Boolean,
107
109
  openOnClear: Boolean,
108
110
  returnObject: Boolean,
@@ -172,8 +174,8 @@ export default baseMixins.extend({
172
174
  handler: () => this.isFocused && this.blur(),
173
175
  closeConditional: this.closeConditional,
174
176
  include: () => this.getOpenDependentElements(),
175
- }
176
- ]
177
+ },
178
+ ],
177
179
  ]
178
180
  },
179
181
  dynamicHeight () {
@@ -251,42 +253,31 @@ export default baseMixins.extend({
251
253
  eager: this.eager,
252
254
  modelValue: this.menuCanShow && this.isMenuActive,
253
255
  nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int
256
+ auto: this.auto,
257
+ minWidth: this.minWidth,
254
258
  ...normalisedProps,
255
259
  }
256
260
  },
257
261
  },
258
262
 
259
- mounted () {
260
- this.$nextTick(() => {
261
- if (this.$el && this.$el.attributes) {
262
- const attrs = this.$el.attributes
263
- for (let i = 0; i < attrs.length; i++) {
264
- const attr = attrs[i]
265
- if (attr.name.startsWith('data-v-')) {
266
- this.detectedScopeId = attr.name
267
- // scopeId найден и сохранен для использования в dropdown
268
- break
269
- }
270
- }
271
- }
272
- })
273
- },
274
-
275
263
  watch: {
276
- internalValue (val) {
277
- this.initialValue = val
278
- this.setSelectedItems()
264
+ internalValue: {
265
+ handler (val) {
266
+ this.initialValue = val
267
+ this.setSelectedItems()
279
268
 
280
- if (this.multiple) {
281
- this.$nextTick(() => {
282
- this.$refs.menu?.updateDimensions()
283
- })
284
- }
285
- if (this.hideSelected) {
286
- this.$nextTick(() => {
287
- this.onScroll()
288
- })
289
- }
269
+ if (this.multiple) {
270
+ this.$nextTick(() => {
271
+ this.$refs.menu?.updateDimensions()
272
+ })
273
+ }
274
+ if (this.hideSelected) {
275
+ this.$nextTick(() => {
276
+ this.onScroll()
277
+ })
278
+ }
279
+ },
280
+ deep: true,
290
281
  },
291
282
  isMenuActive (val) {
292
283
  window.setTimeout(() => this.onMenuActiveChange(val))
@@ -308,6 +299,34 @@ export default baseMixins.extend({
308
299
  },
309
300
  },
310
301
 
302
+ created () {
303
+ const breakingProps = [
304
+ ['value', 'modelValue'],
305
+ ['onInput', 'onUpdate:modelValue'],
306
+ ]
307
+
308
+ /* istanbul ignore next */
309
+ breakingProps.forEach(([original, replacement]) => {
310
+ if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)
311
+ })
312
+ },
313
+
314
+ mounted () {
315
+ this.$nextTick(() => {
316
+ if (this.$el && this.$el.attributes) {
317
+ const attrs = this.$el.attributes
318
+ for (let i = 0; i < attrs.length; i++) {
319
+ const attr = attrs[i]
320
+ if (attr.name.startsWith('data-v-')) {
321
+ this.detectedScopeId = attr.name
322
+ // scopeId найден и сохранен для использования в dropdown
323
+ break
324
+ }
325
+ }
326
+ }
327
+ })
328
+ },
329
+
311
330
  methods: {
312
331
  /** @public */
313
332
  blur (e?: Event) {
@@ -436,7 +455,7 @@ export default baseMixins.extend({
436
455
  return [
437
456
  this.genFieldset(),
438
457
  withDirectives(h('div', {
439
- class: 'v-select__slot'
458
+ class: 'v-select__slot',
440
459
  }, [
441
460
  this.genLabel(),
442
461
  this.prefix ? this.genAffix('prefix') : null,
@@ -464,7 +483,7 @@ export default baseMixins.extend({
464
483
  iconChild.props = mergeData(iconChild.props || {}, {
465
484
  tabindex: hasListeners ? '-1' : undefined,
466
485
  'aria-hidden': 'true',
467
- 'aria-label': undefined
486
+ 'aria-label': undefined,
468
487
  })
469
488
  }
470
489
 
@@ -505,9 +524,9 @@ export default baseMixins.extend({
505
524
  }
506
525
 
507
526
  return h('input', {
508
- value: value,
527
+ value,
509
528
  type: 'hidden',
510
- name: this.$attrs.name
529
+ name: this.$attrs.name,
511
530
  })
512
531
  },
513
532
  genInputSlot (): VNode {
@@ -518,7 +537,7 @@ export default baseMixins.extend({
518
537
  'aria-haspopup': 'listbox',
519
538
  'aria-expanded': String(this.isMenuActive),
520
539
  'aria-owns': this.computedOwns,
521
- ...render.props
540
+ ...render.props,
522
541
  }
523
542
 
524
543
  return render
@@ -536,8 +555,8 @@ export default baseMixins.extend({
536
555
  .filter(slotName => this.$slots[slotName])
537
556
  .map(slotName => [
538
557
  slotName,
539
- this.$slots[slotName]
540
- ]
558
+ this.$slots[slotName],
559
+ ]
541
560
  ))
542
561
  // Requires destructuring due to Vue
543
562
  // modifying the `on` property when passed
@@ -545,7 +564,7 @@ export default baseMixins.extend({
545
564
  return h(VSelectList, {
546
565
  ...this.listData,
547
566
  ...this.listAttrs,
548
- }, {...slots, item: this.$slots.item})
567
+ }, { ...slots, item: this.$slots.item })
549
568
  },
550
569
  genMenu (): VNode {
551
570
  const props = this.$_menuProps as any
@@ -568,7 +587,7 @@ export default baseMixins.extend({
568
587
  return h(VMenu, {
569
588
  role: undefined,
570
589
  ...props,
571
- onInput: (val: boolean) => {
590
+ 'onUpdate:modelValue': (val: boolean) => {
572
591
  this.isMenuActive = val
573
592
  this.isFocused = val
574
593
  },
@@ -915,8 +934,6 @@ export default baseMixins.extend({
915
934
  setValue (value: any) {
916
935
  if (!this.valueComparator(value, this.internalValue)) {
917
936
  this.internalValue = value
918
- this.$emit('update:modelValue', value)
919
- // Note: change event is already emitted by VInput's internalValue setter
920
937
  }
921
938
  },
922
939
  isAppendInner (target: any) {
@@ -19,6 +19,7 @@ import Themeable from '../../mixins/themeable'
19
19
 
20
20
  // Helpers
21
21
  import { getPropertyFromItem } from '../../util/helpers'
22
+ import { breaking } from '../../util/console'
22
23
 
23
24
  // Types
24
25
  import mixins from '../../util/mixins'
@@ -80,6 +81,18 @@ export default mixins(Colorable, Themeable).extend({
80
81
  },
81
82
  },
82
83
 
84
+ created () {
85
+ const breakingProps = [
86
+ ['value', 'modelValue'],
87
+ ['onInput', 'onUpdate:modelValue'],
88
+ ]
89
+
90
+ /* istanbul ignore next */
91
+ breakingProps.forEach(([original, replacement]) => {
92
+ if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)
93
+ })
94
+ },
95
+
83
96
  methods: {
84
97
  genAction (item: object, inputValue: any): VNode {
85
98
  return h(VListItemAction, {}, () => [
@@ -87,7 +100,7 @@ export default mixins(Colorable, Themeable).extend({
87
100
  color: this.color,
88
101
  modelValue: inputValue,
89
102
  ripple: false,
90
- onInput: () => this.$emit('select', item),
103
+ 'onUpdate:modelValue': () => this.$emit('select', item),
91
104
  }),
92
105
  ])
93
106
  },
@@ -180,9 +193,9 @@ export default mixins(Colorable, Themeable).extend({
180
193
  attrs: tile,
181
194
  on: {
182
195
  onMousedown,
183
- onClick
184
- }
185
- });
196
+ onClick,
197
+ },
198
+ })
186
199
 
187
200
  return this.needsTile(scopedSlot)
188
201
  ? h(VListItem, tile, scopedSlot)
@@ -198,10 +211,18 @@ export default mixins(Colorable, Themeable).extend({
198
211
  hasItem (item: object) {
199
212
  return this.parsedItems.indexOf(this.getValue(item)) > -1
200
213
  },
201
- needsTile (slot: VNode[] | undefined) {
202
- return slot!.length !== 1 ||
203
- slot![0].componentOptions == null ||
204
- slot![0].componentOptions.Ctor.name !== 'v-list-item'
214
+ needsTile (slot: VNode[] | undefined): boolean {
215
+ const [vnode] = slot ?? []
216
+
217
+ if (!slot?.length || slot.length !== 1) return true
218
+
219
+ const { type } = vnode ?? {}
220
+
221
+ const isComponent = type && typeof type === 'object'
222
+
223
+ const isVListItem = isComponent && 'name' in type && type.name === 'v-list-item'
224
+
225
+ return !isVListItem
205
226
  },
206
227
  getDisabled (item: object) {
207
228
  return Boolean(getPropertyFromItem(item, this.itemDisabled, false))
@@ -13,7 +13,7 @@ import ClickOutside from '../../directives/click-outside'
13
13
 
14
14
  // Helpers
15
15
  import { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers'
16
- import { consoleWarn } from '../../util/console'
16
+ import { consoleWarn, breaking } from '../../util/console'
17
17
 
18
18
  // Types
19
19
  import { defineComponent, VNode, PropType, h, getCurrentInstance, withDirectives, vShow } from 'vue'
@@ -105,6 +105,19 @@ export default mixins<options &
105
105
  startOffset: 0,
106
106
  }),
107
107
 
108
+ created () {
109
+ const breakingProps = [
110
+ ['value', 'modelValue'],
111
+ ['onInput', 'onUpdate:modelValue'],
112
+ ['onChange', 'onUpdate:modelValue'],
113
+ ]
114
+
115
+ /* istanbul ignore next */
116
+ breakingProps.forEach(([original, replacement]) => {
117
+ if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)
118
+ })
119
+ },
120
+
108
121
  computed: {
109
122
  classes (): object {
110
123
  return {
@@ -20,8 +20,6 @@ import { getSlot } from '../../util/helpers'
20
20
  export default mixins(Positionable, Toggleable, Transitionable).extend({
21
21
  name: 'v-speed-dial',
22
22
 
23
- emits: ['update:modelValue'],
24
-
25
23
  props: {
26
24
  direction: {
27
25
  type: String as Prop<'top' | 'right' | 'bottom' | 'left'>,
@@ -37,6 +35,8 @@ export default mixins(Positionable, Toggleable, Transitionable).extend({
37
35
  },
38
36
  },
39
37
 
38
+ emits: ['update:modelValue'],
39
+
40
40
  computed: {
41
41
  classes (): object {
42
42
  return {
@@ -57,20 +57,19 @@ export default mixins(Positionable, Toggleable, Transitionable).extend({
57
57
  let children: VNode[] = []
58
58
  const data: VNodeData = {
59
59
  class: this.classes,
60
- on: {
61
- click: () => (this.isActive = !this.isActive),
62
- },
60
+ onClick: () => (this.isActive = !this.isActive),
63
61
  }
64
62
 
65
63
  if (this.openOnHover) {
66
- data.on!.mouseenter = () => (this.isActive = true)
67
- data.on!.mouseleave = () => (this.isActive = false)
64
+ data.onMouseenter = () => (this.isActive = true)
65
+ data.onMouseleave = () => (this.isActive = false)
68
66
  }
69
67
 
70
68
  if (this.isActive) {
71
69
  let btnCount = 0
72
70
  children = (getSlot(this) || []).map((b, i) => {
73
- if (b.tag && typeof b.componentOptions !== 'undefined' && (b.componentOptions.Ctor.name === 'v-btn' || b.componentOptions.Ctor.name === 'v-tooltip')) {
71
+ const componentName = b.type && typeof b.type === 'object' && 'name' in b.type ? b.type.name : null
72
+ if (b.tag && (componentName === 'v-btn' || componentName === 'v-tooltip')) {
74
73
  btnCount++
75
74
  return h('div', {
76
75
  style: {
@@ -7,13 +7,16 @@ import VTooltip from '../../VTooltip/VTooltip'
7
7
  import {
8
8
  mount,
9
9
  Wrapper,
10
+ enableAutoUnmount,
10
11
  } from '@vue/test-utils'
11
- import { compileToFunctions } from 'vue-template-compiler'
12
+ import { h } from 'vue'
12
13
 
13
14
  describe('VSpeedDial.ts', () => {
14
15
  type Instance = InstanceType<typeof VSpeedDial>
15
16
  let mountFunction: (options?: object) => Wrapper<Instance>
16
17
 
18
+ enableAutoUnmount(afterEach)
19
+
17
20
  beforeEach(() => {
18
21
  mountFunction = (options = {}) => {
19
22
  return mount(VSpeedDial, {
@@ -31,7 +34,7 @@ describe('VSpeedDial.ts', () => {
31
34
  it('should render active component and match snapshot', () => {
32
35
  const wrapper = mountFunction({
33
36
  slots: {
34
- default: [compileToFunctions('<span>test</span>')],
37
+ default: () => h('span', 'test'),
35
38
  },
36
39
  data: () => ({ isActive: true }),
37
40
  })
@@ -41,7 +44,7 @@ describe('VSpeedDial.ts', () => {
41
44
 
42
45
  it('should render component with custom direction and match snapshot', () => {
43
46
  const wrapper = mountFunction({
44
- propsData: {
47
+ props: {
45
48
  direction: 'right',
46
49
  },
47
50
  })
@@ -49,37 +52,42 @@ describe('VSpeedDial.ts', () => {
49
52
  expect(wrapper.html()).toMatchSnapshot()
50
53
  })
51
54
 
52
- it('should activate on click', () => {
55
+ it('should activate on click', async () => {
53
56
  const wrapper = mountFunction()
54
57
 
55
58
  expect(wrapper.vm.isActive).toBe(false)
56
- wrapper.trigger('click')
59
+ await wrapper.trigger('click')
57
60
  expect(wrapper.vm.isActive).toBe(true)
58
61
  })
59
62
 
60
- it('should activate on hover', () => {
63
+ it('should activate on hover', async () => {
61
64
  const wrapper = mountFunction({
62
- propsData: {
65
+ props: {
63
66
  openOnHover: true,
64
67
  },
65
68
  })
66
69
 
67
70
  expect(wrapper.vm.isActive).toBe(false)
68
- wrapper.trigger('mouseenter')
71
+ await wrapper.trigger('mouseenter')
69
72
  expect(wrapper.vm.isActive).toBe(true)
70
- wrapper.trigger('mouseleave')
73
+ await wrapper.trigger('mouseleave')
71
74
  expect(wrapper.vm.isActive).toBe(false)
72
75
  })
73
76
 
74
- it('should wrap v-btn or v-tooltip component with div tag', () => {
77
+ it('should render v-btn and v-tooltip components when active', () => {
75
78
  const wrapper = mount(VSpeedDial, {
76
79
  slots: {
77
- default: [VBtn, VTooltip],
80
+ default: () => [h(VBtn, { key: 'btn' }), h(VTooltip, { key: 'tooltip' })],
78
81
  },
79
82
  data: () => ({ isActive: true }),
80
83
  })
81
84
 
82
- expect(wrapper.findAll('.v-speed-dial__list div button')).toHaveLength(1)
83
- expect(wrapper.findAll('.v-speed-dial__list div .v-tooltip')).toHaveLength(1)
85
+ expect(wrapper.findComponent(VBtn).exists()).toBe(true)
86
+ expect(wrapper.findComponent(VTooltip).exists()).toBe(true)
87
+
88
+ const speedDialList = wrapper.find('.v-speed-dial__list')
89
+ expect(speedDialList.exists()).toBe(true)
90
+ expect(speedDialList.findComponent(VBtn).exists()).toBe(true)
91
+ expect(speedDialList.findComponent(VTooltip).exists()).toBe(true)
84
92
  })
85
93
  })
@@ -2,24 +2,24 @@
2
2
 
3
3
  exports[`VSpeedDial.ts should render active component and match snapshot 1`] = `
4
4
  <div class="v-speed-dial v-speed-dial--direction-top v-speed-dial--is-active">
5
- <span class="v-speed-dial__list">
5
+ <div class="v-speed-dial__list">
6
6
  <span>
7
7
  test
8
8
  </span>
9
- </span>
9
+ </div>
10
10
  </div>
11
11
  `;
12
12
 
13
13
  exports[`VSpeedDial.ts should render component and match snapshot 1`] = `
14
14
  <div class="v-speed-dial v-speed-dial--direction-top">
15
- <span class="v-speed-dial__list">
16
- </span>
15
+ <div class="v-speed-dial__list">
16
+ </div>
17
17
  </div>
18
18
  `;
19
19
 
20
20
  exports[`VSpeedDial.ts should render component with custom direction and match snapshot 1`] = `
21
21
  <div class="v-speed-dial v-speed-dial--direction-right">
22
- <span class="v-speed-dial__list">
23
- </span>
22
+ <div class="v-speed-dial__list">
23
+ </div>
24
24
  </div>
25
25
  `;