DatePicker.vue 1.5 KB

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