| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <!--
- Sélecteur de dates
- @see https://vue3datepicker.com/
- -->
- <template>
- <main>
- <VueDatePicker
- :model-value="modelValue"
- :locale="i18n.locale.value"
- :format-locale="fnsLocale"
- :format="dateFormat"
- :enable-time-picker="withTime"
- :teleport="true"
- text-input
- :auto-apply="true"
- :select-text="$t('select')"
- :cancel-text="$t('cancel')"
- :disabled="readonly"
- :position="position"
- @update:model-value="onUpdate"
- />
- </main>
- </template>
- <script setup lang="ts">
- import DateUtils, {supportedLocales} from "~/services/utils/dateUtils";
- import type {PropType} from "@vue/runtime-core";
- const i18n = useI18n()
- const fnsLocale = DateUtils.getFnsLocale(i18n.locale.value as supportedLocales)
- const props = defineProps({
- modelValue: {
- type: Object as PropType<Date>,
- required: false,
- default: null
- },
- readonly: {
- type: Boolean,
- required: false,
- default: false
- },
- format: {
- type: String,
- required: false,
- default: null
- },
- withTime: {
- type: Boolean,
- required: false,
- default: false
- },
- /**
- * @see https://vue3datepicker.com/props/positioning/#position
- */
- position: {
- type: String as PropType<'left' | 'center' | 'right'>,
- required: false,
- default: 'center'
- }
- })
- const defaultFormatPattern = props.withTime ?
- DateUtils.getFormatPattern(i18n.locale.value as supportedLocales) :
- DateUtils.getShortFormatPattern(i18n.locale.value as supportedLocales)
- const dateFormat: Ref<string> = ref(props.format ?? defaultFormatPattern)
- const emit = defineEmits(['update:model-value'])
- const onUpdate = (event: Date) => {
- emit('update:model-value', event)
- }
- </script>
- <style scoped>
- </style>
|