vuetify 3.7.17 → 3.7.19

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 (43) hide show
  1. package/dist/json/attributes.json +3397 -3385
  2. package/dist/json/importMap-labs.json +16 -16
  3. package/dist/json/importMap.json +168 -168
  4. package/dist/json/tags.json +3 -0
  5. package/dist/json/web-types.json +6343 -6293
  6. package/dist/vuetify-labs.css +3200 -3200
  7. package/dist/vuetify-labs.d.ts +77 -35
  8. package/dist/vuetify-labs.esm.js +116 -37
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +116 -37
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +2769 -2769
  13. package/dist/vuetify.d.ts +95 -92
  14. package/dist/vuetify.esm.js +43 -20
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +43 -20
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +12 -12
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VDataTable/VDataTableRow.mjs +18 -3
  22. package/lib/components/VDataTable/VDataTableRow.mjs.map +1 -1
  23. package/lib/components/VDataTable/index.d.mts +91 -88
  24. package/lib/components/VDatePicker/VDatePicker.mjs +1 -1
  25. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  26. package/lib/components/VDatePicker/VDatePickerMonth.mjs +21 -12
  27. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  28. package/lib/components/VDatePicker/index.d.mts +3 -3
  29. package/lib/components/VIcon/VIcon.mjs +2 -2
  30. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  31. package/lib/components/index.d.mts +38 -35
  32. package/lib/composables/calendar.mjs +1 -1
  33. package/lib/composables/calendar.mjs.map +1 -1
  34. package/lib/entry-bundler.mjs +1 -1
  35. package/lib/framework.mjs +1 -1
  36. package/lib/index.d.mts +57 -57
  37. package/lib/labs/VDateInput/VDateInput.mjs +75 -18
  38. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  39. package/lib/labs/VDateInput/index.d.mts +43 -0
  40. package/lib/labs/components.d.mts +43 -4
  41. package/lib/util/helpers.mjs +1 -1
  42. package/lib/util/helpers.mjs.map +1 -1
  43. package/package.json +2 -2
package/lib/index.d.mts CHANGED
@@ -486,49 +486,43 @@ declare module 'vue' {
486
486
  $children?: VNodeChild
487
487
  }
488
488
  export interface GlobalComponents {
489
- VApp: typeof import('vuetify/components')['VApp']
490
489
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
491
- VBadge: typeof import('vuetify/components')['VBadge']
490
+ VAppBar: typeof import('vuetify/components')['VAppBar']
491
+ VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
492
+ VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
492
493
  VAlert: typeof import('vuetify/components')['VAlert']
493
494
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
495
+ VApp: typeof import('vuetify/components')['VApp']
494
496
  VAvatar: typeof import('vuetify/components')['VAvatar']
497
+ VBadge: typeof import('vuetify/components')['VBadge']
498
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
495
499
  VBanner: typeof import('vuetify/components')['VBanner']
496
500
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
497
501
  VBannerText: typeof import('vuetify/components')['VBannerText']
502
+ VBtn: typeof import('vuetify/components')['VBtn']
503
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
498
504
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
499
505
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
500
506
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
501
- VBtn: typeof import('vuetify/components')['VBtn']
502
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
503
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
504
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
507
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
508
+ VCarousel: typeof import('vuetify/components')['VCarousel']
509
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
505
510
  VCard: typeof import('vuetify/components')['VCard']
506
511
  VCardActions: typeof import('vuetify/components')['VCardActions']
507
512
  VCardItem: typeof import('vuetify/components')['VCardItem']
508
513
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
509
514
  VCardText: typeof import('vuetify/components')['VCardText']
510
515
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
511
- VAppBar: typeof import('vuetify/components')['VAppBar']
512
- VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
513
- VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
514
- VCarousel: typeof import('vuetify/components')['VCarousel']
515
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
516
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
517
- VChip: typeof import('vuetify/components')['VChip']
516
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
518
517
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
519
518
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
520
- VCode: typeof import('vuetify/components')['VCode']
521
- VCombobox: typeof import('vuetify/components')['VCombobox']
522
519
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
523
520
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
524
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
525
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
526
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
527
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
528
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
529
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
521
+ VChip: typeof import('vuetify/components')['VChip']
522
+ VCode: typeof import('vuetify/components')['VCode']
530
523
  VCounter: typeof import('vuetify/components')['VCounter']
531
- VDivider: typeof import('vuetify/components')['VDivider']
524
+ VCombobox: typeof import('vuetify/components')['VCombobox']
525
+ VDialog: typeof import('vuetify/components')['VDialog']
532
526
  VDataTable: typeof import('vuetify/components')['VDataTable']
533
527
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
534
528
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -536,30 +530,31 @@ declare module 'vue' {
536
530
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
537
531
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
538
532
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
539
- VDialog: typeof import('vuetify/components')['VDialog']
540
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
533
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
534
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
535
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
536
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
537
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
538
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
539
+ VDivider: typeof import('vuetify/components')['VDivider']
541
540
  VFab: typeof import('vuetify/components')['VFab']
541
+ VFileInput: typeof import('vuetify/components')['VFileInput']
542
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
542
543
  VField: typeof import('vuetify/components')['VField']
543
544
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
544
- VFileInput: typeof import('vuetify/components')['VFileInput']
545
- VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
546
- VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
547
- VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
548
- VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
549
545
  VFooter: typeof import('vuetify/components')['VFooter']
550
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
546
+ VInput: typeof import('vuetify/components')['VInput']
551
547
  VIcon: typeof import('vuetify/components')['VIcon']
552
548
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
553
549
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
554
550
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
555
551
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
556
- VImg: typeof import('vuetify/components')['VImg']
557
- VKbd: typeof import('vuetify/components')['VKbd']
558
- VInput: typeof import('vuetify/components')['VInput']
552
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
559
553
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
560
554
  VItem: typeof import('vuetify/components')['VItem']
561
555
  VLabel: typeof import('vuetify/components')['VLabel']
562
- VMain: typeof import('vuetify/components')['VMain']
556
+ VImg: typeof import('vuetify/components')['VImg']
557
+ VKbd: typeof import('vuetify/components')['VKbd']
563
558
  VList: typeof import('vuetify/components')['VList']
564
559
  VListGroup: typeof import('vuetify/components')['VListGroup']
565
560
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -569,64 +564,69 @@ declare module 'vue' {
569
564
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
570
565
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
571
566
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
572
- VMenu: typeof import('vuetify/components')['VMenu']
567
+ VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
568
+ VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
569
+ VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
570
+ VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
573
571
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
572
+ VMain: typeof import('vuetify/components')['VMain']
573
+ VMenu: typeof import('vuetify/components')['VMenu']
574
574
  VMessages: typeof import('vuetify/components')['VMessages']
575
+ VOverlay: typeof import('vuetify/components')['VOverlay']
575
576
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
576
- VPagination: typeof import('vuetify/components')['VPagination']
577
577
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
578
- VOverlay: typeof import('vuetify/components')['VOverlay']
579
- VRating: typeof import('vuetify/components')['VRating']
578
+ VPagination: typeof import('vuetify/components')['VPagination']
580
579
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
581
580
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
582
- VSheet: typeof import('vuetify/components')['VSheet']
581
+ VSelect: typeof import('vuetify/components')['VSelect']
582
+ VRating: typeof import('vuetify/components')['VRating']
583
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
584
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
583
585
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
584
586
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
585
- VSelect: typeof import('vuetify/components')['VSelect']
586
- VSlider: typeof import('vuetify/components')['VSlider']
587
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
588
+ VSheet: typeof import('vuetify/components')['VSheet']
587
589
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
590
+ VSwitch: typeof import('vuetify/components')['VSwitch']
591
+ VSlider: typeof import('vuetify/components')['VSlider']
592
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
588
593
  VStepper: typeof import('vuetify/components')['VStepper']
589
594
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
590
595
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
591
596
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
592
597
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
593
598
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
594
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
595
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
596
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
597
- VTable: typeof import('vuetify/components')['VTable']
598
- VSwitch: typeof import('vuetify/components')['VSwitch']
599
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
600
599
  VTab: typeof import('vuetify/components')['VTab']
601
600
  VTabs: typeof import('vuetify/components')['VTabs']
602
601
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
603
602
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
604
- VTextField: typeof import('vuetify/components')['VTextField']
605
- VTooltip: typeof import('vuetify/components')['VTooltip']
603
+ VTextarea: typeof import('vuetify/components')['VTextarea']
606
604
  VToolbar: typeof import('vuetify/components')['VToolbar']
607
605
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
608
606
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
609
- VTextarea: typeof import('vuetify/components')['VTextarea']
607
+ VTable: typeof import('vuetify/components')['VTable']
610
608
  VTimeline: typeof import('vuetify/components')['VTimeline']
611
609
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
610
+ VTextField: typeof import('vuetify/components')['VTextField']
611
+ VTooltip: typeof import('vuetify/components')['VTooltip']
612
612
  VWindow: typeof import('vuetify/components')['VWindow']
613
613
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
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
- VHover: typeof import('vuetify/components')['VHover']
618
- VForm: typeof import('vuetify/components')['VForm']
619
617
  VContainer: typeof import('vuetify/components')['VContainer']
620
618
  VCol: typeof import('vuetify/components')['VCol']
621
619
  VRow: typeof import('vuetify/components')['VRow']
622
620
  VSpacer: typeof import('vuetify/components')['VSpacer']
621
+ VHover: typeof import('vuetify/components')['VHover']
622
+ VForm: typeof import('vuetify/components')['VForm']
623
623
  VLayout: typeof import('vuetify/components')['VLayout']
624
624
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
625
625
  VLazy: typeof import('vuetify/components')['VLazy']
626
626
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
627
627
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
628
- VParallax: typeof import('vuetify/components')['VParallax']
629
628
  VRadio: typeof import('vuetify/components')['VRadio']
629
+ VParallax: typeof import('vuetify/components')['VParallax']
630
630
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
631
631
  VResponsive: typeof import('vuetify/components')['VResponsive']
632
632
  VSparkline: typeof import('vuetify/components')['VSparkline']
@@ -656,22 +656,22 @@ declare module 'vue' {
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']
661
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
659
662
  VPicker: typeof import('vuetify/labs/components')['VPicker']
660
663
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
661
664
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
662
665
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
663
666
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
664
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
665
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
666
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
667
667
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
668
668
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
669
669
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
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
- VDateInput: typeof import('vuetify/labs/components')['VDateInput']
674
673
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
674
+ VDateInput: typeof import('vuetify/labs/components')['VDateInput']
675
675
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
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":[]}