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

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.5-master.2024-12-12
2
+ * Vuetify v3.7.5-master.2024-12-15
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2100,8 +2100,8 @@ if(d.install(e),e.provide(xt,u),e.provide(yn,c),e.provide(wa,d),e.provide(Lt,v),
2100
2100
  else{const{mount:a}=e
2101
2101
  e.mount=function(){const l=a(...arguments)
2102
2102
  return t.nextTick((()=>c.update())),e.mount=a,l}}kt.reset(),("boolean"!=typeof __VUE_OPTIONS_API__||__VUE_OPTIONS_API__)&&e.mixin({computed:{$vuetify(){return t.reactive({defaults:uf.call(this,xt),display:uf.call(this,yn),theme:uf.call(this,wa),icons:uf.call(this,Lt),locale:uf.call(this,ga),date:uf.call(this,gu)})}}})},defaults:u,display:c,theme:d,icons:v,locale:p,date:f,goTo:m}}function uf(e){const t=this.$,a=t.parent?.provides??t.vnode.appContext?.provides
2103
- if(a&&e in a)return a[e]}sf.version="3.7.5-master.2024-12-12"
2104
- const cf=function(){return sf({components:Qp,directives:rf,...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}})},df="3.7.5-master.2024-12-12"
2103
+ if(a&&e in a)return a[e]}sf.version="3.7.5-master.2024-12-15"
2104
+ const cf=function(){return sf({components:Qp,directives:rf,...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}})},df="3.7.5-master.2024-12-15"
2105
2105
  cf.version=df,e.blueprints=Qt,e.components=Qp,e.createVuetify=cf,e.directives=rf,e.useDate=yu,e.useDefaults=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0
2106
2106
  const{props:a,provideSubDefaults:l}=_t(e,t)
2107
2107
  return l(),a},e.useDisplay=Nn,e.useGoTo=Bn,e.useLayout=oa,e.useLocale=ya,e.useRtl=Va,e.useTheme=Na,e.version=df}))
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.7.5-master.2024-12-12";
19
+ export const version = "3.7.5-master.2024-12-15";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.7.5-master.2024-12-12";
100
+ export const version = "3.7.5-master.2024-12-15";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -487,29 +487,23 @@ 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
490
  VAppBar: typeof import('vuetify/components')['VAppBar']
492
491
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
493
492
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
494
493
  VAlert: typeof import('vuetify/components')['VAlert']
495
494
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
496
- VBadge: typeof import('vuetify/components')['VBadge']
495
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
497
496
  VAvatar: typeof import('vuetify/components')['VAvatar']
497
+ VBadge: typeof import('vuetify/components')['VBadge']
498
498
  VBanner: typeof import('vuetify/components')['VBanner']
499
499
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
500
500
  VBannerText: typeof import('vuetify/components')['VBannerText']
501
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
501
502
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
503
+ VBtn: typeof import('vuetify/components')['VBtn']
502
504
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
503
505
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
504
506
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
505
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
506
- 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
507
  VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
514
508
  VCard: typeof import('vuetify/components')['VCard']
515
509
  VCardActions: typeof import('vuetify/components')['VCardActions']
@@ -518,16 +512,12 @@ declare module 'vue' {
518
512
  VCardText: typeof import('vuetify/components')['VCardText']
519
513
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
520
514
  VChip: typeof import('vuetify/components')['VChip']
515
+ VCode: typeof import('vuetify/components')['VCode']
516
+ VCarousel: typeof import('vuetify/components')['VCarousel']
517
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
521
518
  VCombobox: typeof import('vuetify/components')['VCombobox']
519
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
522
520
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
523
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
524
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
525
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
526
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
527
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
528
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
529
- VCode: typeof import('vuetify/components')['VCode']
530
- VCounter: typeof import('vuetify/components')['VCounter']
531
521
  VDataTable: typeof import('vuetify/components')['VDataTable']
532
522
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
533
523
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -535,29 +525,36 @@ declare module 'vue' {
535
525
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
536
526
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
537
527
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
528
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
529
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
530
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
531
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
532
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
533
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
534
+ VCounter: typeof import('vuetify/components')['VCounter']
538
535
  VDialog: typeof import('vuetify/components')['VDialog']
536
+ VDivider: typeof import('vuetify/components')['VDivider']
539
537
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
540
538
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
541
539
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
542
540
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
543
- VDivider: typeof import('vuetify/components')['VDivider']
544
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
541
+ VFab: typeof import('vuetify/components')['VFab']
545
542
  VField: typeof import('vuetify/components')['VField']
546
543
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
547
- VFab: typeof import('vuetify/components')['VFab']
548
- VFooter: typeof import('vuetify/components')['VFooter']
549
- VImg: typeof import('vuetify/components')['VImg']
550
544
  VFileInput: typeof import('vuetify/components')['VFileInput']
551
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
545
+ VFooter: typeof import('vuetify/components')['VFooter']
552
546
  VIcon: typeof import('vuetify/components')['VIcon']
553
547
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
554
548
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
555
549
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
556
550
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
551
+ VImg: typeof import('vuetify/components')['VImg']
557
552
  VInput: typeof import('vuetify/components')['VInput']
553
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
558
554
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
559
555
  VItem: typeof import('vuetify/components')['VItem']
560
556
  VKbd: typeof import('vuetify/components')['VKbd']
557
+ VLabel: typeof import('vuetify/components')['VLabel']
561
558
  VList: typeof import('vuetify/components')['VList']
562
559
  VListGroup: typeof import('vuetify/components')['VListGroup']
563
560
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -567,73 +564,72 @@ declare module 'vue' {
567
564
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
568
565
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
569
566
  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']
573
567
  VMenu: typeof import('vuetify/components')['VMenu']
574
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
568
+ VMessages: typeof import('vuetify/components')['VMessages']
569
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
570
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
575
571
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
576
- VPagination: typeof import('vuetify/components')['VPagination']
577
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
578
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
572
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
579
573
  VOverlay: typeof import('vuetify/components')['VOverlay']
574
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
575
+ VPagination: typeof import('vuetify/components')['VPagination']
580
576
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
581
- VSheet: typeof import('vuetify/components')['VSheet']
582
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
577
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
578
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
583
579
  VRating: typeof import('vuetify/components')['VRating']
584
580
  VSelect: typeof import('vuetify/components')['VSelect']
585
581
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
582
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
583
+ VSheet: typeof import('vuetify/components')['VSheet']
584
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
586
585
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
587
586
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
588
587
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
589
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
590
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
591
- VSlider: typeof import('vuetify/components')['VSlider']
592
- VSwitch: typeof import('vuetify/components')['VSwitch']
593
588
  VStepper: typeof import('vuetify/components')['VStepper']
594
589
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
595
590
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
596
591
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
597
592
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
598
593
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
594
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
599
595
  VTable: typeof import('vuetify/components')['VTable']
600
- VTextField: typeof import('vuetify/components')['VTextField']
601
- VToolbar: typeof import('vuetify/components')['VToolbar']
602
- VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
603
- VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
604
- VTextarea: typeof import('vuetify/components')['VTextarea']
605
596
  VTab: typeof import('vuetify/components')['VTab']
606
597
  VTabs: typeof import('vuetify/components')['VTabs']
607
598
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
608
599
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
600
+ VTextarea: typeof import('vuetify/components')['VTextarea']
601
+ VTextField: typeof import('vuetify/components')['VTextField']
602
+ VSlider: typeof import('vuetify/components')['VSlider']
603
+ VToolbar: typeof import('vuetify/components')['VToolbar']
604
+ VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
605
+ VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
609
606
  VTimeline: typeof import('vuetify/components')['VTimeline']
610
607
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
611
608
  VTooltip: typeof import('vuetify/components')['VTooltip']
612
609
  VWindow: typeof import('vuetify/components')['VWindow']
613
610
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
611
+ VSwitch: typeof import('vuetify/components')['VSwitch']
614
612
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
615
- VDataIterator: typeof import('vuetify/components')['VDataIterator']
616
613
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
617
614
  VForm: typeof import('vuetify/components')['VForm']
618
- VHover: typeof import('vuetify/components')['VHover']
619
615
  VContainer: typeof import('vuetify/components')['VContainer']
620
616
  VCol: typeof import('vuetify/components')['VCol']
621
617
  VRow: typeof import('vuetify/components')['VRow']
622
618
  VSpacer: typeof import('vuetify/components')['VSpacer']
623
- VLazy: typeof import('vuetify/components')['VLazy']
619
+ VHover: typeof import('vuetify/components')['VHover']
624
620
  VLayout: typeof import('vuetify/components')['VLayout']
625
621
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
622
+ VLazy: typeof import('vuetify/components')['VLazy']
626
623
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
627
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
624
+ VDataIterator: typeof import('vuetify/components')['VDataIterator']
628
625
  VParallax: typeof import('vuetify/components')['VParallax']
629
- VRadio: typeof import('vuetify/components')['VRadio']
630
- VResponsive: typeof import('vuetify/components')['VResponsive']
631
626
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
627
+ VResponsive: typeof import('vuetify/components')['VResponsive']
632
628
  VSparkline: typeof import('vuetify/components')['VSparkline']
633
629
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
634
630
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
635
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
636
631
  VValidation: typeof import('vuetify/components')['VValidation']
632
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
637
633
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
638
634
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
639
635
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -650,26 +646,30 @@ declare module 'vue' {
650
646
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
651
647
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
652
648
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
649
+ VRadio: typeof import('vuetify/components')['VRadio']
650
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
651
+ VMain: typeof import('vuetify/components')['VMain']
652
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
653
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
654
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
655
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
656
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
653
657
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
654
658
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
655
659
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
656
660
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
657
661
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
658
662
  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
663
  VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
665
664
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
666
665
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
667
666
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
668
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
669
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
670
667
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
671
668
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
672
669
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
670
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
671
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
672
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
673
673
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
674
674
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
675
675
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
@@ -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-15",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"