vuetify 2.5.4 → 2.5.8

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 (373) hide show
  1. package/dist/json/attributes.json +35 -7
  2. package/dist/json/tags.json +7 -0
  3. package/dist/json/web-types.json +95 -15
  4. package/dist/vuetify.css +34 -69
  5. package/dist/vuetify.css.map +1 -1
  6. package/dist/vuetify.js +129 -77
  7. package/dist/vuetify.js.map +1 -1
  8. package/dist/vuetify.min.css +2 -2
  9. package/dist/vuetify.min.js +2 -2
  10. package/es5/components/VAlert/VAlert.js +2 -2
  11. package/es5/components/VAlert/VAlert.js.map +1 -1
  12. package/es5/components/VApp/VApp.js +1 -1
  13. package/es5/components/VAppBar/VAppBar.js +3 -3
  14. package/es5/components/VAppBar/VAppBar.js.map +1 -1
  15. package/es5/components/VAppBar/VAppBarNavIcon.js +2 -2
  16. package/es5/components/VAppBar/VAppBarNavIcon.js.map +1 -1
  17. package/es5/components/VAutocomplete/VAutocomplete.js +11 -7
  18. package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
  19. package/es5/components/VAvatar/VAvatar.js +1 -1
  20. package/es5/components/VBadge/VBadge.js +1 -1
  21. package/es5/components/VBanner/VBanner.js +2 -2
  22. package/es5/components/VBanner/VBanner.js.map +1 -1
  23. package/es5/components/VBottomNavigation/VBottomNavigation.js +2 -2
  24. package/es5/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  25. package/es5/components/VBottomSheet/VBottomSheet.js +2 -2
  26. package/es5/components/VBottomSheet/VBottomSheet.js.map +1 -1
  27. package/es5/components/VBreadcrumbs/VBreadcrumbs.js +1 -1
  28. package/es5/components/VBreadcrumbs/VBreadcrumbsItem.js +3 -3
  29. package/es5/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  30. package/es5/components/VBtn/VBtn.js +12 -8
  31. package/es5/components/VBtn/VBtn.js.map +1 -1
  32. package/es5/components/VBtnToggle/VBtnToggle.js +2 -2
  33. package/es5/components/VBtnToggle/VBtnToggle.js.map +1 -1
  34. package/es5/components/VCalendar/VCalendar.js +5 -5
  35. package/es5/components/VCalendar/VCalendar.js.map +1 -1
  36. package/es5/components/VCalendar/VCalendarCategory.js +14 -10
  37. package/es5/components/VCalendar/VCalendarCategory.js.map +1 -1
  38. package/es5/components/VCalendar/VCalendarDaily.js +11 -7
  39. package/es5/components/VCalendar/VCalendarDaily.js.map +1 -1
  40. package/es5/components/VCalendar/VCalendarWeekly.js +9 -5
  41. package/es5/components/VCalendar/VCalendarWeekly.js.map +1 -1
  42. package/es5/components/VCalendar/mixins/calendar-with-events.js +6 -6
  43. package/es5/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
  44. package/es5/components/VCalendar/modes/common.js +7 -3
  45. package/es5/components/VCalendar/modes/common.js.map +1 -1
  46. package/es5/components/VCalendar/modes/stack.js +83 -161
  47. package/es5/components/VCalendar/modes/stack.js.map +1 -1
  48. package/es5/components/VCalendar/util/parser.js +3 -3
  49. package/es5/components/VCalendar/util/parser.js.map +1 -1
  50. package/es5/components/VCalendar/util/timestamp.js +1 -1
  51. package/es5/components/VCard/VCard.js +3 -3
  52. package/es5/components/VCarousel/VCarousel.js +2 -2
  53. package/es5/components/VCarousel/VCarousel.js.map +1 -1
  54. package/es5/components/VCarousel/VCarouselItem.js +2 -2
  55. package/es5/components/VCarousel/VCarouselItem.js.map +1 -1
  56. package/es5/components/VCheckbox/VCheckbox.js +3 -3
  57. package/es5/components/VCheckbox/VCheckbox.js.map +1 -1
  58. package/es5/components/VCheckbox/VSimpleCheckbox.js +2 -2
  59. package/es5/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
  60. package/es5/components/VChip/VChip.js +12 -8
  61. package/es5/components/VChip/VChip.js.map +1 -1
  62. package/es5/components/VChipGroup/VChipGroup.js +2 -2
  63. package/es5/components/VChipGroup/VChipGroup.js.map +1 -1
  64. package/es5/components/VColorPicker/VColorPicker.js +8 -4
  65. package/es5/components/VColorPicker/VColorPicker.js.map +1 -1
  66. package/es5/components/VColorPicker/VColorPickerEdit.js +7 -3
  67. package/es5/components/VColorPicker/VColorPickerEdit.js.map +1 -1
  68. package/es5/components/VColorPicker/VColorPickerPreview.js +5 -5
  69. package/es5/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  70. package/es5/components/VColorPicker/util/index.js +5 -5
  71. package/es5/components/VColorPicker/util/index.js.map +1 -1
  72. package/es5/components/VCombobox/VCombobox.js +22 -9
  73. package/es5/components/VCombobox/VCombobox.js.map +1 -1
  74. package/es5/components/VCounter/VCounter.js +6 -2
  75. package/es5/components/VCounter/VCounter.js.map +1 -1
  76. package/es5/components/VData/VData.js +10 -6
  77. package/es5/components/VData/VData.js.map +1 -1
  78. package/es5/components/VDataIterator/VDataFooter.js +1 -1
  79. package/es5/components/VDataIterator/VDataIterator.js +18 -10
  80. package/es5/components/VDataIterator/VDataIterator.js.map +1 -1
  81. package/es5/components/VDataTable/MobileRow.js +2 -2
  82. package/es5/components/VDataTable/MobileRow.js.map +1 -1
  83. package/es5/components/VDataTable/RowGroup.js +8 -4
  84. package/es5/components/VDataTable/RowGroup.js.map +1 -1
  85. package/es5/components/VDataTable/VDataTable.js +30 -21
  86. package/es5/components/VDataTable/VDataTable.js.map +1 -1
  87. package/es5/components/VDataTable/VDataTableHeader.js +2 -2
  88. package/es5/components/VDataTable/VDataTableHeader.js.map +1 -1
  89. package/es5/components/VDataTable/VDataTableHeaderDesktop.js +8 -4
  90. package/es5/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  91. package/es5/components/VDataTable/VDataTableHeaderMobile.js +8 -4
  92. package/es5/components/VDataTable/VDataTableHeaderMobile.js.map +1 -1
  93. package/es5/components/VDataTable/VSimpleTable.js +1 -1
  94. package/es5/components/VDataTable/mixins/header.js +1 -1
  95. package/es5/components/VDatePicker/VDatePicker.js +1 -1
  96. package/es5/components/VDatePicker/VDatePickerHeader.js +8 -4
  97. package/es5/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  98. package/es5/components/VDatePicker/mixins/date-picker-table.js +12 -8
  99. package/es5/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
  100. package/es5/components/VDatePicker/util/createNativeLocaleFormatter.js +7 -3
  101. package/es5/components/VDatePicker/util/createNativeLocaleFormatter.js.map +1 -1
  102. package/es5/components/VDatePicker/util/monthChange.js +7 -3
  103. package/es5/components/VDatePicker/util/monthChange.js.map +1 -1
  104. package/es5/components/VDatePicker/util/sanitizeDateString.js +7 -3
  105. package/es5/components/VDatePicker/util/sanitizeDateString.js.map +1 -1
  106. package/es5/components/VDialog/VDialog.js +10 -6
  107. package/es5/components/VDialog/VDialog.js.map +1 -1
  108. package/es5/components/VDivider/VDivider.js +1 -1
  109. package/es5/components/VExpansionPanel/VExpansionPanel.js +1 -1
  110. package/es5/components/VExpansionPanel/VExpansionPanelHeader.js +2 -2
  111. package/es5/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
  112. package/es5/components/VExpansionPanel/VExpansionPanels.js +2 -2
  113. package/es5/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
  114. package/es5/components/VFileInput/VFileInput.js +20 -17
  115. package/es5/components/VFileInput/VFileInput.js.map +1 -1
  116. package/es5/components/VFooter/VFooter.js +3 -3
  117. package/es5/components/VFooter/VFooter.js.map +1 -1
  118. package/es5/components/VForm/VForm.js +1 -1
  119. package/es5/components/VGrid/VCol.js +5 -5
  120. package/es5/components/VGrid/VRow.js +4 -4
  121. package/es5/components/VIcon/VIcon.js +3 -3
  122. package/es5/components/VIcon/VIcon.js.map +1 -1
  123. package/es5/components/VImg/VImg.js +1 -1
  124. package/es5/components/VInput/VInput.js +1 -1
  125. package/es5/components/VItemGroup/VItemGroup.js +1 -1
  126. package/es5/components/VLabel/VLabel.js +6 -2
  127. package/es5/components/VLabel/VLabel.js.map +1 -1
  128. package/es5/components/VLazy/VLazy.js +1 -1
  129. package/es5/components/VList/VList.js +14 -17
  130. package/es5/components/VList/VList.js.map +1 -1
  131. package/es5/components/VList/VListGroup.js +3 -3
  132. package/es5/components/VList/VListGroup.js.map +1 -1
  133. package/es5/components/VList/VListItem.js +6 -6
  134. package/es5/components/VList/VListItem.js.map +1 -1
  135. package/es5/components/VList/VListItemAvatar.js +3 -3
  136. package/es5/components/VList/VListItemGroup.js +3 -3
  137. package/es5/components/VList/VListItemGroup.js.map +1 -1
  138. package/es5/components/VMenu/VMenu.js +12 -8
  139. package/es5/components/VMenu/VMenu.js.map +1 -1
  140. package/es5/components/VNavigationDrawer/VNavigationDrawer.js +1 -1
  141. package/es5/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  142. package/es5/components/VOverflowBtn/VOverflowBtn.js +2 -2
  143. package/es5/components/VOverflowBtn/VOverflowBtn.js.map +1 -1
  144. package/es5/components/VOverlay/VOverlay.js +1 -1
  145. package/es5/components/VPagination/VPagination.js +9 -5
  146. package/es5/components/VPagination/VPagination.js.map +1 -1
  147. package/es5/components/VPicker/VPicker.js +3 -3
  148. package/es5/components/VPicker/VPicker.js.map +1 -1
  149. package/es5/components/VProgressLinear/VProgressLinear.js +1 -1
  150. package/es5/components/VRadioGroup/VRadio.js +8 -4
  151. package/es5/components/VRadioGroup/VRadio.js.map +1 -1
  152. package/es5/components/VRadioGroup/VRadioGroup.js +2 -2
  153. package/es5/components/VRadioGroup/VRadioGroup.js.map +1 -1
  154. package/es5/components/VRangeSlider/VRangeSlider.js +16 -8
  155. package/es5/components/VRangeSlider/VRangeSlider.js.map +1 -1
  156. package/es5/components/VSelect/VSelect.js +26 -31
  157. package/es5/components/VSelect/VSelect.js.map +1 -1
  158. package/es5/components/VSelect/VSelectList.js +2 -2
  159. package/es5/components/VSelect/VSelectList.js.map +1 -1
  160. package/es5/components/VSheet/VSheet.js +3 -3
  161. package/es5/components/VSheet/VSheet.js.map +1 -1
  162. package/es5/components/VSkeletonLoader/VSkeletonLoader.js +10 -6
  163. package/es5/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  164. package/es5/components/VSlideGroup/VSlideGroup.js +2 -2
  165. package/es5/components/VSlideGroup/VSlideGroup.js.map +1 -1
  166. package/es5/components/VSlider/VSlider.js +19 -15
  167. package/es5/components/VSlider/VSlider.js.map +1 -1
  168. package/es5/components/VSnackbar/VSnackbar.js +2 -2
  169. package/es5/components/VSnackbar/VSnackbar.js.map +1 -1
  170. package/es5/components/VSparkline/VSparkline.js +3 -3
  171. package/es5/components/VSparkline/VSparkline.js.map +1 -1
  172. package/es5/components/VSparkline/helpers/core.js +8 -4
  173. package/es5/components/VSparkline/helpers/core.js.map +1 -1
  174. package/es5/components/VSparkline/helpers/math.js.map +1 -1
  175. package/es5/components/VSparkline/helpers/path.js.map +1 -1
  176. package/es5/components/VStepper/VStepper.js +1 -1
  177. package/es5/components/VSubheader/VSubheader.js +1 -1
  178. package/es5/components/VSwitch/VSwitch.js +3 -3
  179. package/es5/components/VSwitch/VSwitch.js.map +1 -1
  180. package/es5/components/VSystemBar/VSystemBar.js +1 -1
  181. package/es5/components/VTabs/VTab.js +5 -5
  182. package/es5/components/VTabs/VTab.js.map +1 -1
  183. package/es5/components/VTabs/VTabs.js +1 -1
  184. package/es5/components/VTabs/VTabs.js.map +1 -1
  185. package/es5/components/VTabs/VTabsBar.js +14 -17
  186. package/es5/components/VTabs/VTabsBar.js.map +1 -1
  187. package/es5/components/VTabs/VTabsItems.js +2 -2
  188. package/es5/components/VTabs/VTabsItems.js.map +1 -1
  189. package/es5/components/VTextField/VTextField.js +21 -12
  190. package/es5/components/VTextField/VTextField.js.map +1 -1
  191. package/es5/components/VTextarea/VTextarea.js +1 -1
  192. package/es5/components/VTimePicker/VTimePicker.js +7 -3
  193. package/es5/components/VTimePicker/VTimePicker.js.map +1 -1
  194. package/es5/components/VTimePicker/VTimePickerClock.js +1 -1
  195. package/es5/components/VTimeline/VTimeline.js +1 -1
  196. package/es5/components/VTimeline/VTimelineItem.js +1 -1
  197. package/es5/components/VToolbar/VToolbar.js +10 -6
  198. package/es5/components/VToolbar/VToolbar.js.map +1 -1
  199. package/es5/components/VTreeview/VTreeview.js +49 -85
  200. package/es5/components/VTreeview/VTreeview.js.map +1 -1
  201. package/es5/components/VTreeview/VTreeviewNode.js +9 -5
  202. package/es5/components/VTreeview/VTreeviewNode.js.map +1 -1
  203. package/es5/components/VWindow/VWindow.js +7 -5
  204. package/es5/components/VWindow/VWindow.js.map +1 -1
  205. package/es5/components/index.js +80 -0
  206. package/es5/components/index.js.map +1 -1
  207. package/es5/directives/click-outside/index.js +1 -1
  208. package/es5/directives/intersect/index.js +1 -1
  209. package/es5/directives/mutate/index.js +4 -4
  210. package/es5/directives/mutate/index.js.map +1 -1
  211. package/es5/directives/scroll/index.js +1 -1
  212. package/es5/entry-lib.js +2 -0
  213. package/es5/entry-lib.js.map +1 -1
  214. package/es5/framework.js +7 -5
  215. package/es5/framework.js.map +1 -1
  216. package/es5/index.js +6 -2
  217. package/es5/index.js.map +1 -1
  218. package/es5/mixins/activatable/index.js +1 -1
  219. package/es5/mixins/binds-attrs/index.js.map +1 -1
  220. package/es5/mixins/bootable/index.js.map +1 -1
  221. package/es5/mixins/colorable/index.js +12 -8
  222. package/es5/mixins/colorable/index.js.map +1 -1
  223. package/es5/mixins/delayable/index.js.map +1 -1
  224. package/es5/mixins/dependent/index.js +8 -4
  225. package/es5/mixins/dependent/index.js.map +1 -1
  226. package/es5/mixins/detachable/index.js +1 -1
  227. package/es5/mixins/loadable/index.js.map +1 -1
  228. package/es5/mixins/menuable/index.js +1 -1
  229. package/es5/mixins/overlayable/index.js +16 -5
  230. package/es5/mixins/overlayable/index.js.map +1 -1
  231. package/es5/mixins/positionable/index.js.map +1 -1
  232. package/es5/mixins/roundable/index.js +12 -15
  233. package/es5/mixins/roundable/index.js.map +1 -1
  234. package/es5/mixins/routable/index.js +4 -2
  235. package/es5/mixins/routable/index.js.map +1 -1
  236. package/es5/mixins/scrollable/index.js.map +1 -1
  237. package/es5/mixins/ssr-bootable/index.js.map +1 -1
  238. package/es5/mixins/stackable/index.js +8 -4
  239. package/es5/mixins/stackable/index.js.map +1 -1
  240. package/es5/mixins/themeable/index.js +2 -2
  241. package/es5/mixins/themeable/index.js.map +1 -1
  242. package/es5/mixins/validatable/index.js +1 -1
  243. package/es5/services/application/index.js +14 -10
  244. package/es5/services/application/index.js.map +1 -1
  245. package/es5/services/breakpoint/index.js +14 -10
  246. package/es5/services/breakpoint/index.js.map +1 -1
  247. package/es5/services/goto/index.js +17 -11
  248. package/es5/services/goto/index.js.map +1 -1
  249. package/es5/services/icons/index.js +14 -10
  250. package/es5/services/icons/index.js.map +1 -1
  251. package/es5/services/index.js +7 -0
  252. package/es5/services/index.js.map +1 -1
  253. package/es5/services/lang/index.js +14 -10
  254. package/es5/services/lang/index.js.map +1 -1
  255. package/es5/services/presets/index.js +14 -10
  256. package/es5/services/presets/index.js.map +1 -1
  257. package/es5/services/service/index.js +1 -3
  258. package/es5/services/service/index.js.map +1 -1
  259. package/es5/services/theme/index.js +43 -37
  260. package/es5/services/theme/index.js.map +1 -1
  261. package/es5/services/theme/utils.js +21 -15
  262. package/es5/services/theme/utils.js.map +1 -1
  263. package/es5/util/colorUtils.js +9 -5
  264. package/es5/util/colorUtils.js.map +1 -1
  265. package/es5/util/console.js.map +1 -1
  266. package/es5/util/dedupeModelListeners.js.map +1 -1
  267. package/es5/util/dom.js.map +1 -1
  268. package/es5/util/helpers.js +16 -9
  269. package/es5/util/helpers.js.map +1 -1
  270. package/es5/util/mergeData.js +17 -20
  271. package/es5/util/mergeData.js.map +1 -1
  272. package/lib/components/VAutocomplete/VAutocomplete.js +1 -1
  273. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  274. package/lib/components/VCalendar/modes/stack.js.map +1 -1
  275. package/lib/components/VCombobox/VCombobox.js +13 -4
  276. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  277. package/lib/components/VDataIterator/VDataIterator.js +5 -1
  278. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  279. package/lib/components/VDataTable/VDataTable.js +7 -2
  280. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  281. package/lib/components/VDatePicker/util/monthChange.js.map +1 -1
  282. package/lib/components/VFileInput/VFileInput.js +7 -9
  283. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  284. package/lib/components/VList/VListGroup.js +1 -1
  285. package/lib/components/VList/VListGroup.js.map +1 -1
  286. package/lib/components/VList/VListItem.js +1 -1
  287. package/lib/components/VList/VListItem.js.map +1 -1
  288. package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  289. package/lib/components/VRangeSlider/VRangeSlider.js +6 -2
  290. package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
  291. package/lib/components/VSelect/VSelect.js +9 -11
  292. package/lib/components/VSelect/VSelect.js.map +1 -1
  293. package/lib/components/VSlider/VSlider.js +17 -13
  294. package/lib/components/VSlider/VSlider.js.map +1 -1
  295. package/lib/components/VSnackbar/VSnackbar.js +2 -2
  296. package/lib/components/VSnackbar/VSnackbar.js.map +1 -1
  297. package/lib/components/VSparkline/helpers/math.js.map +1 -1
  298. package/lib/components/VSparkline/helpers/path.js.map +1 -1
  299. package/lib/components/VTabs/VTabs.js.map +1 -1
  300. package/lib/components/VTextField/VTextField.js +10 -5
  301. package/lib/components/VTextField/VTextField.js.map +1 -1
  302. package/lib/components/VTreeview/VTreeview.js +3 -1
  303. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  304. package/lib/components/VWindow/VWindow.js +3 -3
  305. package/lib/components/VWindow/VWindow.js.map +1 -1
  306. package/lib/directives/mutate/index.js +3 -3
  307. package/lib/directives/mutate/index.js.map +1 -1
  308. package/lib/framework.js +1 -1
  309. package/lib/install.js.map +1 -1
  310. package/lib/mixins/binds-attrs/index.js.map +1 -1
  311. package/lib/mixins/bootable/index.js.map +1 -1
  312. package/lib/mixins/delayable/index.js.map +1 -1
  313. package/lib/mixins/loadable/index.js.map +1 -1
  314. package/lib/mixins/overlayable/index.js +16 -5
  315. package/lib/mixins/overlayable/index.js.map +1 -1
  316. package/lib/mixins/positionable/index.js.map +1 -1
  317. package/lib/mixins/routable/index.js +2 -0
  318. package/lib/mixins/routable/index.js.map +1 -1
  319. package/lib/mixins/scrollable/index.js.map +1 -1
  320. package/lib/mixins/ssr-bootable/index.js.map +1 -1
  321. package/lib/services/goto/index.js.map +1 -1
  322. package/lib/services/theme/index.js.map +1 -1
  323. package/lib/services/theme/utils.js.map +1 -1
  324. package/lib/util/colorUtils.js.map +1 -1
  325. package/lib/util/console.js.map +1 -1
  326. package/lib/util/dedupeModelListeners.js.map +1 -1
  327. package/lib/util/dom.js.map +1 -1
  328. package/lib/util/helpers.js +8 -5
  329. package/lib/util/helpers.js.map +1 -1
  330. package/package.json +2 -3
  331. package/src/components/VApp/VApp.sass +1 -0
  332. package/src/components/VAppBar/VAppBar.sass +1 -4
  333. package/src/components/VAutocomplete/VAutocomplete.ts +9 -5
  334. package/src/components/VBtn/VBtn.sass +0 -3
  335. package/src/components/VBtnToggle/VBtnToggle.sass +4 -2
  336. package/src/components/VCard/VCard.sass +1 -1
  337. package/src/components/VCombobox/VCombobox.ts +16 -2
  338. package/src/components/VCombobox/__tests__/VCombobox-multiple.spec.ts +30 -0
  339. package/src/components/VDataIterator/VDataIterator.ts +5 -1
  340. package/src/components/VDataTable/VDataTable.sass +5 -0
  341. package/src/components/VDataTable/VDataTable.ts +3 -0
  342. package/src/components/VDataTable/__tests__/VDataTable.spec.ts +34 -0
  343. package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +39 -39
  344. package/src/components/VFileInput/VFileInput.ts +7 -7
  345. package/src/components/VFileInput/__tests__/VFileInput.spec.ts +8 -0
  346. package/src/components/VFileInput/__tests__/__snapshots__/VFileInput.spec.ts.snap +50 -10
  347. package/src/components/VList/VListGroup.ts +1 -1
  348. package/src/components/VList/VListItem.sass +2 -1
  349. package/src/components/VList/VListItem.ts +1 -1
  350. package/src/components/VMenu/VMenu.sass +0 -3
  351. package/src/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
  352. package/src/components/VProgressCircular/VProgressCircular.sass +1 -1
  353. package/src/components/VRangeSlider/VRangeSlider.ts +8 -2
  354. package/src/components/VSelect/VSelect.ts +8 -12
  355. package/src/components/VSlider/VSlider.sass +9 -0
  356. package/src/components/VSlider/VSlider.ts +16 -9
  357. package/src/components/VSlider/_variables.scss +1 -0
  358. package/src/components/VSnackbar/VSnackbar.sass +1 -1
  359. package/src/components/VSnackbar/VSnackbar.ts +2 -2
  360. package/src/components/VTabs/_variables.scss +0 -2
  361. package/src/components/VTextField/VTextField.sass +2 -2
  362. package/src/components/VTextField/VTextField.ts +8 -1
  363. package/src/components/VTextField/__tests__/VTextField.spec.ts +9 -2
  364. package/src/components/VTimePicker/__tests__/VTimePicker.spec.ts +4 -4
  365. package/src/components/VTreeview/VTreeview.ts +1 -1
  366. package/src/mixins/overlayable/index.ts +19 -6
  367. package/src/mixins/routable/index.ts +2 -0
  368. package/src/services/goto/index.ts +1 -1
  369. package/src/styles/tools/_elevation.sass +0 -1
  370. package/src/util/helpers.ts +7 -2
  371. package/types/index.d.ts +2 -2
  372. package/types/lib.d.ts +6 -0
  373. package/types/services/goto.d.ts +3 -1
@@ -455,7 +455,7 @@ export default baseMixins.extend<options>().extend({
455
455
  'aria-readonly': String(this.isReadonly),
456
456
  'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),
457
457
  autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),
458
- placeholder: (!this.isDirty && (this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,
458
+ placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,
459
459
  },
460
460
  on: { keypress: this.onKeyPress },
461
461
  })
@@ -658,12 +658,6 @@ export default baseMixins.extend<options>().extend({
658
658
  const keyCode = e.keyCode
659
659
  const menu = this.$refs.menu
660
660
 
661
- // If enter, space, open menu
662
- if ([
663
- keyCodes.enter,
664
- keyCodes.space,
665
- ].includes(keyCode)) this.activateMenu()
666
-
667
661
  this.$emit('keydown', e)
668
662
 
669
663
  if (!menu) return
@@ -677,6 +671,12 @@ export default baseMixins.extend<options>().extend({
677
671
  })
678
672
  }
679
673
 
674
+ // If enter, space, open menu
675
+ if ([
676
+ keyCodes.enter,
677
+ keyCodes.space,
678
+ ].includes(keyCode)) this.activateMenu()
679
+
680
680
  // If menu is not active, up/down/home/end can do
681
681
  // one of 2 things. If multiple, opens the
682
682
  // menu, if not, will cycle through all
@@ -709,6 +709,7 @@ export default baseMixins.extend<options>().extend({
709
709
  if (!menu || !this.isDirty) return
710
710
 
711
711
  // When menu opens, set index of first active item
712
+ this.$refs.menu.getTiles()
712
713
  for (let i = 0; i < menu.tiles.length; i++) {
713
714
  if (menu.tiles[i].getAttribute('aria-selected') === 'true') {
714
715
  this.setMenuIndex(i)
@@ -839,11 +840,6 @@ export default baseMixins.extend<options>().extend({
839
840
  (this.$refs.menu as { [key: string]: any }).updateDimensions()
840
841
  })
841
842
 
842
- // We only need to reset list index for multiple
843
- // to keep highlight when an item is toggled
844
- // on and off
845
- if (!this.multiple) return
846
-
847
843
  const listIndex = this.getMenuIndex()
848
844
 
849
845
  this.setMenuIndex(-1)
@@ -69,6 +69,15 @@
69
69
  transform: scale(0.1)
70
70
  pointer-events: none
71
71
 
72
+ &::after
73
+ content: ''
74
+ width: $slider-thumb-touch-size
75
+ height: $slider-thumb-touch-size
76
+ position: absolute
77
+ top: 50%
78
+ left: 50%
79
+ transform: translate(-50%, -50%)
80
+
72
81
  .v-slider__ticks-container
73
82
  position: absolute
74
83
 
@@ -98,6 +98,7 @@ export default mixins<options &
98
98
  isFocused: false,
99
99
  isActive: false,
100
100
  noClick: false, // Prevent click event if dragging took place, hack for #7915
101
+ startOffset: 0,
101
102
  }),
102
103
 
103
104
  computed: {
@@ -448,24 +449,30 @@ export default mixins<options &
448
449
  [direction]: `${value}%`,
449
450
  }
450
451
  },
451
- onSliderMouseDown (e: MouseEvent) {
452
+ onSliderMouseDown (e: MouseEvent | TouchEvent) {
452
453
  e.preventDefault()
453
454
 
454
455
  this.oldValue = this.internalValue
455
456
  this.isActive = true
456
457
 
457
- const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true
458
- const mouseMoveOptions = passiveSupported ? { passive: true } : false
459
-
460
458
  if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {
461
459
  this.thumbPressed = true
460
+ const domRect = (e.target as Element).getBoundingClientRect()
461
+ const touch = 'touches' in e ? e.touches[0] : e
462
+ this.startOffset = this.vertical
463
+ ? touch.clientY - (domRect.top + domRect.height / 2)
464
+ : touch.clientX - (domRect.left + domRect.width / 2)
462
465
  } else {
466
+ this.startOffset = 0
463
467
  window.clearTimeout(this.mouseTimeout)
464
468
  this.mouseTimeout = window.setTimeout(() => {
465
469
  this.thumbPressed = true
466
470
  }, 300)
467
471
  }
468
472
 
473
+ const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true
474
+ const mouseMoveOptions = passiveSupported ? { passive: true } : false
475
+
469
476
  const isTouchEvent = 'touches' in e
470
477
 
471
478
  this.onMouseMove(e)
@@ -491,7 +498,7 @@ export default mixins<options &
491
498
 
492
499
  this.isActive = false
493
500
  },
494
- onMouseMove (e: MouseEvent) {
501
+ onMouseMove (e: MouseEvent | TouchEvent) {
495
502
  if (e.type === 'mousemove') {
496
503
  this.thumbPressed = true
497
504
  }
@@ -532,7 +539,7 @@ export default mixins<options &
532
539
 
533
540
  this.$emit('focus', e)
534
541
  },
535
- parseMouseMove (e: MouseEvent) {
542
+ parseMouseMove (e: MouseEvent | TouchEvent) {
536
543
  const start = this.vertical ? 'top' : 'left'
537
544
  const length = this.vertical ? 'height' : 'width'
538
545
  const click = this.vertical ? 'clientY' : 'clientX'
@@ -540,11 +547,11 @@ export default mixins<options &
540
547
  const {
541
548
  [start]: trackStart,
542
549
  [length]: trackLength,
543
- } = this.$refs.track.getBoundingClientRect() as any
544
- const clickOffset = 'touches' in e ? (e as any).touches[0][click] : e[click] // Can we get rid of any here?
550
+ } = this.$refs.track.getBoundingClientRect()
551
+ const clickOffset = 'touches' in e ? e.touches[0][click] : e[click]
545
552
 
546
553
  // It is possible for left to be NaN, force to number
547
- let clickPos = Math.min(Math.max((clickOffset - trackStart) / trackLength, 0), 1) || 0
554
+ let clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0
548
555
 
549
556
  if (this.vertical) clickPos = 1 - clickPos
550
557
  if (this.$vuetify.rtl) clickPos = 1 - clickPos
@@ -16,6 +16,7 @@ $slider-thumb-label-height: 32px !default;
16
16
  $slider-thumb-label-transition: .3s map-get($transition, 'fast-in-fast-out') !default;
17
17
  $slider-thumb-label-width: 32px !default;
18
18
  $slider-thumb-size: 12px !default;
19
+ $slider-thumb-touch-size: 42px !default;
19
20
  $slider-tick-border-radius: 0 !default;
20
21
  $slider-track-border-radius: 0 !default;
21
22
  $slider-track-width: 2px !default;
@@ -101,7 +101,7 @@
101
101
  left: auto
102
102
 
103
103
  &:not(.v-snack--has-background) &__wrapper
104
- box-shadow: none !important
104
+ box-shadow: none
105
105
 
106
106
  &--bottom
107
107
  top: auto
@@ -173,8 +173,8 @@ export default mixins(
173
173
  value: this.isActive,
174
174
  }],
175
175
  on: {
176
- mouseenter: () => window.clearTimeout(this.activeTimeout),
177
- mouseleave: this.setTimeout,
176
+ pointerenter: () => window.clearTimeout(this.activeTimeout),
177
+ pointerleave: this.setTimeout,
178
178
  },
179
179
  })
180
180
 
@@ -9,8 +9,6 @@ $tabs-bar-height: 48px !default;
9
9
  $tabs-icons-and-text-bar-height: 72px !default;
10
10
  $tabs-icons-and-text-first-tab-margin-bottom: 6px !default;
11
11
  $tabs-item-align-with-title-margin: 42px !default;
12
- $tabs-item-focus-opacity: 0.20 !default;
13
- $tabs-item-hover-opacity: 0.16 !default;
14
12
  $tabs-item-letter-spacing: .0892857143em !default;
15
13
  $tabs-item-max-width: 360px !default;
16
14
  $tabs-item-min-width: 90px !default;
@@ -403,8 +403,8 @@
403
403
  position: absolute
404
404
  right: 0
405
405
  top: $text-field-outlined-fieldset-top
406
- transition-duration: 0.3s
407
- transition-property: color, border-width
406
+ transition-duration: 0.15s
407
+ transition-property: color
408
408
  transition-timing-function: map-get($transition, 'fast-in-fast-out')
409
409
 
410
410
  +ltr()
@@ -373,6 +373,7 @@ export default baseMixins.extend<options>().extend({
373
373
  const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0
374
374
  const span = this.$createElement('span', {
375
375
  domProps: { innerHTML: '&#8203;' },
376
+ staticClass: 'notranslate',
376
377
  })
377
378
 
378
379
  return this.$createElement('legend', {
@@ -473,7 +474,13 @@ export default baseMixins.extend<options>().extend({
473
474
  this.badInput = target.validity && target.validity.badInput
474
475
  },
475
476
  onKeyDown (e: KeyboardEvent) {
476
- if (e.keyCode === keyCodes.enter) this.$emit('change', this.internalValue)
477
+ if (
478
+ e.keyCode === keyCodes.enter &&
479
+ this.lazyValue !== this.initialValue
480
+ ) {
481
+ this.initialValue = this.lazyValue
482
+ this.$emit('change', this.initialValue)
483
+ }
477
484
 
478
485
  this.$emit('keydown', e)
479
486
  },
@@ -628,19 +628,26 @@ describe('VTextField.ts', () => { // eslint-disable-line max-statements
628
628
  expect(input.element.id).toBe('foo')
629
629
  })
630
630
 
631
- it('should fire change event when pressing enter', () => {
631
+ it('should fire change event when pressing enter and value has changed', () => {
632
632
  const wrapper = mountFunction()
633
633
  const input = wrapper.find('input')
634
634
  const change = jest.fn()
635
+ const el = input.element as HTMLInputElement
635
636
 
636
637
  wrapper.vm.$on('change', change)
637
638
 
638
639
  input.trigger('focus')
639
- input.element.value = 'foo'
640
+ el.value = 'foo'
640
641
  input.trigger('input')
641
642
  input.trigger('keydown.enter')
642
643
  input.trigger('keydown.enter')
643
644
 
645
+ expect(change).toHaveBeenCalledTimes(1)
646
+
647
+ el.value = 'foobar'
648
+ input.trigger('input')
649
+ input.trigger('keydown.enter')
650
+
644
651
  expect(change).toHaveBeenCalledTimes(2)
645
652
  })
646
653
 
@@ -44,7 +44,7 @@ describe('VTimePicker.ts', () => {
44
44
  })
45
45
 
46
46
  it('should render landscape component' + useSecondsDesc, async () => {
47
- var wrapper = mountFunction({
47
+ const wrapper = mountFunction({
48
48
  propsData: {
49
49
  value: '09:12:34',
50
50
  landscape: true,
@@ -57,7 +57,7 @@ describe('VTimePicker.ts', () => {
57
57
  })
58
58
 
59
59
  it('should render disabled component' + useSecondsDesc, async () => {
60
- var wrapper = mountFunction({
60
+ const wrapper = mountFunction({
61
61
  propsData: {
62
62
  disabled: true,
63
63
  value: '09:12:34',
@@ -70,7 +70,7 @@ describe('VTimePicker.ts', () => {
70
70
  })
71
71
 
72
72
  it('should render flat component' + useSecondsDesc, async () => {
73
- var wrapper = mountFunction({
73
+ const wrapper = mountFunction({
74
74
  propsData: {
75
75
  flat: true,
76
76
  value: '09:12:34',
@@ -83,7 +83,7 @@ describe('VTimePicker.ts', () => {
83
83
  })
84
84
 
85
85
  it('should render component with elevation' + useSecondsDesc, async () => {
86
- var wrapper = mountFunction({
86
+ const wrapper = mountFunction({
87
87
  propsData: {
88
88
  elevation: 15,
89
89
  value: '09:12:34',
@@ -201,7 +201,7 @@ export default mixins(
201
201
  for (let i = 0; i < items.length; i++) {
202
202
  const item = items[i]
203
203
  const key = getObjectValueByPath(item, this.itemKey)
204
- const children = getObjectValueByPath(item, this.itemChildren, [])
204
+ const children = getObjectValueByPath(item, this.itemChildren) ?? []
205
205
  const oldNode = this.nodes.hasOwnProperty(key) ? this.nodes[key] : {
206
206
  isSelected: false, isIndeterminate: false, isActive: false, isOpen: false, vnode: null,
207
207
  } as NodeState
@@ -108,7 +108,8 @@ export default Vue.extend<Vue & Toggleable & Stackable & options>().extend({
108
108
  !this.overlay ||
109
109
  !this.overlay.$el ||
110
110
  !this.overlay.$el.parentNode ||
111
- this.overlay.value
111
+ this.overlay.value ||
112
+ this.isActive
112
113
  ) return
113
114
 
114
115
  this.overlay.$el.parentNode.removeChild(this.overlay.$el)
@@ -156,9 +157,21 @@ export default Vue.extend<Vue & Toggleable & Stackable & options>().extend({
156
157
  const style = window.getComputedStyle(el)
157
158
  return ['auto', 'scroll'].includes(style.overflowY!) && el.scrollHeight > el.clientHeight
158
159
  },
159
- shouldScroll (el: Element, delta: number) {
160
- if (el.scrollTop === 0 && delta < 0) return true
161
- return el.scrollTop + el.clientHeight === el.scrollHeight && delta > 0
160
+ shouldScroll (el: Element, delta: number): boolean {
161
+ if (el.hasAttribute('data-app')) return false
162
+
163
+ const alreadyAtTop = el.scrollTop === 0
164
+ const alreadyAtBottom = el.scrollTop + el.clientHeight === el.scrollHeight
165
+ const scrollingUp = delta < 0
166
+ const scrollingDown = delta > 0
167
+
168
+ if (!alreadyAtTop && scrollingUp) return true
169
+ if (!alreadyAtBottom && scrollingDown) return true
170
+ if ((alreadyAtTop || alreadyAtBottom)) {
171
+ return this.shouldScroll(el.parentNode as Element, delta)
172
+ }
173
+
174
+ return false
162
175
  },
163
176
  isInside (el: Element, parent: Element): boolean {
164
177
  if (el === parent) {
@@ -178,7 +191,7 @@ export default Vue.extend<Vue & Toggleable & Stackable & options>().extend({
178
191
  // getSelection returns null in firefox in some edge cases, can be ignored
179
192
  const selected = window.getSelection()!.anchorNode as Element
180
193
  if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {
181
- return this.shouldScroll(dialog, delta)
194
+ return !this.shouldScroll(dialog, delta)
182
195
  }
183
196
  return true
184
197
  }
@@ -190,7 +203,7 @@ export default Vue.extend<Vue & Toggleable & Stackable & options>().extend({
190
203
  if (el === document.documentElement) return true
191
204
  if (el === this.$refs.content) return true
192
205
 
193
- if (this.hasScrollbar(el as Element)) return this.shouldScroll(el as Element, delta)
206
+ if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, delta)
194
207
  }
195
208
 
196
209
  return true
@@ -21,6 +21,7 @@ export default Vue.extend({
21
21
  type: Boolean as PropType<boolean | undefined>,
22
22
  default: undefined,
23
23
  },
24
+ exactPath: Boolean,
24
25
  exactActiveClass: String,
25
26
  link: Boolean,
26
27
  href: [String, Object],
@@ -120,6 +121,7 @@ export default Vue.extend({
120
121
  Object.assign(data.props, {
121
122
  to: this.to,
122
123
  exact,
124
+ exactPath: this.exactPath,
123
125
  activeClass,
124
126
  exactActiveClass,
125
127
  append: this.append,
@@ -15,7 +15,7 @@ import { VuetifyServiceContract } from 'vuetify/types/services'
15
15
 
16
16
  export default function goTo (
17
17
  _target: VuetifyGoToTarget,
18
- _settings: Partial<GoToOptions> = {}
18
+ _settings: GoToOptions = {}
19
19
  ): Promise<number> {
20
20
  const settings: GoToOptions = {
21
21
  container: (document.scrollingElement as HTMLElement | null) || document.body || document.documentElement,
@@ -3,4 +3,3 @@
3
3
 
4
4
  @mixin elevationTransition($duration: 280ms, $easing: cubic-bezier(0.4, 0, 0.2, 1))
5
5
  transition: box-shadow $duration $easing
6
- will-change: box-shadow
@@ -37,7 +37,7 @@ export function addOnceEventListener (
37
37
  cb: (event: Event) => void,
38
38
  options: boolean | AddEventListenerOptions = false
39
39
  ): void {
40
- var once = (event: Event) => {
40
+ const once = (event: Event) => {
41
41
  cb(event)
42
42
  el.removeEventListener(eventName, once, options)
43
43
  }
@@ -288,7 +288,7 @@ export function groupItems<T extends any = any> (
288
288
  const key = groupBy[0]
289
289
  const groups: ItemGroup<T>[] = []
290
290
  let current
291
- for (var i = 0; i < items.length; i++) {
291
+ for (let i = 0; i < items.length; i++) {
292
292
  const item = items[i]
293
293
  const val = getObjectValueByPath(item, key, null)
294
294
  if (current !== val) {
@@ -339,6 +339,11 @@ export function sortItems<T extends any = any> (
339
339
  continue
340
340
  }
341
341
 
342
+ // Dates should be compared numerically
343
+ if (sortA instanceof Date && sortB instanceof Date) {
344
+ return sortA.getTime() - sortB.getTime()
345
+ }
346
+
342
347
  [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())
343
348
 
344
349
  if (sortA !== sortB) {
package/types/index.d.ts CHANGED
@@ -16,7 +16,7 @@ import {
16
16
  } from './services/presets'
17
17
 
18
18
  // Service Options
19
- import { GoToOptions } from './services/goto'
19
+ import { GoToOptions, VuetifyGoToTarget } from './services/goto'
20
20
 
21
21
  export default class Vuetify {
22
22
  constructor (preset?: Partial<UserVuetifyPreset>)
@@ -48,7 +48,7 @@ export interface VuetifyUseOptions {
48
48
 
49
49
  export interface Framework {
50
50
  readonly breakpoint: Breakpoint
51
- readonly goTo: <T extends string | number | HTMLElement | Vue>(target: T, options?: GoToOptions) => Promise<T>
51
+ readonly goTo: (target: VuetifyGoToTarget, options?: GoToOptions) => Promise<number>
52
52
  application: Application
53
53
  theme: Theme
54
54
  icons: Icons
package/types/lib.d.ts CHANGED
@@ -368,3 +368,9 @@ declare module 'vuetify/lib/directives' {
368
368
  Touch,
369
369
  }
370
370
  }
371
+
372
+ declare module 'vuetify/lib/services/goto' {
373
+ import { GoToOptions, VuetifyGoToTarget } from 'vuetify/types/services/goto'
374
+
375
+ export default function goTo(target: VuetifyGoToTarget, options?: Partial<GoToOptions>): Promise<number>
376
+ }
@@ -1,7 +1,7 @@
1
1
  // Types
2
2
  import Vue from 'vue'
3
3
 
4
- type VuetifyGoToTarget = number | string | HTMLElement | Vue
4
+ export type VuetifyGoToTarget = number | string | HTMLElement | Vue
5
5
 
6
6
  export type VuetifyGoToEasing =
7
7
  ((t: number) => number) |
@@ -26,3 +26,5 @@ export interface GoToOptions {
26
26
  easing?: VuetifyGoToEasing
27
27
  appOffset?: boolean
28
28
  }
29
+
30
+ export default function goTo(target: VuetifyGoToTarget, options?: GoToOptions): Promise<number>