-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDatePicker.vue
38 lines (31 loc) · 1.12 KB
/
DatePicker.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<script setup lang="ts">
import type { VueDatePickerProps } from '@vuepic/vue-datepicker'
import type { ComponentExposed } from 'vue-component-type-helpers'
import VueDatePicker from '@vuepic/vue-datepicker'
interface DatePickerProps extends /* @vue-ignore */ VueDatePickerProps {}
const props = defineProps<Partial<DatePickerProps>>()
const { locale } = useI18n()
const value = defineModel<VueDatePickerProps['modelValue']>('modelValue')
const datePickerRef = useTemplateRef<ComponentExposed<typeof VueDatePicker>>('datePickerRef')
const format = computed(() => props.enableTimePicker ? 'yyyy/MM/dd HH:mm' : 'yyyy/MM/dd')
defineExpose({
clearValue: () => datePickerRef.value?.clearValue(),
})
</script>
<template>
<VueDatePicker
v-bind="props"
ref="datePickerRef"
v-model="value"
:locale
:max-date="props.maxDate ?? new Date()"
:dark="isDark"
:clearable="!!props.clearable"
:enable-time-picker="!!props.enableTimePicker"
:format="props.format ?? format"
:state="undefined"
@update:model-value="datePickerRef?.closeMenu()"
>
<template #action-preview />
</VueDatePicker>
</template>