DatePicker.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <!--
  2. Sélecteur de dates
  3. @see https://vuetifyjs.com/en/components/date-pickers/
  4. -->
  5. <template>
  6. <main>
  7. <!-- @see https://vue3datepicker.com/props/modes/#multi-calendars -->
  8. <VueDatePicker
  9. :model-value="modelValue"
  10. :locale="i18n.locale.value"
  11. :format-locale="fnsLocale"
  12. :format="dateFormat"
  13. :enable-time-picker="withTime"
  14. :teleport="true"
  15. text-input
  16. :auto-apply="true"
  17. :select-text="$t('select')"
  18. :cancel-text="$t('cancel')"
  19. @update:model-value="onUpdate"
  20. />
  21. </main>
  22. </template>
  23. <script setup lang="ts">
  24. import {computed} from "@vue/reactivity";
  25. import DateUtils, {supportedLocales} from "~/services/utils/dateUtils";
  26. import {PropType} from "@vue/runtime-core";
  27. const i18n = useI18n()
  28. const fnsLocale = DateUtils.getFnsLocale(i18n.locale.value as supportedLocales)
  29. const defaultFormatPattern = DateUtils.getFormatPattern(i18n.locale.value as supportedLocales)
  30. const props = defineProps({
  31. modelValue: {
  32. type: Object as PropType<Date>,
  33. required: false,
  34. default: null
  35. },
  36. readonly: {
  37. type: Boolean,
  38. required: false,
  39. default: false
  40. },
  41. format: {
  42. type: String,
  43. required: false,
  44. default: null
  45. },
  46. withTime: {
  47. type: Boolean,
  48. required: false,
  49. default: false
  50. }
  51. })
  52. const dateFormat: Ref<string> = ref(props.format ?? defaultFormatPattern)
  53. const emit = defineEmits(['update:model-value'])
  54. const onUpdate = (event: Date) => {
  55. emit('update:model-value', event)
  56. }
  57. </script>
  58. <style scoped>
  59. </style>