@vuetify/nightly 3.7.18-master.2025-03-22 → 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.
- package/CHANGELOG.md +22 -3
- package/dist/json/attributes.json +3634 -3622
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +146 -146
- package/dist/json/tags.json +3 -0
- package/dist/json/web-types.json +6658 -6608
- package/dist/vuetify-labs.css +2562 -2562
- package/dist/vuetify-labs.d.ts +39 -0
- package/dist/vuetify-labs.esm.js +77 -21
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +77 -21
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1734 -1734
- package/dist/vuetify.d.ts +50 -50
- package/dist/vuetify.esm.js +4 -4
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +4 -4
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +4 -4
- package/dist/vuetify.min.js.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +50 -50
- package/lib/labs/VDateInput/VDateInput.mjs +75 -18
- package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
- package/lib/labs/VDateInput/index.d.mts +43 -0
- package/lib/labs/components.d.mts +43 -4
- package/lib/util/helpers.mjs +1 -1
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +1 -1
package/lib/entry-bundler.mjs
CHANGED
@@ -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-
|
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
package/lib/index.d.mts
CHANGED
@@ -486,26 +486,26 @@ 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']
|
491
|
+
VApp: typeof import('vuetify/components')['VApp']
|
489
492
|
VAppBar: typeof import('vuetify/components')['VAppBar']
|
490
493
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
491
494
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
492
|
-
VBadge: typeof import('vuetify/components')['VBadge']
|
493
|
-
VApp: typeof import('vuetify/components')['VApp']
|
494
495
|
VAvatar: typeof import('vuetify/components')['VAvatar']
|
496
|
+
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
497
|
+
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
498
|
+
VBadge: typeof import('vuetify/components')['VBadge']
|
499
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
495
500
|
VBanner: typeof import('vuetify/components')['VBanner']
|
496
501
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
497
502
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
498
|
-
|
499
|
-
VAlert: typeof import('vuetify/components')['VAlert']
|
500
|
-
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
503
|
+
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
501
504
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
502
505
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
503
506
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
504
|
-
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
505
|
-
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
506
507
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
507
|
-
|
508
|
-
VBtn: typeof import('vuetify/components')['VBtn']
|
508
|
+
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
509
509
|
VCard: typeof import('vuetify/components')['VCard']
|
510
510
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
511
511
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
@@ -516,16 +516,10 @@ declare module 'vue' {
|
|
516
516
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
517
517
|
VCarousel: typeof import('vuetify/components')['VCarousel']
|
518
518
|
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
519
|
-
VCode: typeof import('vuetify/components')['VCode']
|
520
|
-
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
521
|
-
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
522
|
-
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
523
|
-
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
524
|
-
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
525
|
-
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
526
|
-
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
527
|
-
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
528
519
|
VChip: typeof import('vuetify/components')['VChip']
|
520
|
+
VCombobox: typeof import('vuetify/components')['VCombobox']
|
521
|
+
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
522
|
+
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
529
523
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
530
524
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
531
525
|
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
@@ -533,32 +527,38 @@ declare module 'vue' {
|
|
533
527
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
534
528
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
535
529
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
536
|
-
|
530
|
+
VCode: typeof import('vuetify/components')['VCode']
|
537
531
|
VCounter: typeof import('vuetify/components')['VCounter']
|
538
532
|
VDialog: typeof import('vuetify/components')['VDialog']
|
539
533
|
VDivider: typeof import('vuetify/components')['VDivider']
|
540
534
|
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
535
|
+
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
536
|
+
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
537
|
+
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
538
|
+
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
539
|
+
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
540
|
+
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
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
|
-
VFileInput: typeof import('vuetify/components')['VFileInput']
|
547
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
|
-
VImg: typeof import('vuetify/components')['VImg']
|
554
|
-
VField: typeof import('vuetify/components')['VField']
|
555
|
-
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
556
558
|
VInput: typeof import('vuetify/components')['VInput']
|
557
|
-
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
558
559
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
559
560
|
VItem: typeof import('vuetify/components')['VItem']
|
560
|
-
|
561
|
-
VMain: typeof import('vuetify/components')['VMain']
|
561
|
+
VLabel: typeof import('vuetify/components')['VLabel']
|
562
562
|
VList: typeof import('vuetify/components')['VList']
|
563
563
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
564
564
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -568,26 +568,26 @@ declare module 'vue' {
|
|
568
568
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
569
569
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
570
570
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
571
|
-
|
571
|
+
VMain: typeof import('vuetify/components')['VMain']
|
572
|
+
VMessages: typeof import('vuetify/components')['VMessages']
|
572
573
|
VMenu: typeof import('vuetify/components')['VMenu']
|
573
|
-
|
574
|
+
VOverlay: typeof import('vuetify/components')['VOverlay']
|
574
575
|
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
575
|
-
|
576
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
576
577
|
VPagination: typeof import('vuetify/components')['VPagination']
|
577
|
-
VOverlay: typeof import('vuetify/components')['VOverlay']
|
578
|
-
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
579
578
|
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
580
|
-
VRating: typeof import('vuetify/components')['VRating']
|
581
579
|
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
582
|
-
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
583
580
|
VSelect: typeof import('vuetify/components')['VSelect']
|
584
|
-
|
585
|
-
|
586
|
-
|
581
|
+
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
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
|
-
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
590
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']
|
591
591
|
VStepper: typeof import('vuetify/components')['VStepper']
|
592
592
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
593
593
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
@@ -595,34 +595,34 @@ declare module 'vue' {
|
|
595
595
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
596
596
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
597
597
|
VTable: typeof import('vuetify/components')['VTable']
|
598
|
+
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
598
599
|
VSwitch: typeof import('vuetify/components')['VSwitch']
|
599
|
-
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
600
600
|
VTab: typeof import('vuetify/components')['VTab']
|
601
601
|
VTabs: typeof import('vuetify/components')['VTabs']
|
602
602
|
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
603
603
|
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
604
|
-
|
605
|
-
VTimeline: typeof import('vuetify/components')['VTimeline']
|
606
|
-
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
604
|
+
VTextarea: typeof import('vuetify/components')['VTextarea']
|
607
605
|
VTextField: typeof import('vuetify/components')['VTextField']
|
608
606
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
609
607
|
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
610
608
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
611
|
-
|
609
|
+
VTooltip: typeof import('vuetify/components')['VTooltip']
|
612
610
|
VWindow: typeof import('vuetify/components')['VWindow']
|
613
611
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
612
|
+
VTimeline: typeof import('vuetify/components')['VTimeline']
|
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
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
623
624
|
VLayout: typeof import('vuetify/components')['VLayout']
|
624
625
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
625
|
-
VLazy: typeof import('vuetify/components')['VLazy']
|
626
626
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
627
627
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
628
628
|
VParallax: typeof import('vuetify/components')['VParallax']
|
@@ -660,18 +660,18 @@ declare module 'vue' {
|
|
660
660
|
VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
|
661
661
|
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
662
662
|
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
663
|
-
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
664
|
-
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
665
|
-
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
666
|
-
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
667
663
|
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
668
664
|
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
669
665
|
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
666
|
+
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
670
667
|
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
671
668
|
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
672
669
|
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
670
|
+
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
671
|
+
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
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
|
-
|
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) ?
|
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
|
107
|
+
if (menu.value && mobile.value) {
|
108
|
+
isEditingInput.value = true;
|
109
|
+
} else {
|
110
|
+
menu.value = true;
|
111
|
+
}
|
81
112
|
}
|
82
|
-
function
|
113
|
+
function onCancel() {
|
114
|
+
emit('cancel');
|
83
115
|
menu.value = false;
|
116
|
+
isEditingInput.value = false;
|
84
117
|
}
|
85
|
-
function
|
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":
|
154
|
+
"onBlur": onBlur,
|
103
155
|
"onClick:control": isInteractive.value ? onClick : undefined,
|
104
156
|
"onClick:prepend": isInteractive.value ? onClick : undefined,
|
105
|
-
"onUpdate:modelValue":
|
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":
|
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":
|
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":";AAAA;AAAA,SACSA,qBAAqB,EAAEC,YAAY;AAAA,SACnCC,oBAAoB,EAAEC,WAAW;AAAA,SACjCC,KAAK;AAAA,SACLC,mBAAmB,EAAEC,UAAU,sDAExC;AAAA,SACSC,OAAO;AAAA,SACPC,cAAc,EAAEC,QAAQ;AAAA,SACxBC,WAAW;AAAA,SACXC,SAAS;AAAA,SACTC,eAAe,8CAExB;AACA,SAASC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAA,SACtCC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,gCAErE;AAKA;AAYA,OAAO,MAAMC,mBAAmB,GAAGH,YAAY,CAAC;EAC9CI,WAAW,EAAEC,OAAO;EACpBC,QAAQ,EAAE;IACRC,IAAI,EAAEC,MAA6C;IACnDC,OAAO,EAAE;EACX,CAAC;EACD,GAAGnB,cAAc,CAAC,CAAC;EACnB,GAAGR,qBAAqB,CAAC,CAAC;EAC1B,GAAGK,mBAAmB,CAAC;IACrBuB,WAAW,EAAE,YAAY;IACzBC,WAAW,EAAE;EACf,CAAC,CAAC;EACF,GAAGZ,IAAI,CAACf,oBAAoB,CAAC;IAC3B4B,UAAU,EAAE,IAAI;IAChBC,kBAAkB,EAAE;EACtB,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC;AACvC,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,MAAMC,UAAU,GAAGhB,gBAAgB,CAAkB,CAAC,CAAC;EAC5DiB,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAEb,mBAAmB,CAAC,CAAC;EAE5Bc,KAAK,EAAE;IACL,mBAAmB,EAAGC,GAAW,IAAK;EACxC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAE,CAAC,GAAG7B,SAAS,CAAC,CAAC;IACzB,MAAM8B,OAAO,GAAGlC,OAAO,CAAC,CAAC;IACzB,MAAM;MAAEmC,SAAS;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAGnC,QAAQ,CAACyB,KAAK,CAAC;IAClD,MAAMW,KAAK,GAAGjC,eAAe,CAC3BsB,KAAK,EACL,YAAY,EACZA,KAAK,CAACY,QAAQ,GAAG,EAAE,GAAG,IAAI,EAC1BV,GAAG,IAAIW,KAAK,CAACC,OAAO,CAACZ,GAAG,CAAC,GAAGA,GAAG,CAACa,GAAG,CAACC,IAAI,IAAIT,OAAO,CAACU,QAAQ,CAACD,IAAI,CAAC,CAAC,GAAGd,GAAG,GAAGK,OAAO,CAACU,QAAQ,CAACf,GAAG,CAAC,GAAGA,GAAG,EACvGA,GAAG,IAAIW,KAAK,CAACC,OAAO,CAACZ,GAAG,CAAC,GAAGA,GAAG,CAACa,GAAG,CAACC,IAAI,IAAIT,OAAO,CAACW,IAAI,CAACF,IAAI,CAAC,CAAC,GAAGd,GAAG,GAAGK,OAAO,CAACW,IAAI,CAAChB,GAAG,CAAC,GAAGA,GAC9F,CAAC;IAED,MAAMiB,IAAI,GAAGtC,UAAU,CAAC,KAAK,CAAC;IAC9B,MAAMuC,aAAa,GAAGxC,GAAG,CAAC,CAAC;IAE3B,MAAMyC,OAAO,GAAG1C,QAAQ,CAAC,MAAM;MAC7B,MAAM2C,KAAK,GAAGpC,WAAW,CAACyB,KAAK,CAACW,KAAK,CAAC;MAEtC,IAAI,CAACA,KAAK,CAACC,MAAM,EAAE,OAAO,IAAI;MAE9B,IAAIvB,KAAK,CAACY,QAAQ,KAAK,IAAI,EAAE;QAC3B,OAAON,CAAC,CAAC,mCAAmC,EAAEgB,KAAK,CAACC,MAAM,CAAC;MAC7D;MAEA,IAAIvB,KAAK,CAACY,QAAQ,KAAK,OAAO,EAAE;QAC9B,MAAMY,KAAK,GAAGF,KAAK,CAAC,CAAC,CAAC;QACtB,MAAMG,GAAG,GAAGH,KAAK,CAACA,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC;QAEnC,OAAOhB,OAAO,CAACmB,OAAO,CAACF,KAAK,CAAC,IAAIjB,OAAO,CAACmB,OAAO,CAACD,GAAG,CAAC,GACjD,GAAGlB,OAAO,CAACoB,MAAM,CAACpB,OAAO,CAACW,IAAI,CAACM,KAAK,CAAC,EAAE,cAAc,CAAC,MAAMjB,OAAO,CAACoB,MAAM,CAACpB,OAAO,CAACW,IAAI,CAACO,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,GAC/G,EAAE;MACR;MAEA,OAAOlB,OAAO,CAACmB,OAAO,CAACf,KAAK,CAACW,KAAK,CAAC,GAAGf,OAAO,CAACoB,MAAM,CAACpB,OAAO,CAACW,IAAI,CAACP,KAAK,CAACW,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE;IACtG,CAAC,CAAC;IAEF,MAAMM,aAAa,GAAGjD,QAAQ,CAAC,MAAM,CAACqB,KAAK,CAAC6B,QAAQ,IAAI,CAAC7B,KAAK,CAAC8B,QAAQ,CAAC;IAExE,SAASC,SAASA,CAAEC,CAAgB,EAAE;MACpC,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;MAEvB,IAAI,CAACd,IAAI,CAACG,KAAK,IAAI,CAACd,SAAS,CAACc,KAAK,EAAE;QACnCH,IAAI,CAACG,KAAK,GAAG,IAAI;QAEjB;MACF;MAEA,MAAMY,MAAM,GAAGF,CAAC,CAACE,MAA0B;MAE3CvB,KAAK,CAACW,KAAK,GAAGY,MAAM,CAACZ,KAAK,KAAK,EAAE,GAAG,IAAI,GAAGY,MAAM,CAACZ,KAAK;IACzD;IAEA,SAASa,OAAOA,CAAEH,CAAa,EAAE;MAC/BA,CAAC,CAACI,cAAc,CAAC,CAAC;MAClBJ,CAAC,CAACK,eAAe,CAAC,CAAC;MAEnBlB,IAAI,CAACG,KAAK,GAAG,IAAI;IACnB;IAEA,SAASgB,MAAMA,CAAA,EAAI;MACjBnB,IAAI,CAACG,KAAK,GAAG,KAAK;IACpB;IAEA,SAASiB,aAAaA,CAAEjB,KAAa,EAAE;MACrC,IAAIA,KAAK,IAAI,IAAI,EAAE;MAEnBX,KAAK,CAACW,KAAK,GAAG,IAAI;IACpB;IAEArC,SAAS,CAAC,MAAM;MACd,MAAMuD,gBAAgB,GAAGzE,YAAY,CAAC0E,WAAW,CAACzC,KAAK,CAAC;MACxD,MAAM0C,eAAe,GAAGzE,WAAW,CAACwE,WAAW,CAAC1D,IAAI,CAACiB,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;MAC/F,MAAM2C,cAAc,GAAGvE,UAAU,CAACqE,WAAW,CAACzC,KAAK,CAAC;MAEpD,OAAA4C,YAAA,CAAAxE,UAAA,EAAAyE,WAAA;QAAA,OAEUzB;MAAa,GACduB,cAAc;QAAA,SACX3C,KAAK,CAAC8C,KAAK;QAAA,SACX9C,KAAK,CAAC+C,KAAK;QAAA,cACN1B,OAAO,CAACC,KAAK;QAAA,aACdM,aAAa,CAACN,KAAK,GAAGS,SAAS,GAAGiB,SAAS;QAAA,WAC7C7B,IAAI,CAACG,KAAK,IAAId,SAAS,CAACc,KAAK;QAAA,WAC7Bb,KAAK;QAAA,UACNC,IAAI;QAAA,mBACKkB,aAAa,CAACN,KAAK,GAAGa,OAAO,GAAGa,SAAS;QAAA,mBACzCpB,aAAa,CAACN,KAAK,GAAGa,OAAO,GAAGa,SAAS;QAAA,uBACrCT;MAAa;QAGjC,GAAGlC,KAAK;QACRZ,OAAO,EAAEA,CAAA,KAAAmD,YAAA,CAAAK,SAAA,SAAAL,YAAA,CAAA1E,KAAA;UAAA,cAGOiD,IAAI,CAACG,KAAK;UAAA,uBAAA4B,MAAA,IAAV/B,IAAI,CAACG,KAAK,GAAA4B,MAAA;UAAA;UAAA;UAAA,SAGZ1C,SAAS,CAACc,KAAK;UAAA,YACZtB,KAAK,CAACV,QAAQ;UAAA,uBACH,KAAK;UAAA,eACb;QAAK;UAAAG,OAAA,EAAAA,CAAA,MAAAmD,YAAA,CAAA7E,YAAA,EAAA8E,WAAA,CAGZL,gBAAgB;YAAA,cACX7B,KAAK,CAACW,KAAK;YAAA,uBAAA4B,MAAA,IAAXvC,KAAK,CAACW,KAAK,GAAA4B,MAAA;YAAA,UACZZ,MAAM;YAAA,YACJa,CAAA,KAAMhC,IAAI,CAACG,KAAK,GAAG;UAAK;YAGjC7B,OAAO,EAAE2D,KAAA,IAA8D;cAAA,IAA7D;gBAAEC,OAAO;gBAAE1C,KAAK,EAAE2C,UAAU;gBAAEC,IAAI;gBAAEC,MAAM;gBAAEC;cAAW,CAAC,GAAAL,KAAA;cAChE,OAAAR,YAAA,CAAA3E,WAAA,EAAA4E,WAAA,CAESH,eAAe;gBAAA,cACP1C,KAAK,CAACZ,WAAW,GAAGuB,KAAK,CAACW,KAAK,GAAGgC,UAAU,CAAChC,KAAK;gBAAA,uBACzCpB,GAAG,IAAI;kBAC3B,IAAI,CAACF,KAAK,CAACZ,WAAW,EAAE;oBACtBkE,UAAU,CAAChC,KAAK,GAAGpB,GAAG;kBACxB,CAAC,MAAM;oBACLS,KAAK,CAACW,KAAK,GAAGpB,GAAG;oBAEjB,IAAI,CAACF,KAAK,CAACY,QAAQ,EAAEO,IAAI,CAACG,KAAK,GAAG,KAAK;kBACzC;gBACF,CAAC;gBAAA,eACcU,CAAa,IAAKA,CAAC,CAACI,cAAc,CAAC;cAAC;gBAGjDiB,OAAO,EAAE,CAACrD,KAAK,CAACZ,WAAW,GAAG,MAAMiB,KAAK,CAACgD,OAAO,GAAG;kBAAEE,IAAI;kBAAEC,MAAM;kBAAEC;gBAAW,CAAC,CAAC,IAAIJ,OAAO,CAAC,CAAC,GAAGL;cAAS;YAIlH;UAAC;QAAA,IAKL3C,KAAK,CAACZ,OAAO,GAAG,CAAC;MAEtB;IAIT,CAAC,CAAC;IAEF,OAAOjB,WAAW,CAAC,CAAC,CAAC,EAAE4C,aAAa,CAAC;EACvC;AACF,CAAC,CAAC","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":[]}
|