60 lines
1.3 KiB
Vue
60 lines
1.3 KiB
Vue
<template>
|
|
<div v-bind="$attrs">
|
|
<q-input v-model="selectedDate" :label="displayName" :placeholder="placeholder" label-color="primary" mask="date" :rules="['date']" stack-label>
|
|
<template v-slot:append>
|
|
<q-icon name="event" class="cursor-pointer">
|
|
<q-popup-proxy cover transition-show="scale" transition-hide="scale">
|
|
<q-date v-model="selectedDate">
|
|
<div class="row items-center justify-end">
|
|
<q-btn v-close-popup label="Close" color="primary" flat />
|
|
</div>
|
|
</q-date>
|
|
</q-popup-proxy>
|
|
</q-icon>
|
|
</template>
|
|
</q-input>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { defineComponent, ref ,watchEffect} from 'vue';
|
|
|
|
export default defineComponent({
|
|
name: 'DatePicker',
|
|
inheritAttrs:false,
|
|
props: {
|
|
displayName:{
|
|
type: String,
|
|
default: '',
|
|
},
|
|
name:{
|
|
type: String,
|
|
default: '',
|
|
},
|
|
placeholder: {
|
|
type: String,
|
|
default: '',
|
|
},
|
|
hint:{
|
|
type: String,
|
|
default: '',
|
|
},
|
|
modelValue: {
|
|
type: String,
|
|
default: '',
|
|
},
|
|
},
|
|
setup(props, { emit }) {
|
|
const selectedDate = ref(props.modelValue);
|
|
|
|
watchEffect(() => {
|
|
emit('update:modelValue', selectedDate.value);
|
|
});
|
|
|
|
return {
|
|
selectedDate
|
|
};
|
|
}
|
|
});
|
|
</script>
|