@vuetify/nightly 3.8.6-master.2025-05-23 → 3.8.6-master.2025-05-26

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 (328) hide show
  1. package/CHANGELOG.md +9 -3
  2. package/dist/json/attributes.json +2828 -2828
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +190 -190
  5. package/dist/json/web-types.json +5204 -5204
  6. package/dist/vuetify-labs.cjs +876 -873
  7. package/dist/vuetify-labs.css +5138 -5138
  8. package/dist/vuetify-labs.d.ts +69 -69
  9. package/dist/vuetify-labs.esm.js +877 -874
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +876 -873
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +763 -760
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +5182 -5182
  16. package/dist/vuetify.d.ts +69 -69
  17. package/dist/vuetify.esm.js +764 -761
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +763 -760
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +960 -960
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.js +11 -11
  25. package/lib/components/VAlert/VAlert.js.map +1 -1
  26. package/lib/components/VApp/VApp.js +5 -5
  27. package/lib/components/VApp/VApp.js.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.js +9 -9
  29. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  30. package/lib/components/VAvatar/VAvatar.js +4 -4
  31. package/lib/components/VAvatar/VAvatar.js.map +1 -1
  32. package/lib/components/VBadge/VBadge.js +3 -3
  33. package/lib/components/VBadge/VBadge.js.map +1 -1
  34. package/lib/components/VBanner/VBanner.js +6 -6
  35. package/lib/components/VBanner/VBanner.js.map +1 -1
  36. package/lib/components/VBanner/VBannerActions.js +4 -4
  37. package/lib/components/VBanner/VBannerActions.js.map +1 -1
  38. package/lib/components/VBottomNavigation/VBottomNavigation.js +6 -6
  39. package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  40. package/lib/components/VBreadcrumbs/VBreadcrumbs.js +5 -5
  41. package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
  42. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.js +4 -4
  43. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.js.map +1 -1
  44. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +5 -5
  45. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  46. package/lib/components/VBtn/VBtn.js +7 -7
  47. package/lib/components/VBtn/VBtn.js.map +1 -1
  48. package/lib/components/VBtnGroup/VBtnGroup.js +4 -4
  49. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  50. package/lib/components/VCard/VCard.js +5 -5
  51. package/lib/components/VCard/VCard.js.map +1 -1
  52. package/lib/components/VCard/VCardActions.js +4 -4
  53. package/lib/components/VCard/VCardActions.js.map +1 -1
  54. package/lib/components/VCard/VCardItem.js +9 -9
  55. package/lib/components/VCard/VCardItem.js.map +1 -1
  56. package/lib/components/VCard/VCardSubtitle.js +4 -4
  57. package/lib/components/VCard/VCardSubtitle.js.map +1 -1
  58. package/lib/components/VCard/VCardText.js +4 -4
  59. package/lib/components/VCard/VCardText.js.map +1 -1
  60. package/lib/components/VCarousel/VCarousel.js +4 -4
  61. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  62. package/lib/components/VChip/VChip.js +11 -11
  63. package/lib/components/VChip/VChip.js.map +1 -1
  64. package/lib/components/VColorPicker/VColorPicker.js +3 -3
  65. package/lib/components/VColorPicker/VColorPicker.js.map +1 -1
  66. package/lib/components/VColorPicker/VColorPickerCanvas.js +9 -9
  67. package/lib/components/VColorPicker/VColorPickerCanvas.js.map +1 -1
  68. package/lib/components/VColorPicker/VColorPickerEdit.js +6 -6
  69. package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
  70. package/lib/components/VColorPicker/VColorPickerPreview.js +11 -11
  71. package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  72. package/lib/components/VColorPicker/VColorPickerSwatches.js +10 -10
  73. package/lib/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
  74. package/lib/components/VCombobox/VCombobox.js +9 -9
  75. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  76. package/lib/components/VConfirmEdit/VConfirmEdit.js +3 -3
  77. package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
  78. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.js +3 -3
  79. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.js.map +1 -1
  80. package/lib/components/VCounter/VCounter.js +5 -5
  81. package/lib/components/VCounter/VCounter.js.map +1 -1
  82. package/lib/components/VDataIterator/VDataIterator.js +5 -5
  83. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  84. package/lib/components/VDataTable/VDataTable.js +4 -4
  85. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  86. package/lib/components/VDataTable/VDataTableColumn.js +5 -5
  87. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  88. package/lib/components/VDataTable/VDataTableFooter.js +6 -6
  89. package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
  90. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +7 -7
  91. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  92. package/lib/components/VDataTable/VDataTableHeaders.js +11 -11
  93. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  94. package/lib/components/VDataTable/VDataTableRow.js +6 -6
  95. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  96. package/lib/components/VDataTable/VDataTableRows.js +7 -7
  97. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  98. package/lib/components/VDataTable/VDataTableServer.js +4 -4
  99. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  100. package/lib/components/VDataTable/VDataTableVirtual.js +14 -14
  101. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  102. package/lib/components/VDatePicker/VDatePicker.js +3 -3
  103. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  104. package/lib/components/VDatePicker/VDatePickerControls.js +5 -5
  105. package/lib/components/VDatePicker/VDatePickerControls.js.map +1 -1
  106. package/lib/components/VDatePicker/VDatePickerHeader.js +8 -8
  107. package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  108. package/lib/components/VDatePicker/VDatePickerMonth.js +10 -10
  109. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  110. package/lib/components/VDatePicker/VDatePickerMonths.js +5 -5
  111. package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
  112. package/lib/components/VDatePicker/VDatePickerYears.js +5 -5
  113. package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
  114. package/lib/components/VDialog/__test__/VDialog.spec.browser.js +5 -5
  115. package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
  116. package/lib/components/VDivider/VDivider.js +10 -10
  117. package/lib/components/VDivider/VDivider.js.map +1 -1
  118. package/lib/components/VEmptyState/VEmptyState.js +14 -14
  119. package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
  120. package/lib/components/VExpansionPanel/VExpansionPanel.js +6 -6
  121. package/lib/components/VExpansionPanel/VExpansionPanel.js.map +1 -1
  122. package/lib/components/VExpansionPanel/VExpansionPanelText.js +5 -5
  123. package/lib/components/VExpansionPanel/VExpansionPanelText.js.map +1 -1
  124. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js +10 -10
  125. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js.map +1 -1
  126. package/lib/components/VExpansionPanel/VExpansionPanels.js +4 -4
  127. package/lib/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
  128. package/lib/components/VFab/VFab.js +7 -7
  129. package/lib/components/VFab/VFab.js.map +1 -1
  130. package/lib/components/VField/VField.js +20 -18
  131. package/lib/components/VField/VField.js.map +1 -1
  132. package/lib/components/VField/VFieldLabel.js +4 -4
  133. package/lib/components/VField/VFieldLabel.js.map +1 -1
  134. package/lib/components/VFileInput/VFileInput.js +5 -5
  135. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  136. package/lib/components/VFooter/VFooter.js +4 -4
  137. package/lib/components/VFooter/VFooter.js.map +1 -1
  138. package/lib/components/VForm/VForm.js +4 -4
  139. package/lib/components/VForm/VForm.js.map +1 -1
  140. package/lib/components/VGrid/VContainer.js +4 -4
  141. package/lib/components/VGrid/VContainer.js.map +1 -1
  142. package/lib/components/VIcon/VIcon.js +5 -5
  143. package/lib/components/VIcon/VIcon.js.map +1 -1
  144. package/lib/components/VImg/VImg.js +19 -19
  145. package/lib/components/VImg/VImg.js.map +1 -1
  146. package/lib/components/VInfiniteScroll/VInfiniteScroll.js +10 -10
  147. package/lib/components/VInfiniteScroll/VInfiniteScroll.js.map +1 -1
  148. package/lib/components/VInput/InputIcon.d.ts +1 -1
  149. package/lib/components/VInput/InputIcon.js +5 -4
  150. package/lib/components/VInput/InputIcon.js.map +1 -1
  151. package/lib/components/VInput/VInput.js +9 -9
  152. package/lib/components/VInput/VInput.js.map +1 -1
  153. package/lib/components/VItemGroup/VItemGroup.js +3 -3
  154. package/lib/components/VItemGroup/VItemGroup.js.map +1 -1
  155. package/lib/components/VLabel/VLabel.js +5 -5
  156. package/lib/components/VLabel/VLabel.js.map +1 -1
  157. package/lib/components/VLayout/VLayout.js +4 -4
  158. package/lib/components/VLayout/VLayout.js.map +1 -1
  159. package/lib/components/VLayout/VLayoutItem.js +4 -4
  160. package/lib/components/VLayout/VLayoutItem.js.map +1 -1
  161. package/lib/components/VLazy/VLazy.js +6 -6
  162. package/lib/components/VLazy/VLazy.js.map +1 -1
  163. package/lib/components/VList/VList.js +4 -4
  164. package/lib/components/VList/VList.js.map +1 -1
  165. package/lib/components/VList/VListGroup.js +5 -5
  166. package/lib/components/VList/VListGroup.js.map +1 -1
  167. package/lib/components/VList/VListItem.js +11 -11
  168. package/lib/components/VList/VListItem.js.map +1 -1
  169. package/lib/components/VList/VListItemAction.js +4 -4
  170. package/lib/components/VList/VListItemAction.js.map +1 -1
  171. package/lib/components/VList/VListItemMedia.js +4 -4
  172. package/lib/components/VList/VListItemMedia.js.map +1 -1
  173. package/lib/components/VList/VListItemSubtitle.js +4 -4
  174. package/lib/components/VList/VListItemSubtitle.js.map +1 -1
  175. package/lib/components/VList/VListSubheader.js +6 -6
  176. package/lib/components/VList/VListSubheader.js.map +1 -1
  177. package/lib/components/VLocaleProvider/VLocaleProvider.js +4 -4
  178. package/lib/components/VLocaleProvider/VLocaleProvider.js.map +1 -1
  179. package/lib/components/VMain/VMain.js +5 -5
  180. package/lib/components/VMain/VMain.js.map +1 -1
  181. package/lib/components/VMessages/VMessages.js +4 -4
  182. package/lib/components/VMessages/VMessages.js.map +1 -1
  183. package/lib/components/VNavigationDrawer/VNavigationDrawer.js +7 -7
  184. package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  185. package/lib/components/VNumberInput/VNumberInput.js +8 -8
  186. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  187. package/lib/components/VOtpInput/VOtpInput.js +7 -7
  188. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  189. package/lib/components/VOverlay/VOverlay.js +8 -8
  190. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  191. package/lib/components/VPagination/VPagination.js +11 -11
  192. package/lib/components/VPagination/VPagination.js.map +1 -1
  193. package/lib/components/VParallax/VParallax.js +4 -4
  194. package/lib/components/VParallax/VParallax.js.map +1 -1
  195. package/lib/components/VProgressCircular/VProgressCircular.js +12 -12
  196. package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
  197. package/lib/components/VProgressLinear/VProgressLinear.js +26 -26
  198. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  199. package/lib/components/VRadioGroup/VRadioGroup.js +2 -2
  200. package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
  201. package/lib/components/VRangeSlider/VRangeSlider.js +5 -5
  202. package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
  203. package/lib/components/VRating/VRating.js +14 -14
  204. package/lib/components/VRating/VRating.js.map +1 -1
  205. package/lib/components/VResponsive/VResponsive.js +9 -9
  206. package/lib/components/VResponsive/VResponsive.js.map +1 -1
  207. package/lib/components/VSelect/VSelect.js +7 -7
  208. package/lib/components/VSelect/VSelect.js.map +1 -1
  209. package/lib/components/VSelectionControl/VSelectionControl.js +11 -11
  210. package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
  211. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js +5 -5
  212. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js.map +1 -1
  213. package/lib/components/VSheet/VSheet.js +3 -3
  214. package/lib/components/VSheet/VSheet.js.map +1 -1
  215. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +4 -4
  216. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  217. package/lib/components/VSlideGroup/VSlideGroup.js +12 -12
  218. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  219. package/lib/components/VSlider/VSlider.js +4 -4
  220. package/lib/components/VSlider/VSlider.js.map +1 -1
  221. package/lib/components/VSlider/VSliderThumb.js +19 -19
  222. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  223. package/lib/components/VSlider/VSliderTrack.js +23 -23
  224. package/lib/components/VSlider/VSliderTrack.js.map +1 -1
  225. package/lib/components/VSnackbar/VSnackbar.js +4 -4
  226. package/lib/components/VSnackbar/VSnackbar.js.map +1 -1
  227. package/lib/components/VSnackbarQueue/VSnackbarQueue.js +3 -3
  228. package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
  229. package/lib/components/VSparkline/VBarline.js +12 -12
  230. package/lib/components/VSparkline/VBarline.js.map +1 -1
  231. package/lib/components/VSparkline/VTrendline.js +8 -8
  232. package/lib/components/VSparkline/VTrendline.js.map +1 -1
  233. package/lib/components/VStepper/VStepper.js +2 -2
  234. package/lib/components/VStepper/VStepper.js.map +1 -1
  235. package/lib/components/VStepper/VStepperActions.js +2 -2
  236. package/lib/components/VStepper/VStepperActions.js.map +1 -1
  237. package/lib/components/VStepper/VStepperItem.js +10 -10
  238. package/lib/components/VStepper/VStepperItem.js.map +1 -1
  239. package/lib/components/VSwitch/VSwitch.js +10 -10
  240. package/lib/components/VSwitch/VSwitch.js.map +1 -1
  241. package/lib/components/VSystemBar/VSystemBar.js +4 -4
  242. package/lib/components/VSystemBar/VSystemBar.js.map +1 -1
  243. package/lib/components/VTable/VTable.js +8 -8
  244. package/lib/components/VTable/VTable.js.map +1 -1
  245. package/lib/components/VTabs/VTab.js +4 -4
  246. package/lib/components/VTabs/VTab.js.map +1 -1
  247. package/lib/components/VTabs/VTabs.js +2 -2
  248. package/lib/components/VTabs/VTabs.js.map +1 -1
  249. package/lib/components/VTextField/VTextField.js +12 -12
  250. package/lib/components/VTextField/VTextField.js.map +1 -1
  251. package/lib/components/VTextarea/VTextarea.js +10 -10
  252. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  253. package/lib/components/VThemeProvider/VThemeProvider.js +3 -3
  254. package/lib/components/VThemeProvider/VThemeProvider.js.map +1 -1
  255. package/lib/components/VTimeline/VTimeline.js +5 -5
  256. package/lib/components/VTimeline/VTimeline.js.map +1 -1
  257. package/lib/components/VTimeline/VTimelineDivider.js +17 -17
  258. package/lib/components/VTimeline/VTimelineDivider.js.map +1 -1
  259. package/lib/components/VTimeline/VTimelineItem.js +9 -9
  260. package/lib/components/VTimeline/VTimelineItem.js.map +1 -1
  261. package/lib/components/VToolbar/VToolbar.js +13 -13
  262. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  263. package/lib/components/VToolbar/VToolbarItems.js +4 -4
  264. package/lib/components/VToolbar/VToolbarItems.js.map +1 -1
  265. package/lib/components/VToolbar/VToolbarTitle.js +4 -4
  266. package/lib/components/VToolbar/VToolbarTitle.js.map +1 -1
  267. package/lib/components/VVirtualScroll/VVirtualScroll.js +13 -13
  268. package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  269. package/lib/components/VVirtualScroll/VVirtualScrollItem.js +3 -3
  270. package/lib/components/VVirtualScroll/VVirtualScrollItem.js.map +1 -1
  271. package/lib/components/VWindow/VWindow.js +13 -13
  272. package/lib/components/VWindow/VWindow.js.map +1 -1
  273. package/lib/components/VWindow/VWindowItem.js +6 -6
  274. package/lib/components/VWindow/VWindowItem.js.map +1 -1
  275. package/lib/composables/filter.js +8 -8
  276. package/lib/composables/filter.js.map +1 -1
  277. package/lib/composables/icons.js +6 -6
  278. package/lib/composables/icons.js.map +1 -1
  279. package/lib/composables/loader.js +3 -3
  280. package/lib/composables/loader.js.map +1 -1
  281. package/lib/composables/variant.js +5 -5
  282. package/lib/composables/variant.js.map +1 -1
  283. package/lib/entry-bundler.js +1 -1
  284. package/lib/framework.d.ts +69 -69
  285. package/lib/framework.js +1 -1
  286. package/lib/labs/VCalendar/VCalendar.js +15 -15
  287. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  288. package/lib/labs/VCalendar/VCalendarDay.js +4 -4
  289. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  290. package/lib/labs/VCalendar/VCalendarHeader.js +4 -4
  291. package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
  292. package/lib/labs/VCalendar/VCalendarInterval.js +10 -10
  293. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  294. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +2 -2
  295. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  296. package/lib/labs/VCalendar/VCalendarMonthDay.js +6 -6
  297. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  298. package/lib/labs/VColorInput/VColorInput.js +3 -3
  299. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  300. package/lib/labs/VDateInput/VDateInput.js +2 -2
  301. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  302. package/lib/labs/VFileUpload/VFileUpload.js +9 -9
  303. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  304. package/lib/labs/VFileUpload/VFileUploadItem.js +3 -3
  305. package/lib/labs/VFileUpload/VFileUploadItem.js.map +1 -1
  306. package/lib/labs/VIconBtn/VIconBtn.js +7 -7
  307. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  308. package/lib/labs/VPicker/VPicker.js +7 -7
  309. package/lib/labs/VPicker/VPicker.js.map +1 -1
  310. package/lib/labs/VPullToRefresh/VPullToRefresh.js +13 -13
  311. package/lib/labs/VPullToRefresh/VPullToRefresh.js.map +1 -1
  312. package/lib/labs/VStepperVertical/VStepperVertical.js +2 -2
  313. package/lib/labs/VStepperVertical/VStepperVertical.js.map +1 -1
  314. package/lib/labs/VStepperVertical/VStepperVerticalItem.js +5 -5
  315. package/lib/labs/VStepperVertical/VStepperVerticalItem.js.map +1 -1
  316. package/lib/labs/VTimePicker/VTimePicker.js +2 -2
  317. package/lib/labs/VTimePicker/VTimePicker.js.map +1 -1
  318. package/lib/labs/VTimePicker/VTimePickerClock.js +15 -15
  319. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  320. package/lib/labs/VTimePicker/VTimePickerControls.js +24 -24
  321. package/lib/labs/VTimePicker/VTimePickerControls.js.map +1 -1
  322. package/lib/labs/VTreeview/VTreeviewChildren.js +2 -2
  323. package/lib/labs/VTreeview/VTreeviewChildren.js.map +1 -1
  324. package/lib/labs/VTreeview/VTreeviewGroup.js +2 -2
  325. package/lib/labs/VTreeview/VTreeviewGroup.js.map +1 -1
  326. package/lib/labs/VTreeview/VTreeviewItem.js +3 -3
  327. package/lib/labs/VTreeview/VTreeviewItem.js.map +1 -1
  328. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useFocus","useForm","forwardRefs","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","watchEffect","clamp","extractNumber","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focus","blur","correctPrecision","arguments","length","undefined","fixed","toFixed","toString","model","_inputText","isNaN","inputText","get","set","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","style","touchAction","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","inputElement","target","existingTxt","selectionStart","selectionEnd","potentialNewInputVal","slice","potentialNewNumber","test","preventDefault","split","includes","onKeydown","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/components/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useHold } from './hold'\nimport { useFocus } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue'\nimport { clamp, extractNumber, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n props: Record<string, unknown>\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField>()\n\n const { holdStart, holdStop } = useHold({ toggleUpDown })\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const { isFocused, focus, blur } = useFocus(props)\n\n function correctPrecision (val: number, precision = props.precision) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n return isFocused.value\n ? Number(fixed).toString() // trim zeros\n : fixed\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(Number(val), props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (isFocused.value && !controlsDisabled.value) {\n // ignore external changes\n } else if (model.value == null) {\n _inputText.value = null\n } else if (!isNaN(model.value)) {\n _inputText.value = correctPrecision(model.value)\n }\n })\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n } else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {\n model.value = Number(val)\n _inputText.value = val\n }\n },\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = {\n props: {\n style: { touchAction: 'none' },\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n },\n }\n const decrementSlotProps = {\n props: {\n style: { touchAction: 'none' },\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n },\n }\n\n watch(() => props.precision, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const inputElement = e.target as HTMLInputElement\n const { value: existingTxt, selectionStart, selectionEnd } = inputElement ?? {}\n\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision)\n\n // Only numbers, \"-\", \".\" are allowed\n // AND \"-\", \".\" are allowed only once\n // AND \"-\" is only allowed at the start\n if (!/^-?(\\d+(\\.\\d*)?|(\\.\\d+)|\\d*|\\.)$/.test(potentialNewInputVal)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split('.')[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes('.')) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlClick (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function onControlMouseup (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.releasePointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStop()\n }\n\n function onUpControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('up')\n }\n\n function onDownControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('down')\n }\n\n function clampModel () {\n if (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n if (actualText && !isNaN(Number(actualText))) {\n inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = props.precision == null\n ? String(model.value)\n : model.value.toFixed(props.precision)\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n }\n\n function onFocus () {\n focus()\n trimDecimalZeros()\n }\n\n function onBlur () {\n blur()\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"increment\"\n disabled={ !canIncrease.value }\n flat\n height={ controlNodeDefaultHeight.value }\n icon={ incrementIcon.value }\n key=\"increment-btn\"\n onClick={ onControlClick }\n onPointerdown={ onUpControlMousedown }\n onPointerup={ onControlMouseup }\n size={ controlNodeSize.value }\n style=\"touch-action: none\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"decrement\"\n disabled={ !canDecrease.value }\n flat\n height={ controlNodeDefaultHeight.value }\n icon={ decrementIcon.value }\n key=\"decrement-btn\"\n onClick={ onControlClick }\n onPointerdown={ onDownControlMousedown }\n onPointerup={ onControlMouseup }\n size={ controlNodeSize.value }\n style=\"touch-action: none\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (props.reverse || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ inputText.value }\n validationValue={ model.value }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useFocus","useForm","forwardRefs","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","watchEffect","clamp","extractNumber","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focus","blur","correctPrecision","arguments","length","undefined","fixed","toFixed","toString","model","_inputText","isNaN","inputText","get","set","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","style","touchAction","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","inputElement","target","existingTxt","selectionStart","selectionEnd","potentialNewInputVal","slice","potentialNewNumber","test","preventDefault","split","includes","onKeydown","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","flat","height","size","icon","decrementControlNode","decrement","controlNode","_createElementVNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/components/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useHold } from './hold'\nimport { useFocus } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue'\nimport { clamp, extractNumber, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n props: Record<string, unknown>\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField>()\n\n const { holdStart, holdStop } = useHold({ toggleUpDown })\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const { isFocused, focus, blur } = useFocus(props)\n\n function correctPrecision (val: number, precision = props.precision) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n return isFocused.value\n ? Number(fixed).toString() // trim zeros\n : fixed\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(Number(val), props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (isFocused.value && !controlsDisabled.value) {\n // ignore external changes\n } else if (model.value == null) {\n _inputText.value = null\n } else if (!isNaN(model.value)) {\n _inputText.value = correctPrecision(model.value)\n }\n })\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n } else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {\n model.value = Number(val)\n _inputText.value = val\n }\n },\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = {\n props: {\n style: { touchAction: 'none' },\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n },\n }\n const decrementSlotProps = {\n props: {\n style: { touchAction: 'none' },\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n },\n }\n\n watch(() => props.precision, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const inputElement = e.target as HTMLInputElement\n const { value: existingTxt, selectionStart, selectionEnd } = inputElement ?? {}\n\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision)\n\n // Only numbers, \"-\", \".\" are allowed\n // AND \"-\", \".\" are allowed only once\n // AND \"-\" is only allowed at the start\n if (!/^-?(\\d+(\\.\\d*)?|(\\.\\d+)|\\d*|\\.)$/.test(potentialNewInputVal)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split('.')[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes('.')) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlClick (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function onControlMouseup (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.releasePointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStop()\n }\n\n function onUpControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('up')\n }\n\n function onDownControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('down')\n }\n\n function clampModel () {\n if (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n if (actualText && !isNaN(Number(actualText))) {\n inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = props.precision == null\n ? String(model.value)\n : model.value.toFixed(props.precision)\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n }\n\n function onFocus () {\n focus()\n trimDecimalZeros()\n }\n\n function onBlur () {\n blur()\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"increment\"\n disabled={ !canIncrease.value }\n flat\n height={ controlNodeDefaultHeight.value }\n icon={ incrementIcon.value }\n key=\"increment-btn\"\n onClick={ onControlClick }\n onPointerdown={ onUpControlMousedown }\n onPointerup={ onControlMouseup }\n size={ controlNodeSize.value }\n style=\"touch-action: none\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"decrement\"\n disabled={ !canDecrease.value }\n flat\n height={ controlNodeDefaultHeight.value }\n icon={ decrementIcon.value }\n key=\"decrement-btn\"\n onClick={ onControlClick }\n onPointerdown={ onDownControlMousedown }\n onPointerup={ onControlMouseup }\n size={ controlNodeSize.value }\n style=\"touch-action: none\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (props.reverse || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ inputText.value }\n validationValue={ model.value }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
1
+ import { Fragment as _Fragment, createElementVNode as _createElementVNode, createVNode as _createVNode, mergeProps as _mergeProps, normalizeStyle as _normalizeStyle } from "vue";
2
2
  // Styles
3
3
  import "./VOtpInput.css";
4
4
 
@@ -166,16 +166,16 @@ export const VOtpInput = genericComponent()({
166
166
  });
167
167
  useRender(() => {
168
168
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
169
- return _createVNode("div", _mergeProps({
169
+ return _createElementVNode("div", _mergeProps({
170
170
  "class": ['v-otp-input', {
171
171
  'v-otp-input--divided': !!props.divider
172
172
  }, props.class],
173
173
  "style": [props.style]
174
- }, rootAttrs), [_createVNode("div", {
174
+ }, rootAttrs), [_createElementVNode("div", {
175
175
  "ref": contentRef,
176
176
  "class": "v-otp-input__content",
177
- "style": [dimensionStyles.value]
178
- }, [fields.value.map((_, i) => _createVNode(_Fragment, null, [props.divider && i !== 0 && _createVNode("span", {
177
+ "style": _normalizeStyle([dimensionStyles.value])
178
+ }, [fields.value.map((_, i) => _createElementVNode(_Fragment, null, [props.divider && i !== 0 && _createElementVNode("span", {
179
179
  "class": "v-otp-input__divider"
180
180
  }, [props.divider]), _createVNode(VField, {
181
181
  "focused": isFocused.value && props.focusAll || focusIndex.value === i,
@@ -184,7 +184,7 @@ export const VOtpInput = genericComponent()({
184
184
  ...slots,
185
185
  loader: undefined,
186
186
  default: () => {
187
- return _createVNode("input", {
187
+ return _createElementVNode("input", {
188
188
  "ref": val => inputRef.value[i] = val,
189
189
  "aria-label": t(props.label, i + 1),
190
190
  "autofocus": i === 0 && props.autofocus,
@@ -204,7 +204,7 @@ export const VOtpInput = genericComponent()({
204
204
  "onPaste": event => onPaste(i, event)
205
205
  }, null);
206
206
  }
207
- })])), _createVNode("input", _mergeProps({
207
+ })])), _createElementVNode("input", _mergeProps({
208
208
  "class": "v-otp-input-input",
209
209
  "type": "hidden"
210
210
  }, inputAttrs, {
@@ -1 +1 @@
1
- {"version":3,"file":"VOtpInput.js","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useLocale","useProxiedModel","computed","nextTick","ref","toRef","watch","filterInputAttrs","focusChild","genericComponent","pick","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","onInput","isValidNumber","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardText","clipboardData","getData","reset","onFocus","onBlur","test","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createVNode","_mergeProps","class","style","map","_","i","_Fragment","loader","event","loading","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, toRef, watch } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...pick(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? ''\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[index].blur()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: toRef(() => props.color),\n bgColor: toRef(() => props.color),\n baseColor: toRef(() => props.baseColor),\n disabled: toRef(() => props.disabled),\n error: toRef(() => props.error),\n variant: toRef(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''))\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength={ i === 0 ? length.value : '1' }\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n content-class=\"v-otp-input__loader\"\n model-value={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VOtpInput.js","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useLocale","useProxiedModel","computed","nextTick","ref","toRef","watch","filterInputAttrs","focusChild","genericComponent","pick","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","onInput","isValidNumber","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardText","clipboardData","getData","reset","onFocus","onBlur","test","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createElementVNode","_mergeProps","class","style","_normalizeStyle","map","_","i","_Fragment","_createVNode","loader","event","loading","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, toRef, watch } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...pick(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? ''\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[index].blur()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: toRef(() => props.color),\n bgColor: toRef(() => props.color),\n baseColor: toRef(() => props.baseColor),\n disabled: toRef(() => props.disabled),\n error: toRef(() => props.error),\n variant: toRef(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''))\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength={ i === 0 ? length.value : '1' }\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n content-class=\"v-otp-input__loader\"\n model-value={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment, vShow as _vShow, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from "vue";
1
+ import { mergeProps as _mergeProps, createElementVNode as _createElementVNode, createVNode as _createVNode, Fragment as _Fragment, vShow as _vShow, withDirectives as _withDirectives } from "vue";
2
2
  // Styles
3
3
  import "./VOverlay.css";
4
4
 
@@ -20,7 +20,7 @@ import { useTeleport } from "../../composables/teleport.js";
20
20
  import { makeThemeProps, provideTheme } from "../../composables/theme.js";
21
21
  import { useToggleScope } from "../../composables/toggleScope.js";
22
22
  import { makeTransitionProps, MaybeTransition } from "../../composables/transition.js"; // Directives
23
- import { ClickOutside } from "../../directives/click-outside/index.js"; // Utilities
23
+ import vClickOutside from "../../directives/click-outside/index.js"; // Utilities
24
24
  import { computed, mergeProps, onBeforeUnmount, ref, Teleport, Transition, watch } from 'vue';
25
25
  import { animate, convertToUnit, genericComponent, getCurrentInstance, getScrollParent, IN_BROWSER, propsFactory, standardEasing, useRender } from "../../util/index.js"; // Types
26
26
  function Scrim(props) {
@@ -33,7 +33,7 @@ function Scrim(props) {
33
33
  "name": "fade-transition",
34
34
  "appear": true
35
35
  }, {
36
- default: () => [props.modelValue && _createVNode("div", _mergeProps({
36
+ default: () => [props.modelValue && _createElementVNode("div", _mergeProps({
37
37
  "class": ['v-overlay__scrim', props.color.backgroundColorClasses.value],
38
38
  "style": props.color.backgroundColorStyles.value
39
39
  }, rest), null)]
@@ -74,7 +74,7 @@ export const makeVOverlayProps = propsFactory({
74
74
  export const VOverlay = genericComponent()({
75
75
  name: 'VOverlay',
76
76
  directives: {
77
- ClickOutside
77
+ vClickOutside
78
78
  },
79
79
  inheritAttrs: false,
80
80
  props: {
@@ -254,7 +254,7 @@ export const VOverlay = genericComponent()({
254
254
  _onAfterLeave();
255
255
  emit('afterLeave');
256
256
  }
257
- useRender(() => _createVNode(_Fragment, null, [slots.activator?.({
257
+ useRender(() => _createElementVNode(_Fragment, null, [slots.activator?.({
258
258
  isActive: isActive.value,
259
259
  targetRef,
260
260
  props: mergeProps({
@@ -264,7 +264,7 @@ export const VOverlay = genericComponent()({
264
264
  "disabled": !teleportTarget.value,
265
265
  "to": teleportTarget.value
266
266
  }, {
267
- default: () => [_createVNode("div", _mergeProps({
267
+ default: () => [_createElementVNode("div", _mergeProps({
268
268
  "class": ['v-overlay', {
269
269
  'v-overlay--absolute': props.absolute || props.contained,
270
270
  'v-overlay--active': isActive.value,
@@ -288,13 +288,13 @@ export const VOverlay = genericComponent()({
288
288
  "onAfterEnter": onAfterEnter,
289
289
  "onAfterLeave": onAfterLeave
290
290
  }, {
291
- default: () => [_withDirectives(_createVNode("div", _mergeProps({
291
+ default: () => [_withDirectives(_createElementVNode("div", _mergeProps({
292
292
  "ref": contentEl,
293
293
  "class": ['v-overlay__content', props.contentClass],
294
294
  "style": [dimensionStyles.value, contentStyles.value]
295
295
  }, contentEvents.value, props.contentProps), [slots.default?.({
296
296
  isActive
297
- })]), [[_vShow, isActive.value], [_resolveDirective("click-outside"), {
297
+ })]), [[_vShow, isActive.value], [vClickOutside, {
298
298
  handler: onClickOutside,
299
299
  closeConditional,
300
300
  include: () => [activatorEl.value]
@@ -1 +1 @@
1
- {"version":3,"file":"VOverlay.js","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","Transition","watch","animate","convertToUnit","genericComponent","getCurrentInstance","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","keydown","afterEnter","afterLeave","setup","_ref","slots","attrs","emit","vm","root","scrimEl","contentEl","model","isActive","get","set","v","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","teleportTarget","rootNode","getRootNode","proxy","$el","ShadowRoot","dimensionStyles","isMounted","scopeId","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","MouseEvent","shadowTarget","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","onKeydownSelf","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","onAfterEnter","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any>, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n keydown: (e: KeyboardEvent) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const vm = getCurrentInstance('VOverlay')\n const root = ref<HTMLElement>()\n const scrimEl = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n })\n const { globalTop, localTop, stackStyles } = useStack(isActive, () => props.zIndex, props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop, contentEl })\n const { teleportTarget } = useTeleport(() => {\n const target = props.attach || props.contained\n if (target) return target\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode()\n if (rootNode instanceof ShadowRoot) return rootNode\n return false\n })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || (e instanceof MouseEvent && e.shadowTarget === scrimEl.value)\n )\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!contentEl.value?.contains(document.activeElement)) {\n emit('keydown', e)\n }\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n function onKeydownSelf (e: KeyboardEvent) {\n if (e.key === 'Escape' && !globalTop.value) return\n\n emit('keydown', e)\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n onKeydown={ onKeydownSelf }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n ref={ scrimEl }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VOverlay.js","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","vClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","Transition","watch","animate","convertToUnit","genericComponent","getCurrentInstance","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_createElementVNode","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","keydown","afterEnter","afterLeave","setup","_ref","slots","attrs","emit","vm","root","scrimEl","contentEl","model","isActive","get","set","v","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","teleportTarget","rootNode","getRootNode","proxy","$el","ShadowRoot","dimensionStyles","isMounted","scopeId","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","MouseEvent","shadowTarget","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","onKeydownSelf","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","onAfterEnter","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport vClickOutside from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any>, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { vClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n keydown: (e: KeyboardEvent) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const vm = getCurrentInstance('VOverlay')\n const root = ref<HTMLElement>()\n const scrimEl = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n })\n const { globalTop, localTop, stackStyles } = useStack(isActive, () => props.zIndex, props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop, contentEl })\n const { teleportTarget } = useTeleport(() => {\n const target = props.attach || props.contained\n if (target) return target\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode()\n if (rootNode instanceof ShadowRoot) return rootNode\n return false\n })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || (e instanceof MouseEvent && e.shadowTarget === scrimEl.value)\n )\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!contentEl.value?.contains(document.activeElement)) {\n emit('keydown', e)\n }\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n function onKeydownSelf (e: KeyboardEvent) {\n if (e.key === 'Escape' && !globalTop.value) return\n\n emit('keydown', e)\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n onKeydown={ onKeydownSelf }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n ref={ scrimEl }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
2
2
  // Styles
3
3
  import "./VPagination.css";
4
4
 
@@ -289,44 +289,44 @@ export const VPagination = genericComponent()({
289
289
  }
290
290
  useRender(() => _createVNode(props.tag, {
291
291
  "ref": resizeRef,
292
- "class": ['v-pagination', themeClasses.value, props.class],
293
- "style": props.style,
292
+ "class": _normalizeClass(['v-pagination', themeClasses.value, props.class]),
293
+ "style": _normalizeStyle(props.style),
294
294
  "role": "navigation",
295
295
  "aria-label": t(props.ariaLabel),
296
296
  "onKeydown": onKeydown,
297
297
  "data-test": "v-pagination-root"
298
298
  }, {
299
- default: () => [_createVNode("ul", {
299
+ default: () => [_createElementVNode("ul", {
300
300
  "class": "v-pagination__list"
301
- }, [props.showFirstLastPage && _createVNode("li", {
301
+ }, [props.showFirstLastPage && _createElementVNode("li", {
302
302
  "key": "first",
303
303
  "class": "v-pagination__first",
304
304
  "data-test": "v-pagination-first"
305
305
  }, [slots.first ? slots.first(controls.value.first) : _createVNode(VBtn, _mergeProps({
306
306
  "_as": "VPaginationBtn"
307
- }, controls.value.first), null)]), _createVNode("li", {
307
+ }, controls.value.first), null)]), _createElementVNode("li", {
308
308
  "key": "prev",
309
309
  "class": "v-pagination__prev",
310
310
  "data-test": "v-pagination-prev"
311
311
  }, [slots.prev ? slots.prev(controls.value.prev) : _createVNode(VBtn, _mergeProps({
312
312
  "_as": "VPaginationBtn"
313
- }, controls.value.prev), null)]), items.value.map((item, index) => _createVNode("li", {
313
+ }, controls.value.prev), null)]), items.value.map((item, index) => _createElementVNode("li", {
314
314
  "key": item.key,
315
- "class": ['v-pagination__item', {
315
+ "class": _normalizeClass(['v-pagination__item', {
316
316
  'v-pagination__item--is-active': item.isActive
317
- }],
317
+ }]),
318
318
  "data-test": "v-pagination-item"
319
319
  }, [slots.item ? slots.item(item) : _createVNode(VBtn, _mergeProps({
320
320
  "_as": "VPaginationBtn"
321
321
  }, item.props), {
322
322
  default: () => [item.page]
323
- })])), _createVNode("li", {
323
+ })])), _createElementVNode("li", {
324
324
  "key": "next",
325
325
  "class": "v-pagination__next",
326
326
  "data-test": "v-pagination-next"
327
327
  }, [slots.next ? slots.next(controls.value.next) : _createVNode(VBtn, _mergeProps({
328
328
  "_as": "VPaginationBtn"
329
- }, controls.value.next), null)]), props.showFirstLastPage && _createVNode("li", {
329
+ }, controls.value.next), null)]), props.showFirstLastPage && _createElementVNode("li", {
330
330
  "key": "last",
331
331
  "class": "v-pagination__last",
332
332
  "data-test": "v-pagination-last"