UNPKG

element-plus

Version:

A Component Library for Vue3.0

56 lines (53 loc) 1.53 kB
import { defineComponent, h, ref, provide } from 'vue' import dayjs from 'dayjs' import customParseFormat from 'dayjs/plugin/customParseFormat' import { DEFAULT_FORMATS_TIME } from './common/constant' import Picker from './common/picker.vue' import TimePickPanel from './time-picker-com/panel-time-pick.vue' import TimeRangePanel from './time-picker-com/panel-time-range.vue' import { defaultProps } from './common/props' dayjs.extend(customParseFormat) export default defineComponent({ name: 'ElTimePicker', install: null, props: { ...defaultProps, isRange: { type: Boolean, default: false, }, }, emits: ['update:modelValue'], setup(props, ctx) { const commonPicker = ref(null) const type = props.isRange ? 'timerange' : 'time' const panel = props.isRange ? TimeRangePanel : TimePickPanel const refProps = { ...props, focus: () => { commonPicker.value?.handleFocus() }, blur: () => { commonPicker.value?.handleBlur() }, } provide('ElPopperOptions', props.popperOptions) ctx.expose(refProps) return () => { const format = props.format ?? DEFAULT_FORMATS_TIME return h( Picker, { ...props, // allow format to be overwrite format, type, ref: commonPicker, 'onUpdate:modelValue': value => ctx.emit('update:modelValue', value), }, { default: scopedProps => h(panel, scopedProps), }, ) } }, })