@vuetify/nightly 3.6.13-3.7.0-beta.0.0-pr-20092.a834b18 → 3.6.13-pr-20185.5bf1ff4

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 (204) hide show
  1. package/dist/json/attributes.json +125 -273
  2. package/dist/json/importMap-labs.json +16 -16
  3. package/dist/json/importMap.json +118 -118
  4. package/dist/json/tags.json +5 -42
  5. package/dist/json/web-types.json +239 -610
  6. package/dist/vuetify-labs.css +3046 -2341
  7. package/dist/vuetify-labs.d.ts +368 -697
  8. package/dist/vuetify-labs.esm.js +239 -241
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +239 -241
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1273 -568
  13. package/dist/vuetify.d.ts +342 -605
  14. package/dist/vuetify.esm.js +100 -160
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +100 -160
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +1038 -1037
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/VAlert.css +5 -1
  22. package/lib/components/VAppBar/index.d.mts +0 -6
  23. package/lib/components/VAutocomplete/VAutocomplete.css +4 -0
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +8 -15
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/index.d.mts +42 -61
  27. package/lib/components/VAvatar/VAvatar.css +2 -7
  28. package/lib/components/VAvatar/VAvatar.mjs +2 -7
  29. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  30. package/lib/components/VAvatar/VAvatar.sass +0 -1
  31. package/lib/components/VAvatar/_variables.scss +0 -13
  32. package/lib/components/VAvatar/index.d.mts +0 -6
  33. package/lib/components/VBadge/VBadge.css +2 -0
  34. package/lib/components/VBanner/VBanner.css +12 -4
  35. package/lib/components/VBottomNavigation/VBottomNavigation.css +11 -3
  36. package/lib/components/VBottomSheet/VBottomSheet.css +2 -0
  37. package/lib/components/VBreadcrumbs/index.d.mts +8 -8
  38. package/lib/components/VBtn/VBtn.css +16 -9
  39. package/lib/components/VBtn/VBtn.mjs +2 -4
  40. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  41. package/lib/components/VBtn/VBtn.sass +4 -4
  42. package/lib/components/VBtn/index.d.mts +0 -6
  43. package/lib/components/VBtnGroup/VBtnGroup.css +12 -4
  44. package/lib/components/VCard/VCard.css +9 -1
  45. package/lib/components/VCarousel/VCarousel.css +2 -0
  46. package/lib/components/VCarousel/index.d.mts +0 -9
  47. package/lib/components/VCheckbox/index.d.mts +6 -6
  48. package/lib/components/VChip/VChip.css +15 -9
  49. package/lib/components/VChip/VChip.sass +1 -1
  50. package/lib/components/VColorPicker/VColorPicker.css +2 -0
  51. package/lib/components/VColorPicker/VColorPicker.sass +4 -4
  52. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -4
  53. package/lib/components/VCombobox/VCombobox.css +4 -0
  54. package/lib/components/VCombobox/VCombobox.mjs +8 -15
  55. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  56. package/lib/components/VCombobox/index.d.mts +42 -61
  57. package/lib/components/VDataTable/composables/options.mjs +1 -1
  58. package/lib/components/VDataTable/composables/options.mjs.map +1 -1
  59. package/lib/components/VDialog/VDialog.css +5 -0
  60. package/lib/components/VDialog/index.d.mts +3 -3
  61. package/lib/components/VDivider/VDivider.css +2 -0
  62. package/lib/components/VExpansionPanel/VExpansionPanel.css +11 -5
  63. package/lib/components/VExpansionPanel/VExpansionPanel.sass +3 -3
  64. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -7
  65. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  66. package/lib/components/VExpansionPanel/index.d.mts +0 -72
  67. package/lib/components/VFab/index.d.mts +0 -6
  68. package/lib/components/VField/VField.css +13 -1
  69. package/lib/components/VField/VField.sass +5 -8
  70. package/lib/components/VFileInput/index.d.mts +18 -18
  71. package/lib/components/VFooter/VFooter.css +12 -4
  72. package/lib/components/VFooter/VFooter.mjs +20 -14
  73. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  74. package/lib/components/VFooter/index.d.mts +3 -3
  75. package/lib/components/VForm/index.d.mts +9 -9
  76. package/lib/components/VGrid/VContainer.mjs +1 -6
  77. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  78. package/lib/components/VGrid/VGrid.sass +1 -1
  79. package/lib/components/VGrid/_mixins.sass +4 -4
  80. package/lib/components/VGrid/index.d.mts +0 -36
  81. package/lib/components/VImg/VImg.css +6 -9
  82. package/lib/components/VImg/VImg.mjs +0 -2
  83. package/lib/components/VImg/VImg.mjs.map +1 -1
  84. package/lib/components/VImg/VImg.sass +0 -9
  85. package/lib/components/VImg/index.d.mts +0 -9
  86. package/lib/components/VInput/index.d.mts +6 -6
  87. package/lib/components/VKbd/VKbd.css +2 -0
  88. package/lib/components/VList/VList.css +12 -4
  89. package/lib/components/VList/VListItem.css +23 -13
  90. package/lib/components/VList/VListItem.mjs +1 -3
  91. package/lib/components/VList/VListItem.mjs.map +1 -1
  92. package/lib/components/VList/VListItem.sass +2 -2
  93. package/lib/components/VList/index.d.mts +18 -19
  94. package/lib/components/VMain/VMain.css +2 -0
  95. package/lib/components/VMenu/VMenu.css +6 -0
  96. package/lib/components/VMenu/VMenu.mjs +8 -26
  97. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  98. package/lib/components/VMenu/index.d.mts +15 -30
  99. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +9 -3
  100. package/lib/components/VOtpInput/VOtpInput.css +3 -1
  101. package/lib/components/VOtpInput/VOtpInput.sass +1 -2
  102. package/lib/components/VOverflowBtn/VOverflowBtn.sass +1 -1
  103. package/lib/components/VOverlay/VOverlay.mjs +4 -5
  104. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  105. package/lib/components/VOverlay/useActivator.mjs +2 -3
  106. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  107. package/lib/components/VRadioGroup/index.d.mts +6 -6
  108. package/lib/components/VRangeSlider/index.d.mts +6 -6
  109. package/lib/components/VSelect/VSelect.css +4 -0
  110. package/lib/components/VSelect/VSelect.mjs +13 -15
  111. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  112. package/lib/components/VSelect/index.d.mts +42 -61
  113. package/lib/components/VSelect/useScrolling.mjs +3 -3
  114. package/lib/components/VSelect/useScrolling.mjs.map +1 -1
  115. package/lib/components/VSelectionControl/VSelectionControl.css +6 -4
  116. package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
  117. package/lib/components/VSheet/VSheet.css +12 -4
  118. package/lib/components/VSkeletonLoader/VSkeletonLoader.css +6 -4
  119. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +9 -8
  120. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  121. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -2
  122. package/lib/components/VSlideGroup/VSlideGroup.mjs +1 -3
  123. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  124. package/lib/components/VSlideGroup/index.d.mts +0 -6
  125. package/lib/components/VSlider/VSliderThumb.sass +2 -2
  126. package/lib/components/VSlider/index.d.mts +6 -6
  127. package/lib/components/VSnackbar/VSnackbar.css +2 -0
  128. package/lib/components/VSnackbar/VSnackbar.mjs +4 -4
  129. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  130. package/lib/components/VSnackbar/index.d.mts +3 -3
  131. package/lib/components/VSpeedDial/index.d.mts +13 -28
  132. package/lib/components/VStepper/VStepper.css +8 -2
  133. package/lib/components/VStepper/VStepper.sass +2 -4
  134. package/lib/components/VStepper/VStepperItem.css +4 -1
  135. package/lib/components/VStepper/VStepperItem.sass +1 -1
  136. package/lib/components/VSwitch/VSwitch.css +2 -0
  137. package/lib/components/VSwitch/VSwitch.sass +10 -10
  138. package/lib/components/VSwitch/index.d.mts +6 -6
  139. package/lib/components/VSystemBar/VSystemBar.css +14 -8
  140. package/lib/components/VTable/VTable.css +8 -4
  141. package/lib/components/VTable/VTable.sass +2 -3
  142. package/lib/components/VTabs/index.d.mts +3 -21
  143. package/lib/components/VTextField/index.d.mts +18 -18
  144. package/lib/components/VTextarea/index.d.mts +18 -18
  145. package/lib/components/VTimeline/VTimeline.css +2 -0
  146. package/lib/components/VToolbar/VToolbar.css +21 -7
  147. package/lib/components/VToolbar/VToolbar.sass +1 -2
  148. package/lib/components/VTooltip/index.d.mts +3 -3
  149. package/lib/components/VTreeview/VTreeview.sass +9 -9
  150. package/lib/components/VValidation/index.d.mts +8 -9
  151. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +0 -2
  152. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  153. package/lib/components/VVirtualScroll/index.d.mts +0 -3
  154. package/lib/components/index.d.mts +302 -565
  155. package/lib/composables/nested/nested.mjs +3 -3
  156. package/lib/composables/nested/nested.mjs.map +1 -1
  157. package/lib/composables/nested/openStrategies.mjs +2 -4
  158. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  159. package/lib/composables/nested/selectStrategies.mjs +5 -5
  160. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  161. package/lib/composables/validation.mjs +6 -8
  162. package/lib/composables/validation.mjs.map +1 -1
  163. package/lib/composables/virtual.mjs +0 -1
  164. package/lib/composables/virtual.mjs.map +1 -1
  165. package/lib/entry-bundler.mjs +1 -1
  166. package/lib/entry-bundler.mjs.map +1 -1
  167. package/lib/framework.mjs +1 -1
  168. package/lib/framework.mjs.map +1 -1
  169. package/lib/index.d.mts +40 -40
  170. package/lib/labs/VDateInput/index.d.mts +6 -6
  171. package/lib/labs/VNumberInput/VNumberInput.mjs +60 -36
  172. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  173. package/lib/labs/VNumberInput/index.d.mts +23 -14
  174. package/lib/labs/VPicker/VPicker.css +6 -2
  175. package/lib/labs/VPicker/VPicker.sass +2 -3
  176. package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
  177. package/lib/labs/VStepperVertical/index.d.mts +0 -36
  178. package/lib/labs/VTreeview/VTreeview.mjs +5 -7
  179. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  180. package/lib/labs/VTreeview/VTreeviewChildren.mjs +10 -33
  181. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  182. package/lib/labs/VTreeview/VTreeviewItem.css +1 -1
  183. package/lib/labs/VTreeview/VTreeviewItem.mjs +74 -14
  184. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  185. package/lib/labs/VTreeview/VTreeviewItem.sass +5 -2
  186. package/lib/labs/VTreeview/index.d.mts +60 -77
  187. package/lib/labs/components.d.mts +92 -136
  188. package/lib/styles/generic/_colors.scss +9 -3
  189. package/lib/styles/main.css +520 -0
  190. package/lib/styles/tools/_absolute.sass +8 -7
  191. package/lib/styles/tools/_border.sass +4 -3
  192. package/lib/styles/tools/_display.sass +8 -7
  193. package/lib/styles/tools/_elevation.sass +4 -2
  194. package/lib/styles/tools/_index.sass +0 -1
  195. package/lib/styles/tools/_radius.sass +6 -5
  196. package/lib/styles/tools/_rounded.sass +2 -1
  197. package/lib/styles/tools/_theme.sass +3 -2
  198. package/lib/styles/tools/_typography.sass +6 -5
  199. package/lib/styles/tools/_utilities.sass +5 -5
  200. package/lib/styles/utilities/_index.sass +7 -7
  201. package/lib/util/helpers.mjs +0 -5
  202. package/lib/util/helpers.mjs.map +1 -1
  203. package/package.json +1 -1
  204. package/lib/styles/tools/_sheet.sass +0 -14
package/lib/index.d.mts CHANGED
@@ -469,35 +469,35 @@ interface _GlobalComponents {
469
469
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
470
470
  VApp: typeof import('vuetify/components')['VApp']
471
471
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
472
+ VBadge: typeof import('vuetify/components')['VBadge']
473
+ VAvatar: typeof import('vuetify/components')['VAvatar']
474
+ VBanner: typeof import('vuetify/components')['VBanner']
475
+ VBannerActions: typeof import('vuetify/components')['VBannerActions']
476
+ VBannerText: typeof import('vuetify/components')['VBannerText']
472
477
  VAlert: typeof import('vuetify/components')['VAlert']
473
478
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
474
- VAvatar: typeof import('vuetify/components')['VAvatar']
475
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
476
- VBadge: typeof import('vuetify/components')['VBadge']
477
479
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
478
480
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
479
481
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
480
- VBanner: typeof import('vuetify/components')['VBanner']
481
- VBannerActions: typeof import('vuetify/components')['VBannerActions']
482
- VBannerText: typeof import('vuetify/components')['VBannerText']
483
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
482
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
484
483
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
485
484
  VBtn: typeof import('vuetify/components')['VBtn']
485
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
486
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
486
487
  VCard: typeof import('vuetify/components')['VCard']
487
488
  VCardActions: typeof import('vuetify/components')['VCardActions']
488
489
  VCardItem: typeof import('vuetify/components')['VCardItem']
489
490
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
490
491
  VCardText: typeof import('vuetify/components')['VCardText']
491
492
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
492
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
493
493
  VCarousel: typeof import('vuetify/components')['VCarousel']
494
494
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
495
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
495
+ VChip: typeof import('vuetify/components')['VChip']
496
496
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
497
497
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
498
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
499
498
  VCode: typeof import('vuetify/components')['VCode']
500
- VChip: typeof import('vuetify/components')['VChip']
499
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
500
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
501
501
  VCombobox: typeof import('vuetify/components')['VCombobox']
502
502
  VCounter: typeof import('vuetify/components')['VCounter']
503
503
  VDataTable: typeof import('vuetify/components')['VDataTable']
@@ -507,36 +507,33 @@ interface _GlobalComponents {
507
507
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
508
508
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
509
509
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
510
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
511
- VDivider: typeof import('vuetify/components')['VDivider']
512
- VDialog: typeof import('vuetify/components')['VDialog']
513
510
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
514
511
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
515
512
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
516
513
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
517
514
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
518
515
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
516
+ VDivider: typeof import('vuetify/components')['VDivider']
517
+ VDialog: typeof import('vuetify/components')['VDialog']
518
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
519
+ VFab: typeof import('vuetify/components')['VFab']
519
520
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
520
521
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
521
522
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
522
523
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
523
- VFab: typeof import('vuetify/components')['VFab']
524
+ VFileInput: typeof import('vuetify/components')['VFileInput']
524
525
  VField: typeof import('vuetify/components')['VField']
525
526
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
526
527
  VFooter: typeof import('vuetify/components')['VFooter']
527
- VImg: typeof import('vuetify/components')['VImg']
528
- VFileInput: typeof import('vuetify/components')['VFileInput']
529
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
530
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
531
- VItem: typeof import('vuetify/components')['VItem']
532
- VKbd: typeof import('vuetify/components')['VKbd']
533
- VInput: typeof import('vuetify/components')['VInput']
534
528
  VIcon: typeof import('vuetify/components')['VIcon']
535
529
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
536
530
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
537
531
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
538
532
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
539
- VLabel: typeof import('vuetify/components')['VLabel']
533
+ VInput: typeof import('vuetify/components')['VInput']
534
+ VImg: typeof import('vuetify/components')['VImg']
535
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
536
+ VKbd: typeof import('vuetify/components')['VKbd']
540
537
  VList: typeof import('vuetify/components')['VList']
541
538
  VListGroup: typeof import('vuetify/components')['VListGroup']
542
539
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -546,24 +543,27 @@ interface _GlobalComponents {
546
543
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
547
544
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
548
545
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
546
+ VLabel: typeof import('vuetify/components')['VLabel']
547
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
548
+ VItem: typeof import('vuetify/components')['VItem']
549
549
  VMain: typeof import('vuetify/components')['VMain']
550
550
  VMessages: typeof import('vuetify/components')['VMessages']
551
551
  VMenu: typeof import('vuetify/components')['VMenu']
552
552
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
553
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
554
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
555
553
  VOverlay: typeof import('vuetify/components')['VOverlay']
554
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
556
555
  VPagination: typeof import('vuetify/components')['VPagination']
557
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
558
- VRating: typeof import('vuetify/components')['VRating']
556
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
559
557
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
558
+ VRating: typeof import('vuetify/components')['VRating']
559
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
560
560
  VSelect: typeof import('vuetify/components')['VSelect']
561
561
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
562
562
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
563
- VSheet: typeof import('vuetify/components')['VSheet']
564
563
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
565
564
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
566
565
  VSlider: typeof import('vuetify/components')['VSlider']
566
+ VSheet: typeof import('vuetify/components')['VSheet']
567
567
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
568
568
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
569
569
  VSwitch: typeof import('vuetify/components')['VSwitch']
@@ -573,31 +573,31 @@ interface _GlobalComponents {
573
573
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
574
574
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
575
575
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
576
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
576
577
  VTab: typeof import('vuetify/components')['VTab']
577
578
  VTabs: typeof import('vuetify/components')['VTabs']
578
579
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
579
580
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
580
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
581
- VTextarea: typeof import('vuetify/components')['VTextarea']
582
581
  VTable: typeof import('vuetify/components')['VTable']
583
- VTextField: typeof import('vuetify/components')['VTextField']
584
- VTooltip: typeof import('vuetify/components')['VTooltip']
582
+ VTextarea: typeof import('vuetify/components')['VTextarea']
585
583
  VTimeline: typeof import('vuetify/components')['VTimeline']
586
584
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
585
+ VTooltip: typeof import('vuetify/components')['VTooltip']
587
586
  VToolbar: typeof import('vuetify/components')['VToolbar']
588
587
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
589
588
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
589
+ VTextField: typeof import('vuetify/components')['VTextField']
590
590
  VWindow: typeof import('vuetify/components')['VWindow']
591
591
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
592
592
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
593
593
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
594
594
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
595
+ VForm: typeof import('vuetify/components')['VForm']
596
+ VHover: typeof import('vuetify/components')['VHover']
595
597
  VContainer: typeof import('vuetify/components')['VContainer']
596
598
  VCol: typeof import('vuetify/components')['VCol']
597
599
  VRow: typeof import('vuetify/components')['VRow']
598
600
  VSpacer: typeof import('vuetify/components')['VSpacer']
599
- VForm: typeof import('vuetify/components')['VForm']
600
- VHover: typeof import('vuetify/components')['VHover']
601
601
  VLayout: typeof import('vuetify/components')['VLayout']
602
602
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
603
603
  VLazy: typeof import('vuetify/components')['VLazy']
@@ -605,8 +605,8 @@ interface _GlobalComponents {
605
605
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
606
606
  VParallax: typeof import('vuetify/components')['VParallax']
607
607
  VRadio: typeof import('vuetify/components')['VRadio']
608
- VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
609
608
  VResponsive: typeof import('vuetify/components')['VResponsive']
609
+ VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
610
610
  VSparkline: typeof import('vuetify/components')['VSparkline']
611
611
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
612
612
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
@@ -634,21 +634,21 @@ interface _GlobalComponents {
634
634
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
635
635
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
636
636
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
637
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
637
638
  VPicker: typeof import('vuetify/labs/components')['VPicker']
638
639
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
639
640
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
640
641
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
641
642
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
642
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
643
- VTreeview: typeof import('vuetify/labs/components')['VTreeview']
644
- VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
645
- VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
646
643
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
647
644
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
648
645
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
646
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
647
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
648
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
649
+ VDateInput: typeof import('vuetify/labs/components')['VDateInput']
649
650
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
650
651
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
651
- VDateInput: typeof import('vuetify/labs/components')['VDateInput']
652
652
  }
653
653
  declare module 'vue' {
654
654
  export type JSXComponent<Props = any> = { new (): ComponentPublicInstance<Props> } | FunctionalComponent<Props>
@@ -98,7 +98,7 @@ declare const VDateInput: {
98
98
  counter?: string | number | boolean | undefined;
99
99
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
100
100
  modelValue?: any;
101
- validateOn?: ("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined;
101
+ validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
102
102
  validationValue?: any;
103
103
  rounded?: string | number | boolean | undefined;
104
104
  baseColor?: string | undefined;
@@ -211,7 +211,7 @@ declare const VDateInput: {
211
211
  counter?: string | number | boolean | undefined;
212
212
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
213
213
  modelValue?: any;
214
- validateOn?: ("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined;
214
+ validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
215
215
  validationValue?: any;
216
216
  rounded?: string | number | boolean | undefined;
217
217
  baseColor?: string | undefined;
@@ -384,7 +384,7 @@ declare const VDateInput: {
384
384
  counter?: string | number | boolean | undefined;
385
385
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
386
386
  modelValue?: any;
387
- validateOn?: ("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined;
387
+ validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
388
388
  validationValue?: any;
389
389
  rounded?: string | number | boolean | undefined;
390
390
  baseColor?: string | undefined;
@@ -550,7 +550,7 @@ declare const VDateInput: {
550
550
  counter?: string | number | boolean | undefined;
551
551
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
552
552
  modelValue?: any;
553
- validateOn?: ("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined;
553
+ validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
554
554
  validationValue?: any;
555
555
  rounded?: string | number | boolean | undefined;
556
556
  baseColor?: string | undefined;
@@ -800,7 +800,7 @@ declare const VDateInput: {
800
800
  type: vue.PropType<readonly ValidationRule[]>;
801
801
  default: () => never[];
802
802
  };
803
- validateOn: vue.PropType<("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined>;
803
+ validateOn: vue.PropType<"lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined>;
804
804
  validationValue: null;
805
805
  density: {
806
806
  type: vue.PropType<Density>;
@@ -1014,7 +1014,7 @@ declare const VDateInput: {
1014
1014
  type: vue.PropType<readonly ValidationRule[]>;
1015
1015
  default: () => never[];
1016
1016
  };
1017
- validateOn: vue.PropType<("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined>;
1017
+ validateOn: vue.PropType<"lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined>;
1018
1018
  validationValue: null;
1019
1019
  density: {
1020
1020
  type: vue.PropType<Density>;
@@ -9,7 +9,7 @@ import { VDivider } from "../../components/VDivider/index.mjs";
9
9
  import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.mjs"; // Composables
10
10
  import { useForm } from "../../composables/form.mjs";
11
11
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
12
- import { computed, watchEffect } from 'vue';
12
+ import { computed, nextTick, onMounted, ref } from 'vue';
13
13
  import { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
14
14
  const makeVNumberInputProps = propsFactory({
15
15
  controlVariant: {
@@ -18,19 +18,23 @@ const makeVNumberInputProps = propsFactory({
18
18
  },
19
19
  inset: Boolean,
20
20
  hideInput: Boolean,
21
+ modelValue: {
22
+ type: Number,
23
+ default: null
24
+ },
21
25
  min: {
22
26
  type: Number,
23
- default: -Infinity
27
+ default: Number.MIN_SAFE_INTEGER
24
28
  },
25
29
  max: {
26
30
  type: Number,
27
- default: Infinity
31
+ default: Number.MAX_SAFE_INTEGER
28
32
  },
29
33
  step: {
30
34
  type: Number,
31
35
  default: 1
32
36
  },
33
- ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
37
+ ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
34
38
  }, 'VNumberInput');
35
39
  export const VNumberInput = genericComponent()({
36
40
  name: 'VNumberInput',
@@ -42,30 +46,27 @@ export const VNumberInput = genericComponent()({
42
46
  },
43
47
  setup(props, _ref) {
44
48
  let {
45
- attrs,
46
- emit,
47
49
  slots
48
50
  } = _ref;
49
- const model = useProxiedModel(props, 'modelValue');
51
+ const _model = useProxiedModel(props, 'modelValue');
52
+ const model = computed({
53
+ get: () => _model.value,
54
+ set(val) {
55
+ if (typeof val !== 'string') _model.value = val;
56
+ }
57
+ });
58
+ const vTextFieldRef = ref();
50
59
  const stepDecimals = computed(() => getDecimals(props.step));
51
- const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0);
60
+ const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
52
61
  const form = useForm();
53
62
  const controlsDisabled = computed(() => props.disabled || props.readonly || form?.isReadonly.value);
54
63
  const canIncrease = computed(() => {
55
64
  if (controlsDisabled.value) return false;
56
- if (model.value == null) return true;
57
- return model.value + props.step <= props.max;
65
+ return (model.value ?? 0) + props.step <= props.max;
58
66
  });
59
67
  const canDecrease = computed(() => {
60
68
  if (controlsDisabled.value) return false;
61
- if (model.value == null) return true;
62
- return model.value - props.step >= props.min;
63
- });
64
- watchEffect(() => {
65
- if (controlsDisabled.value) return;
66
- if (model.value != null && (model.value < props.min || model.value > props.max)) {
67
- model.value = clamp(model.value, props.min, props.max);
68
- }
69
+ return (model.value ?? 0) - props.step >= props.min;
69
70
  });
70
71
  const controlVariant = computed(() => {
71
72
  return props.hideInput ? 'stacked' : props.controlVariant;
@@ -80,11 +81,16 @@ export const VNumberInput = genericComponent()({
80
81
  const decrementSlotProps = computed(() => ({
81
82
  click: onClickDown
82
83
  }));
84
+ onMounted(() => {
85
+ if (!props.readonly && !props.disabled) {
86
+ clampModel();
87
+ }
88
+ });
83
89
  function toggleUpDown() {
84
90
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
85
91
  if (controlsDisabled.value) return;
86
92
  if (model.value == null) {
87
- model.value = 0;
93
+ model.value = clamp(0, props.min, props.max);
88
94
  return;
89
95
  }
90
96
  const decimals = Math.max(modelDecimals.value, stepDecimals.value);
@@ -102,30 +108,45 @@ export const VNumberInput = genericComponent()({
102
108
  e.stopPropagation();
103
109
  toggleUpDown(false);
104
110
  }
105
- function onKeydown(e) {
106
- if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
107
- if (['ArrowDown'].includes(e.key)) {
111
+ function onBeforeinput(e) {
112
+ if (!e.data) return;
113
+ const existingTxt = e.target?.value;
114
+ const selectionStart = e.target?.selectionStart;
115
+ const selectionEnd = e.target?.selectionEnd;
116
+ const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
117
+ // Only numbers, "-", "." are allowed
118
+ // AND "-", "." are allowed only once
119
+ // AND "-" is only allowed at the start
120
+ if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
108
121
  e.preventDefault();
109
- toggleUpDown(false);
110
- return;
111
122
  }
112
- if (['ArrowUp'].includes(e.key)) {
113
- e.preventDefault();
114
- toggleUpDown();
115
- return;
116
- }
117
-
118
- // Only numbers, +, - & . are allowed
119
- if (!/^[0-9\-+.]+$/.test(e.key)) {
123
+ }
124
+ async function onKeydown(e) {
125
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
126
+ if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
120
127
  e.preventDefault();
128
+ clampModel();
129
+ // _model is controlled, so need to wait until props['modelValue'] is updated
130
+ await nextTick();
131
+ if (e.key === 'ArrowDown') {
132
+ toggleUpDown(false);
133
+ } else {
134
+ toggleUpDown();
135
+ }
121
136
  }
122
137
  }
123
- function onModelUpdate(v) {
124
- model.value = v ? +v : undefined;
125
- }
126
138
  function onControlMousedown(e) {
127
139
  e.stopPropagation();
128
140
  }
141
+ function clampModel() {
142
+ if (!vTextFieldRef.value) return;
143
+ const inputText = vTextFieldRef.value.value;
144
+ if (inputText && !isNaN(+inputText)) {
145
+ model.value = clamp(+inputText, props.min, props.max);
146
+ } else {
147
+ model.value = null;
148
+ }
149
+ }
129
150
  useRender(() => {
130
151
  const {
131
152
  modelValue: _,
@@ -210,8 +231,11 @@ export const VNumberInput = genericComponent()({
210
231
  }, null)]) : props.reverse ? _createVNode(_Fragment, null, [controlNode(), dividerNode()]) : undefined;
211
232
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
212
233
  return _createVNode(VTextField, _mergeProps({
234
+ "ref": vTextFieldRef,
213
235
  "modelValue": model.value,
214
- "onUpdate:modelValue": onModelUpdate,
236
+ "onUpdate:modelValue": $event => model.value = $event,
237
+ "onBeforeinput": onBeforeinput,
238
+ "onChange": clampModel,
215
239
  "onKeydown": onKeydown,
216
240
  "class": ['v-number-input', {
217
241
  'v-number-input--default': controlVariant.value === 'default',
@@ -1 +1 @@
1
- {"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","useProxiedModel","computed","watchEffect","clamp","genericComponent","getDecimals","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","Infinity","max","step","VNumberInput","name","props","emits","val","setup","_ref","attrs","emit","slots","model","stepDecimals","modelDecimals","value","form","controlsDisabled","disabled","readonly","isReadonly","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","toggleUpDown","increment","arguments","length","undefined","decimals","Math","toFixed","e","stopPropagation","onKeydown","includes","key","ctrlKey","preventDefault","test","onModelUpdate","v","onControlMousedown","modelValue","_","textFieldProps","filterProps","incrementControlNode","_createVNode","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/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 { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n min: {\n type: Number,\n default: -Infinity,\n },\n max: {\n type: Number,\n default: Infinity,\n },\n step: {\n type: Number,\n default: 1,\n },\n\n ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon']),\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, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n\n const stepDecimals = computed(() => getDecimals(props.step))\n const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0)\n\n const form = useForm()\n const controlsDisabled = computed(() => (\n props.disabled || props.readonly || form?.isReadonly.value\n ))\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value - props.step >= props.min\n })\n\n watchEffect(() => {\n if (controlsDisabled.value) return\n if (model.value != null && (model.value < props.min || model.value > props.max)) {\n model.value = clamp(model.value, props.min, props.max)\n }\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n model.value = 0\n return\n }\n\n const decimals = Math.max(modelDecimals.value, stepDecimals.value)\n if (increment) {\n if (canIncrease.value) model.value = +(((model.value + props.step).toFixed(decimals)))\n } else {\n if (canDecrease.value) model.value = +(((model.value - props.step).toFixed(decimals)))\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n 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'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown(false)\n return\n }\n if (['ArrowUp'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown()\n return\n }\n\n // Only numbers, +, - & . are allowed\n if (!/^[0-9\\-+.]+$/.test(e.key)) {\n e.preventDefault()\n }\n }\n\n function onModelUpdate (v: string) {\n model.value = v ? +(v) : undefined\n }\n\n function onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"increment-btn\"\n icon={ incrementIcon.value }\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size={ controlNodeSize.value }\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.value) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"decrement-btn\"\n icon={ decrementIcon.value }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\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.value) }\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\n ? <>{ dividerNode() }{ controlNode() }</>\n : undefined)\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\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n modelValue={ model.value }\n onUpdate:modelValue={ onModelUpdate }\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})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","useProxiedModel","computed","nextTick","onMounted","ref","clamp","genericComponent","getDecimals","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","VNumberInput","name","props","emits","val","setup","_ref","slots","_model","model","get","value","set","vTextFieldRef","stepDecimals","modelDecimals","form","controlsDisabled","disabled","readonly","isReadonly","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","clampModel","toggleUpDown","increment","arguments","length","undefined","decimals","Math","toFixed","e","stopPropagation","onBeforeinput","data","existingTxt","target","selectionStart","selectionEnd","potentialNewInputVal","slice","test","preventDefault","onKeydown","includes","key","ctrlKey","onControlMousedown","inputText","isNaN","_","textFieldProps","filterProps","incrementControlNode","_createVNode","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/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 { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref } from 'vue'\nimport { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\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\n ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon']),\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 _model = useProxiedModel(props, 'modelValue')\n\n const model = computed({\n get: () => _model.value,\n set (val) {\n if (typeof val !== 'string') _model.value = val\n },\n })\n\n const vTextFieldRef = ref<VTextField | undefined>()\n\n const stepDecimals = computed(() => getDecimals(props.step))\n const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0)\n\n const form = useForm()\n const controlsDisabled = computed(() => (\n props.disabled || props.readonly || form?.isReadonly.value\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 = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n onMounted(() => {\n if (!props.readonly && !props.disabled) {\n clampModel()\n }\n })\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n model.value = clamp(0, props.min, props.max)\n return\n }\n\n const decimals = Math.max(modelDecimals.value, stepDecimals.value)\n if (increment) {\n if (canIncrease.value) model.value = +((((model.value as number) + props.step).toFixed(decimals)))\n } else {\n if (canDecrease.value) model.value = +((((model.value as number) - props.step).toFixed(decimals)))\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const existingTxt = (e.target as HTMLInputElement)?.value\n const selectionStart = (e.target as HTMLInputElement)?.selectionStart\n const selectionEnd = (e.target as HTMLInputElement)?.selectionEnd\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 // 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 }\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 onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function clampModel () {\n if (!vTextFieldRef.value) return\n const inputText = vTextFieldRef.value.value\n if (inputText && !isNaN(+inputText)) {\n model.value = clamp(+(inputText), props.min, props.max)\n } else {\n model.value = null\n }\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"increment-btn\"\n icon={ incrementIcon.value }\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size={ controlNodeSize.value }\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.value) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"decrement-btn\"\n icon={ decrementIcon.value }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\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.value) }\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\n ? <>{ dividerNode() }{ controlNode() }</>\n : undefined)\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\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ model.value }\n onBeforeinput={ onBeforeinput }\n onChange={ clampModel }\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})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}