@vuetify/nightly 3.7.18-master.2025-03-24 → 3.7.18-master.2025-03-25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.18-master.2025-03-24
2
+ * Vuetify v3.7.18-master.2025-03-25
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2124,8 +2124,8 @@ if(d.install(e),e.provide(kt,u),e.provide(hn,c),e.provide(Va,d),e.provide(Ot,v),
2124
2124
  else{const{mount:a}=e
2125
2125
  e.mount=function(){const l=a(...arguments)
2126
2126
  return t.nextTick((()=>c.update())),e.mount=a,l}}St.reset(),("boolean"!=typeof __VUE_OPTIONS_API__||__VUE_OPTIONS_API__)&&e.mixin({computed:{$vuetify(){return t.reactive({defaults:rf.call(this,kt),display:rf.call(this,hn),theme:rf.call(this,Va),icons:rf.call(this,Ot),locale:rf.call(this,ma),date:rf.call(this,fu)})}}})},defaults:u,display:c,theme:d,icons:v,locale:p,date:f,goTo:m}}function rf(e){const t=this.$,a=t.parent?.provides??t.vnode.appContext?.provides
2127
- if(a&&e in a)return a[e]}nf.version="3.7.18-master.2025-03-24"
2128
- const sf=function(){return nf({components:Xp,directives:of,...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}})},uf="3.7.18-master.2025-03-24"
2127
+ if(a&&e in a)return a[e]}nf.version="3.7.18-master.2025-03-25"
2128
+ const sf=function(){return nf({components:Xp,directives:of,...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}})},uf="3.7.18-master.2025-03-25"
2129
2129
  sf.version=uf,e.blueprints=Zt,e.components=Xp,e.createVuetify=sf,e.directives=of,e.useDate=gu,e.useDefaults=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0
2130
2130
  const{props:a,provideSubDefaults:l}=Ct(e,t)
2131
2131
  return l(),a},e.useDisplay=xn,e.useGoTo=Bn,e.useLayout=la,e.useLocale=ha,e.useRtl=ba,e.useTheme=xa,e.version=uf}))
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.7.18-master.2025-03-24";
19
+ export const version = "3.7.18-master.2025-03-25";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.7.18-master.2025-03-24";
100
+ export const version = "3.7.18-master.2025-03-25";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -486,41 +486,40 @@ declare module 'vue' {
486
486
  $children?: VNodeChild
487
487
  }
488
488
  export interface GlobalComponents {
489
+ VAlert: typeof import('vuetify/components')['VAlert']
490
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
489
491
  VApp: typeof import('vuetify/components')['VApp']
490
- VAvatar: typeof import('vuetify/components')['VAvatar']
491
492
  VAppBar: typeof import('vuetify/components')['VAppBar']
492
493
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
493
494
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
495
+ VAvatar: typeof import('vuetify/components')['VAvatar']
494
496
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
497
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
495
498
  VBadge: typeof import('vuetify/components')['VBadge']
499
+ VBtn: typeof import('vuetify/components')['VBtn']
496
500
  VBanner: typeof import('vuetify/components')['VBanner']
497
501
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
498
502
  VBannerText: typeof import('vuetify/components')['VBannerText']
503
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
499
504
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
500
505
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
501
506
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
502
- VAlert: typeof import('vuetify/components')['VAlert']
503
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
504
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
505
- VBtn: typeof import('vuetify/components')['VBtn']
506
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
507
- VCarousel: typeof import('vuetify/components')['VCarousel']
508
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
509
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
510
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
511
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
512
507
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
508
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
513
509
  VCard: typeof import('vuetify/components')['VCard']
514
510
  VCardActions: typeof import('vuetify/components')['VCardActions']
515
511
  VCardItem: typeof import('vuetify/components')['VCardItem']
516
512
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
517
513
  VCardText: typeof import('vuetify/components')['VCardText']
518
514
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
515
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
516
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
517
+ VCarousel: typeof import('vuetify/components')['VCarousel']
518
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
519
519
  VChip: typeof import('vuetify/components')['VChip']
520
+ VCombobox: typeof import('vuetify/components')['VCombobox']
520
521
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
521
- VCode: typeof import('vuetify/components')['VCode']
522
522
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
523
- VCombobox: typeof import('vuetify/components')['VCombobox']
524
523
  VDataTable: typeof import('vuetify/components')['VDataTable']
525
524
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
526
525
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -528,36 +527,38 @@ declare module 'vue' {
528
527
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
529
528
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
530
529
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
530
+ VCode: typeof import('vuetify/components')['VCode']
531
+ VCounter: typeof import('vuetify/components')['VCounter']
532
+ VDialog: typeof import('vuetify/components')['VDialog']
533
+ VDivider: typeof import('vuetify/components')['VDivider']
534
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
531
535
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
532
536
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
533
537
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
534
538
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
535
539
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
536
540
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
537
- VCounter: typeof import('vuetify/components')['VCounter']
538
- VDialog: typeof import('vuetify/components')['VDialog']
539
- VDivider: typeof import('vuetify/components')['VDivider']
540
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
541
+ VFileInput: typeof import('vuetify/components')['VFileInput']
542
+ VFab: typeof import('vuetify/components')['VFab']
543
+ VField: typeof import('vuetify/components')['VField']
544
+ VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
541
545
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
542
546
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
543
547
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
544
548
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
545
- VFab: typeof import('vuetify/components')['VFab']
546
- VField: typeof import('vuetify/components')['VField']
547
- VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
549
+ VFooter: typeof import('vuetify/components')['VFooter']
550
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
551
+ VImg: typeof import('vuetify/components')['VImg']
552
+ VKbd: typeof import('vuetify/components')['VKbd']
548
553
  VIcon: typeof import('vuetify/components')['VIcon']
549
554
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
550
555
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
551
556
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
552
557
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
553
- VFileInput: typeof import('vuetify/components')['VFileInput']
554
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
555
- VImg: typeof import('vuetify/components')['VImg']
556
558
  VInput: typeof import('vuetify/components')['VInput']
557
- VLabel: typeof import('vuetify/components')['VLabel']
558
559
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
559
560
  VItem: typeof import('vuetify/components')['VItem']
560
- VKbd: typeof import('vuetify/components')['VKbd']
561
+ VLabel: typeof import('vuetify/components')['VLabel']
561
562
  VList: typeof import('vuetify/components')['VList']
562
563
  VListGroup: typeof import('vuetify/components')['VListGroup']
563
564
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -567,70 +568,70 @@ declare module 'vue' {
567
568
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
568
569
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
569
570
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
570
- VFooter: typeof import('vuetify/components')['VFooter']
571
- VMenu: typeof import('vuetify/components')['VMenu']
571
+ VMain: typeof import('vuetify/components')['VMain']
572
572
  VMessages: typeof import('vuetify/components')['VMessages']
573
+ VMenu: typeof import('vuetify/components')['VMenu']
574
+ VOverlay: typeof import('vuetify/components')['VOverlay']
573
575
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
574
- VMain: typeof import('vuetify/components')['VMain']
575
576
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
576
- VOverlay: typeof import('vuetify/components')['VOverlay']
577
577
  VPagination: typeof import('vuetify/components')['VPagination']
578
578
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
579
579
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
580
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
581
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
582
580
  VSelect: typeof import('vuetify/components')['VSelect']
583
- VRating: typeof import('vuetify/components')['VRating']
584
581
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
585
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
586
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
582
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
583
+ VRating: typeof import('vuetify/components')['VRating']
587
584
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
585
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
588
586
  VSheet: typeof import('vuetify/components')['VSheet']
589
587
  VSlider: typeof import('vuetify/components')['VSlider']
588
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
589
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
590
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
590
591
  VStepper: typeof import('vuetify/components')['VStepper']
591
592
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
592
593
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
593
594
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
594
595
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
595
596
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
596
- VSwitch: typeof import('vuetify/components')['VSwitch']
597
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
598
597
  VTable: typeof import('vuetify/components')['VTable']
598
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
599
+ VSwitch: typeof import('vuetify/components')['VSwitch']
599
600
  VTab: typeof import('vuetify/components')['VTab']
600
601
  VTabs: typeof import('vuetify/components')['VTabs']
601
602
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
602
603
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
603
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
604
+ VTextarea: typeof import('vuetify/components')['VTextarea']
605
+ VTextField: typeof import('vuetify/components')['VTextField']
604
606
  VToolbar: typeof import('vuetify/components')['VToolbar']
605
607
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
606
608
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
607
- VTextarea: typeof import('vuetify/components')['VTextarea']
608
- VTextField: typeof import('vuetify/components')['VTextField']
609
+ VTooltip: typeof import('vuetify/components')['VTooltip']
609
610
  VWindow: typeof import('vuetify/components')['VWindow']
610
611
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
611
- VTooltip: typeof import('vuetify/components')['VTooltip']
612
612
  VTimeline: typeof import('vuetify/components')['VTimeline']
613
613
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
614
614
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
615
615
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
616
616
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
617
+ VForm: typeof import('vuetify/components')['VForm']
617
618
  VContainer: typeof import('vuetify/components')['VContainer']
618
619
  VCol: typeof import('vuetify/components')['VCol']
619
620
  VRow: typeof import('vuetify/components')['VRow']
620
621
  VSpacer: typeof import('vuetify/components')['VSpacer']
621
- VForm: typeof import('vuetify/components')['VForm']
622
622
  VHover: typeof import('vuetify/components')['VHover']
623
623
  VLazy: typeof import('vuetify/components')['VLazy']
624
624
  VLayout: typeof import('vuetify/components')['VLayout']
625
625
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
626
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
627
626
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
627
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
628
628
  VParallax: typeof import('vuetify/components')['VParallax']
629
629
  VRadio: typeof import('vuetify/components')['VRadio']
630
630
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
631
631
  VResponsive: typeof import('vuetify/components')['VResponsive']
632
- VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
633
632
  VSparkline: typeof import('vuetify/components')['VSparkline']
633
+ VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
634
+ VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
634
635
  VValidation: typeof import('vuetify/components')['VValidation']
635
636
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
636
637
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
@@ -649,20 +650,19 @@ 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
- VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
653
653
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
654
654
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
655
655
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
656
656
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
657
657
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
658
658
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
659
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
660
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
659
661
  VPicker: typeof import('vuetify/labs/components')['VPicker']
660
662
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
661
663
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
662
664
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
663
665
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
664
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
665
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
666
666
  VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
667
667
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
668
668
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
@@ -671,7 +671,7 @@ declare module 'vue' {
671
671
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
672
672
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
673
673
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
674
- VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
675
674
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
675
+ VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
676
676
  }
677
677
  }
@@ -5,19 +5,22 @@ import { makeVDatePickerProps, VDatePicker } from "../../components/VDatePicker/
5
5
  import { VMenu } from "../../components/VMenu/VMenu.mjs";
6
6
  import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.mjs"; // Composables
7
7
  import { useDate } from "../../composables/date/index.mjs";
8
+ import { makeDisplayProps, useDisplay } from "../../composables/display.mjs";
8
9
  import { makeFocusProps, useFocus } from "../../composables/focus.mjs";
9
10
  import { forwardRefs } from "../../composables/forwardRefs.mjs";
10
11
  import { useLocale } from "../../composables/locale.mjs";
11
12
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // 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.mjs"; // Types
14
15
  // Types
15
16
  export const makeVDateInputProps = propsFactory({
17
+ displayFormat: [Function, String],
16
18
  hideActions: Boolean,
17
19
  location: {
18
20
  type: String,
19
21
  default: 'bottom start'
20
22
  },
23
+ ...makeDisplayProps(),
21
24
  ...makeFocusProps(),
22
25
  ...makeVConfirmEditProps(),
23
26
  ...makeVTextFieldProps({
@@ -33,16 +36,22 @@ export const VDateInput = genericComponent()({
33
36
  name: 'VDateInput',
34
37
  props: makeVDateInputProps(),
35
38
  emits: {
39
+ save: value => true,
40
+ cancel: () => true,
36
41
  'update:modelValue': val => true
37
42
  },
38
43
  setup(props, _ref) {
39
44
  let {
45
+ emit,
40
46
  slots
41
47
  } = _ref;
42
48
  const {
43
49
  t
44
50
  } = useLocale();
45
51
  const adapter = useDate();
52
+ const {
53
+ mobile
54
+ } = useDisplay();
46
55
  const {
47
56
  isFocused,
48
57
  focus,
@@ -50,7 +59,14 @@ export const VDateInput = genericComponent()({
50
59
  } = useFocus(props);
51
60
  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);
52
61
  const menu = shallowRef(false);
62
+ const isEditingInput = shallowRef(false);
53
63
  const vDateInputRef = ref();
64
+ function format(date) {
65
+ if (typeof props.displayFormat === 'function') {
66
+ return props.displayFormat(date);
67
+ }
68
+ return adapter.format(date, props.displayFormat ?? 'keyboardDate');
69
+ }
54
70
  const display = computed(() => {
55
71
  const value = wrapInArray(model.value);
56
72
  if (!value.length) return null;
@@ -60,11 +76,22 @@ export const VDateInput = genericComponent()({
60
76
  if (props.multiple === 'range') {
61
77
  const start = value[0];
62
78
  const end = value[value.length - 1];
63
- return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
79
+ if (!adapter.isValid(start) || !adapter.isValid(end)) return '';
80
+ return `${format(adapter.date(start))} - ${format(adapter.date(end))}`;
64
81
  }
65
- return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
82
+ return adapter.isValid(model.value) ? format(adapter.date(model.value)) : '';
83
+ });
84
+ const inputmode = computed(() => {
85
+ if (!mobile.value) return undefined;
86
+ if (isEditingInput.value) return 'text';
87
+ return 'none';
66
88
  });
67
89
  const isInteractive = computed(() => !props.disabled && !props.readonly);
90
+ const isReadonly = computed(() => !(mobile.value && isEditingInput.value) && props.readonly);
91
+ watch(menu, val => {
92
+ if (val) return;
93
+ isEditingInput.value = false;
94
+ });
68
95
  function onKeydown(e) {
69
96
  if (e.key !== 'Enter') return;
70
97
  if (!menu.value || !isFocused.value) {
@@ -77,15 +104,38 @@ export const VDateInput = genericComponent()({
77
104
  function onClick(e) {
78
105
  e.preventDefault();
79
106
  e.stopPropagation();
80
- menu.value = true;
107
+ if (menu.value && mobile.value) {
108
+ isEditingInput.value = true;
109
+ } else {
110
+ menu.value = true;
111
+ }
81
112
  }
82
- function onSave() {
113
+ function onCancel() {
114
+ emit('cancel');
83
115
  menu.value = false;
116
+ isEditingInput.value = false;
84
117
  }
85
- function onUpdateModel(value) {
118
+ function onSave(value) {
119
+ emit('save', value);
120
+ menu.value = false;
121
+ }
122
+ function onUpdateDisplayModel(value) {
86
123
  if (value != null) return;
87
124
  model.value = null;
88
125
  }
126
+ function onUpdateMenuModel(isMenuOpen) {
127
+ if (isMenuOpen) return;
128
+ isEditingInput.value = false;
129
+ }
130
+ function onBlur() {
131
+ blur();
132
+
133
+ // When in mobile mode and editing is done (due to keyboard dismissal), close the menu
134
+ if (mobile.value && isEditingInput.value && !isFocused.value) {
135
+ menu.value = false;
136
+ isEditingInput.value = false;
137
+ }
138
+ }
89
139
  useRender(() => {
90
140
  const confirmEditProps = VConfirmEdit.filterProps(props);
91
141
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
@@ -96,18 +146,20 @@ export const VDateInput = genericComponent()({
96
146
  "class": props.class,
97
147
  "style": props.style,
98
148
  "modelValue": display.value,
149
+ "inputmode": inputmode.value,
150
+ "readonly": isReadonly.value,
99
151
  "onKeydown": isInteractive.value ? onKeydown : undefined,
100
152
  "focused": menu.value || isFocused.value,
101
153
  "onFocus": focus,
102
- "onBlur": blur,
154
+ "onBlur": onBlur,
103
155
  "onClick:control": isInteractive.value ? onClick : undefined,
104
156
  "onClick:prepend": isInteractive.value ? onClick : undefined,
105
- "onUpdate:modelValue": onUpdateModel
157
+ "onUpdate:modelValue": onUpdateDisplayModel
106
158
  }), {
107
159
  ...slots,
108
160
  default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, {
109
161
  "modelValue": menu.value,
110
- "onUpdate:modelValue": $event => menu.value = $event,
162
+ "onUpdate:modelValue": [$event => menu.value = $event, onUpdateMenuModel],
111
163
  "activator": "parent",
112
164
  "min-width": "0",
113
165
  "eager": isFocused.value,
@@ -119,7 +171,7 @@ export const VDateInput = genericComponent()({
119
171
  "modelValue": model.value,
120
172
  "onUpdate:modelValue": $event => model.value = $event,
121
173
  "onSave": onSave,
122
- "onCancel": () => menu.value = false
174
+ "onCancel": onCancel
123
175
  }), {
124
176
  default: _ref2 => {
125
177
  let {
@@ -129,16 +181,21 @@ export const VDateInput = genericComponent()({
129
181
  cancel,
130
182
  isPristine
131
183
  } = _ref2;
184
+ function onUpdateModel(value) {
185
+ if (!props.hideActions) {
186
+ proxyModel.value = value;
187
+ } else {
188
+ model.value = value;
189
+ if (!props.multiple) {
190
+ menu.value = false;
191
+ }
192
+ }
193
+ emit('save', value);
194
+ vDateInputRef.value?.blur();
195
+ }
132
196
  return _createVNode(VDatePicker, _mergeProps(datePickerProps, {
133
197
  "modelValue": props.hideActions ? model.value : proxyModel.value,
134
- "onUpdate:modelValue": val => {
135
- if (!props.hideActions) {
136
- proxyModel.value = val;
137
- } else {
138
- model.value = val;
139
- if (!props.multiple) menu.value = false;
140
- }
141
- },
198
+ "onUpdate:modelValue": value => onUpdateModel(value),
142
199
  "onMousedown": e => e.preventDefault()
143
200
  }), {
144
201
  actions: !props.hideActions ? () => slots.actions?.({
@@ -1 +1 @@
1
- {"version":3,"file":"VDateInput.mjs","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","hideActions","Boolean","location","type","String","default","placeholder","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","val","setup","_ref","slots","t","adapter","isFocused","focus","blur","model","multiple","Array","isArray","map","item","toJsDate","date","menu","vDateInputRef","display","value","length","start","end","isValid","format","isInteractive","disabled","readonly","onKeydown","e","key","target","onClick","preventDefault","stopPropagation","onSave","onUpdateModel","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","undefined","_Fragment","$event","onCancel","_ref2","actions","proxyModel","save","cancel","isPristine"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n hideActions: Boolean,\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n ...makeFocusProps(),\n ...makeVConfirmEditProps(),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.multiple ? [] : null,\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = shallowRef(false)\n const vDateInputRef = ref()\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n return adapter.isValid(start) && adapter.isValid(end)\n ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}`\n : ''\n }\n\n return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : ''\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n\n return\n }\n\n const target = e.target as HTMLInputElement\n\n model.value = target.value === '' ? null : target.value\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n menu.value = true\n }\n\n function onSave () {\n menu.value = false\n }\n\n function onUpdateModel (value: string) {\n if (value != null) return\n\n model.value = null\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vDateInputRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ blur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateModel }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n onCancel={ () => menu.value = false }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ val => {\n if (!props.hideActions) {\n proxyModel.value = val\n } else {\n model.value = val\n\n if (!props.multiple) menu.value = false\n }\n }}\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vDateInputRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDateInput.mjs","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeDisplayProps","useDisplay","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","Function","String","hideActions","Boolean","location","type","default","placeholder","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","adapter","mobile","isFocused","focus","blur","model","multiple","Array","isArray","map","item","toJsDate","date","menu","isEditingInput","vDateInputRef","format","display","length","start","end","isValid","inputmode","undefined","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onUpdateMenuModel","isMenuOpen","onBlur","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","_Fragment","$event","_ref2","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: [Function, String],\n hideActions: Boolean,\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n\n ...makeDisplayProps(),\n ...makeFocusProps(),\n ...makeVConfirmEditProps(),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: string) => true,\n cancel: () => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { mobile } = useDisplay()\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.multiple ? [] : null,\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = shallowRef(false)\n const isEditingInput = shallowRef(false)\n const vDateInputRef = ref()\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const inputmode = computed(() => {\n if (!mobile.value) return undefined\n if (isEditingInput.value) return 'text'\n\n return 'none'\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n const isReadonly = computed(() => !(mobile.value && isEditingInput.value) && props.readonly)\n\n watch(menu, val => {\n if (val) return\n\n isEditingInput.value = false\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n\n return\n }\n\n const target = e.target as HTMLInputElement\n\n model.value = target.value === '' ? null : target.value\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n if (menu.value && mobile.value) {\n isEditingInput.value = true\n } else {\n menu.value = true\n }\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n isEditingInput.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: string) {\n if (value != null) return\n\n model.value = null\n }\n\n function onUpdateMenuModel (isMenuOpen: boolean) {\n if (isMenuOpen) return\n\n isEditingInput.value = false\n }\n\n function onBlur () {\n blur()\n\n // When in mobile mode and editing is done (due to keyboard dismissal), close the menu\n if (mobile.value && isEditingInput.value && !isFocused.value) {\n menu.value = false\n isEditingInput.value = false\n }\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vDateInputRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ onBlur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n onUpdate:modelValue={ onUpdateMenuModel }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n vDateInputRef.value?.blur()\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vDateInputRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}