vuetify 3.2.1 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/dist/json/attributes.json +1302 -870
  2. package/dist/json/importMap.json +8 -8
  3. package/dist/json/tags.json +112 -3
  4. package/dist/json/web-types.json +2973 -1917
  5. package/dist/vuetify-labs.css +67 -57
  6. package/dist/vuetify-labs.d.ts +2785 -11610
  7. package/dist/vuetify-labs.esm.js +2318 -2227
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +2318 -2227
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +31 -21
  12. package/dist/vuetify.d.ts +1786 -11406
  13. package/dist/vuetify.esm.js +1785 -1685
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +1785 -1685
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +612 -614
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/blueprints/index.d.ts +1 -3
  21. package/lib/blueprints/md1.d.ts +1 -3
  22. package/lib/blueprints/md2.d.ts +1 -3
  23. package/lib/blueprints/md3.d.ts +1 -3
  24. package/lib/components/VAlert/VAlert.mjs +47 -46
  25. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  26. package/lib/components/VAlert/index.d.ts +2 -2
  27. package/lib/components/VApp/VApp.mjs +9 -8
  28. package/lib/components/VApp/VApp.mjs.map +1 -1
  29. package/lib/components/VAppBar/VAppBar.mjs +28 -31
  30. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  31. package/lib/components/VAppBar/VAppBarNavIcon.mjs +14 -17
  32. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  33. package/lib/components/VAppBar/index.d.ts +394 -28
  34. package/lib/components/VAutocomplete/VAutocomplete.css +1 -5
  35. package/lib/components/VAutocomplete/VAutocomplete.mjs +37 -34
  36. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  37. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -6
  38. package/lib/components/VAutocomplete/index.d.ts +67 -1174
  39. package/lib/components/VBadge/VBadge.mjs +33 -32
  40. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  41. package/lib/components/VBanner/VBanner.mjs +21 -20
  42. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  43. package/lib/components/VBanner/VBannerActions.mjs +7 -6
  44. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  45. package/lib/components/VBanner/index.d.ts +2 -2
  46. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +35 -34
  47. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  48. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +24 -23
  49. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  50. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +6 -5
  51. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  52. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +15 -14
  53. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  54. package/lib/components/VBreadcrumbs/index.d.ts +1 -0
  55. package/lib/components/VBtn/VBtn.mjs +7 -6
  56. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  57. package/lib/components/VBtnToggle/VBtnToggle.mjs +6 -5
  58. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  59. package/lib/components/VCard/VCard.mjs +38 -37
  60. package/lib/components/VCard/VCard.mjs.map +1 -1
  61. package/lib/components/VCard/VCardItem.mjs +12 -11
  62. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  63. package/lib/components/VCard/index.d.ts +4 -4
  64. package/lib/components/VCarousel/VCarousel.mjs +28 -27
  65. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  66. package/lib/components/VCarousel/VCarouselItem.mjs +18 -16
  67. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  68. package/lib/components/VCarousel/index.d.ts +170 -20
  69. package/lib/components/VCheckbox/VCheckbox.mjs +6 -5
  70. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  71. package/lib/components/VCheckbox/VCheckboxBtn.mjs +0 -1
  72. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  73. package/lib/components/VCheckbox/index.d.ts +24 -12
  74. package/lib/components/VChip/VChip.css +8 -0
  75. package/lib/components/VChip/VChip.mjs +60 -57
  76. package/lib/components/VChip/VChip.mjs.map +1 -1
  77. package/lib/components/VChip/VChip.sass +10 -0
  78. package/lib/components/VChip/index.d.ts +8 -8
  79. package/lib/components/VChipGroup/VChipGroup.mjs +19 -18
  80. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  81. package/lib/components/VColorPicker/VColorPicker.mjs +44 -39
  82. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  83. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +21 -20
  84. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  85. package/lib/components/VColorPicker/VColorPickerEdit.mjs +17 -16
  86. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  87. package/lib/components/VColorPicker/VColorPickerPreview.mjs +10 -9
  88. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  89. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +12 -11
  90. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  91. package/lib/components/VColorPicker/index.d.ts +4 -4
  92. package/lib/components/VColorPicker/util/index.mjs +2 -2
  93. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  94. package/lib/components/VCombobox/VCombobox.mjs +40 -37
  95. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  96. package/lib/components/VCombobox/index.d.ts +67 -1171
  97. package/lib/components/VCounter/VCounter.mjs +16 -15
  98. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  99. package/lib/components/VCounter/index.d.ts +25 -1774
  100. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +9 -8
  101. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  102. package/lib/components/VDialog/VDialog.mjs +18 -17
  103. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  104. package/lib/components/VDialog/index.d.ts +130 -1120
  105. package/lib/components/VDivider/VDivider.mjs +11 -10
  106. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  107. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +15 -15
  108. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  109. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +6 -5
  110. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  111. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +3 -5
  112. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  113. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +15 -14
  114. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  115. package/lib/components/VExpansionPanel/index.d.ts +15 -15
  116. package/lib/components/VField/VField.mjs +6 -2
  117. package/lib/components/VField/VField.mjs.map +1 -1
  118. package/lib/components/VField/VFieldLabel.mjs +6 -5
  119. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  120. package/lib/components/VFileInput/VFileInput.mjs +37 -35
  121. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  122. package/lib/components/VFileInput/index.d.ts +3 -3
  123. package/lib/components/VFooter/VFooter.mjs +19 -18
  124. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  125. package/lib/components/VForm/VForm.mjs +6 -5
  126. package/lib/components/VForm/VForm.mjs.map +1 -1
  127. package/lib/components/VForm/index.d.ts +3 -3
  128. package/lib/components/VGrid/VCol.mjs +26 -25
  129. package/lib/components/VGrid/VCol.mjs.map +1 -1
  130. package/lib/components/VGrid/VContainer.mjs +16 -11
  131. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  132. package/lib/components/VGrid/VRow.mjs +26 -25
  133. package/lib/components/VGrid/VRow.mjs.map +1 -1
  134. package/lib/components/VHover/VHover.mjs +10 -9
  135. package/lib/components/VHover/VHover.mjs.map +1 -1
  136. package/lib/components/VIcon/VIcon.mjs +28 -29
  137. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  138. package/lib/components/VImg/VImg.mjs +29 -28
  139. package/lib/components/VImg/VImg.mjs.map +1 -1
  140. package/lib/components/VItemGroup/VItemGroup.mjs +10 -9
  141. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  142. package/lib/components/VLabel/VLabel.mjs +8 -7
  143. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  144. package/lib/components/VLayout/VLayout.mjs +6 -5
  145. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  146. package/lib/components/VLayout/VLayoutItem.mjs +15 -14
  147. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  148. package/lib/components/VLazy/VLazy.mjs +21 -20
  149. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  150. package/lib/components/VList/VList.mjs +33 -32
  151. package/lib/components/VList/VList.mjs.map +1 -1
  152. package/lib/components/VList/VListChildren.mjs +5 -4
  153. package/lib/components/VList/VListChildren.mjs.map +1 -1
  154. package/lib/components/VList/VListGroup.mjs +2 -4
  155. package/lib/components/VList/VListGroup.mjs.map +1 -1
  156. package/lib/components/VList/VListItem.mjs +42 -41
  157. package/lib/components/VList/VListItem.mjs.map +1 -1
  158. package/lib/components/VList/VListItemAction.mjs +8 -7
  159. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  160. package/lib/components/VList/VListItemMedia.mjs +8 -7
  161. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  162. package/lib/components/VList/VListSubheader.mjs +10 -9
  163. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  164. package/lib/components/VList/index.d.ts +30 -30
  165. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +12 -11
  166. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  167. package/lib/components/VMain/VMain.mjs +9 -8
  168. package/lib/components/VMain/VMain.mjs.map +1 -1
  169. package/lib/components/VMenu/VMenu.mjs +18 -17
  170. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  171. package/lib/components/VMenu/index.d.ts +40 -1030
  172. package/lib/components/VMessages/VMessages.mjs +18 -17
  173. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  174. package/lib/components/VMessages/index.d.ts +25 -1774
  175. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +48 -54
  176. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  177. package/lib/components/VNavigationDrawer/sticky.mjs +9 -3
  178. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  179. package/lib/components/VOverlay/locationStrategies.mjs +5 -3
  180. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  181. package/lib/components/VPagination/VPagination.mjs +82 -81
  182. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  183. package/lib/components/VPagination/index.d.ts +8 -8
  184. package/lib/components/VParallax/VParallax.mjs +9 -8
  185. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  186. package/lib/components/VProgressCircular/VProgressCircular.mjs +25 -24
  187. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  188. package/lib/components/VProgressLinear/VProgressLinear.mjs +44 -42
  189. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  190. package/lib/components/VProgressLinear/index.d.ts +8 -8
  191. package/lib/components/VRadio/VRadio.mjs +8 -7
  192. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  193. package/lib/components/VRadio/index.d.ts +18 -12
  194. package/lib/components/VRadioGroup/VRadioGroup.mjs +22 -21
  195. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  196. package/lib/components/VRadioGroup/index.d.ts +16 -10
  197. package/lib/components/VRangeSlider/VRangeSlider.mjs +18 -13
  198. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  199. package/lib/components/VRating/VRating.mjs +44 -43
  200. package/lib/components/VRating/VRating.mjs.map +1 -1
  201. package/lib/components/VRating/index.d.ts +8 -8
  202. package/lib/components/VResponsive/VResponsive.mjs +8 -7
  203. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  204. package/lib/components/VSelect/VSelect.mjs +29 -21
  205. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  206. package/lib/components/VSelect/index.d.ts +64 -2506
  207. package/lib/components/VSelectionControl/index.d.ts +42 -36
  208. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +10 -10
  209. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  210. package/lib/components/VSelectionControlGroup/index.d.ts +28 -28
  211. package/lib/components/VSheet/VSheet.css +6 -0
  212. package/lib/components/VSheet/VSheet.mjs +1 -3
  213. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  214. package/lib/components/VSheet/_variables.scss +1 -1
  215. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +1 -3
  216. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  217. package/lib/components/VSlider/VSlider.mjs +18 -13
  218. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  219. package/lib/components/VSlider/VSliderThumb.mjs +26 -25
  220. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  221. package/lib/components/VSlider/VSliderTrack.mjs +13 -12
  222. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  223. package/lib/components/VSnackbar/VSnackbar.mjs +20 -19
  224. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  225. package/lib/components/VSwitch/VSwitch.mjs +13 -12
  226. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  227. package/lib/components/VSwitch/index.d.ts +18 -12
  228. package/lib/components/VSystemBar/VSystemBar.mjs +13 -12
  229. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  230. package/lib/components/VTable/VTable.mjs +12 -11
  231. package/lib/components/VTable/VTable.mjs.map +1 -1
  232. package/lib/components/VTabs/VTab.mjs +15 -14
  233. package/lib/components/VTabs/VTab.mjs.map +1 -1
  234. package/lib/components/VTabs/VTabs.mjs +28 -27
  235. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  236. package/lib/components/VTabs/index.d.ts +12 -12
  237. package/lib/components/VTextField/VTextField.mjs +1 -1
  238. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  239. package/lib/components/VTextField/index.d.ts +3 -3
  240. package/lib/components/VTextarea/VTextarea.mjs +27 -26
  241. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  242. package/lib/components/VTextarea/index.d.ts +3 -3
  243. package/lib/components/VThemeProvider/VThemeProvider.mjs +8 -7
  244. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  245. package/lib/components/VTimeline/VTimeline.mjs +46 -41
  246. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  247. package/lib/components/VTimeline/VTimelineDivider.mjs +14 -13
  248. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  249. package/lib/components/VTimeline/VTimelineItem.mjs +21 -20
  250. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  251. package/lib/components/VToolbar/VToolbar.mjs +6 -2
  252. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  253. package/lib/components/VToolbar/VToolbarItems.mjs +8 -7
  254. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  255. package/lib/components/VToolbar/index.d.ts +11 -11
  256. package/lib/components/VTooltip/VTooltip.mjs +20 -19
  257. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  258. package/lib/components/VTreeview/_mixins.sass +0 -0
  259. package/lib/components/VTreeview/util/filterTreeItems.mjs +0 -0
  260. package/lib/components/VValidation/VValidation.mjs +1 -3
  261. package/lib/components/VValidation/VValidation.mjs.map +1 -1
  262. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +11 -10
  263. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  264. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +6 -5
  265. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  266. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  267. package/lib/components/VWindow/VWindowItem.mjs +15 -14
  268. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  269. package/lib/components/VWindow/index.d.ts +9 -9
  270. package/lib/components/index.d.ts +1755 -11373
  271. package/lib/components/transitions/createTransition.mjs +16 -15
  272. package/lib/components/transitions/createTransition.mjs.map +1 -1
  273. package/lib/components/transitions/dialog-transition.mjs +5 -4
  274. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  275. package/lib/components/transitions/index.d.ts +143 -143
  276. package/lib/composables/forwardRefs.mjs.map +1 -1
  277. package/lib/composables/icons.mjs +2 -2
  278. package/lib/composables/icons.mjs.map +1 -1
  279. package/lib/composables/scroll.mjs +16 -17
  280. package/lib/composables/scroll.mjs.map +1 -1
  281. package/lib/composables/theme.mjs +3 -3
  282. package/lib/composables/theme.mjs.map +1 -1
  283. package/lib/directives/click-outside/index.mjs +1 -1
  284. package/lib/directives/click-outside/index.mjs.map +1 -1
  285. package/lib/entry-bundler.mjs +1 -1
  286. package/lib/framework.mjs +1 -1
  287. package/lib/framework.mjs.map +1 -1
  288. package/lib/index.d.ts +4 -6
  289. package/lib/labs/VDataTable/VDataTable.mjs +53 -59
  290. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  291. package/lib/labs/VDataTable/VDataTableFooter.mjs +64 -63
  292. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  293. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +8 -7
  294. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  295. package/lib/labs/VDataTable/VDataTableHeaders.mjs +16 -15
  296. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  297. package/lib/labs/VDataTable/VDataTableRow.mjs +7 -6
  298. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  299. package/lib/labs/VDataTable/VDataTableRows.mjs +20 -19
  300. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  301. package/lib/labs/VDataTable/VDataTableServer.mjs +53 -64
  302. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  303. package/lib/labs/VDataTable/VDataTableVirtual.mjs +65 -72
  304. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  305. package/lib/labs/VDataTable/composables/paginate.mjs +6 -1
  306. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  307. package/lib/labs/VDataTable/index.d.ts +991 -206
  308. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +54 -48
  309. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  310. package/lib/labs/VInfiniteScroll/index.d.ts +16 -1
  311. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +18 -17
  312. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  313. package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
  314. package/lib/labs/components.d.ts +1011 -211
  315. package/lib/labs/date/date.mjs +7 -7
  316. package/lib/labs/date/date.mjs.map +1 -1
  317. package/lib/labs/date/index.d.ts +1 -3
  318. package/lib/locale/el.mjs +0 -0
  319. package/lib/locale/index.mjs +0 -0
  320. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"VTable.mjs","names":["makeComponentProps","makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","convertToUnit","genericComponent","useRender","VTable","name","props","fixedHeader","Boolean","fixedFooter","height","Number","String","hover","setup","_ref","slots","themeClasses","densityClasses","_createVNode","tag","top","bottom","value","class","style","default","wrapper"],"sources":["../../../src/components/VTable/VTable.tsx"],"sourcesContent":["// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, genericComponent, useRender } from '@/util'\n\nexport type VTableSlots = {\n default: []\n top: []\n bottom: []\n wrapper: []\n}\n\nexport const VTable = genericComponent<VTableSlots>()({\n name: 'VTable',\n\n props: {\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n\n ...makeComponentProps(),\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 'v-table--hover': props.hover,\n },\n themeClasses.value,\n densityClasses.value,\n props.class,\n ]}\n style={ props.style }\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 ) : slots.wrapper?.()}\n\n { slots.bottom?.() }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VTable = InstanceType<typeof VTable>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,uCAErC;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,SAAS;AASnD,OAAO,MAAMC,MAAM,GAAGF,gBAAgB,EAAe,CAAC;EACpDG,IAAI,EAAE,QAAQ;EAEdC,KAAK,EAAE;IACLC,WAAW,EAAEC,OAAO;IACpBC,WAAW,EAAED,OAAO;IACpBE,MAAM,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACxBC,KAAK,EAAEL,OAAO;IAEd,GAAGb,kBAAkB,EAAE;IACvB,GAAGC,gBAAgB,EAAE;IACrB,GAAGE,YAAY,EAAE;IACjB,GAAGC,cAAc;EACnB,CAAC;EAEDe,KAAKA,CAAER,KAAK,EAAAS,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAa,CAAC,GAAGjB,YAAY,CAACM,KAAK,CAAC;IAC5C,MAAM;MAAEY;IAAe,CAAC,GAAGrB,UAAU,CAACS,KAAK,CAAC;IAE5CH,SAAS,CAAC,MAAAgB,YAAA,CAAAb,KAAA,CAAAc,GAAA;MAAA,SAEC,CACL,SAAS,EACT;QACE,uBAAuB,EAAE,CAAC,CAACd,KAAK,CAACI,MAAM;QACvC,uBAAuB,EAAEJ,KAAK,CAACC,WAAW;QAC1C,uBAAuB,EAAED,KAAK,CAACG,WAAW;QAC1C,kBAAkB,EAAE,CAAC,CAACO,KAAK,CAACK,GAAG;QAC/B,qBAAqB,EAAE,CAAC,CAACL,KAAK,CAACM,MAAM;QACrC,gBAAgB,EAAEhB,KAAK,CAACO;MAC1B,CAAC,EACDI,YAAY,CAACM,KAAK,EAClBL,cAAc,CAACK,KAAK,EACpBjB,KAAK,CAACkB,KAAK,CACZ;MAAA,SACOlB,KAAK,CAACmB;IAAK;MAAAC,OAAA,EAAAA,CAAA,MAEjBV,KAAK,CAACK,GAAG,IAAI,EAEbL,KAAK,CAACU,OAAO,GAAAP,YAAA;QAAA,SAEL,kBAAkB;QAAA,SACjB;UAAET,MAAM,EAAET,aAAa,CAACK,KAAK,CAACI,MAAM;QAAE;MAAC,IAAAS,YAAA,iBAG1CH,KAAK,CAACU,OAAO,EAAE,OAGnBV,KAAK,CAACW,OAAO,IAAI,EAEnBX,KAAK,CAACM,MAAM,IAAI;IAAA,EAErB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VTable.mjs","names":["makeComponentProps","makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","convertToUnit","genericComponent","propsFactory","useRender","makeVTableProps","fixedHeader","Boolean","fixedFooter","height","Number","String","hover","VTable","name","props","setup","_ref","slots","themeClasses","densityClasses","_createVNode","tag","top","bottom","value","class","style","default","wrapper"],"sources":["../../../src/components/VTable/VTable.tsx"],"sourcesContent":["// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VTableSlots = {\n default: []\n top: []\n bottom: []\n wrapper: []\n}\n\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'v-table')\n\nexport const VTable = genericComponent<VTableSlots>()({\n name: 'VTable',\n\n props: makeVTableProps(),\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 'v-table--hover': props.hover,\n },\n themeClasses.value,\n densityClasses.value,\n props.class,\n ]}\n style={ props.style }\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 ) : slots.wrapper?.()}\n\n { slots.bottom?.() }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VTable = InstanceType<typeof VTable>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,uCAErC;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AASjE,OAAO,MAAMC,eAAe,GAAGF,YAAY,CAAC;EAC1CG,WAAW,EAAEC,OAAO;EACpBC,WAAW,EAAED,OAAO;EACpBE,MAAM,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EACxBC,KAAK,EAAEL,OAAO;EAEd,GAAGZ,kBAAkB,EAAE;EACvB,GAAGC,gBAAgB,EAAE;EACrB,GAAGE,YAAY,EAAE;EACjB,GAAGC,cAAc;AACnB,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,MAAMc,MAAM,GAAGX,gBAAgB,EAAe,CAAC;EACpDY,IAAI,EAAE,QAAQ;EAEdC,KAAK,EAAEV,eAAe,EAAE;EAExBW,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAa,CAAC,GAAGnB,YAAY,CAACe,KAAK,CAAC;IAC5C,MAAM;MAAEK;IAAe,CAAC,GAAGvB,UAAU,CAACkB,KAAK,CAAC;IAE5CX,SAAS,CAAC,MAAAiB,YAAA,CAAAN,KAAA,CAAAO,GAAA;MAAA,SAEC,CACL,SAAS,EACT;QACE,uBAAuB,EAAE,CAAC,CAACP,KAAK,CAACN,MAAM;QACvC,uBAAuB,EAAEM,KAAK,CAACT,WAAW;QAC1C,uBAAuB,EAAES,KAAK,CAACP,WAAW;QAC1C,kBAAkB,EAAE,CAAC,CAACU,KAAK,CAACK,GAAG;QAC/B,qBAAqB,EAAE,CAAC,CAACL,KAAK,CAACM,MAAM;QACrC,gBAAgB,EAAET,KAAK,CAACH;MAC1B,CAAC,EACDO,YAAY,CAACM,KAAK,EAClBL,cAAc,CAACK,KAAK,EACpBV,KAAK,CAACW,KAAK,CACZ;MAAA,SACOX,KAAK,CAACY;IAAK;MAAAC,OAAA,EAAAA,CAAA,MAEjBV,KAAK,CAACK,GAAG,IAAI,EAEbL,KAAK,CAACU,OAAO,GAAAP,YAAA;QAAA,SAEL,kBAAkB;QAAA,SACjB;UAAEZ,MAAM,EAAER,aAAa,CAACc,KAAK,CAACN,MAAM;QAAE;MAAC,IAAAY,YAAA,iBAG1CH,KAAK,CAACU,OAAO,EAAE,OAGnBV,KAAK,CAACW,OAAO,IAAI,EAEnBX,KAAK,CAACM,MAAM,IAAI;IAAA,EAErB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -6,24 +6,25 @@ import "./VTab.css";
6
6
  import { VBtn } from "../VBtn/index.mjs"; // Composables
7
7
  import { useTextColor } from "../../composables/color.mjs"; // Utilities
8
8
  import { computed, ref } from 'vue';
9
- import { animate, genericComponent, omit, standardEasing, useRender } from "../../util/index.mjs";
9
+ import { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from "../../util/index.mjs";
10
10
  import { makeVBtnProps } from "../VBtn/VBtn.mjs"; // Types
11
11
  import { VTabsSymbol } from "./shared.mjs";
12
+ export const makeVTabProps = propsFactory({
13
+ fixed: Boolean,
14
+ sliderColor: String,
15
+ hideSlider: Boolean,
16
+ direction: {
17
+ type: String,
18
+ default: 'horizontal'
19
+ },
20
+ ...omit(makeVBtnProps({
21
+ selectedClass: 'v-tab--selected',
22
+ variant: 'text'
23
+ }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])
24
+ }, 'v-tabs');
12
25
  export const VTab = genericComponent()({
13
26
  name: 'VTab',
14
- props: {
15
- fixed: Boolean,
16
- sliderColor: String,
17
- hideSlider: Boolean,
18
- direction: {
19
- type: String,
20
- default: 'horizontal'
21
- },
22
- ...omit(makeVBtnProps({
23
- selectedClass: 'v-tab--selected',
24
- variant: 'text'
25
- }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])
26
- },
27
+ props: makeVTabProps(),
27
28
  setup(props, _ref) {
28
29
  let {
29
30
  slots,
@@ -1 +1 @@
1
- {"version":3,"file":"VTab.mjs","names":["VBtn","useTextColor","computed","ref","animate","genericComponent","omit","standardEasing","useRender","makeVBtnProps","VTabsSymbol","VTab","name","props","fixed","Boolean","sliderColor","String","hideSlider","direction","type","default","selectedClass","variant","setup","_ref","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","isSelected","rootEl","sliderEl","updateSlider","_ref2","value","prevEl","$el","parentElement","querySelector","nextEl","color","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","filterProps","_createVNode","_mergeProps","class","style","undefined","text"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { animate, genericComponent, omit, standardEasing, useRender } from '@/util'\nimport { makeVBtnProps } from '@/components/VBtn/VBtn'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport const VTab = genericComponent()({\n name: 'VTab',\n\n props: {\n fixed: Boolean,\n\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\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 animate(nextEl, {\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] = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n ]}\n style={ props.style }\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n rounded={ 0 }\n { ...btnProps }\n { ...attrs }\n onGroup:selected={ updateSlider }\n >\n { slots.default?.() ?? props.text }\n\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","useTextColor","computed","ref","animate","genericComponent","omit","propsFactory","standardEasing","useRender","makeVBtnProps","VTabsSymbol","makeVTabProps","fixed","Boolean","sliderColor","String","hideSlider","direction","type","default","selectedClass","variant","VTab","name","props","setup","_ref","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","isSelected","rootEl","sliderEl","updateSlider","_ref2","value","prevEl","$el","parentElement","querySelector","nextEl","color","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","filterProps","_createVNode","_mergeProps","class","style","undefined","text"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\nimport { makeVBtnProps } from '@/components/VBtn/VBtn'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'v-tabs')\n\nexport const VTab = genericComponent()({\n name: 'VTab',\n\n props: makeVTabProps(),\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 animate(nextEl, {\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] = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n ]}\n style={ props.style }\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n rounded={ 0 }\n { ...btnProps }\n { ...attrs }\n onGroup:selected={ updateSlider }\n >\n { slots.default?.() ?? props.text }\n\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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"}
@@ -11,7 +11,7 @@ import { provideDefaults } from "../../composables/defaults.mjs";
11
11
  import { useBackgroundColor } from "../../composables/color.mjs";
12
12
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
13
13
  import { computed, toRef } from 'vue';
14
- import { convertToUnit, genericComponent, useRender } from "../../util/index.mjs"; // Types
14
+ import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
15
15
  import { VTabsSymbol } from "./shared.mjs";
16
16
  function parseItems(items) {
17
17
  if (!items) return [];
@@ -23,34 +23,35 @@ function parseItems(items) {
23
23
  return item;
24
24
  });
25
25
  }
26
+ export const makeVTabsProps = propsFactory({
27
+ alignTabs: {
28
+ type: String,
29
+ default: 'start'
30
+ },
31
+ color: String,
32
+ fixedTabs: Boolean,
33
+ items: {
34
+ type: Array,
35
+ default: () => []
36
+ },
37
+ stacked: Boolean,
38
+ bgColor: String,
39
+ grow: Boolean,
40
+ height: {
41
+ type: [Number, String],
42
+ default: undefined
43
+ },
44
+ hideSlider: Boolean,
45
+ sliderColor: String,
46
+ ...makeVSlideGroupProps({
47
+ mandatory: 'force'
48
+ }),
49
+ ...makeDensityProps(),
50
+ ...makeTagProps()
51
+ }, 'v-tabs');
26
52
  export const VTabs = genericComponent()({
27
53
  name: 'VTabs',
28
- props: {
29
- alignTabs: {
30
- type: String,
31
- default: 'start'
32
- },
33
- color: String,
34
- fixedTabs: Boolean,
35
- items: {
36
- type: Array,
37
- default: () => []
38
- },
39
- stacked: Boolean,
40
- bgColor: String,
41
- grow: Boolean,
42
- height: {
43
- type: [Number, String],
44
- default: undefined
45
- },
46
- hideSlider: Boolean,
47
- sliderColor: String,
48
- ...makeVSlideGroupProps({
49
- mandatory: 'force'
50
- }),
51
- ...makeDensityProps(),
52
- ...makeTagProps()
53
- },
54
+ props: makeVTabsProps(),
54
55
  emits: {
55
56
  'update:modelValue': v => true
56
57
  },
@@ -1 +1 @@
1
- {"version":3,"file":"VTabs.mjs","names":["makeVSlideGroupProps","VSlideGroup","VTab","makeDensityProps","useDensity","makeTagProps","provideDefaults","useBackgroundColor","useProxiedModel","computed","toRef","convertToUnit","genericComponent","useRender","VTabsSymbol","parseItems","items","map","item","title","value","VTabs","name","props","alignTabs","type","String","default","color","fixedTabs","Boolean","Array","stacked","bgColor","grow","height","Number","undefined","hideSlider","sliderColor","mandatory","emits","v","setup","_ref","slots","model","parsedItems","densityClasses","backgroundColorClasses","backgroundColorStyles","direction","fixed","slideGroupProps","filterProps","_createVNode","_mergeProps","$event","class","style"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { makeVSlideGroupProps, VSlideGroup } from '@/components/VSlideGroup/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'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\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 = genericComponent()({\n name: 'VTabs',\n\n props: {\n alignTabs: {\n type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n default: 'start',\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n sliderColor: String,\n\n ...makeVSlideGroupProps({ mandatory: 'force' as const }),\n ...makeDensityProps(),\n ...makeTagProps(),\n },\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const parsedItems = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\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 const [slideGroupProps] = VSlideGroup.filterProps(props)\n\n return (\n <VSlideGroup\n { ...slideGroupProps }\n v-model={ model.value }\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n `v-tabs--align-tabs-${props.alignTabs}`,\n {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n { '--v-tabs-height': convertToUnit(props.height) },\n backgroundColorStyles.value,\n props.style,\n ]}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n >\n { slots.default ? slots.default() : parsedItems.value.map(item => (\n <VTab { ...item } key={ item.title } />\n ))}\n </VSlideGroup>\n )\n })\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VTabs.mjs","names":["makeVSlideGroupProps","VSlideGroup","VTab","makeDensityProps","useDensity","makeTagProps","provideDefaults","useBackgroundColor","useProxiedModel","computed","toRef","convertToUnit","genericComponent","propsFactory","useRender","VTabsSymbol","parseItems","items","map","item","title","value","makeVTabsProps","alignTabs","type","String","default","color","fixedTabs","Boolean","Array","stacked","bgColor","grow","height","Number","undefined","hideSlider","sliderColor","mandatory","VTabs","name","props","emits","v","setup","_ref","slots","model","parsedItems","densityClasses","backgroundColorClasses","backgroundColorStyles","direction","fixed","slideGroupProps","filterProps","_createVNode","_mergeProps","$event","class","style"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { makeVSlideGroupProps, VSlideGroup } from '@/components/VSlideGroup/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'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\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 makeVTabsProps = propsFactory({\n alignTabs: {\n type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n default: 'start',\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n sliderColor: String,\n\n ...makeVSlideGroupProps({ mandatory: 'force' as const }),\n ...makeDensityProps(),\n ...makeTagProps(),\n}, 'v-tabs')\n\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n\n props: makeVTabsProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const parsedItems = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\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 const [slideGroupProps] = VSlideGroup.filterProps(props)\n\n return (\n <VSlideGroup\n { ...slideGroupProps }\n v-model={ model.value }\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n `v-tabs--align-tabs-${props.alignTabs}`,\n {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n { '--v-tabs-height': convertToUnit(props.height) },\n backgroundColorStyles.value,\n props.style,\n ]}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n >\n { slots.default ? slots.default() : parsedItems.value.map(item => (\n <VTab { ...item } key={ item.title } />\n ))}\n </VSlideGroup>\n )\n })\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, ComponentInternalInstance, Ref, ComputedRef, JSXComponent, PropType } from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, ComponentInternalInstance, Ref, ComputedRef } from 'vue';
3
3
  // @ts-ignore
4
4
  import * as vue_router from 'vue-router';
5
5
 
@@ -7,6 +7,9 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
7
7
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
8
8
  }
9
9
 
10
+ type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
11
+ declare const IconValue: PropType<IconValue>;
12
+
10
13
  interface GroupItem {
11
14
  id: number;
12
15
  value: Ref<unknown>;
@@ -30,9 +33,6 @@ interface GroupProvide {
30
33
  getItemIndex: (value: unknown) => number;
31
34
  }
32
35
 
33
- type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
34
- declare const IconValue: PropType<IconValue>;
35
-
36
36
  type Density = null | 'default' | 'comfortable' | 'compact';
37
37
 
38
38
  type TabItem = string | Record<string, any>;
@@ -59,8 +59,8 @@ declare const VTabs: {
59
59
  prevIcon: IconValue;
60
60
  centerActive: boolean;
61
61
  hideSlider: boolean;
62
- fixedTabs: boolean;
63
62
  alignTabs: "center" | "end" | "start" | "title";
63
+ fixedTabs: boolean;
64
64
  }> & Omit<{
65
65
  symbol: any;
66
66
  direction: "horizontal" | "vertical";
@@ -78,8 +78,8 @@ declare const VTabs: {
78
78
  prevIcon: IconValue;
79
79
  centerActive: boolean;
80
80
  hideSlider: boolean;
81
- fixedTabs: boolean;
82
81
  alignTabs: "center" | "end" | "start" | "title";
82
+ fixedTabs: boolean;
83
83
  } & {
84
84
  max?: number | undefined;
85
85
  height?: string | number | undefined;
@@ -100,7 +100,7 @@ declare const VTabs: {
100
100
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
101
101
  } & {
102
102
  "onUpdate:modelValue"?: ((v: unknown) => any) | undefined;
103
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "symbol" | "height" | "direction" | "style" | "disabled" | "multiple" | "tag" | "mandatory" | "items" | "density" | "modelValue" | "selectedClass" | "stacked" | "grow" | "nextIcon" | "prevIcon" | "centerActive" | "hideSlider" | "fixedTabs" | "alignTabs">;
103
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "symbol" | "height" | "direction" | "style" | "disabled" | "multiple" | "tag" | "mandatory" | "items" | "density" | "modelValue" | "selectedClass" | "stacked" | "grow" | "nextIcon" | "prevIcon" | "centerActive" | "hideSlider" | "alignTabs" | "fixedTabs">;
104
104
  $attrs: {
105
105
  [x: string]: unknown;
106
106
  };
@@ -131,8 +131,8 @@ declare const VTabs: {
131
131
  prevIcon: IconValue;
132
132
  centerActive: boolean;
133
133
  hideSlider: boolean;
134
- fixedTabs: boolean;
135
134
  alignTabs: "center" | "end" | "start" | "title";
135
+ fixedTabs: boolean;
136
136
  } & {
137
137
  max?: number | undefined;
138
138
  height?: string | number | undefined;
@@ -174,8 +174,8 @@ declare const VTabs: {
174
174
  prevIcon: IconValue;
175
175
  centerActive: boolean;
176
176
  hideSlider: boolean;
177
- fixedTabs: boolean;
178
177
  alignTabs: "center" | "end" | "start" | "title";
178
+ fixedTabs: boolean;
179
179
  }, {}, string> & {
180
180
  beforeCreate?: ((() => void) | (() => void)[]) | undefined;
181
181
  created?: ((() => void) | (() => void)[]) | undefined;
@@ -213,8 +213,8 @@ declare const VTabs: {
213
213
  prevIcon: IconValue;
214
214
  centerActive: boolean;
215
215
  hideSlider: boolean;
216
- fixedTabs: boolean;
217
216
  alignTabs: "center" | "end" | "start" | "title";
217
+ fixedTabs: boolean;
218
218
  } & {
219
219
  max?: number | undefined;
220
220
  height?: string | number | undefined;
@@ -256,8 +256,8 @@ declare const VTabs: {
256
256
  prevIcon: IconValue;
257
257
  centerActive: boolean;
258
258
  hideSlider: boolean;
259
- fixedTabs: boolean;
260
259
  alignTabs: "center" | "end" | "start" | "title";
260
+ fixedTabs: boolean;
261
261
  } & {
262
262
  max?: number | undefined;
263
263
  height?: string | number | undefined;
@@ -299,8 +299,8 @@ declare const VTabs: {
299
299
  prevIcon: IconValue;
300
300
  centerActive: boolean;
301
301
  hideSlider: boolean;
302
- fixedTabs: boolean;
303
302
  alignTabs: "center" | "end" | "start" | "title";
303
+ fixedTabs: boolean;
304
304
  }, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
305
305
  tag: {
306
306
  type: StringConstructor;
@@ -70,7 +70,7 @@ export const VTextField = genericComponent()({
70
70
  const vInputRef = ref();
71
71
  const vFieldRef = ref();
72
72
  const inputRef = ref();
73
- const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
73
+ const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
74
74
  function onFocus() {
75
75
  if (inputRef.value !== document.activeElement) {
76
76
  inputRef.value?.focus();
@@ -1 +1 @@
1
- {"version":3,"file":"VTextField.mjs","names":["filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","VCounter","Intersect","forwardRefs","useFocus","useProxiedModel","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","modelModifiers","Object","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","includes","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","variant","class","style","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, 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 makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\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 modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'v-text-field')\n\nexport const VTextField = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: []\n}>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\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 unknown 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<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\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 = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(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 props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.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={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\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={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n )}\n\n { slots.default ? (\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default() }\n { inputNode }\n </div>\n ) : cloneVNode(inputNode, { class: fieldClass })}\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: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, 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","makeVInputProps","VInput","VCounter","Intersect","forwardRefs","useFocus","useProxiedModel","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","modelModifiers","Object","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","includes","active","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","variant","class","style","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, 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 makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\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 modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'v-text-field')\n\nexport const VTextField = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: []\n}>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\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 unknown 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<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\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 = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(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 props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.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={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\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={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n )}\n\n { slots.default ? (\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default() }\n { inputNode }\n </div>\n ) : cloneVNode(inputNode, { class: fieldClass })}\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: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,gBAAgB,EAAEC,eAAe,EAAEC,MAAM;AAAA,SACzCC,eAAe,EAAEC,MAAM;AAAA,SACvBC,QAAQ,iCAEjB;AAAA,OACOC,SAAS,8CAEhB;AAAA,SACSC,WAAW;AAAA,SACXC,QAAQ;AAAA,SACRC,eAAe,8CAExB;AACA,SAASC,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;AAAA,SAChDC,SAAS,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAE/E;AAKA,MAAMC,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC;AAExF,OAAO,MAAMC,mBAAmB,GAAGH,YAAY,CAAC;EAC9CI,SAAS,EAAEC,OAAO;EAClBC,OAAO,EAAE,CAACD,OAAO,EAAEE,MAAM,EAAEC,MAAM,CAAqC;EACtEC,YAAY,EAAEC,QAA4C;EAC1DC,MAAM,EAAEH,MAAM;EACdI,WAAW,EAAEJ,MAAM;EACnBK,qBAAqB,EAAER,OAAO;EAC9BS,iBAAiB,EAAET,OAAO;EAC1BU,MAAM,EAAEP,MAAM;EACdQ,IAAI,EAAE;IACJA,IAAI,EAAER,MAAM;IACZS,OAAO,EAAE;EACX,CAAC;EACDC,cAAc,EAAEC,MAA2C;EAE3D,GAAGjC,eAAe,EAAE;EACpB,GAAGF,eAAe;AACpB,CAAC,EAAE,cAAc,CAAC;AAElB,OAAO,MAAMoC,UAAU,GAAGrB,gBAAgB,EAEtC,CAAC;EACHsB,IAAI,EAAE,YAAY;EAElBC,UAAU,EAAE;IAAEjC;EAAU,CAAC;EAEzBkC,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAErB,mBAAmB,EAAE;EAE5BsB,KAAK,EAAE;IACL,eAAe,EAAGC,CAAa,IAAK,IAAI;IACxC,mBAAmB,EAAGA,CAAa,IAAK,IAAI;IAC5C,gBAAgB,EAAGC,OAAgB,IAAK,IAAI;IAC5C,mBAAmB,EAAGC,GAAW,IAAK;EACxC,CAAC;EAEDC,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAMI,KAAK,GAAG1C,eAAe,CAACgC,KAAK,EAAE,YAAY,CAAC;IAClD,MAAM;MAAEW,SAAS;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAG9C,QAAQ,CAACiC,KAAK,CAAC;IAClD,MAAMf,YAAY,GAAGf,QAAQ,CAAC,MAAM;MAClC,OAAO,OAAO8B,KAAK,CAACf,YAAY,KAAK,UAAU,GAC3Ce,KAAK,CAACf,YAAY,CAACyB,KAAK,CAACI,KAAK,CAAC,GAC/B,CAACJ,KAAK,CAACI,KAAK,IAAI,EAAE,EAAEC,QAAQ,EAAE,CAACC,MAAM;IAC3C,CAAC,CAAC;IACF,MAAMC,GAAG,GAAG/C,QAAQ,CAAC,MAAM;MACzB,IAAIqC,KAAK,CAACW,SAAS,EAAE,OAAOX,KAAK,CAACW,SAAS;MAE3C,IACE,CAAClB,KAAK,CAAClB,OAAO,IACb,OAAOkB,KAAK,CAAClB,OAAO,KAAK,QAAQ,IAClC,OAAOkB,KAAK,CAAClB,OAAO,KAAK,QAAS,EAClC,OAAOqC,SAAS;MAElB,OAAOnB,KAAK,CAAClB,OAAO;IACtB,CAAC,CAAC;IAEF,SAASsC,WAAWA,CAClBC,cAAuB,EACvBC,OAAoC,EACpC;MACA,IAAI,CAACtB,KAAK,CAACpB,SAAS,IAAI,CAACyC,cAAc,EAAE;MAExCC,OAAO,CAAC,CAAC,CAAC,CAACC,MAAM,EAAuBX,KAAK,IAAI;IACpD;IAEA,MAAMY,SAAS,GAAGpD,GAAG,EAAU;IAC/B,MAAMqD,SAAS,GAAGrD,GAAG,EAAU;IAC/B,MAAMsD,QAAQ,GAAGtD,GAAG,EAAoB;IACxC,MAAMuD,QAAQ,GAAGzD,QAAQ,CAAC,MACxBQ,WAAW,CAACkD,QAAQ,CAAC5B,KAAK,CAACR,IAAI,CAAC,IAChCQ,KAAK,CAACX,qBAAqB,IAC3BsB,SAAS,CAACG,KAAK,IACfd,KAAK,CAAC6B,MACP,CAAC;IACF,SAASC,OAAOA,CAAA,EAAI;MAClB,IAAIJ,QAAQ,CAACZ,KAAK,KAAKiB,QAAQ,CAACC,aAAa,EAAE;QAC7CN,QAAQ,CAACZ,KAAK,EAAEF,KAAK,EAAE;MACzB;MAEA,IAAI,CAACD,SAAS,CAACG,KAAK,EAAEF,KAAK,EAAE;IAC/B;IACA,SAASqB,kBAAkBA,CAAE/B,CAAa,EAAE;MAC1CM,IAAI,CAAC,mBAAmB,EAAEN,CAAC,CAAC;MAE5B,IAAIA,CAAC,CAACqB,MAAM,KAAKG,QAAQ,CAACZ,KAAK,EAAE;MAEjCgB,OAAO,EAAE;MACT5B,CAAC,CAACgC,cAAc,EAAE;IACpB;IACA,SAASC,cAAcA,CAAEjC,CAAa,EAAE;MACtC4B,OAAO,EAAE;MAETtB,IAAI,CAAC,eAAe,EAAEN,CAAC,CAAC;IAC1B;IACA,SAASkC,OAAOA,CAAElC,CAAa,EAAE;MAC/BA,CAAC,CAACmC,eAAe,EAAE;MAEnBP,OAAO,EAAE;MAET3D,QAAQ,CAAC,MAAM;QACbuC,KAAK,CAACI,KAAK,GAAG,IAAI;QAElBzC,SAAS,CAAC2B,KAAK,CAAC,eAAe,CAAC,EAAEE,CAAC,CAAC;MACtC,CAAC,CAAC;IACJ;IACA,SAASoC,OAAOA,CAAEpC,CAAQ,EAAE;MAC1B,MAAMqC,EAAE,GAAGrC,CAAC,CAACqB,MAA0B;MACvCb,KAAK,CAACI,KAAK,GAAGyB,EAAE,CAACzB,KAAK;MACtB,IACEd,KAAK,CAACN,cAAc,EAAE8C,IAAI,IAC1B,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAACZ,QAAQ,CAAC5B,KAAK,CAACR,IAAI,CAAC,EACjE;QACA,MAAMiD,aAAa,GAAG,CAACF,EAAE,CAACG,cAAc,EAAEH,EAAE,CAACI,YAAY,CAAC;QAC1DxE,QAAQ,CAAC,MAAM;UACboE,EAAE,CAACG,cAAc,GAAGD,aAAa,CAAC,CAAC,CAAC;UACpCF,EAAE,CAACI,YAAY,GAAGF,aAAa,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC;MACJ;IACF;IAEAhE,SAAS,CAAC,MAAM;MACd,MAAMmE,UAAU,GAAG,CAAC,EAAEnC,KAAK,CAAC3B,OAAO,IAAIkB,KAAK,CAAClB,OAAO,IAAIkB,KAAK,CAACf,YAAY,CAAC;MAC3E,MAAM4D,UAAU,GAAG,CAAC,EAAED,UAAU,IAAInC,KAAK,CAACqC,OAAO,CAAC;MAClD,MAAM,CAACC,SAAS,EAAEC,UAAU,CAAC,GAAG1E,gBAAgB,CAACiC,KAAK,CAAC;MACvD,MAAM,CAAC;QAAE0C,UAAU,EAAEC,CAAC;QAAE,GAAGC;MAAW,CAAC,CAAC,GAAGxF,MAAM,CAACyF,WAAW,CAACpD,KAAK,CAAC;MACpE,MAAM,CAACqD,UAAU,CAAC,GAAG9F,gBAAgB,CAACyC,KAAK,CAAC;MAE5C,OAAAsD,YAAA,CAAA3F,MAAA,EAAA4F,WAAA;QAAA,OAEU/B,SAAS;QAAA,cACLd,KAAK,CAACI,KAAK;QAAA,uBAAA0C,MAAA,IAAX9C,KAAK,CAACI,KAAK,GAAA0C,MAAA;QAAA,SACd,CACL,cAAc,EACd;UACE,wBAAwB,EAAExD,KAAK,CAACb,MAAM;UACtC,wBAAwB,EAAEa,KAAK,CAACT,MAAM;UACtC,6BAA6B,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAACqC,QAAQ,CAAC5B,KAAK,CAACyD,OAAO;QAC/E,CAAC,EACDzD,KAAK,CAAC0D,KAAK,CACZ;QAAA,SACO1D,KAAK,CAAC2D;MAAK,GACdZ,SAAS,EACTI,UAAU;QAAA,WACLxC,SAAS,CAACG;MAAK;QAGvB,GAAGL,KAAK;QACRhB,OAAO,EAAEmE,KAAA;UAAA,IAAC;YACRC,EAAE;YACFC,UAAU;YACVC,OAAO;YACPC,UAAU;YACVC;UACF,CAAC,GAAAL,KAAA;UAAA,OAAAN,YAAA,CAAA7F,MAAA,EAAA8F,WAAA;YAAA,OAES9B,SAAS;YAAA,eACDQ,kBAAkB;YAAA,WACtBE,cAAc;YAAA,iBACRC,OAAO;YAAA,wBACApC,KAAK,CAAC,sBAAsB,CAAC;YAAA,uBAC9BA,KAAK,CAAC,qBAAqB,CAAC;YAAA,QAC7C;UAAS,GACTqD,UAAU;YAAA,MACVQ,EAAE,CAAC/C,KAAK;YAAA,UACJa,QAAQ,CAACb,KAAK,IAAIiD,OAAO,CAACjD,KAAK;YAAA,SAChCiD,OAAO,CAACjD,KAAK,IAAId,KAAK,CAACkE,KAAK;YAAA,YACzBJ,UAAU,CAAChD,KAAK;YAAA,WACjBH,SAAS,CAACG,KAAK;YAAA,SACjBmD,OAAO,CAACnD,KAAK,KAAK;UAAK;YAG7B,GAAGL,KAAK;YACRhB,OAAO,EAAE0E,KAAA,IAEH;cAAA,IAFI;gBACRnE,KAAK,EAAE;kBAAE0D,KAAK,EAAEU,UAAU;kBAAE,GAAGC;gBAAU;cAC3C,CAAC,GAAAF,KAAA;cACC,MAAMG,SAAS,GAAAC,eAAA,CAAAjB,YAAA,UAAAC,WAAA;gBAAA,OAEL7B,QAAQ;gBAAA,SACNhB,KAAK,CAACI,KAAK;gBAAA,WACTwB,OAAO;gBAAA,aAILtC,KAAK,CAACpB,SAAS;gBAAA,YAChBoF,UAAU,CAAClD,KAAK;gBAAA,YAChBgD,UAAU,CAAChD,KAAK;gBAAA,QACpBd,KAAK,CAACH,IAAI;gBAAA,eACHG,KAAK,CAACZ,WAAW;gBAAA,QACxB,CAAC;gBAAA,QACDY,KAAK,CAACR,IAAI;gBAAA,WACPsC,OAAO;gBAAA,UACRjB;cAAI,GACRwD,SAAS,EACTrB,UAAU,YAAAwB,iBAAA,eAbD;gBACZC,OAAO,EAAErD;cACX,CAAC,EAAE,IAAI;gBAAAsD,IAAA;cAAA,IAaV;cAED,OAAApB,YAAA,CAAAqB,SAAA,SAEM3E,KAAK,CAACb,MAAM,IAAAmE,YAAA;gBAAA,SACA;cAAsB,IAC9BtD,KAAK,CAACb,MAAM,EAEjB,EAECsB,KAAK,CAAChB,OAAO,GAAA6D,YAAA;gBAAA,SAEHc,UAAU;gBAAA,qBACA;cAAE,IAElB3D,KAAK,CAAChB,OAAO,EAAE,EACf6E,SAAS,KAEXrG,UAAU,CAACqG,SAAS,EAAE;gBAAEZ,KAAK,EAAEU;cAAW,CAAC,CAAC,EAE9CpE,KAAK,CAACT,MAAM,IAAA+D,YAAA;gBAAA,SACA;cAAsB,IAC9BtD,KAAK,CAACT,MAAM,EAEjB;YAGP;UAAC;QAAA,CAGN;QACDuD,OAAO,EAAED,UAAU,GAAGwB,SAAS,IAAAf,YAAA,CAAAqB,SAAA,SAEzBlE,KAAK,CAACqC,OAAO,GAAGuB,SAAS,CAAC,EAE1BzB,UAAU,IAAAU,YAAA,CAAAqB,SAAA,SAAArB,YAAA,sBAAAA,YAAA,CAAA1F,QAAA;UAAA,UAKGoC,KAAK,CAACV,iBAAiB,IAAIqB,SAAS,CAACG,KAAK;UAAA,SAC3C7B,YAAY,CAAC6B,KAAK;UAAA,OACpBG,GAAG,CAACH;QAAK,GACGL,KAAK,CAAC3B,OAAO,GAGpC,EAEJ,GAAGqC;MAAS;IAIrB,CAAC,CAAC;IAEF,OAAOrD,WAAW,CAAC,CAAC,CAAC,EAAE0D,SAAS,EAAEC,SAAS,EAAEC,QAAQ,CAAC;EACxD;AACF,CAAC,CAAC"}
@@ -311,7 +311,7 @@ declare const VTextField: {
311
311
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
312
312
  "onClick:control"?: ((e: MouseEvent) => any) | undefined;
313
313
  "onMousedown:control"?: ((e: MouseEvent) => any) | undefined;
314
- }, Omit<Omit<{
314
+ }, HTMLInputElement & Omit<Omit<{
315
315
  $: vue.ComponentInternalInstance;
316
316
  $data: {};
317
317
  $props: Partial<{
@@ -885,7 +885,7 @@ declare const VTextField: {
885
885
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
886
886
  "onClick:control"?: ((e: MouseEvent) => any) | undefined;
887
887
  "onMousedown:control"?: ((e: MouseEvent) => any) | undefined;
888
- } & vue.ShallowUnwrapRef<Omit<Omit<{
888
+ } & vue.ShallowUnwrapRef<HTMLInputElement & Omit<Omit<{
889
889
  $: vue.ComponentInternalInstance;
890
890
  $data: {};
891
891
  $props: Partial<{
@@ -1411,7 +1411,7 @@ declare const VTextField: {
1411
1411
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
1412
1412
  "onClick:control"?: ((e: MouseEvent) => any) | undefined;
1413
1413
  "onMousedown:control"?: ((e: MouseEvent) => any) | undefined;
1414
- }, Omit<Omit<{
1414
+ }, HTMLInputElement & Omit<Omit<{
1415
1415
  $: vue.ComponentInternalInstance;
1416
1416
  $data: {};
1417
1417
  $props: Partial<{
@@ -13,37 +13,38 @@ import { forwardRefs } from "../../composables/forwardRefs.mjs";
13
13
  import { useFocus } from "../../composables/focus.mjs";
14
14
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
15
15
  import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue';
16
- import { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, useRender } from "../../util/index.mjs"; // Types
16
+ import { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
17
+ export const makeVTextareaProps = propsFactory({
18
+ autoGrow: Boolean,
19
+ autofocus: Boolean,
20
+ counter: [Boolean, Number, String],
21
+ counterValue: Function,
22
+ prefix: String,
23
+ placeholder: String,
24
+ persistentPlaceholder: Boolean,
25
+ persistentCounter: Boolean,
26
+ noResize: Boolean,
27
+ rows: {
28
+ type: [Number, String],
29
+ default: 5,
30
+ validator: v => !isNaN(parseFloat(v))
31
+ },
32
+ maxRows: {
33
+ type: [Number, String],
34
+ validator: v => !isNaN(parseFloat(v))
35
+ },
36
+ suffix: String,
37
+ modelModifiers: Object,
38
+ ...makeVInputProps(),
39
+ ...makeVFieldProps()
40
+ }, 'v-textarea');
17
41
  export const VTextarea = genericComponent()({
18
42
  name: 'VTextarea',
19
43
  directives: {
20
44
  Intersect
21
45
  },
22
46
  inheritAttrs: false,
23
- props: {
24
- autoGrow: Boolean,
25
- autofocus: Boolean,
26
- counter: [Boolean, Number, String],
27
- counterValue: Function,
28
- prefix: String,
29
- placeholder: String,
30
- persistentPlaceholder: Boolean,
31
- persistentCounter: Boolean,
32
- noResize: Boolean,
33
- rows: {
34
- type: [Number, String],
35
- default: 5,
36
- validator: v => !isNaN(parseFloat(v))
37
- },
38
- maxRows: {
39
- type: [Number, String],
40
- validator: v => !isNaN(parseFloat(v))
41
- },
42
- suffix: String,
43
- modelModifiers: Object,
44
- ...makeVInputProps(),
45
- ...makeVFieldProps()
46
- },
47
+ props: makeVTextareaProps(),
47
48
  emits: {
48
49
  'click:control': e => true,
49
50
  'mousedown:control': e => true,
@@ -78,7 +79,7 @@ export const VTextarea = genericComponent()({
78
79
  const vFieldRef = ref();
79
80
  const controlHeight = ref('');
80
81
  const textareaRef = ref();
81
- const isActive = computed(() => isFocused.value || props.persistentPlaceholder);
82
+ const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
82
83
  function onFocus() {
83
84
  if (textareaRef.value !== document.activeElement) {
84
85
  textareaRef.value?.focus();