@vuetify/nightly 3.7.5-master.2024-12-12 → 3.7.5-master.2024-12-16

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 (36) hide show
  1. package/dist/json/attributes.json +2816 -2816
  2. package/dist/json/importMap-labs.json +32 -32
  3. package/dist/json/importMap.json +184 -184
  4. package/dist/json/web-types.json +5212 -5212
  5. package/dist/vuetify-labs.css +2838 -2838
  6. package/dist/vuetify-labs.esm.js +22 -13
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +22 -13
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +2064 -2064
  11. package/dist/vuetify.d.ts +69 -69
  12. package/dist/vuetify.esm.js +15 -9
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +15 -9
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +33 -33
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/components/VAutocomplete/VAutocomplete.mjs +2 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  21. package/lib/components/VCombobox/VCombobox.mjs +2 -1
  22. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  23. package/lib/components/VSelect/VSelect.mjs +2 -1
  24. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  25. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +1 -1
  26. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  27. package/lib/composables/nested/nested.mjs +4 -2
  28. package/lib/composables/nested/nested.mjs.map +1 -1
  29. package/lib/composables/virtual.mjs +3 -2
  30. package/lib/composables/virtual.mjs.map +1 -1
  31. package/lib/entry-bundler.mjs +1 -1
  32. package/lib/framework.mjs +1 -1
  33. package/lib/index.d.mts +69 -69
  34. package/lib/labs/VNumberInput/VNumberInput.mjs +7 -4
  35. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  36. package/package.json +1 -1
package/lib/index.d.mts CHANGED
@@ -487,47 +487,47 @@ declare module 'vue' {
487
487
  }
488
488
  export interface GlobalComponents {
489
489
  VApp: typeof import('vuetify/components')['VApp']
490
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
491
- VAppBar: typeof import('vuetify/components')['VAppBar']
492
- VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
493
- VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
494
490
  VAlert: typeof import('vuetify/components')['VAlert']
495
491
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
496
- VBadge: typeof import('vuetify/components')['VBadge']
492
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
497
493
  VAvatar: typeof import('vuetify/components')['VAvatar']
498
- VBanner: typeof import('vuetify/components')['VBanner']
499
- VBannerActions: typeof import('vuetify/components')['VBannerActions']
500
- VBannerText: typeof import('vuetify/components')['VBannerText']
501
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
494
+ VBadge: typeof import('vuetify/components')['VBadge']
495
+ VBtn: typeof import('vuetify/components')['VBtn']
496
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
502
497
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
503
498
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
504
499
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
505
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
500
+ VBanner: typeof import('vuetify/components')['VBanner']
501
+ VBannerActions: typeof import('vuetify/components')['VBannerActions']
502
+ VBannerText: typeof import('vuetify/components')['VBannerText']
506
503
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
507
- VBtn: typeof import('vuetify/components')['VBtn']
508
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
509
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
510
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
511
- VCarousel: typeof import('vuetify/components')['VCarousel']
512
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
513
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
514
504
  VCard: typeof import('vuetify/components')['VCard']
515
505
  VCardActions: typeof import('vuetify/components')['VCardActions']
516
506
  VCardItem: typeof import('vuetify/components')['VCardItem']
517
507
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
518
508
  VCardText: typeof import('vuetify/components')['VCardText']
519
509
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
510
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
511
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
520
512
  VChip: typeof import('vuetify/components')['VChip']
521
- VCombobox: typeof import('vuetify/components')['VCombobox']
513
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
514
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
515
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
516
+ VAppBar: typeof import('vuetify/components')['VAppBar']
517
+ VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
518
+ VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
519
+ VCarousel: typeof import('vuetify/components')['VCarousel']
520
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
522
521
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
522
+ VCounter: typeof import('vuetify/components')['VCounter']
523
+ VCode: typeof import('vuetify/components')['VCode']
523
524
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
524
525
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
525
526
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
526
527
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
527
528
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
528
529
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
529
- VCode: typeof import('vuetify/components')['VCode']
530
- VCounter: typeof import('vuetify/components')['VCounter']
530
+ VCombobox: typeof import('vuetify/components')['VCombobox']
531
531
  VDataTable: typeof import('vuetify/components')['VDataTable']
532
532
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
533
533
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -536,28 +536,28 @@ declare module 'vue' {
536
536
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
537
537
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
538
538
  VDialog: typeof import('vuetify/components')['VDialog']
539
- VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
540
- VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
541
- VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
542
- VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
543
- VDivider: typeof import('vuetify/components')['VDivider']
544
539
  VEmptyState: typeof import('vuetify/components')['VEmptyState']
545
- VField: typeof import('vuetify/components')['VField']
546
- VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
547
540
  VFab: typeof import('vuetify/components')['VFab']
548
- VFooter: typeof import('vuetify/components')['VFooter']
549
- VImg: typeof import('vuetify/components')['VImg']
541
+ VDivider: typeof import('vuetify/components')['VDivider']
550
542
  VFileInput: typeof import('vuetify/components')['VFileInput']
551
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
543
+ VField: typeof import('vuetify/components')['VField']
544
+ VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
552
545
  VIcon: typeof import('vuetify/components')['VIcon']
553
546
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
554
547
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
555
548
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
556
549
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
550
+ VFooter: typeof import('vuetify/components')['VFooter']
551
+ VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
552
+ VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
553
+ VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
554
+ VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
555
+ VImg: typeof import('vuetify/components')['VImg']
556
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
557
557
  VInput: typeof import('vuetify/components')['VInput']
558
558
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
559
559
  VItem: typeof import('vuetify/components')['VItem']
560
- VKbd: typeof import('vuetify/components')['VKbd']
560
+ VLabel: typeof import('vuetify/components')['VLabel']
561
561
  VList: typeof import('vuetify/components')['VList']
562
562
  VListGroup: typeof import('vuetify/components')['VListGroup']
563
563
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -567,55 +567,54 @@ declare module 'vue' {
567
567
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
568
568
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
569
569
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
570
- VMain: typeof import('vuetify/components')['VMain']
571
- VLabel: typeof import('vuetify/components')['VLabel']
572
- VMessages: typeof import('vuetify/components')['VMessages']
570
+ VKbd: typeof import('vuetify/components')['VKbd']
573
571
  VMenu: typeof import('vuetify/components')['VMenu']
574
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
572
+ VMain: typeof import('vuetify/components')['VMain']
575
573
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
574
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
575
+ VMessages: typeof import('vuetify/components')['VMessages']
576
+ VOverlay: typeof import('vuetify/components')['VOverlay']
576
577
  VPagination: typeof import('vuetify/components')['VPagination']
577
578
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
578
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
579
- VOverlay: typeof import('vuetify/components')['VOverlay']
579
+ VRating: typeof import('vuetify/components')['VRating']
580
580
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
581
- VSheet: typeof import('vuetify/components')['VSheet']
582
581
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
583
- VRating: typeof import('vuetify/components')['VRating']
584
- VSelect: typeof import('vuetify/components')['VSelect']
585
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
586
582
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
587
583
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
588
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
589
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
590
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
584
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
585
+ VSheet: typeof import('vuetify/components')['VSheet']
591
586
  VSlider: typeof import('vuetify/components')['VSlider']
592
- VSwitch: typeof import('vuetify/components')['VSwitch']
587
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
588
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
589
+ VSelect: typeof import('vuetify/components')['VSelect']
593
590
  VStepper: typeof import('vuetify/components')['VStepper']
594
591
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
595
592
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
596
593
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
597
594
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
598
595
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
596
+ VTab: typeof import('vuetify/components')['VTab']
597
+ VTabs: typeof import('vuetify/components')['VTabs']
598
+ VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
599
+ VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
600
+ VSwitch: typeof import('vuetify/components')['VSwitch']
601
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
599
602
  VTable: typeof import('vuetify/components')['VTable']
603
+ VTextarea: typeof import('vuetify/components')['VTextarea']
604
+ VTooltip: typeof import('vuetify/components')['VTooltip']
605
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
600
606
  VTextField: typeof import('vuetify/components')['VTextField']
601
607
  VToolbar: typeof import('vuetify/components')['VToolbar']
602
608
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
603
609
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
604
- VTextarea: typeof import('vuetify/components')['VTextarea']
605
- VTab: typeof import('vuetify/components')['VTab']
606
- VTabs: typeof import('vuetify/components')['VTabs']
607
- VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
608
- VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
609
610
  VTimeline: typeof import('vuetify/components')['VTimeline']
610
611
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
611
- VTooltip: typeof import('vuetify/components')['VTooltip']
612
612
  VWindow: typeof import('vuetify/components')['VWindow']
613
613
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
614
- VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
615
614
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
615
+ VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
616
616
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
617
617
  VForm: typeof import('vuetify/components')['VForm']
618
- VHover: typeof import('vuetify/components')['VHover']
619
618
  VContainer: typeof import('vuetify/components')['VContainer']
620
619
  VCol: typeof import('vuetify/components')['VCol']
621
620
  VRow: typeof import('vuetify/components')['VRow']
@@ -624,16 +623,17 @@ declare module 'vue' {
624
623
  VLayout: typeof import('vuetify/components')['VLayout']
625
624
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
626
625
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
627
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
626
+ VHover: typeof import('vuetify/components')['VHover']
628
627
  VParallax: typeof import('vuetify/components')['VParallax']
628
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
629
629
  VRadio: typeof import('vuetify/components')['VRadio']
630
- VResponsive: typeof import('vuetify/components')['VResponsive']
631
630
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
632
- VSparkline: typeof import('vuetify/components')['VSparkline']
631
+ VResponsive: typeof import('vuetify/components')['VResponsive']
633
632
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
633
+ VSparkline: typeof import('vuetify/components')['VSparkline']
634
634
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
635
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
636
635
  VValidation: typeof import('vuetify/components')['VValidation']
636
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
637
637
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
638
638
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
639
639
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -650,28 +650,28 @@ declare module 'vue' {
650
650
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
651
651
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
652
652
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
653
+ VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
654
+ VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
655
+ VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
656
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
657
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
658
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
659
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
660
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
661
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
662
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
663
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
653
664
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
654
665
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
655
666
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
656
667
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
657
668
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
658
669
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
659
- VPicker: typeof import('vuetify/labs/components')['VPicker']
660
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
661
- VTreeview: typeof import('vuetify/labs/components')['VTreeview']
662
- VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
663
- VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
664
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
665
- VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
666
- VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
667
- VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
668
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
669
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
670
670
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
671
671
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
672
672
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
673
673
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
674
- VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
675
674
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
675
+ VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
676
676
  }
677
677
  }
@@ -52,13 +52,16 @@ export const VNumberInput = genericComponent()({
52
52
  const _model = useProxiedModel(props, 'modelValue');
53
53
  const model = computed({
54
54
  get: () => _model.value,
55
+ // model.value could be empty string from VTextField
56
+ // but _model.value should be eventually kept in type Number | null
55
57
  set(val) {
56
- if (val === null) {
58
+ if (val === null || val === '') {
57
59
  _model.value = null;
58
60
  return;
59
61
  }
60
- if (!isNaN(+val) && +val <= props.max && +val >= props.min) {
61
- _model.value = +val;
62
+ const value = Number(val);
63
+ if (!isNaN(value) && value <= props.max && value >= props.min) {
64
+ _model.value = value;
62
65
  }
63
66
  }
64
67
  });
@@ -231,7 +234,7 @@ export const VNumberInput = genericComponent()({
231
234
  "class": "v-number-input__control"
232
235
  }, [_createVNode(VDivider, {
233
236
  "vertical": true
234
- }, null), incrementControlNode()]) : !props.reverse ? _createVNode(_Fragment, null, [dividerNode(), controlNode()]) : undefined;
237
+ }, null), incrementControlNode()]) : props.reverse ? undefined : _createVNode(_Fragment, null, [dividerNode(), controlNode()]);
235
238
  const hasAppendInner = slots['append-inner'] || appendInnerControl;
236
239
  const prependInnerControl = controlVariant.value === 'split' ? _createVNode("div", {
237
240
  "class": "v-number-input__control"
@@ -1 +1 @@
1
- {"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","forwardRefs","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","isNaN","vTextFieldRef","stepDecimals","modelDecimals","form","controlsDisabled","isDisabled","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","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","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 { forwardRefs } from '@/composables/forwardRefs'\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 (val === null) {\n _model.value = null\n return\n }\n\n if (!isNaN(+val) && +val <= props.max && +val >= props.min) {\n _model.value = +val\n }\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(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || 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 (!controlsDisabled.value) {\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 data-testid=\"increment\"\n aria-hidden=\"true\"\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 data-testid=\"decrement\"\n aria-hidden=\"true\"\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 return forwardRefs({}, vTextFieldRef)\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","forwardRefs","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","isNaN","vTextFieldRef","stepDecimals","modelDecimals","form","controlsDisabled","isDisabled","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","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","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 { forwardRefs } from '@/composables/forwardRefs'\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 // model.value could be empty string from VTextField\n // but _model.value should be eventually kept in type Number | null\n set (val: Number | null | string) {\n if (val === null || val === '') {\n _model.value = null\n return\n }\n\n const value = Number(val)\n if (!isNaN(value) && value <= props.max && value >= props.min) {\n _model.value = value\n }\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(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || 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 (!controlsDisabled.value) {\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 data-testid=\"increment\"\n aria-hidden=\"true\"\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 data-testid=\"decrement\"\n aria-hidden=\"true\"\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 ? 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\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 return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.7.5-master.2024-12-12",
4
+ "version": "3.7.5-master.2024-12-16",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"