@vuetify/nightly 3.7.13-master.2025-02-25 → 3.7.14-master.2025-02-26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +7 -22
  2. package/dist/json/attributes.json +3724 -3728
  3. package/dist/json/importMap-labs.json +16 -16
  4. package/dist/json/importMap.json +202 -202
  5. package/dist/json/tags.json +0 -1
  6. package/dist/json/web-types.json +7050 -7059
  7. package/dist/vuetify-labs.css +3559 -3560
  8. package/dist/vuetify-labs.d.ts +0 -6
  9. package/dist/vuetify-labs.esm.js +25 -26
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +25 -26
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +3935 -3936
  14. package/dist/vuetify.d.ts +71 -71
  15. package/dist/vuetify.esm.js +23 -25
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +23 -25
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +16 -13
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VFileInput/VFileInput.css +0 -1
  23. package/lib/components/VFileInput/VFileInput.mjs +11 -1
  24. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  25. package/lib/components/VFileInput/VFileInput.sass +0 -1
  26. package/lib/composables/date/adapters/vuetify.mjs +9 -21
  27. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  28. package/lib/entry-bundler.mjs +1 -1
  29. package/lib/framework.mjs +1 -1
  30. package/lib/index.d.mts +71 -71
  31. package/lib/labs/VNumberInput/VNumberInput.mjs +2 -1
  32. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  33. package/lib/labs/VNumberInput/index.d.mts +0 -6
  34. package/lib/labs/components.d.mts +0 -6
  35. package/lib/locale/zh-Hant.mjs +30 -30
  36. package/lib/locale/zh-Hant.mjs.map +1 -1
  37. package/package.json +1 -1
package/lib/index.d.mts CHANGED
@@ -486,31 +486,46 @@ declare module 'vue' {
486
486
  $children?: VNodeChild
487
487
  }
488
488
  export interface GlobalComponents {
489
+ VApp: typeof import('vuetify/components')['VApp']
489
490
  VAlert: typeof import('vuetify/components')['VAlert']
490
491
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
491
- VApp: typeof import('vuetify/components')['VApp']
492
+ VAppBar: typeof import('vuetify/components')['VAppBar']
493
+ VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
494
+ VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
492
495
  VAvatar: typeof import('vuetify/components')['VAvatar']
496
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
497
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
493
498
  VBadge: typeof import('vuetify/components')['VBadge']
494
499
  VBanner: typeof import('vuetify/components')['VBanner']
495
500
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
496
501
  VBannerText: typeof import('vuetify/components')['VBannerText']
497
- VAppBar: typeof import('vuetify/components')['VAppBar']
498
- VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
499
- VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
500
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
501
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
502
502
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
503
- VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
504
- VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
505
- VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
506
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
507
503
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
508
504
  VCarousel: typeof import('vuetify/components')['VCarousel']
509
505
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
510
506
  VBtn: typeof import('vuetify/components')['VBtn']
511
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
512
- VCounter: typeof import('vuetify/components')['VCounter']
507
+ VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
508
+ VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
509
+ VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
510
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
511
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
512
+ VCard: typeof import('vuetify/components')['VCard']
513
+ VCardActions: typeof import('vuetify/components')['VCardActions']
514
+ VCardItem: typeof import('vuetify/components')['VCardItem']
515
+ VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
516
+ VCardText: typeof import('vuetify/components')['VCardText']
517
+ VCardTitle: typeof import('vuetify/components')['VCardTitle']
518
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
513
519
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
520
+ VChip: typeof import('vuetify/components')['VChip']
521
+ VCounter: typeof import('vuetify/components')['VCounter']
522
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
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']
514
529
  VCode: typeof import('vuetify/components')['VCode']
515
530
  VCombobox: typeof import('vuetify/components')['VCombobox']
516
531
  VDataTable: typeof import('vuetify/components')['VDataTable']
@@ -520,37 +535,29 @@ declare module 'vue' {
520
535
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
521
536
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
522
537
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
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
- VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
530
- VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
531
- VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
532
- VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
533
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
534
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
535
- VChip: typeof import('vuetify/components')['VChip']
536
- VDialog: typeof import('vuetify/components')['VDialog']
537
538
  VDivider: typeof import('vuetify/components')['VDivider']
539
+ VDialog: typeof import('vuetify/components')['VDialog']
538
540
  VEmptyState: typeof import('vuetify/components')['VEmptyState']
541
+ VFab: typeof import('vuetify/components')['VFab']
539
542
  VField: typeof import('vuetify/components')['VField']
540
543
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
541
- VFab: typeof import('vuetify/components')['VFab']
542
- VFileInput: typeof import('vuetify/components')['VFileInput']
544
+ VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
545
+ VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
546
+ VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
547
+ VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
543
548
  VFooter: typeof import('vuetify/components')['VFooter']
549
+ VFileInput: typeof import('vuetify/components')['VFileInput']
550
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
544
551
  VIcon: typeof import('vuetify/components')['VIcon']
545
552
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
546
553
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
547
554
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
548
555
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
549
556
  VImg: typeof import('vuetify/components')['VImg']
550
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
551
- VInput: typeof import('vuetify/components')['VInput']
557
+ VKbd: typeof import('vuetify/components')['VKbd']
552
558
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
553
559
  VItem: typeof import('vuetify/components')['VItem']
560
+ VInput: typeof import('vuetify/components')['VInput']
554
561
  VLabel: typeof import('vuetify/components')['VLabel']
555
562
  VList: typeof import('vuetify/components')['VList']
556
563
  VListGroup: typeof import('vuetify/components')['VListGroup']
@@ -561,78 +568,72 @@ declare module 'vue' {
561
568
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
562
569
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
563
570
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
564
- VKbd: typeof import('vuetify/components')['VKbd']
565
571
  VMain: typeof import('vuetify/components')['VMain']
566
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
567
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
568
572
  VMessages: typeof import('vuetify/components')['VMessages']
569
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
570
- VOverlay: typeof import('vuetify/components')['VOverlay']
571
573
  VMenu: typeof import('vuetify/components')['VMenu']
574
+ VPagination: typeof import('vuetify/components')['VPagination']
575
+ VOverlay: typeof import('vuetify/components')['VOverlay']
576
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
577
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
578
+ VSelect: typeof import('vuetify/components')['VSelect']
572
579
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
580
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
573
581
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
574
- VSelect: typeof import('vuetify/components')['VSelect']
575
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
576
582
  VRating: typeof import('vuetify/components')['VRating']
583
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
577
584
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
578
- VPagination: typeof import('vuetify/components')['VPagination']
579
585
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
580
586
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
581
587
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
582
588
  VSheet: typeof import('vuetify/components')['VSheet']
583
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
584
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
585
- VTab: typeof import('vuetify/components')['VTab']
586
- VTabs: typeof import('vuetify/components')['VTabs']
587
- VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
588
- VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
589
- VTable: typeof import('vuetify/components')['VTable']
590
589
  VStepper: typeof import('vuetify/components')['VStepper']
591
590
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
592
591
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
593
592
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
594
593
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
595
594
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
596
- VTextarea: typeof import('vuetify/components')['VTextarea']
597
- VTimeline: typeof import('vuetify/components')['VTimeline']
598
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
599
- VTooltip: typeof import('vuetify/components')['VTooltip']
595
+ VSlider: typeof import('vuetify/components')['VSlider']
596
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
597
+ VSwitch: typeof import('vuetify/components')['VSwitch']
598
+ VTable: typeof import('vuetify/components')['VTable']
599
+ VTab: typeof import('vuetify/components')['VTab']
600
+ VTabs: typeof import('vuetify/components')['VTabs']
601
+ VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
602
+ VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
603
+ VTextField: typeof import('vuetify/components')['VTextField']
600
604
  VToolbar: typeof import('vuetify/components')['VToolbar']
601
605
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
602
606
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
603
- VSwitch: typeof import('vuetify/components')['VSwitch']
604
- VTextField: typeof import('vuetify/components')['VTextField']
607
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
608
+ VTextarea: typeof import('vuetify/components')['VTextarea']
605
609
  VWindow: typeof import('vuetify/components')['VWindow']
606
610
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
607
- VCard: typeof import('vuetify/components')['VCard']
608
- VCardActions: typeof import('vuetify/components')['VCardActions']
609
- VCardItem: typeof import('vuetify/components')['VCardItem']
610
- VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
611
- VCardText: typeof import('vuetify/components')['VCardText']
612
- VCardTitle: typeof import('vuetify/components')['VCardTitle']
611
+ VTooltip: typeof import('vuetify/components')['VTooltip']
612
+ VTimeline: typeof import('vuetify/components')['VTimeline']
613
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
613
614
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
614
615
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
615
- VForm: typeof import('vuetify/components')['VForm']
616
616
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
617
+ VContainer: typeof import('vuetify/components')['VContainer']
618
+ VCol: typeof import('vuetify/components')['VCol']
619
+ VRow: typeof import('vuetify/components')['VRow']
620
+ VSpacer: typeof import('vuetify/components')['VSpacer']
621
+ VForm: typeof import('vuetify/components')['VForm']
617
622
  VHover: typeof import('vuetify/components')['VHover']
618
623
  VLayout: typeof import('vuetify/components')['VLayout']
619
624
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
620
- VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
621
625
  VLazy: typeof import('vuetify/components')['VLazy']
626
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
627
+ VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
622
628
  VParallax: typeof import('vuetify/components')['VParallax']
623
629
  VRadio: typeof import('vuetify/components')['VRadio']
624
630
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
625
631
  VResponsive: typeof import('vuetify/components')['VResponsive']
626
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
627
632
  VSparkline: typeof import('vuetify/components')['VSparkline']
628
- VSlider: typeof import('vuetify/components')['VSlider']
629
633
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
630
634
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
631
- VContainer: typeof import('vuetify/components')['VContainer']
632
- VCol: typeof import('vuetify/components')['VCol']
633
- VRow: typeof import('vuetify/components')['VRow']
634
- VSpacer: typeof import('vuetify/components')['VSpacer']
635
635
  VValidation: typeof import('vuetify/components')['VValidation']
636
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
636
637
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
637
638
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
638
639
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -649,7 +650,6 @@ declare module 'vue' {
649
650
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
650
651
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
651
652
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
652
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
653
653
  VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
654
654
  VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
655
655
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
@@ -658,20 +658,20 @@ declare module 'vue' {
658
658
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
659
659
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
660
660
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
661
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
661
+ VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
662
+ VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
663
+ VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
662
664
  VPicker: typeof import('vuetify/labs/components')['VPicker']
663
665
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
664
666
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
665
667
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
666
668
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
667
- VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
668
- VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
669
- VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
669
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
670
670
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
671
671
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
672
672
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
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
  }
@@ -39,7 +39,7 @@ const makeVNumberInputProps = propsFactory({
39
39
  type: Number,
40
40
  default: 0
41
41
  },
42
- ...omit(makeVTextFieldProps({}), ['modelValue'])
42
+ ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
43
43
  }, 'VNumberInput');
44
44
  export const VNumberInput = genericComponent()({
45
45
  name: 'VNumberInput',
@@ -303,6 +303,7 @@ export const VNumberInput = genericComponent()({
303
303
  "ref": vTextFieldRef,
304
304
  "modelValue": inputText.value,
305
305
  "onUpdate:modelValue": $event => inputText.value = $event,
306
+ "validationValue": model.value,
306
307
  "onBeforeinput": onBeforeinput,
307
308
  "onFocus": onFocus,
308
309
  "onBlur": onBlur,
@@ -1 +1 @@
1
- {"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","forwardRefs","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","watch","watchEffect","clamp","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","correctPrecision","arguments","length","undefined","fixed","toFixed","toString","model","_inputText","isNaN","inputText","get","set","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","toggleUpDown","increment","inferredPrecision","Math","e","stopPropagation","onBeforeinput","data","existingTxt","target","selectionStart","selectionEnd","potentialNewInputVal","slice","test","preventDefault","split","includes","onKeydown","key","ctrlKey","onControlMousedown","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","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, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps({}), ['modelValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField | undefined>()\n\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const isFocused = ref(false)\n\n function correctPrecision (val: number, precision = props.precision) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n return isFocused.value\n ? Number(fixed).toString() // trim zeros\n : fixed\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(+val, props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (isFocused.value && !controlsDisabled.value) {\n // ignore external changes\n } else if (model.value == null) {\n _inputText.value = null\n } else if (!isNaN(model.value)) {\n _inputText.value = correctPrecision(model.value)\n }\n })\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {\n model.value = +val\n _inputText.value = val\n }\n },\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = 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 const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n watch(() => props.precision, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function 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 if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split('.')[1]?.length > props.precision) {\n e.preventDefault()\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes('.')) {\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 (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n if (actualText && !isNaN(+actualText)) {\n inputText.value = correctPrecision(clamp(+actualText, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = props.precision == null\n ? String(model.value)\n : model.value.toFixed(props.precision)\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n }\n\n function onFocus () {\n isFocused.value = true\n trimDecimalZeros()\n }\n\n function onBlur () {\n isFocused.value = false\n clampModel()\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 || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ inputText.value }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","forwardRefs","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","watch","watchEffect","clamp","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","correctPrecision","arguments","length","undefined","fixed","toFixed","toString","model","_inputText","isNaN","inputText","get","set","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","toggleUpDown","increment","inferredPrecision","Math","e","stopPropagation","onBeforeinput","data","existingTxt","target","selectionStart","selectionEnd","potentialNewInputVal","slice","test","preventDefault","split","includes","onKeydown","key","ctrlKey","onControlMousedown","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","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, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField | undefined>()\n\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const isFocused = ref(false)\n\n function correctPrecision (val: number, precision = props.precision) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n return isFocused.value\n ? Number(fixed).toString() // trim zeros\n : fixed\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(+val, props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (isFocused.value && !controlsDisabled.value) {\n // ignore external changes\n } else if (model.value == null) {\n _inputText.value = null\n } else if (!isNaN(model.value)) {\n _inputText.value = correctPrecision(model.value)\n }\n })\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {\n model.value = +val\n _inputText.value = val\n }\n },\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = 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 const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n watch(() => props.precision, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function 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 if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split('.')[1]?.length > props.precision) {\n e.preventDefault()\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes('.')) {\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 (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n if (actualText && !isNaN(+actualText)) {\n inputText.value = correctPrecision(clamp(+actualText, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = props.precision == null\n ? String(model.value)\n : model.value.toFixed(props.precision)\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n }\n\n function onFocus () {\n isFocused.value = true\n trimDecimalZeros()\n }\n\n function onBlur () {\n isFocused.value = false\n clampModel()\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 || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ inputText.value }\n validationValue={ model.value }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
@@ -181,7 +181,6 @@ declare const VNumberInput: {
181
181
  counter?: string | number | boolean | undefined;
182
182
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
183
183
  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;
184
- validationValue?: any;
185
184
  rounded?: string | number | boolean | undefined;
186
185
  baseColor?: string | undefined;
187
186
  bgColor?: string | undefined;
@@ -2354,7 +2353,6 @@ declare const VNumberInput: {
2354
2353
  counter?: string | number | boolean | undefined;
2355
2354
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
2356
2355
  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;
2357
- validationValue?: any;
2358
2356
  rounded?: string | number | boolean | undefined;
2359
2357
  baseColor?: string | undefined;
2360
2358
  bgColor?: string | undefined;
@@ -2548,7 +2546,6 @@ declare const VNumberInput: {
2548
2546
  counter?: string | number | boolean | undefined;
2549
2547
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
2550
2548
  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;
2551
- validationValue?: any;
2552
2549
  rounded?: string | number | boolean | undefined;
2553
2550
  baseColor?: string | undefined;
2554
2551
  bgColor?: string | undefined;
@@ -4761,7 +4758,6 @@ declare const VNumberInput: {
4761
4758
  counter?: string | number | boolean | undefined;
4762
4759
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
4763
4760
  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;
4764
- validationValue?: any;
4765
4761
  rounded?: string | number | boolean | undefined;
4766
4762
  baseColor?: string | undefined;
4767
4763
  bgColor?: string | undefined;
@@ -7002,7 +6998,6 @@ declare const VNumberInput: {
7002
6998
  default: () => never[];
7003
6999
  };
7004
7000
  validateOn: PropType<ValidationProps["validateOn"]>;
7005
- validationValue: null;
7006
7001
  rounded: {
7007
7002
  type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
7008
7003
  default: undefined;
@@ -7136,7 +7131,6 @@ declare const VNumberInput: {
7136
7131
  default: () => never[];
7137
7132
  };
7138
7133
  validateOn: PropType<ValidationProps["validateOn"]>;
7139
- validationValue: null;
7140
7134
  rounded: {
7141
7135
  type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
7142
7136
  default: undefined;
@@ -4622,7 +4622,6 @@ declare const VNumberInput: {
4622
4622
  counter?: string | number | boolean | undefined;
4623
4623
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
4624
4624
  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;
4625
- validationValue?: any;
4626
4625
  rounded?: string | number | boolean | undefined;
4627
4626
  baseColor?: string | undefined;
4628
4627
  bgColor?: string | undefined;
@@ -6795,7 +6794,6 @@ declare const VNumberInput: {
6795
6794
  counter?: string | number | boolean | undefined;
6796
6795
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
6797
6796
  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;
6798
- validationValue?: any;
6799
6797
  rounded?: string | number | boolean | undefined;
6800
6798
  baseColor?: string | undefined;
6801
6799
  bgColor?: string | undefined;
@@ -6989,7 +6987,6 @@ declare const VNumberInput: {
6989
6987
  counter?: string | number | boolean | undefined;
6990
6988
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
6991
6989
  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;
6992
- validationValue?: any;
6993
6990
  rounded?: string | number | boolean | undefined;
6994
6991
  baseColor?: string | undefined;
6995
6992
  bgColor?: string | undefined;
@@ -9202,7 +9199,6 @@ declare const VNumberInput: {
9202
9199
  counter?: string | number | boolean | undefined;
9203
9200
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
9204
9201
  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;
9205
- validationValue?: any;
9206
9202
  rounded?: string | number | boolean | undefined;
9207
9203
  baseColor?: string | undefined;
9208
9204
  bgColor?: string | undefined;
@@ -11443,7 +11439,6 @@ declare const VNumberInput: {
11443
11439
  default: () => never[];
11444
11440
  };
11445
11441
  validateOn: PropType<ValidationProps["validateOn"]>;
11446
- validationValue: null;
11447
11442
  rounded: {
11448
11443
  type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
11449
11444
  default: undefined;
@@ -11577,7 +11572,6 @@ declare const VNumberInput: {
11577
11572
  default: () => never[];
11578
11573
  };
11579
11574
  validateOn: PropType<ValidationProps["validateOn"]>;
11580
- validationValue: null;
11581
11575
  rounded: {
11582
11576
  type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
11583
11577
  default: undefined;
@@ -1,11 +1,11 @@
1
1
  export default {
2
2
  badge: '徽章',
3
- open: 'Open',
3
+ open: '開啟',
4
4
  close: '關閉',
5
- dismiss: 'Dismiss',
5
+ dismiss: '關閉',
6
6
  confirmEdit: {
7
7
  ok: 'OK',
8
- cancel: 'Cancel'
8
+ cancel: '取消'
9
9
  },
10
10
  dataIterator: {
11
11
  noResultsText: '沒有符合條件的結果',
@@ -33,18 +33,18 @@ export default {
33
33
  pageText: '{2} 條中的 {0}~{1} 條'
34
34
  },
35
35
  dateRangeInput: {
36
- divider: 'to'
36
+ divider: ''
37
37
  },
38
38
  datePicker: {
39
- itemsSelected: '{0} selected',
39
+ itemsSelected: '已選擇 {0} 個日期',
40
40
  range: {
41
- title: 'Select dates',
42
- header: 'Enter dates'
41
+ title: '選擇日期範圍',
42
+ header: '輸入日期範圍'
43
43
  },
44
- title: 'Select date',
45
- header: 'Enter date',
44
+ title: '選擇日期',
45
+ header: '輸入日期',
46
46
  input: {
47
- placeholder: 'Enter date'
47
+ placeholder: '請輸入日期'
48
48
  }
49
49
  },
50
50
  noDataText: '沒有資料',
@@ -52,32 +52,32 @@ export default {
52
52
  prev: '上一張',
53
53
  next: '下一張',
54
54
  ariaLabel: {
55
- delimiter: 'Carousel slide {0} of {1}'
55
+ delimiter: ' {0} / 共 {1}'
56
56
  }
57
57
  },
58
58
  calendar: {
59
59
  moreEvents: '還有其他 {0} 項',
60
- today: 'Today'
60
+ today: '今天'
61
61
  },
62
62
  input: {
63
- clear: 'Clear {0}',
64
- prependAction: '{0} prepended action',
65
- appendAction: '{0} appended action',
66
- otp: 'Please enter OTP character {0}'
63
+ clear: '清除 {0}',
64
+ prependAction: '{0} 前置操作',
65
+ appendAction: '{0} 附加操作',
66
+ otp: '請輸入第 {0} OTP 字元'
67
67
  },
68
68
  fileInput: {
69
69
  counter: '{0} 個檔案',
70
70
  counterSize: '{0} 個檔案(共 {1})'
71
71
  },
72
72
  fileUpload: {
73
- title: 'Drag and drop files here',
74
- divider: 'or',
75
- browse: 'Browse Files'
73
+ title: '拖曳檔案至此',
74
+ divider: '',
75
+ browse: '瀏覽檔案'
76
76
  },
77
77
  timePicker: {
78
- am: 'AM',
79
- pm: 'PM',
80
- title: 'Select Time'
78
+ am: '上午',
79
+ pm: '下午',
80
+ title: '選擇時間'
81
81
  },
82
82
  pagination: {
83
83
  ariaLabel: {
@@ -86,23 +86,23 @@ export default {
86
86
  previous: '上一頁',
87
87
  page: '轉到頁面 {0}',
88
88
  currentPage: '當前頁 {0}',
89
- first: 'First page',
90
- last: 'Last page'
89
+ first: '第一頁',
90
+ last: '最後一頁'
91
91
  }
92
92
  },
93
93
  stepper: {
94
- next: 'Next',
95
- prev: 'Previous'
94
+ next: '下一步',
95
+ prev: '上一步'
96
96
  },
97
97
  rating: {
98
98
  ariaLabel: {
99
- item: 'Rating {0} of {1}'
99
+ item: '評分 {0} / {1}'
100
100
  }
101
101
  },
102
- loading: 'Loading...',
102
+ loading: '載入中...',
103
103
  infiniteScroll: {
104
- loadMore: 'Load more',
105
- empty: 'No more'
104
+ loadMore: '載入更多',
105
+ empty: '沒有更多內容'
106
106
  }
107
107
  };
108
108
  //# sourceMappingURL=zh-Hant.mjs.map