@vuetify/nightly 3.0.0-beta.4 → 3.0.0-beta.5

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 (333) hide show
  1. package/CHANGELOG.md +13 -24
  2. package/dist/json/attributes.json +66 -122
  3. package/dist/json/importMap.json +121 -137
  4. package/dist/json/tags.json +20 -68
  5. package/dist/json/web-types.json +201 -482
  6. package/dist/vuetify.css +1672 -1536
  7. package/dist/vuetify.d.ts +494 -464
  8. package/dist/vuetify.esm.js +3835 -3452
  9. package/dist/vuetify.esm.js.map +1 -1
  10. package/dist/vuetify.js +3834 -3451
  11. package/dist/vuetify.js.map +1 -1
  12. package/dist/vuetify.min.css +2 -2
  13. package/dist/vuetify.min.js +1027 -1012
  14. package/dist/vuetify.min.js.map +1 -1
  15. package/lib/blueprints/index.mjs +4 -0
  16. package/lib/blueprints/index.mjs.map +1 -0
  17. package/lib/blueprints/md1.mjs +63 -0
  18. package/lib/blueprints/md1.mjs.map +1 -0
  19. package/lib/blueprints/md2.mjs +60 -0
  20. package/lib/blueprints/md2.mjs.map +1 -0
  21. package/lib/blueprints/md3.mjs +74 -0
  22. package/lib/blueprints/md3.mjs.map +1 -0
  23. package/lib/components/VAlert/VAlert.mjs +7 -1
  24. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  25. package/lib/components/VApp/VApp.css +2 -5
  26. package/lib/components/VApp/VApp.mjs +3 -4
  27. package/lib/components/VApp/VApp.mjs.map +1 -1
  28. package/lib/components/VApp/VApp.sass +11 -12
  29. package/lib/components/VApp/variables.scss +6 -0
  30. package/lib/components/VAppBar/VAppBar.mjs +4 -3
  31. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  32. package/lib/components/VAppBar/VAppBarNavIcon.mjs +7 -12
  33. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  34. package/lib/components/VAppBar/VAppBarTitle.mjs +4 -3
  35. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  36. package/lib/components/VAppBar/_variables.scss +2 -0
  37. package/lib/components/VAutocomplete/VAutocomplete.mjs +9 -5
  38. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  39. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  40. package/lib/components/VBadge/VBadge.mjs +8 -7
  41. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  42. package/lib/components/VBadge/_variables.scss +2 -2
  43. package/lib/components/VBanner/VBanner.css +7 -7
  44. package/lib/components/VBanner/VBanner.mjs +24 -17
  45. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  46. package/lib/components/VBanner/VBanner.sass +6 -7
  47. package/lib/components/VBanner/VBannerActions.mjs +1 -1
  48. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  49. package/lib/components/VBanner/index.mjs +0 -2
  50. package/lib/components/VBanner/index.mjs.map +1 -1
  51. package/lib/components/VBottomNavigation/VBottomNavigation.css +4 -11
  52. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +4 -3
  53. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  54. package/lib/components/VBottomNavigation/VBottomNavigation.sass +5 -12
  55. package/lib/components/VBottomNavigation/_variables.scss +7 -8
  56. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +31 -16
  57. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  58. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +5 -8
  59. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  60. package/lib/components/VBtn/VBtn.css +42 -9
  61. package/lib/components/VBtn/VBtn.mjs +60 -29
  62. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  63. package/lib/components/VBtn/VBtn.sass +36 -5
  64. package/lib/components/VBtn/_variables.scss +7 -3
  65. package/lib/components/VBtnGroup/VBtnGroup.css +1 -1
  66. package/lib/components/VBtnGroup/_variables.scss +2 -0
  67. package/lib/components/VBtnToggle/_variables.scss +1 -0
  68. package/lib/components/VCard/VCard.css +78 -61
  69. package/lib/components/VCard/VCard.mjs +51 -65
  70. package/lib/components/VCard/VCard.mjs.map +1 -1
  71. package/lib/components/VCard/VCard.sass +71 -58
  72. package/lib/components/VCard/VCardActions.mjs +1 -1
  73. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  74. package/lib/components/VCard/VCardItem.mjs +88 -0
  75. package/lib/components/VCard/VCardItem.mjs.map +1 -0
  76. package/lib/components/VCard/_variables.scss +39 -24
  77. package/lib/components/VCard/index.mjs +1 -5
  78. package/lib/components/VCard/index.mjs.map +1 -1
  79. package/lib/components/VCarousel/VCarousel.mjs +5 -4
  80. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  81. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  82. package/lib/components/VCarousel/_variables.scss +1 -0
  83. package/lib/components/VChip/VChip.css +137 -60
  84. package/lib/components/VChip/VChip.mjs +74 -36
  85. package/lib/components/VChip/VChip.mjs.map +1 -1
  86. package/lib/components/VChip/VChip.sass +6 -0
  87. package/lib/components/VChip/_mixins.scss +26 -6
  88. package/lib/components/VChip/_variables.scss +1 -5
  89. package/lib/components/VChipGroup/VChipGroup.mjs +4 -3
  90. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  91. package/lib/components/VChipGroup/VChipGroup.sass +1 -1
  92. package/lib/components/VChipGroup/_variables.scss +1 -1
  93. package/lib/components/VColorPicker/VColorPicker.mjs +16 -10
  94. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  95. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -4
  96. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  97. package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -3
  98. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  99. package/lib/components/VColorPicker/VColorPickerPreview.mjs +4 -3
  100. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  101. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +6 -5
  102. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  103. package/lib/components/VColorPicker/_variables.scss +17 -10
  104. package/lib/components/VCombobox/VCombobox.mjs +8 -4
  105. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  106. package/lib/components/VCounter/VCounter.mjs +16 -16
  107. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  108. package/lib/components/VCounter/VCounter.sass +1 -1
  109. package/lib/components/VCounter/_variables.scss +2 -1
  110. package/lib/components/VDialog/VDialog.css +2 -5
  111. package/lib/components/VDialog/VDialog.mjs +24 -25
  112. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  113. package/lib/components/VDialog/VDialog.sass +1 -4
  114. package/lib/components/VDialog/_variables.scss +0 -1
  115. package/lib/components/VDivider/VDivider.mjs +16 -17
  116. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  117. package/lib/components/VDivider/_variables.scss +3 -1
  118. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +6 -4
  119. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  120. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -5
  121. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  122. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  123. package/lib/components/VExpansionPanel/_variables.scss +15 -10
  124. package/lib/components/VField/VField.mjs +17 -10
  125. package/lib/components/VField/VField.mjs.map +1 -1
  126. package/lib/components/VField/VFieldLabel.mjs +8 -9
  127. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  128. package/lib/components/VFileInput/VFileInput.mjs +3 -3
  129. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  130. package/lib/components/VFooter/VFooter.mjs +4 -3
  131. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  132. package/lib/components/VFooter/_variables.scss +2 -1
  133. package/lib/components/VForm/VForm.mjs +3 -3
  134. package/lib/components/VForm/VForm.mjs.map +1 -1
  135. package/lib/components/VGrid/VCol.mjs.map +1 -1
  136. package/lib/components/VGrid/VContainer.mjs +4 -3
  137. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  138. package/lib/components/VGrid/VRow.mjs.map +1 -1
  139. package/lib/components/VIcon/VIcon.css +0 -8
  140. package/lib/components/VIcon/VIcon.mjs +20 -21
  141. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  142. package/lib/components/VIcon/VIcon.sass +0 -8
  143. package/lib/components/VIcon/_variables.scss +2 -5
  144. package/lib/components/VIcon/index.mjs.map +1 -1
  145. package/lib/components/VInput/VInput.mjs +9 -5
  146. package/lib/components/VInput/VInput.mjs.map +1 -1
  147. package/lib/components/VLabel/VLabel.mjs +4 -3
  148. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  149. package/lib/components/VLabel/_variables.scss +1 -0
  150. package/lib/components/VLazy/VLazy.mjs +5 -3
  151. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  152. package/lib/components/VList/VList.mjs +15 -17
  153. package/lib/components/VList/VList.mjs.map +1 -1
  154. package/lib/components/VList/VListChildren.mjs +2 -2
  155. package/lib/components/VList/VListChildren.mjs.map +1 -1
  156. package/lib/components/VList/VListGroup.mjs +8 -7
  157. package/lib/components/VList/VListGroup.mjs.map +1 -1
  158. package/lib/components/VList/VListItem.mjs +13 -8
  159. package/lib/components/VList/VListItem.mjs.map +1 -1
  160. package/lib/components/VList/VListItemAction.mjs +8 -9
  161. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  162. package/lib/components/VList/VListItemAvatar.mjs +4 -3
  163. package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
  164. package/lib/components/VList/VListItemIcon.mjs +4 -3
  165. package/lib/components/VList/VListItemIcon.mjs.map +1 -1
  166. package/lib/components/VList/VListItemMedia.mjs +4 -3
  167. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  168. package/lib/components/VList/VListSubheader.mjs +4 -3
  169. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  170. package/lib/components/VList/index.mjs +2 -2
  171. package/lib/components/VList/index.mjs.map +1 -1
  172. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +5 -3
  173. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  174. package/lib/components/VMain/VMain.mjs +4 -3
  175. package/lib/components/VMain/VMain.mjs.map +1 -1
  176. package/lib/components/VMain/_variables.scss +1 -1
  177. package/lib/components/VMenu/VMenu.mjs +5 -5
  178. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  179. package/lib/components/VMessages/VMessages.mjs +5 -3
  180. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  181. package/lib/components/VMessages/_variables.scss +1 -1
  182. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -3
  183. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  184. package/lib/components/VNavigationDrawer/_variables.scss +2 -1
  185. package/lib/components/VNavigationDrawer/touch.mjs +5 -2
  186. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  187. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  188. package/lib/components/VOverlay/VOverlay.mjs +10 -8
  189. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  190. package/lib/components/VOverlay/locationStrategies.mjs +267 -78
  191. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  192. package/lib/components/VOverlay/useActivator.mjs +4 -3
  193. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  194. package/lib/components/VOverlay/util/point.mjs +3 -3
  195. package/lib/components/VOverlay/util/point.mjs.map +1 -1
  196. package/lib/components/VPagination/VPagination.mjs +18 -14
  197. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  198. package/lib/components/VParallax/VParallax.mjs +5 -5
  199. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  200. package/lib/components/VProgressCircular/VProgressCircular.mjs +6 -5
  201. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  202. package/lib/components/VProgressCircular/_variables.scss +2 -0
  203. package/lib/components/VProgressLinear/VProgressLinear.mjs +5 -3
  204. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  205. package/lib/components/VProgressLinear/_variables.scss +1 -0
  206. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  207. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  208. package/lib/components/VRadioGroup/VRadioGroup.sass +5 -3
  209. package/lib/components/VRadioGroup/_variables.scss +3 -4
  210. package/lib/components/VRangeSlider/VRangeSlider.mjs +12 -13
  211. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  212. package/lib/components/VRating/VRating.mjs +6 -5
  213. package/lib/components/VRating/VRating.mjs.map +1 -1
  214. package/lib/components/VRating/VRating.sass +2 -0
  215. package/lib/components/VResponsive/VResponsive.mjs +7 -6
  216. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  217. package/lib/components/VSelect/VSelect.mjs +8 -4
  218. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  219. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -5
  220. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  221. package/lib/components/VSelectionControl/_variables.scss +1 -0
  222. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +3 -3
  223. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  224. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +1 -5
  225. package/lib/components/VSelectionControlGroup/_variables.scss +1 -4
  226. package/lib/components/VSheet/VSheet.mjs +3 -3
  227. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  228. package/lib/components/VSheet/_variables.scss +3 -2
  229. package/lib/components/VSlideGroup/VSlideGroup.mjs +47 -49
  230. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  231. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +4 -3
  232. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  233. package/lib/components/VSlideGroup/_variables.scss +0 -5
  234. package/lib/components/VSlideGroup/index.mjs +2 -2
  235. package/lib/components/VSlideGroup/index.mjs.map +1 -1
  236. package/lib/components/VSlider/VSlider.mjs +7 -9
  237. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  238. package/lib/components/VSlider/VSliderThumb.mjs +6 -5
  239. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  240. package/lib/components/VSlider/VSliderTrack.mjs +11 -10
  241. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  242. package/lib/components/VSlider/slider.mjs +4 -4
  243. package/lib/components/VSlider/slider.mjs.map +1 -1
  244. package/lib/components/VSnackbar/VSnackbar.mjs +45 -49
  245. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  246. package/lib/components/VSnackbar/_variables.scss +2 -0
  247. package/lib/components/VSwitch/_variables.scss +1 -0
  248. package/lib/components/VSystemBar/VSystemBar.mjs +4 -12
  249. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  250. package/lib/components/VSystemBar/_variables.scss +2 -1
  251. package/lib/components/VTable/VTable.mjs +9 -8
  252. package/lib/components/VTable/VTable.mjs.map +1 -1
  253. package/lib/components/VTable/_variables.scss +2 -0
  254. package/lib/components/VTabs/VTab.mjs +4 -4
  255. package/lib/components/VTabs/VTab.mjs.map +1 -1
  256. package/lib/components/VTabs/VTabs.mjs +9 -7
  257. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  258. package/lib/components/VTabs/_variables.scss +3 -1
  259. package/lib/components/VTextField/VTextField.mjs +5 -5
  260. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  261. package/lib/components/VTextField/_variables.scss +1 -1
  262. package/lib/components/VTextarea/VTextarea.mjs +4 -4
  263. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  264. package/lib/components/VTextarea/_variables.scss +1 -0
  265. package/lib/components/VTimeline/VTimeline.mjs +24 -25
  266. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  267. package/lib/components/VTimeline/VTimeline.sass +3 -2
  268. package/lib/components/VTimeline/VTimelineDivider.mjs +41 -38
  269. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  270. package/lib/components/VTimeline/VTimelineItem.mjs +10 -11
  271. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  272. package/lib/components/VTimeline/_variables.scss +11 -6
  273. package/lib/components/VToolbar/VToolbar.css +15 -6
  274. package/lib/components/VToolbar/VToolbar.mjs +9 -9
  275. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  276. package/lib/components/VToolbar/VToolbar.sass +15 -6
  277. package/lib/components/VToolbar/VToolbarItems.mjs +12 -8
  278. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  279. package/lib/components/VToolbar/_variables.scss +6 -2
  280. package/lib/components/VTooltip/VTooltip.mjs +37 -38
  281. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  282. package/lib/components/VTooltip/_variables.scss +1 -0
  283. package/lib/components/VWindow/VWindow.mjs +4 -4
  284. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  285. package/lib/components/VWindow/VWindowItem.mjs +10 -9
  286. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  287. package/lib/components/VWindow/_variables.scss +1 -0
  288. package/lib/components/index.d.ts +486 -445
  289. package/lib/components/transitions/dialog-transition.mjs +3 -0
  290. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  291. package/lib/composables/border.mjs +5 -6
  292. package/lib/composables/border.mjs.map +1 -1
  293. package/lib/composables/location.mjs +4 -8
  294. package/lib/composables/location.mjs.map +1 -1
  295. package/lib/composables/size.mjs +2 -2
  296. package/lib/composables/size.mjs.map +1 -1
  297. package/lib/composables/validation.mjs +1 -1
  298. package/lib/composables/validation.mjs.map +1 -1
  299. package/lib/composables/variant.mjs +2 -0
  300. package/lib/composables/variant.mjs.map +1 -1
  301. package/lib/entry-bundler.mjs +1 -1
  302. package/lib/framework.mjs +7 -2
  303. package/lib/framework.mjs.map +1 -1
  304. package/lib/index.d.ts +42 -43
  305. package/lib/util/anchor.mjs +34 -28
  306. package/lib/util/anchor.mjs.map +1 -1
  307. package/lib/util/animation.mjs +2 -2
  308. package/lib/util/animation.mjs.map +1 -1
  309. package/lib/util/box.mjs +12 -0
  310. package/lib/util/box.mjs.map +1 -1
  311. package/lib/util/helpers.mjs +9 -1
  312. package/lib/util/helpers.mjs.map +1 -1
  313. package/package.json +6 -8
  314. package/lib/components/VBanner/VBannerAvatar.mjs +0 -20
  315. package/lib/components/VBanner/VBannerAvatar.mjs.map +0 -1
  316. package/lib/components/VBanner/VBannerIcon.mjs +0 -20
  317. package/lib/components/VBanner/VBannerIcon.mjs.map +0 -1
  318. package/lib/components/VBreadcrumbs/shared.mjs +0 -2
  319. package/lib/components/VBreadcrumbs/shared.mjs.map +0 -1
  320. package/lib/components/VCard/VCardAvatar.mjs +0 -3
  321. package/lib/components/VCard/VCardAvatar.mjs.map +0 -1
  322. package/lib/components/VCard/VCardContent.mjs +0 -3
  323. package/lib/components/VCard/VCardContent.mjs.map +0 -1
  324. package/lib/components/VCard/VCardHeader.mjs +0 -3
  325. package/lib/components/VCard/VCardHeader.mjs.map +0 -1
  326. package/lib/components/VCard/VCardHeaderText.mjs +0 -3
  327. package/lib/components/VCard/VCardHeaderText.mjs.map +0 -1
  328. package/lib/components/VCard/VCardImg.mjs +0 -3
  329. package/lib/components/VCard/VCardImg.mjs.map +0 -1
  330. package/lib/components/VTimeline/shared.mjs +0 -2
  331. package/lib/components/VTimeline/shared.mjs.map +0 -1
  332. package/lib/presets/default/index.mjs +0 -71
  333. package/lib/presets/default/index.mjs.map +0 -1
@@ -2,11 +2,11 @@ import { createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VTable.css"; // Composables
4
4
 
5
+ import { makeDensityProps, useDensity } from "../../composables/density.mjs";
5
6
  import { makeTagProps } from "../../composables/tag.mjs";
6
7
  import { makeThemeProps, provideTheme } from "../../composables/theme.mjs"; // Utilities
7
8
 
8
- import { convertToUnit, defineComponent } from "../../util/index.mjs";
9
- import { makeDensityProps, useDensity } from "../../composables/density.mjs";
9
+ import { convertToUnit, defineComponent, useRender } from "../../util/index.mjs";
10
10
  export const VTable = defineComponent({
11
11
  name: 'VTable',
12
12
  props: {
@@ -14,8 +14,8 @@ export const VTable = defineComponent({
14
14
  fixedFooter: Boolean,
15
15
  height: [Number, String],
16
16
  ...makeDensityProps(),
17
- ...makeThemeProps(),
18
- ...makeTagProps()
17
+ ...makeTagProps(),
18
+ ...makeThemeProps()
19
19
  },
20
20
 
21
21
  setup(props, _ref) {
@@ -28,8 +28,8 @@ export const VTable = defineComponent({
28
28
  const {
29
29
  densityClasses
30
30
  } = useDensity(props);
31
- return () => {
32
- var _slots$top, _slots$default, _slots$bottom;
31
+ useRender(() => {
32
+ var _slots$top, _slots$bottom;
33
33
 
34
34
  return _createVNode(props.tag, {
35
35
  "class": ['v-table', {
@@ -45,9 +45,10 @@ export const VTable = defineComponent({
45
45
  "style": {
46
46
  height: convertToUnit(props.height)
47
47
  }
48
- }, [_createVNode("table", null, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)])]), (_slots$bottom = slots.bottom) == null ? void 0 : _slots$bottom.call(slots)]
48
+ }, [_createVNode("table", null, [slots.default()])]), (_slots$bottom = slots.bottom) == null ? void 0 : _slots$bottom.call(slots)]
49
49
  });
50
- };
50
+ });
51
+ return {};
51
52
  }
52
53
 
53
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VTable.mjs","names":["makeTagProps","makeThemeProps","provideTheme","convertToUnit","defineComponent","makeDensityProps","useDensity","VTable","name","props","fixedHeader","Boolean","fixedFooter","height","Number","String","setup","slots","themeClasses","densityClasses","top","bottom","value","default"],"sources":["../../../src/components/VTable/VTable.tsx"],"sourcesContent":["// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, defineComponent } from '@/util'\nimport { makeDensityProps, useDensity } from '@/composables/density'\n\nexport const VTable = defineComponent({\n name: 'VTable',\n\n props: {\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n\n ...makeDensityProps(),\n ...makeThemeProps(),\n ...makeTagProps(),\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n return () => (\n <props.tag\n class={[\n 'v-table',\n {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n },\n themeClasses.value,\n densityClasses.value,\n ]}\n >\n { slots.top?.() }\n\n { slots.default && (\n <div\n class=\"v-table__wrapper\"\n style={{ height: convertToUnit(props.height) }}\n >\n <table>\n { slots.default?.() }\n </table>\n </div>\n ) }\n\n { slots.bottom?.() }\n </props.tag>\n )\n },\n})\n"],"mappings":";AAAA;AACA,sB,CAEA;;SACSA,Y;SACAC,c,EAAgBC,Y,uCAEzB;;SACSC,a,EAAeC,e;SACfC,gB,EAAkBC,U;AAE3B,OAAO,MAAMC,MAAM,GAAGH,eAAe,CAAC;EACpCI,IAAI,EAAE,QAD8B;EAGpCC,KAAK,EAAE;IACLC,WAAW,EAAEC,OADR;IAELC,WAAW,EAAED,OAFR;IAGLE,MAAM,EAAE,CAACC,MAAD,EAASC,MAAT,CAHH;IAKL,GAAGV,gBAAgB,EALd;IAML,GAAGJ,cAAc,EANZ;IAOL,GAAGD,YAAY;EAPV,CAH6B;;EAapCgB,KAAK,CAAEP,KAAF,QAAoB;IAAA,IAAX;MAAEQ;IAAF,CAAW;IACvB,MAAM;MAAEC;IAAF,IAAmBhB,YAAY,CAACO,KAAD,CAArC;IACA,MAAM;MAAEU;IAAF,IAAqBb,UAAU,CAACG,KAAD,CAArC;IAEA,OAAO;MAAA;;MAAA;QAAA,SAEI,CACL,SADK,EAEL;UACE,yBAAyB,CAAC,CAACA,KAAK,CAACI,MADnC;UAEE,yBAAyBJ,KAAK,CAACC,WAFjC;UAGE,yBAAyBD,KAAK,CAACG,WAHjC;UAIE,oBAAoB,CAAC,CAACK,KAAK,CAACG,GAJ9B;UAKE,uBAAuB,CAAC,CAACH,KAAK,CAACI;QALjC,CAFK,EASLH,YAAY,CAACI,KATR,EAULH,cAAc,CAACG,KAVV;MAFJ;QAAA,8BAeDL,KAAK,CAACG,GAfL,qBAeD,gBAAAH,KAAK,CAfJ,EAiBDA,KAAK,CAACM,OAAN;UAAA,SAEQ,kBAFR;UAAA,SAGS;YAAEV,MAAM,EAAEV,aAAa,CAACM,KAAK,CAACI,MAAP;UAAvB;QAHT,mDAMMI,KAAK,CAACM,OANZ,qBAMM,oBAAAN,KAAK,CANX,IAjBC,mBA4BDA,KAAK,CAACI,MA5BL,qBA4BD,mBAAAJ,KAAK,CA5BJ;MAAA;IAAA,CAAP;EA+BD;;AAhDmC,CAAD,CAA9B"}
1
+ {"version":3,"file":"VTable.mjs","names":["makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","convertToUnit","defineComponent","useRender","VTable","name","props","fixedHeader","Boolean","fixedFooter","height","Number","String","setup","slots","themeClasses","densityClasses","top","bottom","value","default"],"sources":["../../../src/components/VTable/VTable.tsx"],"sourcesContent":["// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, defineComponent, useRender } from '@/util'\n\nexport const VTable = defineComponent({\n name: 'VTable',\n\n props: {\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-table',\n {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n },\n themeClasses.value,\n densityClasses.value,\n ]}\n >\n { slots.top?.() }\n\n { slots.default && (\n <div\n class=\"v-table__wrapper\"\n style={{ height: convertToUnit(props.height) }}\n >\n <table>\n { slots.default() }\n </table>\n </div>\n ) }\n\n { slots.bottom?.() }\n </props.tag>\n ))\n\n return {}\n },\n})\n"],"mappings":";AAAA;AACA,sB,CAEA;;SACSA,gB,EAAkBC,U;SAClBC,Y;SACAC,c,EAAgBC,Y,uCAEzB;;SACSC,a,EAAeC,e,EAAiBC,S;AAEzC,OAAO,MAAMC,MAAM,GAAGF,eAAe,CAAC;EACpCG,IAAI,EAAE,QAD8B;EAGpCC,KAAK,EAAE;IACLC,WAAW,EAAEC,OADR;IAELC,WAAW,EAAED,OAFR;IAGLE,MAAM,EAAE,CAACC,MAAD,EAASC,MAAT,CAHH;IAKL,GAAGhB,gBAAgB,EALd;IAML,GAAGE,YAAY,EANV;IAOL,GAAGC,cAAc;EAPZ,CAH6B;;EAapCc,KAAK,CAAEP,KAAF,QAAoB;IAAA,IAAX;MAAEQ;IAAF,CAAW;IACvB,MAAM;MAAEC;IAAF,IAAmBf,YAAY,CAACM,KAAD,CAArC;IACA,MAAM;MAAEU;IAAF,IAAqBnB,UAAU,CAACS,KAAD,CAArC;IAEAH,SAAS,CAAC;MAAA;;MAAA;QAAA,SAEC,CACL,SADK,EAEL;UACE,yBAAyB,CAAC,CAACG,KAAK,CAACI,MADnC;UAEE,yBAAyBJ,KAAK,CAACC,WAFjC;UAGE,yBAAyBD,KAAK,CAACG,WAHjC;UAIE,oBAAoB,CAAC,CAACK,KAAK,CAACG,GAJ9B;UAKE,uBAAuB,CAAC,CAACH,KAAK,CAACI;QALjC,CAFK,EASLH,YAAY,CAACI,KATR,EAULH,cAAc,CAACG,KAVV;MAFD;QAAA,8BAeJL,KAAK,CAACG,GAfF,qBAeJ,gBAAAH,KAAK,CAfD,EAiBJA,KAAK,CAACM,OAAN;UAAA,SAEQ,kBAFR;UAAA,SAGS;YAAEV,MAAM,EAAET,aAAa,CAACK,KAAK,CAACI,MAAP;UAAvB;QAHT,iCAMMI,KAAK,CAACM,OAAN,EANN,IAjBI,mBA4BJN,KAAK,CAACI,MA5BF,qBA4BJ,mBAAAJ,KAAK,CA5BD;MAAA;IAAA,CAAD,CAAT;IAgCA,OAAO,EAAP;EACD;;AAlDmC,CAAD,CAA9B"}
@@ -3,6 +3,7 @@
3
3
  @use '../../styles/settings';
4
4
  @use '../../styles/tools';
5
5
 
6
+ // VTable
6
7
  $table-background: rgb(var(--v-theme-surface)) !default;
7
8
  $table-color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity)) !default;
8
9
  $table-density: ('default': 0, 'comfortable': -2, 'compact': -4) !default;
@@ -15,6 +16,7 @@ $table-border: thin solid $table-border-color !default;
15
16
  $table-hover-color: rgba(var(--v-border-color), var(--v-hover-opacity)) !default;
16
17
  $table-line-height: 1.5 !default;
17
18
 
19
+ // Lists
18
20
  $table-theme: (
19
21
  $table-background,
20
22
  $table-color,
@@ -4,17 +4,17 @@ import "./VTab.css"; // Components
4
4
 
5
5
  import { VBtn } from "../VBtn/index.mjs"; // Composables
6
6
 
7
+ import { IconValue } from "../../composables/icons.mjs";
7
8
  import { makeGroupItemProps } from "../../composables/group.mjs";
8
9
  import { makeRouterProps } from "../../composables/router.mjs";
9
10
  import { makeTagProps } from "../../composables/tag.mjs";
10
11
  import { makeThemeProps } from "../../composables/theme.mjs";
11
- import { useTextColor } from "../../composables/color.mjs";
12
- import { IconValue } from "../../composables/icons.mjs"; // Utilities
12
+ import { useTextColor } from "../../composables/color.mjs"; // Utilities
13
13
 
14
14
  import { computed, ref } from 'vue';
15
- import { defineComponent, pick, standardEasing, useRender } from "../../util/index.mjs";
16
- import { VTabsSymbol } from "./shared.mjs"; // Types
15
+ import { defineComponent, pick, standardEasing, useRender } from "../../util/index.mjs"; // Types
17
16
 
17
+ import { VTabsSymbol } from "./shared.mjs";
18
18
  export const VTab = defineComponent({
19
19
  name: 'VTab',
20
20
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"VTab.mjs","names":["VBtn","makeGroupItemProps","makeRouterProps","makeTagProps","makeThemeProps","useTextColor","IconValue","computed","ref","defineComponent","pick","standardEasing","useRender","VTabsSymbol","VTab","name","props","fixed","Boolean","icon","String","Function","Object","prependIcon","appendIcon","stacked","title","ripple","type","default","color","sliderColor","hideSlider","direction","selectedClass","setup","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","isSelected","rootEl","sliderEl","updateSlider","value","prevEl","$el","parentElement","querySelector","nextEl","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","animate","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","undefined"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeGroupItemProps } from '@/composables/group'\nimport { makeRouterProps } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { defineComponent, pick, standardEasing, useRender } from '@/util'\nimport { VTabsSymbol } from './shared'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VTab = defineComponent({\n name: 'VTab',\n\n props: {\n fixed: Boolean,\n icon: [Boolean, String, Function, Object] as PropType<boolean | IconValue>,\n prependIcon: IconValue,\n appendIcon: IconValue,\n\n stacked: Boolean,\n title: String,\n\n ripple: {\n type: Boolean,\n default: true,\n },\n color: String,\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...makeTagProps(),\n ...makeRouterProps(),\n ...makeGroupItemProps({\n selectedClass: 'v-tab--selected',\n }),\n ...makeThemeProps(),\n },\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = ref(false)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n function updateSlider ({ value }: { value: boolean }) {\n isSelected.value = value\n\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight])\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight]\n\n const sigma = 1.5\n nextEl.animate({\n backgroundColor: [color, ''],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n '',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const [btnProps] = pick(props, [\n 'href',\n 'to',\n 'replace',\n 'icon',\n 'stacked',\n 'prependIcon',\n 'appendIcon',\n 'ripple',\n 'theme',\n 'disabled',\n 'selectedClass',\n 'value',\n 'color',\n ])\n\n return (\n <VBtn\n _as=\"VTab\"\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n variant=\"text\"\n rounded={ 0 }\n { ...btnProps }\n { ...attrs }\n onGroup:selected={ updateSlider }\n >\n { slots.default ? slots.default() : props.title }\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n ) }\n </VBtn>\n )\n })\n\n return {}\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VTab.mjs","names":["VBtn","IconValue","makeGroupItemProps","makeRouterProps","makeTagProps","makeThemeProps","useTextColor","computed","ref","defineComponent","pick","standardEasing","useRender","VTabsSymbol","VTab","name","props","fixed","Boolean","icon","String","Function","Object","prependIcon","appendIcon","stacked","title","ripple","type","default","color","sliderColor","hideSlider","direction","selectedClass","setup","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","isSelected","rootEl","sliderEl","updateSlider","value","prevEl","$el","parentElement","querySelector","nextEl","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","animate","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","undefined"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeGroupItemProps } from '@/composables/group'\nimport { makeRouterProps } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { defineComponent, pick, standardEasing, useRender } from '@/util'\n\n// Types\nimport { VTabsSymbol } from './shared'\nimport type { PropType } from 'vue'\n\nexport const VTab = defineComponent({\n name: 'VTab',\n\n props: {\n fixed: Boolean,\n icon: [Boolean, String, Function, Object] as PropType<boolean | IconValue>,\n prependIcon: IconValue,\n appendIcon: IconValue,\n\n stacked: Boolean,\n title: String,\n\n ripple: {\n type: Boolean,\n default: true,\n },\n color: String,\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...makeTagProps(),\n ...makeRouterProps(),\n ...makeGroupItemProps({\n selectedClass: 'v-tab--selected',\n }),\n ...makeThemeProps(),\n },\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = ref(false)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n function updateSlider ({ value }: { value: boolean }) {\n isSelected.value = value\n\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight])\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight]\n\n const sigma = 1.5\n nextEl.animate({\n backgroundColor: [color, ''],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n '',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const [btnProps] = pick(props, [\n 'href',\n 'to',\n 'replace',\n 'icon',\n 'stacked',\n 'prependIcon',\n 'appendIcon',\n 'ripple',\n 'theme',\n 'disabled',\n 'selectedClass',\n 'value',\n 'color',\n ])\n\n return (\n <VBtn\n _as=\"VTab\"\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n variant=\"text\"\n rounded={ 0 }\n { ...btnProps }\n { ...attrs }\n onGroup:selected={ updateSlider }\n >\n { slots.default ? slots.default() : props.title }\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n ) }\n </VBtn>\n )\n })\n\n return {}\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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"}
@@ -5,14 +5,15 @@ import "./VTabs.css"; // Components
5
5
  import { VSlideGroup } from "../VSlideGroup/index.mjs";
6
6
  import { VTab } from "./VTab.mjs"; // Composables
7
7
 
8
- import { useBackgroundColor } from "../../composables/color.mjs";
9
- import { provideDefaults } from "../../composables/defaults.mjs";
10
8
  import { makeDensityProps, useDensity } from "../../composables/density.mjs";
11
- import { makeTagProps } from "../../composables/tag.mjs"; // Utilities
9
+ import { makeTagProps } from "../../composables/tag.mjs";
10
+ import { provideDefaults } from "../../composables/defaults.mjs";
11
+ import { useBackgroundColor } from "../../composables/color.mjs"; // Utilities
12
12
 
13
13
  import { computed, toRef } from 'vue';
14
- import { defineComponent } from "../../util/index.mjs";
15
- import { VTabsSymbol } from "./shared.mjs"; // Types
14
+ import { defineComponent, useRender } from "../../util/index.mjs"; // Types
15
+
16
+ import { VTabsSymbol } from "./shared.mjs";
16
17
 
17
18
  function parseItems(items) {
18
19
  if (!items) return [];
@@ -82,7 +83,7 @@ export const VTabs = defineComponent({
82
83
  hideSlider: toRef(props, 'hideSlider')
83
84
  }
84
85
  });
85
- return () => _createVNode(VSlideGroup, {
86
+ useRender(() => _createVNode(VSlideGroup, {
86
87
  "class": ['v-tabs', `v-tabs--${props.direction}`, {
87
88
  'v-tabs--align-with-title': props.alignWithTitle,
88
89
  'v-tabs--centered': props.centered,
@@ -102,7 +103,8 @@ export const VTabs = defineComponent({
102
103
  default: () => [slots.default ? slots.default() : parsedItems.value.map(item => _createVNode(VTab, _mergeProps(item, {
103
104
  "key": item.title
104
105
  }), null))]
105
- });
106
+ }));
107
+ return {};
106
108
  }
107
109
 
108
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VTabs.mjs","names":["VSlideGroup","VTab","useBackgroundColor","provideDefaults","makeDensityProps","useDensity","makeTagProps","computed","toRef","defineComponent","VTabsSymbol","parseItems","items","map","item","title","value","VTabs","name","props","alignWithTitle","Boolean","color","String","direction","type","default","fixedTabs","Array","stacked","backgroundColor","centered","grow","height","Number","undefined","hideSlider","optional","end","sliderColor","modelValue","emits","v","setup","slots","emit","parsedItems","densityClasses","backgroundColorClasses","backgroundColorStyles","fixed"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VSlideGroup } from '@/components/VSlideGroup'\nimport { VTab } from './VTab'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent } from '@/util'\nimport { VTabsSymbol } from './shared'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type TabItem = string | Record<string, any>\n\nfunction parseItems (items: TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (typeof item === 'string') return { title: item, value: item }\n\n return item\n })\n}\n\nexport const VTabs = defineComponent({\n name: 'VTabs',\n\n props: {\n alignWithTitle: Boolean,\n color: String,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n backgroundColor: String,\n centered: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n optional: Boolean,\n end: Boolean,\n sliderColor: String,\n modelValue: null,\n\n ...makeDensityProps(),\n ...makeTagProps(),\n },\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots, emit }) {\n const parsedItems = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'backgroundColor'))\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n return () => (\n <VSlideGroup\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n {\n 'v-tabs--align-with-title': props.alignWithTitle,\n 'v-tabs--centered': props.centered,\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--end': props.end,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n ]}\n style={backgroundColorStyles.value}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n mandatory=\"force\"\n direction={ props.direction }\n modelValue={ props.modelValue }\n onUpdate:modelValue={ v => emit('update:modelValue', v) }\n >\n { slots.default ? slots.default() : parsedItems.value.map(item => (\n <VTab { ...item } key={ item.title } />\n )) }\n </VSlideGroup>\n )\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VTabs.mjs","names":["VSlideGroup","VTab","makeDensityProps","useDensity","makeTagProps","provideDefaults","useBackgroundColor","computed","toRef","defineComponent","useRender","VTabsSymbol","parseItems","items","map","item","title","value","VTabs","name","props","alignWithTitle","Boolean","color","String","direction","type","default","fixedTabs","Array","stacked","backgroundColor","centered","grow","height","Number","undefined","hideSlider","optional","end","sliderColor","modelValue","emits","v","setup","slots","emit","parsedItems","densityClasses","backgroundColorClasses","backgroundColorStyles","fixed"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VSlideGroup } from '@/components/VSlideGroup'\nimport { VTab } from './VTab'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport { VTabsSymbol } from './shared'\nimport type { PropType } from 'vue'\n\nexport type TabItem = string | Record<string, any>\n\nfunction parseItems (items: TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (typeof item === 'string') return { title: item, value: item }\n\n return item\n })\n}\n\nexport const VTabs = defineComponent({\n name: 'VTabs',\n\n props: {\n alignWithTitle: Boolean,\n color: String,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n backgroundColor: String,\n centered: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n optional: Boolean,\n end: Boolean,\n sliderColor: String,\n modelValue: null,\n\n ...makeDensityProps(),\n ...makeTagProps(),\n },\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots, emit }) {\n const parsedItems = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'backgroundColor'))\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n useRender(() => (\n <VSlideGroup\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n {\n 'v-tabs--align-with-title': props.alignWithTitle,\n 'v-tabs--centered': props.centered,\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--end': props.end,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n ]}\n style={backgroundColorStyles.value}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n mandatory=\"force\"\n direction={ props.direction }\n modelValue={ props.modelValue }\n onUpdate:modelValue={ v => emit('update:modelValue', v) }\n >\n { slots.default ? slots.default() : parsedItems.value.map(item => (\n <VTab { ...item } key={ item.title } />\n )) }\n </VSlideGroup>\n ))\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"mappings":";AAAA;AACA,qB,CAEA;;SACSA,W;SACAC,I,sBAET;;SACSC,gB,EAAkBC,U;SAClBC,Y;SACAC,e;SACAC,kB,uCAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,e,EAAiBC,S,gCAE1B;;SACSC,W;;AAKT,SAASC,UAAT,CAAqBC,KAArB,EAAmD;EACjD,IAAI,CAACA,KAAL,EAAY,OAAO,EAAP;EAEZ,OAAOA,KAAK,CAACC,GAAN,CAAUC,IAAI,IAAI;IACvB,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B,OAAO;MAAEC,KAAK,EAAED,IAAT;MAAeE,KAAK,EAAEF;IAAtB,CAAP;IAE9B,OAAOA,IAAP;EACD,CAJM,CAAP;AAKD;;AAED,OAAO,MAAMG,KAAK,GAAGT,eAAe,CAAC;EACnCU,IAAI,EAAE,OAD6B;EAGnCC,KAAK,EAAE;IACLC,cAAc,EAAEC,OADX;IAELC,KAAK,EAAEC,MAFF;IAGLC,SAAS,EAAE;MACTC,IAAI,EAAEF,MADG;MAETG,OAAO,EAAE;IAFA,CAHN;IAOLC,SAAS,EAAEN,OAPN;IAQLT,KAAK,EAAE;MACLa,IAAI,EAAEG,KADD;MAELF,OAAO,EAAE,MAAO;IAFX,CARF;IAYLG,OAAO,EAAER,OAZJ;IAaLS,eAAe,EAAEP,MAbZ;IAcLQ,QAAQ,EAAEV,OAdL;IAeLW,IAAI,EAAEX,OAfD;IAgBLY,MAAM,EAAE;MACNR,IAAI,EAAE,CAACS,MAAD,EAASX,MAAT,CADA;MAENG,OAAO,EAAES;IAFH,CAhBH;IAoBLC,UAAU,EAAEf,OApBP;IAqBLgB,QAAQ,EAAEhB,OArBL;IAsBLiB,GAAG,EAAEjB,OAtBA;IAuBLkB,WAAW,EAAEhB,MAvBR;IAwBLiB,UAAU,EAAE,IAxBP;IA0BL,GAAGvC,gBAAgB,EA1Bd;IA2BL,GAAGE,YAAY;EA3BV,CAH4B;EAiCnCsC,KAAK,EAAE;IACL,qBAAsBC,CAAD,IAAgB;EADhC,CAjC4B;;EAqCnCC,KAAK,CAAExB,KAAF,QAA0B;IAAA,IAAjB;MAAEyB,KAAF;MAASC;IAAT,CAAiB;IAC7B,MAAMC,WAAW,GAAGxC,QAAQ,CAAC,MAAMK,UAAU,CAACQ,KAAK,CAACP,KAAP,CAAjB,CAA5B;IACA,MAAM;MAAEmC;IAAF,IAAqB7C,UAAU,CAACiB,KAAD,CAArC;IACA,MAAM;MAAE6B,sBAAF;MAA0BC;IAA1B,IAAoD5C,kBAAkB,CAACE,KAAK,CAACY,KAAD,EAAQ,iBAAR,CAAN,CAA5E;IAEAf,eAAe,CAAC;MACdJ,IAAI,EAAE;QACJsB,KAAK,EAAEf,KAAK,CAACY,KAAD,EAAQ,OAAR,CADR;QAEJK,SAAS,EAAEjB,KAAK,CAACY,KAAD,EAAQ,WAAR,CAFZ;QAGJU,OAAO,EAAEtB,KAAK,CAACY,KAAD,EAAQ,SAAR,CAHV;QAIJ+B,KAAK,EAAE3C,KAAK,CAACY,KAAD,EAAQ,WAAR,CAJR;QAKJoB,WAAW,EAAEhC,KAAK,CAACY,KAAD,EAAQ,aAAR,CALd;QAMJiB,UAAU,EAAE7B,KAAK,CAACY,KAAD,EAAQ,YAAR;MANb;IADQ,CAAD,CAAf;IAWAV,SAAS,CAAC;MAAA,SAEC,CACL,QADK,EAEJ,WAAUU,KAAK,CAACK,SAAU,EAFtB,EAGL;QACE,4BAA4BL,KAAK,CAACC,cADpC;QAEE,oBAAoBD,KAAK,CAACY,QAF5B;QAGE,sBAAsBZ,KAAK,CAACQ,SAH9B;QAIE,gBAAgBR,KAAK,CAACa,IAJxB;QAKE,eAAeb,KAAK,CAACmB,GALvB;QAME,mBAAmBnB,KAAK,CAACU;MAN3B,CAHK,EAWLkB,cAAc,CAAC/B,KAXV,EAYLgC,sBAAsB,CAAChC,KAZlB,CAFD;MAAA,SAgBCiC,qBAAqB,CAACjC,KAhBvB;MAAA,QAiBD,SAjBC;MAAA,UAkBGN,WAlBH;MAAA,aAmBI,OAnBJ;MAAA,aAoBMS,KAAK,CAACK,SApBZ;MAAA,cAqBOL,KAAK,CAACqB,UArBb;MAAA,uBAsBgBE,CAAC,IAAIG,IAAI,CAAC,mBAAD,EAAsBH,CAAtB;IAtBzB;MAAA,gBAwBJE,KAAK,CAAClB,OAAN,GAAgBkB,KAAK,CAAClB,OAAN,EAAhB,GAAkCoB,WAAW,CAAC9B,KAAZ,CAAkBH,GAAlB,CAAsBC,IAAI,mCACjDA,IADiD;QAAA,OACpCA,IAAI,CAACC;MAD+B,SAA1B,CAxB9B;IAAA,EAAD,CAAT;IA8BA,OAAO,EAAP;EACD;;AApFkC,CAAD,CAA7B"}
@@ -1,10 +1,12 @@
1
1
  @use 'sass:math';
2
2
  @use 'sass:map';
3
3
 
4
- $tabs-density: ('default': 0, 'comfortable' : -1, 'compact': -3) !default;
4
+ // VTabs
5
+ $tabs-density: ( 'default': 0, 'comfortable' : -1, 'compact': -3) !default;
5
6
  $tabs-height: 48px !default;
6
7
  $tabs-stacked-height: 72px !default;
7
8
 
9
+ // VTab
8
10
  $tab-align-with-title-margin: 42px !default;
9
11
  $tab-max-width: 360px !default;
10
12
  $tab-min-width: 90px !default;
@@ -2,14 +2,14 @@ import { withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDi
2
2
  // Styles
3
3
  import "./VTextField.css"; // Components
4
4
 
5
- import { filterInputProps, makeVInputProps, VInput } from "../VInput/VInput.mjs";
6
5
  import { filterFieldProps, makeVFieldProps, VField } from "../VField/VField.mjs";
7
- import { VCounter } from "../VCounter/index.mjs"; // Composables
6
+ import { filterInputProps, makeVInputProps, VInput } from "../VInput/VInput.mjs";
7
+ import { VCounter } from "../VCounter/index.mjs"; // Directives
8
8
 
9
- import { useForwardRef } from "../../composables/forwardRef.mjs";
10
- import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Directives
9
+ import Intersect from "../../directives/intersect/index.mjs"; // Composables
11
10
 
12
- import Intersect from "../../directives/intersect/index.mjs"; // Utilities
11
+ import { useForwardRef } from "../../composables/forwardRef.mjs";
12
+ import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
13
13
 
14
14
  import { computed, nextTick, ref } from 'vue';
15
15
  import { filterInputAttrs, genericComponent, useRender } from "../../util/index.mjs"; // Types
@@ -1 +1 @@
1
- {"version":3,"file":"VTextField.mjs","names":["filterInputProps","makeVInputProps","VInput","filterFieldProps","makeVFieldProps","VField","VCounter","useForwardRef","useProxiedModel","Intersect","computed","nextTick","ref","filterInputAttrs","genericComponent","useRender","activeTypes","VTextField","name","directives","inheritAttrs","props","autofocus","Boolean","counter","Number","String","counterValue","Function","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","emits","e","val","setup","attrs","emit","slots","model","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","focus","vInputRef","vFieldRef","isFocused","inputRef","isActive","includes","messages","onFocus","document","activeElement","onControlClick","onClear","stopPropagation","hasCounter","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","variant","id","isDisabled","isDirty","isReadonly","isValid","preventDefault","dirty","class","fieldClass","slotProps","handler","details"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VCounter } from '@/components/VCounter'\n\n// Composables\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { computed, nextTick, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const VTextField = genericComponent<new <T>() => {\n $slots: VInputSlots & VFieldSlots\n}>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: {\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n hint: String,\n persistentHint: Boolean,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:clear': (e: MouseEvent) => true,\n 'click:control': (e: MouseEvent) => true,\n 'click:input': (e: MouseEvent) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const isFocused = ref(false)\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value\n ))\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isFocused.value || props.persistentHint) ? props.hint : ''\n })\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) isFocused.value = true\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n emit('click:clear', e)\n })\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant),\n },\n ]}\n onClick:prepend={ attrs['onClick:prepend'] }\n onClick:append={ attrs['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ (e: MouseEvent) => {\n if (e.target === inputRef.value) return\n\n e.preventDefault()\n }}\n onClick:control={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ attrs['onClick:prependInner'] }\n onClick:appendInner={ attrs['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n ) }\n\n <div\n class={ fieldClass }\n onClick={ e => emit('click:input', e) }\n data-no-activator=\"\"\n >\n { slots.default?.() }\n\n <input\n ref={ inputRef }\n v-model={ model.value }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ () => (isFocused.value = false) }\n { ...slotProps }\n { ...inputAttrs }\n />\n </div>\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n ) }\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasCounter ? () => (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots={ slots.counter }\n />\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return useForwardRef({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VTextField.mjs","names":["filterFieldProps","makeVFieldProps","VField","filterInputProps","makeVInputProps","VInput","VCounter","Intersect","useForwardRef","useProxiedModel","computed","nextTick","ref","filterInputAttrs","genericComponent","useRender","activeTypes","VTextField","name","directives","inheritAttrs","props","autofocus","Boolean","counter","Number","String","counterValue","Function","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","emits","e","val","setup","attrs","emit","slots","model","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","focus","vInputRef","vFieldRef","isFocused","inputRef","isActive","includes","messages","onFocus","document","activeElement","onControlClick","onClear","stopPropagation","hasCounter","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","variant","id","isDisabled","isDirty","isReadonly","isValid","preventDefault","dirty","class","fieldClass","slotProps","handler","details"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const VTextField = genericComponent<new <T>() => {\n $slots: VInputSlots & VFieldSlots\n}>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: {\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n hint: String,\n persistentHint: Boolean,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:clear': (e: MouseEvent) => true,\n 'click:control': (e: MouseEvent) => true,\n 'click:input': (e: MouseEvent) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const isFocused = ref(false)\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value\n ))\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isFocused.value || props.persistentHint) ? props.hint : ''\n })\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) isFocused.value = true\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n emit('click:clear', e)\n })\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant),\n },\n ]}\n onClick:prepend={ attrs['onClick:prepend'] }\n onClick:append={ attrs['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ (e: MouseEvent) => {\n if (e.target === inputRef.value) return\n\n e.preventDefault()\n }}\n onClick:control={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ attrs['onClick:prependInner'] }\n onClick:appendInner={ attrs['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n ) }\n\n <div\n class={ fieldClass }\n onClick={ e => emit('click:input', e) }\n data-no-activator=\"\"\n >\n { slots.default?.() }\n\n <input\n ref={ inputRef }\n v-model={ model.value }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ () => (isFocused.value = false) }\n { ...slotProps }\n { ...inputAttrs }\n />\n </div>\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n ) }\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasCounter ? () => (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots={ slots.counter }\n />\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return useForwardRef({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  @use '../../styles/settings';
2
2
 
3
- // Defaults
3
+ // VTextField
4
4
  $text-field-affix-color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)) !default;
5
5
  $text-field-border-radius: settings.$border-radius-root !default;
6
6
  $text-field-details-padding-inline: 16px !default;
@@ -5,12 +5,12 @@ import "./VTextarea.css"; // Components
5
5
  import { filterFieldProps, makeVFieldProps } from "../VField/VField.mjs";
6
6
  import { filterInputProps, makeVInputProps, VInput } from "../VInput/VInput.mjs";
7
7
  import { VCounter } from "../VCounter/index.mjs";
8
- import { VField } from "../VField/index.mjs"; // Composables
8
+ import { VField } from "../VField/index.mjs"; // Directives
9
9
 
10
- import { useForwardRef } from "../../composables/forwardRef.mjs";
11
- import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Directives
10
+ import Intersect from "../../directives/intersect/index.mjs"; // Composables
12
11
 
13
- import Intersect from "../../directives/intersect/index.mjs"; // Utilities
12
+ import { useForwardRef } from "../../composables/forwardRef.mjs";
13
+ import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
14
14
 
15
15
  import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue';
16
16
  import { convertToUnit, defineComponent, filterInputAttrs, useRender } from "../../util/index.mjs"; // Types
@@ -1 +1 @@
1
- {"version":3,"file":"VTextarea.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VCounter","VField","useForwardRef","useProxiedModel","Intersect","computed","nextTick","onBeforeUnmount","onMounted","ref","watch","convertToUnit","defineComponent","filterInputAttrs","useRender","VTextarea","name","directives","inheritAttrs","props","autoGrow","Boolean","autofocus","counter","Number","String","counterValue","Function","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","noResize","rows","type","default","validator","v","isNaN","parseFloat","maxRows","suffix","emits","e","val","setup","attrs","emit","slots","model","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","focus","vInputRef","vFieldRef","isFocused","controlHeight","textareaRef","isActive","messages","onFocus","document","activeElement","onControlClick","onClear","stopPropagation","sizerRef","calculateInputHeight","style","getComputedStyle","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","maxHeight","Infinity","Math","min","observer","ResizeObserver","observe","disconnect","hasCounter","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","handler","details"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Composables\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { convertToUnit, defineComponent, filterInputAttrs, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VTextarea = defineComponent({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: {\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n hint: String,\n persistentHint: Boolean,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n maxRows: {\n type: [Number, String],\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n suffix: String,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:clear': (e: MouseEvent) => true,\n 'click:control': (e: MouseEvent) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value || '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const isFocused = ref(false)\n const controlHeight = ref('auto')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.persistentPlaceholder\n ))\n\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isActive.value || props.persistentHint) ? props.hint : ''\n })\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) isFocused.value = true\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n emit('click:clear', e)\n })\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = parseFloat(props.rows) * lineHeight + padding\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n\n controlHeight.value = convertToUnit(Math.min(maxHeight, Math.max(minHeight, height ?? 0)))\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n v-model={ model.value }\n class={[\n 'v-textarea',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n },\n ]}\n { ...rootAttrs }\n { ...inputProps }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n style={{\n '--v-input-control-height': controlHeight.value,\n }}\n onClick:control={ onControlClick }\n onClick:clear={ onClear }\n role=\"textbox\"\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n ) }\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n v-model={ model.value }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ () => (isFocused.value = false) }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n { props.autoGrow && (\n <textarea\n class={[\n fieldClass,\n 'v-textarea__sizer',\n ]}\n v-model={ model.value }\n ref={ sizerRef }\n readonly\n aria-hidden=\"true\"\n />\n )}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n ) }\n </>\n ),\n }}\n </VField>\n ),\n details: hasCounter ? () => (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots={ slots.counter }\n />\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return useForwardRef({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType<typeof VTextarea>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VTextarea.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VCounter","VField","Intersect","useForwardRef","useProxiedModel","computed","nextTick","onBeforeUnmount","onMounted","ref","watch","convertToUnit","defineComponent","filterInputAttrs","useRender","VTextarea","name","directives","inheritAttrs","props","autoGrow","Boolean","autofocus","counter","Number","String","counterValue","Function","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","noResize","rows","type","default","validator","v","isNaN","parseFloat","maxRows","suffix","emits","e","val","setup","attrs","emit","slots","model","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","focus","vInputRef","vFieldRef","isFocused","controlHeight","textareaRef","isActive","messages","onFocus","document","activeElement","onControlClick","onClear","stopPropagation","sizerRef","calculateInputHeight","style","getComputedStyle","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","maxHeight","Infinity","Math","min","observer","ResizeObserver","observe","disconnect","hasCounter","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","handler","details"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { convertToUnit, defineComponent, filterInputAttrs, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VTextarea = defineComponent({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: {\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n hint: String,\n persistentHint: Boolean,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n maxRows: {\n type: [Number, String],\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n suffix: String,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:clear': (e: MouseEvent) => true,\n 'click:control': (e: MouseEvent) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value || '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const isFocused = ref(false)\n const controlHeight = ref('auto')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.persistentPlaceholder\n ))\n\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isActive.value || props.persistentHint) ? props.hint : ''\n })\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) isFocused.value = true\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n emit('click:clear', e)\n })\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = parseFloat(props.rows) * lineHeight + padding\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n\n controlHeight.value = convertToUnit(Math.min(maxHeight, Math.max(minHeight, height ?? 0)))\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n v-model={ model.value }\n class={[\n 'v-textarea',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n },\n ]}\n { ...rootAttrs }\n { ...inputProps }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n style={{\n '--v-input-control-height': controlHeight.value,\n }}\n onClick:control={ onControlClick }\n onClick:clear={ onClear }\n role=\"textbox\"\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n ) }\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n v-model={ model.value }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ () => (isFocused.value = false) }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n { props.autoGrow && (\n <textarea\n class={[\n fieldClass,\n 'v-textarea__sizer',\n ]}\n v-model={ model.value }\n ref={ sizerRef }\n readonly\n aria-hidden=\"true\"\n />\n )}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n ) }\n </>\n ),\n }}\n </VField>\n ),\n details: hasCounter ? () => (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots={ slots.counter }\n />\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return useForwardRef({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType<typeof VTextarea>\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  @use '../../styles/settings';
2
2
 
3
+ // VTextarea
3
4
  $textarea-box-enclosed-prefix-margin-top: 24px !default;
4
5
  $textarea-box-enclosed-single-outlined-label-top: 18px !default;
5
6
  $textarea-box-enclosed-single-outlined-margin-top: 10px !default;
@@ -1,14 +1,14 @@
1
- import { createVNode as _createVNode } from "vue";
1
+ import { createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue";
2
2
  // Styles
3
3
  import "./VTimeline.css"; // Composables
4
4
 
5
- import { makeTagProps } from "../../composables/tag.mjs";
6
5
  import { makeDensityProps, useDensity } from "../../composables/density.mjs";
7
- import { makeThemeProps, provideTheme } from "../../composables/theme.mjs"; // Helpers
6
+ import { makeTagProps } from "../../composables/tag.mjs";
7
+ import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
8
+ import { provideDefaults } from "../../composables/defaults.mjs"; // Utilities
8
9
 
9
- import { computed, provide, toRef } from 'vue';
10
- import { convertToUnit, defineComponent } from "../../util/index.mjs";
11
- import { VTimelineSymbol } from "./shared.mjs"; // Types
10
+ import { computed, toRef } from 'vue';
11
+ import { convertToUnit, defineComponent, useRender } from "../../util/index.mjs"; // Types
12
12
 
13
13
  export const VTimeline = defineComponent({
14
14
  name: 'VTimeline',
@@ -55,11 +55,15 @@ export const VTimeline = defineComponent({
55
55
  const {
56
56
  densityClasses
57
57
  } = useDensity(props);
58
- provide(VTimelineSymbol, {
59
- density: toRef(props, 'density'),
60
- lineColor: toRef(props, 'lineColor')
58
+ provideDefaults({
59
+ VTimelineDivider: {
60
+ lineColor: toRef(props, 'lineColor')
61
+ },
62
+ VTimelineItem: {
63
+ density: toRef(props, 'density')
64
+ }
61
65
  });
62
- const sideClass = computed(() => {
66
+ const sideClasses = computed(() => {
63
67
  const side = props.side ? props.side : props.density !== 'default' ? 'end' : null;
64
68
  return side && `v-timeline--side-${side}`;
65
69
  });
@@ -80,21 +84,16 @@ export const VTimeline = defineComponent({
80
84
  return null;
81
85
  }
82
86
  });
83
- return () => {
84
- var _slots$default;
85
-
86
- return _createVNode(props.tag, {
87
- "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, !props.lineInset && truncateClasses.value, {
88
- 'v-timeline--inset-line': !!props.lineInset
89
- }, themeClasses.value, densityClasses.value, sideClass.value],
90
- "style": {
91
- '--v-timeline-line-thickness': convertToUnit(props.lineThickness),
92
- '--v-timeline-line-inset': convertToUnit(props.lineInset)
93
- }
94
- }, {
95
- default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]
96
- });
97
- };
87
+ useRender(() => _createVNode(props.tag, {
88
+ "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, !props.lineInset && truncateClasses.value, {
89
+ 'v-timeline--inset-line': !!props.lineInset
90
+ }, themeClasses.value, densityClasses.value, sideClasses.value],
91
+ "style": {
92
+ '--v-timeline-line-thickness': convertToUnit(props.lineThickness),
93
+ '--v-timeline-line-inset': convertToUnit(props.lineInset)
94
+ }
95
+ }, slots));
96
+ return {};
98
97
  }
99
98
 
100
99
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VTimeline.mjs","names":["makeTagProps","makeDensityProps","useDensity","makeThemeProps","provideTheme","computed","provide","toRef","convertToUnit","defineComponent","VTimelineSymbol","VTimeline","name","props","align","type","String","default","validator","v","includes","direction","side","lineInset","Number","lineThickness","lineColor","truncateLine","setup","slots","themeClasses","densityClasses","density","sideClass","truncateClasses","classes","value"],"sources":["../../../src/components/VTimeline/VTimeline.tsx"],"sourcesContent":["// Styles\nimport './VTimeline.sass'\n\n// Composables\nimport { makeTagProps } from '@/composables/tag'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Helpers\nimport { computed, provide, toRef } from 'vue'\nimport { convertToUnit, defineComponent } from '@/util'\nimport { VTimelineSymbol } from './shared'\n\n// Types\nimport type { Prop } from 'vue'\n\nexport type TimelineDirection = 'vertical' | 'horizontal'\nexport type TimelineSide = 'start' | 'end' | undefined\nexport type TimelineAlign = 'center' | 'start'\nexport type TimelineTruncateLine = 'start' | 'end' | 'both' | undefined\n\nexport const VTimeline = defineComponent({\n name: 'VTimeline',\n\n props: {\n align: {\n type: String,\n default: 'center',\n validator: (v: any) => ['center', 'start'].includes(v),\n } as Prop<TimelineAlign>,\n direction: {\n type: String,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n } as Prop<TimelineDirection>,\n side: {\n type: String,\n validator: (v: any) => v == null || ['start', 'end'].includes(v),\n } as Prop<TimelineSide>,\n lineInset: {\n type: [String, Number],\n default: 0,\n },\n lineThickness: {\n type: [String, Number],\n default: 2,\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n } as Prop<TimelineTruncateLine>,\n\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n provide(VTimelineSymbol, {\n density: toRef(props, 'density'),\n lineColor: toRef(props, 'lineColor'),\n })\n\n const sideClass = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null\n\n return side && `v-timeline--side-${side}`\n })\n\n const truncateClasses = computed(() => {\n const classes = [\n 'v-timeline--truncate-line-start',\n 'v-timeline--truncate-line-end',\n ]\n\n switch (props.truncateLine) {\n case 'both': return classes\n case 'start': return classes[0]\n case 'end': return classes[1]\n default: return null\n }\n })\n\n return () => (\n <props.tag\n class={[\n 'v-timeline',\n `v-timeline--${props.direction}`,\n `v-timeline--align-${props.align}`,\n !props.lineInset && truncateClasses.value,\n {\n 'v-timeline--inset-line': !!props.lineInset,\n },\n themeClasses.value,\n densityClasses.value,\n sideClass.value,\n ]}\n style={{\n '--v-timeline-line-thickness': convertToUnit(props.lineThickness),\n '--v-timeline-line-inset': convertToUnit(props.lineInset),\n }}\n >\n { slots.default?.() }\n </props.tag>\n )\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"VTimeline.mjs","names":["makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","provideDefaults","computed","toRef","convertToUnit","defineComponent","useRender","VTimeline","name","props","align","type","String","default","validator","v","includes","direction","side","lineInset","Number","lineThickness","lineColor","truncateLine","setup","slots","themeClasses","densityClasses","VTimelineDivider","VTimelineItem","density","sideClasses","truncateClasses","classes","value"],"sources":["../../../src/components/VTimeline/VTimeline.tsx"],"sourcesContent":["// Styles\nimport './VTimeline.sass'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, defineComponent, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\n\nexport type TimelineDirection = 'vertical' | 'horizontal'\nexport type TimelineSide = 'start' | 'end' | undefined\nexport type TimelineAlign = 'center' | 'start'\nexport type TimelineTruncateLine = 'start' | 'end' | 'both' | undefined\n\nexport const VTimeline = defineComponent({\n name: 'VTimeline',\n\n props: {\n align: {\n type: String,\n default: 'center',\n validator: (v: any) => ['center', 'start'].includes(v),\n } as Prop<TimelineAlign>,\n direction: {\n type: String,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n } as Prop<TimelineDirection>,\n side: {\n type: String,\n validator: (v: any) => v == null || ['start', 'end'].includes(v),\n } as Prop<TimelineSide>,\n lineInset: {\n type: [String, Number],\n default: 0,\n },\n lineThickness: {\n type: [String, Number],\n default: 2,\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n } as Prop<TimelineTruncateLine>,\n\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n provideDefaults({\n VTimelineDivider: {\n lineColor: toRef(props, 'lineColor'),\n },\n VTimelineItem: {\n density: toRef(props, 'density'),\n },\n })\n\n const sideClasses = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null\n\n return side && `v-timeline--side-${side}`\n })\n\n const truncateClasses = computed(() => {\n const classes = [\n 'v-timeline--truncate-line-start',\n 'v-timeline--truncate-line-end',\n ]\n\n switch (props.truncateLine) {\n case 'both': return classes\n case 'start': return classes[0]\n case 'end': return classes[1]\n default: return null\n }\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-timeline',\n `v-timeline--${props.direction}`,\n `v-timeline--align-${props.align}`,\n !props.lineInset && truncateClasses.value,\n {\n 'v-timeline--inset-line': !!props.lineInset,\n },\n themeClasses.value,\n densityClasses.value,\n sideClasses.value,\n ]}\n style={{\n '--v-timeline-line-thickness': convertToUnit(props.lineThickness),\n '--v-timeline-line-inset': convertToUnit(props.lineInset),\n }}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n"],"mappings":"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"}