@vuetify/nightly 3.8.0-beta.0-dev.2025-03-24 → 3.8.0-beta.0-dev.2025-03-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 (46) hide show
  1. package/CHANGELOG.md +83 -3
  2. package/dist/json/attributes.json +1534 -1522
  3. package/dist/json/importMap-labs.json +30 -30
  4. package/dist/json/importMap.json +138 -138
  5. package/dist/json/tags.json +3 -0
  6. package/dist/json/web-types.json +3219 -3169
  7. package/dist/vuetify-labs.cjs +101 -28
  8. package/dist/vuetify-labs.css +3682 -3682
  9. package/dist/vuetify-labs.d.ts +124 -81
  10. package/dist/vuetify-labs.esm.js +101 -28
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +101 -28
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +25 -10
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +5460 -5460
  17. package/dist/vuetify.d.ts +82 -79
  18. package/dist/vuetify.esm.js +25 -10
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +25 -10
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +10 -10
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataTable/VDataTable.d.ts +4 -4
  26. package/lib/components/VDataTable/VDataTableRow.d.ts +9 -6
  27. package/lib/components/VDataTable/VDataTableRow.js +18 -3
  28. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  29. package/lib/components/VDataTable/VDataTableRows.d.ts +4 -4
  30. package/lib/components/VDataTable/VDataTableServer.d.ts +4 -4
  31. package/lib/components/VDataTable/VDataTableVirtual.d.ts +4 -4
  32. package/lib/components/VDatePicker/VDatePicker.js +1 -1
  33. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  34. package/lib/components/VIcon/VIcon.js +2 -2
  35. package/lib/components/VIcon/VIcon.js.map +1 -1
  36. package/lib/composables/calendar.js +1 -1
  37. package/lib/composables/calendar.js.map +1 -1
  38. package/lib/entry-bundler.js +1 -1
  39. package/lib/framework.d.ts +47 -47
  40. package/lib/framework.js +1 -1
  41. package/lib/labs/VDateInput/VDateInput.d.ts +70 -3
  42. package/lib/labs/VDateInput/VDateInput.js +78 -19
  43. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  44. package/lib/util/helpers.js +1 -1
  45. package/lib/util/helpers.js.map +1 -1
  46. package/package.json +1 -1
@@ -2568,42 +2568,39 @@ declare module 'vue' {
2568
2568
  }
2569
2569
  export interface GlobalComponents {
2570
2570
  VApp: typeof import('vuetify/components')['VApp']
2571
+ VAlert: typeof import('vuetify/components')['VAlert']
2572
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2573
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2571
2574
  VAvatar: typeof import('vuetify/components')['VAvatar']
2575
+ VBadge: typeof import('vuetify/components')['VBadge']
2576
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2572
2577
  VAppBar: typeof import('vuetify/components')['VAppBar']
2573
2578
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2574
2579
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2575
- VAlert: typeof import('vuetify/components')['VAlert']
2576
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2577
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2578
2580
  VBanner: typeof import('vuetify/components')['VBanner']
2579
2581
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2580
2582
  VBannerText: typeof import('vuetify/components')['VBannerText']
2581
- VBadge: typeof import('vuetify/components')['VBadge']
2582
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2583
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2584
2583
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2585
2584
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2586
2585
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2586
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2587
+ VBtn: typeof import('vuetify/components')['VBtn']
2587
2588
  VCarousel: typeof import('vuetify/components')['VCarousel']
2588
2589
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2589
- VBtn: typeof import('vuetify/components')['VBtn']
2590
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2590
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2591
2591
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2592
+ VChip: typeof import('vuetify/components')['VChip']
2593
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
2594
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
2595
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2596
+ VCode: typeof import('vuetify/components')['VCode']
2592
2597
  VCard: typeof import('vuetify/components')['VCard']
2593
2598
  VCardActions: typeof import('vuetify/components')['VCardActions']
2594
2599
  VCardItem: typeof import('vuetify/components')['VCardItem']
2595
2600
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2596
2601
  VCardText: typeof import('vuetify/components')['VCardText']
2597
2602
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2598
- VChip: typeof import('vuetify/components')['VChip']
2599
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
2600
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2601
- VCode: typeof import('vuetify/components')['VCode']
2602
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
2603
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
2604
- VCombobox: typeof import('vuetify/components')['VCombobox']
2605
2603
  VCounter: typeof import('vuetify/components')['VCounter']
2606
- VDialog: typeof import('vuetify/components')['VDialog']
2607
2604
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
2608
2605
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2609
2606
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
@@ -2617,28 +2614,31 @@ declare module 'vue' {
2617
2614
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2618
2615
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2619
2616
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2617
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
2618
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2620
2619
  VEmptyState: typeof import('vuetify/components')['VEmptyState']
2620
+ VDialog: typeof import('vuetify/components')['VDialog']
2621
2621
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2622
2622
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2623
2623
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2624
2624
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2625
2625
  VDivider: typeof import('vuetify/components')['VDivider']
2626
- VFooter: typeof import('vuetify/components')['VFooter']
2627
2626
  VFab: typeof import('vuetify/components')['VFab']
2628
2627
  VFileInput: typeof import('vuetify/components')['VFileInput']
2629
2628
  VField: typeof import('vuetify/components')['VField']
2630
2629
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2630
+ VFooter: typeof import('vuetify/components')['VFooter']
2631
+ VImg: typeof import('vuetify/components')['VImg']
2631
2632
  VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2633
+ VKbd: typeof import('vuetify/components')['VKbd']
2634
+ VInput: typeof import('vuetify/components')['VInput']
2632
2635
  VIcon: typeof import('vuetify/components')['VIcon']
2633
2636
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2634
2637
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2635
2638
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2636
2639
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2637
- VKbd: typeof import('vuetify/components')['VKbd']
2638
- VImg: typeof import('vuetify/components')['VImg']
2639
2640
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2640
2641
  VItem: typeof import('vuetify/components')['VItem']
2641
- VInput: typeof import('vuetify/components')['VInput']
2642
2642
  VLabel: typeof import('vuetify/components')['VLabel']
2643
2643
  VMenu: typeof import('vuetify/components')['VMenu']
2644
2644
  VList: typeof import('vuetify/components')['VList']
@@ -2650,43 +2650,43 @@ declare module 'vue' {
2650
2650
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2651
2651
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2652
2652
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2653
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2654
2653
  VMain: typeof import('vuetify/components')['VMain']
2655
- VOverlay: typeof import('vuetify/components')['VOverlay']
2654
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
2656
2655
  VMessages: typeof import('vuetify/components')['VMessages']
2657
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2656
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2658
2657
  VPagination: typeof import('vuetify/components')['VPagination']
2658
+ VOverlay: typeof import('vuetify/components')['VOverlay']
2659
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2660
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2659
2661
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2660
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
2662
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2661
2663
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2662
- VSelect: typeof import('vuetify/components')['VSelect']
2663
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2664
2664
  VRating: typeof import('vuetify/components')['VRating']
2665
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2666
2665
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2667
- VSheet: typeof import('vuetify/components')['VSheet']
2668
- VSlider: typeof import('vuetify/components')['VSlider']
2666
+ VSelect: typeof import('vuetify/components')['VSelect']
2669
2667
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2668
+ VSheet: typeof import('vuetify/components')['VSheet']
2670
2669
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
2670
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2671
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2672
+ VSlider: typeof import('vuetify/components')['VSlider']
2671
2673
  VStepper: typeof import('vuetify/components')['VStepper']
2672
2674
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2673
2675
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2674
2676
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
2675
2677
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2676
2678
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2677
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2678
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2679
2679
  VTab: typeof import('vuetify/components')['VTab']
2680
2680
  VTabs: typeof import('vuetify/components')['VTabs']
2681
2681
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2682
2682
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2683
2683
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
2684
- VTextarea: typeof import('vuetify/components')['VTextarea']
2685
- VTimeline: typeof import('vuetify/components')['VTimeline']
2686
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2687
2684
  VSwitch: typeof import('vuetify/components')['VSwitch']
2688
2685
  VTable: typeof import('vuetify/components')['VTable']
2689
2686
  VTextField: typeof import('vuetify/components')['VTextField']
2687
+ VTextarea: typeof import('vuetify/components')['VTextarea']
2688
+ VTimeline: typeof import('vuetify/components')['VTimeline']
2689
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2690
2690
  VTooltip: typeof import('vuetify/components')['VTooltip']
2691
2691
  VToolbar: typeof import('vuetify/components')['VToolbar']
2692
2692
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
@@ -2701,10 +2701,10 @@ declare module 'vue' {
2701
2701
  VCol: typeof import('vuetify/components')['VCol']
2702
2702
  VRow: typeof import('vuetify/components')['VRow']
2703
2703
  VSpacer: typeof import('vuetify/components')['VSpacer']
2704
- VLayout: typeof import('vuetify/components')['VLayout']
2705
- VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2706
2704
  VHover: typeof import('vuetify/components')['VHover']
2707
2705
  VLazy: typeof import('vuetify/components')['VLazy']
2706
+ VLayout: typeof import('vuetify/components')['VLayout']
2707
+ VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2708
2708
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2709
2709
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2710
2710
  VParallax: typeof import('vuetify/components')['VParallax']
@@ -2712,8 +2712,8 @@ declare module 'vue' {
2712
2712
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2713
2713
  VResponsive: typeof import('vuetify/components')['VResponsive']
2714
2714
  VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2715
- VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2716
2715
  VSparkline: typeof import('vuetify/components')['VSparkline']
2716
+ VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2717
2717
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2718
2718
  VValidation: typeof import('vuetify/components')['VValidation']
2719
2719
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
@@ -2733,25 +2733,25 @@ declare module 'vue' {
2733
2733
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2734
2734
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2735
2735
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2736
+ VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2737
+ VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2738
+ VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2739
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
2740
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2736
2741
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2737
2742
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2738
2743
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2739
2744
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2740
2745
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2741
2746
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2742
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2743
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2744
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2745
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2746
- VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2747
- VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2748
- VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2749
- VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2750
- VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2751
- VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2752
2747
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2753
2748
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2754
2749
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2750
+ VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2751
+ VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2752
+ VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2753
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2754
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2755
2755
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2756
2756
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2757
2757
  }
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.8.0-beta.0-dev.2025-03-24";
112
+ export const version = "3.8.0-beta.0-dev.2025-03-26";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
@@ -112,6 +112,9 @@ export declare const makeVDateInputProps: <Defaults extends {
112
112
  cancelText?: unknown;
113
113
  okText?: unknown;
114
114
  hideActions?: unknown;
115
+ mobile?: unknown;
116
+ mobileBreakpoint?: unknown;
117
+ displayFormat?: unknown;
115
118
  location?: unknown;
116
119
  } = {}>(defaults?: Defaults | undefined) => {
117
120
  max: unknown extends Defaults["max"] ? PropType<unknown> : {
@@ -754,10 +757,34 @@ export declare const makeVDateInputProps: <Defaults extends {
754
757
  type: PropType<unknown extends Defaults["okText"] ? string : string | Defaults["okText"]>;
755
758
  default: unknown extends Defaults["okText"] ? string : string | Defaults["okText"];
756
759
  };
757
- hideActions: unknown extends Defaults["hideActions"] ? BooleanConstructor : {
760
+ hideActions: unknown extends Defaults["hideActions"] ? {
761
+ type: PropType<boolean>;
762
+ default: boolean;
763
+ } : Omit<{
764
+ type: PropType<boolean>;
765
+ default: boolean;
766
+ }, "type" | "default"> & {
758
767
  type: PropType<unknown extends Defaults["hideActions"] ? boolean : boolean | Defaults["hideActions"]>;
759
768
  default: unknown extends Defaults["hideActions"] ? boolean : boolean | Defaults["hideActions"];
760
769
  };
770
+ mobile: unknown extends Defaults["mobile"] ? {
771
+ type: PropType<boolean | null>;
772
+ default: boolean;
773
+ } : Omit<{
774
+ type: PropType<boolean | null>;
775
+ default: boolean;
776
+ }, "type" | "default"> & {
777
+ type: PropType<unknown extends Defaults["mobile"] ? boolean | null : boolean | Defaults["mobile"] | null>;
778
+ default: unknown extends Defaults["mobile"] ? boolean | null : NonNullable<boolean | null> | Defaults["mobile"];
779
+ };
780
+ mobileBreakpoint: unknown extends Defaults["mobileBreakpoint"] ? PropType<number | import("../../composables/display.js").DisplayBreakpoint> : {
781
+ type: PropType<unknown extends Defaults["mobileBreakpoint"] ? number | import("../../composables/display.js").DisplayBreakpoint : number | import("../../composables/display.js").DisplayBreakpoint | Defaults["mobileBreakpoint"]>;
782
+ default: unknown extends Defaults["mobileBreakpoint"] ? number | import("../../composables/display.js").DisplayBreakpoint : NonNullable<number | import("../../composables/display.js").DisplayBreakpoint> | Defaults["mobileBreakpoint"];
783
+ };
784
+ displayFormat: unknown extends Defaults["displayFormat"] ? (FunctionConstructor | StringConstructor)[] : {
785
+ type: PropType<unknown extends Defaults["displayFormat"] ? string | Function : string | Function | Defaults["displayFormat"]>;
786
+ default: unknown extends Defaults["displayFormat"] ? string | Function : NonNullable<string | Function> | Defaults["displayFormat"];
787
+ };
761
788
  location: unknown extends Defaults["location"] ? {
762
789
  type: PropType<StrategyProps["location"]>;
763
790
  default: string;
@@ -784,6 +811,7 @@ export declare const VDateInput: {
784
811
  style: import("vue").StyleValue;
785
812
  title: string;
786
813
  autofocus: boolean;
814
+ mobile: boolean | null;
787
815
  disabled: boolean;
788
816
  readonly: boolean | null;
789
817
  tag: string | import("../../util/index.js").JSXComponent;
@@ -848,6 +876,7 @@ export declare const VDateInput: {
848
876
  theme?: string | undefined;
849
877
  elevation?: string | number | undefined;
850
878
  counter?: string | number | boolean | undefined;
879
+ mobileBreakpoint?: number | import("../../composables/display.js").DisplayBreakpoint | undefined;
851
880
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
852
881
  modelValue?: any;
853
882
  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;
@@ -874,6 +903,7 @@ export declare const VDateInput: {
874
903
  modelModifiers?: Record<string, boolean> | undefined;
875
904
  firstDayOfWeek?: string | number | undefined;
876
905
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
906
+ displayFormat?: string | Function | undefined;
877
907
  } & {
878
908
  $children?: import("vue").VNodeChild | (() => import("vue").VNodeChild) | {
879
909
  message?: ((arg: import("../../components/VMessages/VMessages.js").VMessageSlot) => import("vue").VNodeChild) | undefined;
@@ -932,8 +962,12 @@ export declare const VDateInput: {
932
962
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => import("vue").VNodeChild) | undefined;
933
963
  "v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
934
964
  } & {
965
+ onCancel?: (() => any) | undefined;
935
966
  "onUpdate:modelValue"?: ((val: string) => any) | undefined;
967
+ onSave?: ((value: string) => any) | undefined;
936
968
  }, any, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
969
+ save: (value: string) => true;
970
+ cancel: () => true;
937
971
  'update:modelValue': (val: string) => true;
938
972
  }, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
939
973
  flat: boolean;
@@ -949,6 +983,7 @@ export declare const VDateInput: {
949
983
  style: import("vue").StyleValue;
950
984
  title: string;
951
985
  autofocus: boolean;
986
+ mobile: boolean | null;
952
987
  disabled: boolean;
953
988
  readonly: boolean | null;
954
989
  tag: string | import("../../util/index.js").JSXComponent;
@@ -1028,6 +1063,7 @@ export declare const VDateInput: {
1028
1063
  style: import("vue").StyleValue;
1029
1064
  title: string;
1030
1065
  autofocus: boolean;
1066
+ mobile: boolean | null;
1031
1067
  disabled: boolean;
1032
1068
  readonly: boolean | null;
1033
1069
  tag: string | import("../../util/index.js").JSXComponent;
@@ -1092,6 +1128,7 @@ export declare const VDateInput: {
1092
1128
  theme?: string | undefined;
1093
1129
  elevation?: string | number | undefined;
1094
1130
  counter?: string | number | boolean | undefined;
1131
+ mobileBreakpoint?: number | import("../../composables/display.js").DisplayBreakpoint | undefined;
1095
1132
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
1096
1133
  modelValue?: any;
1097
1134
  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;
@@ -1118,6 +1155,7 @@ export declare const VDateInput: {
1118
1155
  modelModifiers?: Record<string, boolean> | undefined;
1119
1156
  firstDayOfWeek?: string | number | undefined;
1120
1157
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
1158
+ displayFormat?: string | Function | undefined;
1121
1159
  } & {
1122
1160
  $children?: import("vue").VNodeChild | (() => import("vue").VNodeChild) | {
1123
1161
  message?: ((arg: import("../../components/VMessages/VMessages.js").VMessageSlot) => import("vue").VNodeChild) | undefined;
@@ -1176,7 +1214,9 @@ export declare const VDateInput: {
1176
1214
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => import("vue").VNodeChild) | undefined;
1177
1215
  "v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
1178
1216
  } & {
1217
+ onCancel?: (() => any) | undefined;
1179
1218
  "onUpdate:modelValue"?: ((val: string) => any) | undefined;
1219
+ onSave?: ((value: string) => any) | undefined;
1180
1220
  }, any, {}, {}, {}, {
1181
1221
  flat: boolean;
1182
1222
  reverse: boolean;
@@ -1191,6 +1231,7 @@ export declare const VDateInput: {
1191
1231
  style: import("vue").StyleValue;
1192
1232
  title: string;
1193
1233
  autofocus: boolean;
1234
+ mobile: boolean | null;
1194
1235
  disabled: boolean;
1195
1236
  readonly: boolean | null;
1196
1237
  tag: string | import("../../util/index.js").JSXComponent;
@@ -1249,6 +1290,7 @@ export declare const VDateInput: {
1249
1290
  style: import("vue").StyleValue;
1250
1291
  title: string;
1251
1292
  autofocus: boolean;
1293
+ mobile: boolean | null;
1252
1294
  disabled: boolean;
1253
1295
  readonly: boolean | null;
1254
1296
  tag: string | import("../../util/index.js").JSXComponent;
@@ -1313,6 +1355,7 @@ export declare const VDateInput: {
1313
1355
  theme?: string | undefined;
1314
1356
  elevation?: string | number | undefined;
1315
1357
  counter?: string | number | boolean | undefined;
1358
+ mobileBreakpoint?: number | import("../../composables/display.js").DisplayBreakpoint | undefined;
1316
1359
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
1317
1360
  modelValue?: any;
1318
1361
  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;
@@ -1339,6 +1382,7 @@ export declare const VDateInput: {
1339
1382
  modelModifiers?: Record<string, boolean> | undefined;
1340
1383
  firstDayOfWeek?: string | number | undefined;
1341
1384
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
1385
+ displayFormat?: string | Function | undefined;
1342
1386
  } & {
1343
1387
  $children?: import("vue").VNodeChild | (() => import("vue").VNodeChild) | {
1344
1388
  message?: ((arg: import("../../components/VMessages/VMessages.js").VMessageSlot) => import("vue").VNodeChild) | undefined;
@@ -1397,8 +1441,12 @@ export declare const VDateInput: {
1397
1441
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => import("vue").VNodeChild) | undefined;
1398
1442
  "v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
1399
1443
  } & {
1444
+ onCancel?: (() => any) | undefined;
1400
1445
  "onUpdate:modelValue"?: ((val: string) => any) | undefined;
1446
+ onSave?: ((value: string) => any) | undefined;
1401
1447
  }, any, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1448
+ save: (value: string) => true;
1449
+ cancel: () => true;
1402
1450
  'update:modelValue': (val: string) => true;
1403
1451
  }, string, {
1404
1452
  flat: boolean;
@@ -1414,6 +1462,7 @@ export declare const VDateInput: {
1414
1462
  style: import("vue").StyleValue;
1415
1463
  title: string;
1416
1464
  autofocus: boolean;
1465
+ mobile: boolean | null;
1417
1466
  disabled: boolean;
1418
1467
  readonly: boolean | null;
1419
1468
  tag: string | import("../../util/index.js").JSXComponent;
@@ -1693,7 +1742,16 @@ export declare const VDateInput: {
1693
1742
  type: StringConstructor;
1694
1743
  default: string;
1695
1744
  };
1696
- hideActions: BooleanConstructor;
1745
+ hideActions: {
1746
+ type: PropType<boolean>;
1747
+ default: boolean;
1748
+ };
1749
+ mobile: {
1750
+ type: PropType<boolean | null>;
1751
+ default: boolean;
1752
+ };
1753
+ mobileBreakpoint: PropType<number | import("../../composables/display.js").DisplayBreakpoint>;
1754
+ displayFormat: (FunctionConstructor | StringConstructor)[];
1697
1755
  location: {
1698
1756
  type: PropType<StrategyProps["location"]>;
1699
1757
  default: string;
@@ -1919,7 +1977,16 @@ export declare const VDateInput: {
1919
1977
  type: StringConstructor;
1920
1978
  default: string;
1921
1979
  };
1922
- hideActions: BooleanConstructor;
1980
+ hideActions: {
1981
+ type: PropType<boolean>;
1982
+ default: boolean;
1983
+ };
1984
+ mobile: {
1985
+ type: PropType<boolean | null>;
1986
+ default: boolean;
1987
+ };
1988
+ mobileBreakpoint: PropType<number | import("../../composables/display.js").DisplayBreakpoint>;
1989
+ displayFormat: (FunctionConstructor | StringConstructor)[];
1923
1990
  location: {
1924
1991
  type: PropType<StrategyProps["location"]>;
1925
1992
  default: string;
@@ -5,20 +5,25 @@ import { makeVDatePickerProps, VDatePicker } from "../../components/VDatePicker/
5
5
  import { VMenu } from "../../components/VMenu/VMenu.js";
6
6
  import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.js"; // Composables
7
7
  import { useDate } from "../../composables/date/index.js";
8
+ import { makeDisplayProps, useDisplay } from "../../composables/display.js";
8
9
  import { makeFocusProps, useFocus } from "../../composables/focus.js";
9
10
  import { forwardRefs } from "../../composables/forwardRefs.js";
10
11
  import { useLocale } from "../../composables/locale.js";
11
12
  import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
12
- import { computed, ref, shallowRef } from 'vue';
13
+ import { computed, ref, shallowRef, watch } from 'vue';
13
14
  import { genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
14
15
  // Types
15
16
  export const makeVDateInputProps = propsFactory({
17
+ displayFormat: [Function, String],
16
18
  location: {
17
19
  type: String,
18
20
  default: 'bottom start'
19
21
  },
22
+ ...makeDisplayProps(),
20
23
  ...makeFocusProps(),
21
- ...makeVConfirmEditProps(),
24
+ ...makeVConfirmEditProps({
25
+ hideActions: true
26
+ }),
22
27
  ...makeVTextFieldProps({
23
28
  placeholder: 'mm/dd/yyyy',
24
29
  prependIcon: '$calendar'
@@ -32,16 +37,22 @@ export const VDateInput = genericComponent()({
32
37
  name: 'VDateInput',
33
38
  props: makeVDateInputProps(),
34
39
  emits: {
40
+ save: value => true,
41
+ cancel: () => true,
35
42
  'update:modelValue': val => true
36
43
  },
37
44
  setup(props, _ref) {
38
45
  let {
46
+ emit,
39
47
  slots
40
48
  } = _ref;
41
49
  const {
42
50
  t
43
51
  } = useLocale();
44
52
  const adapter = useDate();
53
+ const {
54
+ mobile
55
+ } = useDisplay();
45
56
  const {
46
57
  isFocused,
47
58
  focus,
@@ -49,7 +60,14 @@ export const VDateInput = genericComponent()({
49
60
  } = useFocus(props);
50
61
  const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null, val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
51
62
  const menu = shallowRef(false);
63
+ const isEditingInput = shallowRef(false);
52
64
  const vDateInputRef = ref();
65
+ function format(date) {
66
+ if (typeof props.displayFormat === 'function') {
67
+ return props.displayFormat(date);
68
+ }
69
+ return adapter.format(date, props.displayFormat ?? 'keyboardDate');
70
+ }
53
71
  const display = computed(() => {
54
72
  const value = wrapInArray(model.value);
55
73
  if (!value.length) return null;
@@ -59,11 +77,22 @@ export const VDateInput = genericComponent()({
59
77
  if (props.multiple === 'range') {
60
78
  const start = value[0];
61
79
  const end = value[value.length - 1];
62
- return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
80
+ if (!adapter.isValid(start) || !adapter.isValid(end)) return '';
81
+ return `${format(adapter.date(start))} - ${format(adapter.date(end))}`;
63
82
  }
64
- return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
83
+ return adapter.isValid(model.value) ? format(adapter.date(model.value)) : '';
84
+ });
85
+ const inputmode = computed(() => {
86
+ if (!mobile.value) return undefined;
87
+ if (isEditingInput.value) return 'text';
88
+ return 'none';
65
89
  });
66
90
  const isInteractive = computed(() => !props.disabled && !props.readonly);
91
+ const isReadonly = computed(() => !(mobile.value && isEditingInput.value) && props.readonly);
92
+ watch(menu, val => {
93
+ if (val) return;
94
+ isEditingInput.value = false;
95
+ });
67
96
  function onKeydown(e) {
68
97
  if (e.key !== 'Enter') return;
69
98
  if (!menu.value || !isFocused.value) {
@@ -76,15 +105,38 @@ export const VDateInput = genericComponent()({
76
105
  function onClick(e) {
77
106
  e.preventDefault();
78
107
  e.stopPropagation();
79
- menu.value = true;
108
+ if (menu.value && mobile.value) {
109
+ isEditingInput.value = true;
110
+ } else {
111
+ menu.value = true;
112
+ }
80
113
  }
81
- function onSave() {
114
+ function onCancel() {
115
+ emit('cancel');
82
116
  menu.value = false;
117
+ isEditingInput.value = false;
83
118
  }
84
- function onUpdateModel(value) {
119
+ function onSave(value) {
120
+ emit('save', value);
121
+ menu.value = false;
122
+ }
123
+ function onUpdateDisplayModel(value) {
85
124
  if (value != null) return;
86
125
  model.value = null;
87
126
  }
127
+ function onUpdateMenuModel(isMenuOpen) {
128
+ if (isMenuOpen) return;
129
+ isEditingInput.value = false;
130
+ }
131
+ function onBlur() {
132
+ blur();
133
+
134
+ // When in mobile mode and editing is done (due to keyboard dismissal), close the menu
135
+ if (mobile.value && isEditingInput.value && !isFocused.value) {
136
+ menu.value = false;
137
+ isEditingInput.value = false;
138
+ }
139
+ }
88
140
  useRender(() => {
89
141
  const confirmEditProps = VConfirmEdit.filterProps(props);
90
142
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
@@ -95,18 +147,20 @@ export const VDateInput = genericComponent()({
95
147
  "class": props.class,
96
148
  "style": props.style,
97
149
  "modelValue": display.value,
150
+ "inputmode": inputmode.value,
151
+ "readonly": isReadonly.value,
98
152
  "onKeydown": isInteractive.value ? onKeydown : undefined,
99
153
  "focused": menu.value || isFocused.value,
100
154
  "onFocus": focus,
101
- "onBlur": blur,
155
+ "onBlur": onBlur,
102
156
  "onClick:control": isInteractive.value ? onClick : undefined,
103
157
  "onClick:prepend": isInteractive.value ? onClick : undefined,
104
- "onUpdate:modelValue": onUpdateModel
158
+ "onUpdate:modelValue": onUpdateDisplayModel
105
159
  }), {
106
160
  ...slots,
107
161
  default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, {
108
162
  "modelValue": menu.value,
109
- "onUpdate:modelValue": $event => menu.value = $event,
163
+ "onUpdate:modelValue": [$event => menu.value = $event, onUpdateMenuModel],
110
164
  "activator": "parent",
111
165
  "min-width": "0",
112
166
  "eager": isFocused.value,
@@ -118,7 +172,7 @@ export const VDateInput = genericComponent()({
118
172
  "modelValue": model.value,
119
173
  "onUpdate:modelValue": $event => model.value = $event,
120
174
  "onSave": onSave,
121
- "onCancel": () => menu.value = false
175
+ "onCancel": onCancel
122
176
  }), {
123
177
  default: _ref2 => {
124
178
  let {
@@ -128,16 +182,21 @@ export const VDateInput = genericComponent()({
128
182
  cancel,
129
183
  isPristine
130
184
  } = _ref2;
185
+ function onUpdateModel(value) {
186
+ if (!props.hideActions) {
187
+ proxyModel.value = value;
188
+ } else {
189
+ model.value = value;
190
+ if (!props.multiple) {
191
+ menu.value = false;
192
+ }
193
+ }
194
+ emit('save', value);
195
+ vDateInputRef.value?.blur();
196
+ }
131
197
  return _createVNode(VDatePicker, _mergeProps(datePickerProps, {
132
198
  "modelValue": props.hideActions ? model.value : proxyModel.value,
133
- "onUpdate:modelValue": val => {
134
- if (!props.hideActions) {
135
- proxyModel.value = val;
136
- } else {
137
- model.value = val;
138
- if (!props.multiple) menu.value = false;
139
- }
140
- },
199
+ "onUpdate:modelValue": value => onUpdateModel(value),
141
200
  "onMousedown": e => e.preventDefault()
142
201
  }), {
143
202
  actions: !props.hideActions ? () => slots.actions?.({