vuetify
Version:
Vue Material Component Framework
112 lines (111 loc) • 4.09 kB
JavaScript
import { createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from "vue";
// Styles
import "./VDateCard.css";
// Components
import { makeVDatePickerControlsProps, VDatePickerControls } from "./VDatePickerControls.mjs";
import { makeVDatePickerMonthProps, VDatePickerMonth } from "./VDatePickerMonth.mjs";
import { makeVDatePickerYearsProps, VDatePickerYears } from "./VDatePickerYears.mjs";
import { VFadeTransition } from "../../components/transitions/index.mjs";
import { VBtn } from "../../components/VBtn/index.mjs";
import { VCard } from "../../components/VCard/VCard.mjs"; // Composables
import { createDatePicker } from "./composables.mjs";
import { useLocale } from "../../composables/locale.mjs";
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.mjs"; // Utilities
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVDateCardProps = propsFactory({
cancelText: {
type: String,
default: '$vuetify.datePicker.cancel'
},
okText: {
type: String,
default: '$vuetify.datePicker.ok'
},
inputMode: {
type: String,
default: 'calendar'
},
hideActions: Boolean,
...makeVDatePickerControlsProps(),
...makeVDatePickerMonthProps(),
...makeVDatePickerYearsProps(),
...makeTransitionProps({
transition: {
component: VFadeTransition,
leaveAbsolute: true
}
})
}, 'VDateCard');
export const VDateCard = genericComponent()({
name: 'VDateCard',
props: makeVDateCardProps(),
emits: {
save: () => true,
cancel: () => true,
'update:displayDate': value => true,
'update:inputMode': value => true,
'update:modelValue': value => true,
'update:viewMode': mode => true
},
setup(props, _ref) {
let {
emit,
slots
} = _ref;
const model = useProxiedModel(props, 'modelValue');
const {
t
} = useLocale();
createDatePicker(props);
function onDisplayUpdate(val) {
emit('update:displayDate', val);
}
function onViewModeUpdate(val) {
emit('update:viewMode', val);
}
function onSave() {
emit('update:modelValue', model.value);
emit('save');
}
function onCancel() {
emit('cancel');
}
useRender(() => {
const [cardProps] = VCard.filterProps(props);
const [datePickerControlsProps] = VDatePickerControls.filterProps(props);
const [datePickerMonthProps] = VDatePickerMonth.filterProps(props);
const [datePickerYearsProps] = VDatePickerYears.filterProps(props);
const hasActions = !props.hideActions || !!slots.actions;
return _createVNode(VCard, _mergeProps(cardProps, {
"class": "v-date-card"
}), {
...slots,
default: () => _createVNode(_Fragment, null, [_createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {
"onUpdate:displayDate": onDisplayUpdate,
"onUpdate:viewMode": onViewModeUpdate
}), null), _createVNode(MaybeTransition, {
"transition": props.transition
}, {
default: () => [props.viewMode === 'month' ? _createVNode(VDatePickerMonth, _mergeProps(datePickerMonthProps, {
"modelValue": model.value,
"onUpdate:modelValue": $event => model.value = $event,
"onUpdate:displayDate": onDisplayUpdate
}), null) : _createVNode(VDatePickerYears, _mergeProps(datePickerYearsProps, {
"onUpdate:displayDate": onDisplayUpdate,
"onUpdate:viewMode": onViewModeUpdate
}), null)]
})]),
actions: !hasActions ? undefined : () => _createVNode(_Fragment, null, [slots.actions?.() ?? _createVNode(_Fragment, null, [_createVNode(VBtn, {
"onClick": onCancel,
"text": t(props.cancelText)
}, null), _createVNode(VBtn, {
"onClick": onSave,
"text": t(props.okText)
}, null)])])
});
});
return {};
}
});
//# sourceMappingURL=VDateCard.mjs.map