diff --git a/frontend/components/Form/DatePicker.vue b/frontend/components/Form/DatePicker.vue index d04a28b..06ded47 100644 --- a/frontend/components/Form/DatePicker.vue +++ b/frontend/components/Form/DatePicker.vue @@ -1,38 +1,15 @@ @@ -51,88 +28,20 @@ }, }); - const selected = useVModel(props, "modelValue", emit); - const dateText = computed(() => { - if (!validDate(selected.value)) { - return ""; - } - - if (selected.value) { - return selected.value.toLocaleDateString(); - } - - return ""; - }); - - const time = ref(new Date()); - function resetTime() { - time.value = new Date(); - } - - const label = ref(); - onClickOutside(label, () => { - resetTime(); - }); - - const month = computed(() => { - return time.value.toLocaleString("default", { month: "long" }); - }); - - const year = computed(() => { - return time.value.getFullYear(); - }); - - function nextMonth() { - time.value.setMonth(time.value.getMonth() + 1); - time.value = new Date(time.value); - } - - function prevMonth() { - time.value.setMonth(time.value.getMonth() - 1); - time.value = new Date(time.value); - } - - const daysIdx = computed(() => { - return ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]; - }); - - function select(e: MouseEvent, day: Date) { - selected.value = day; - // @ts-ignore - this is a vue3 bug - e.target.blur(); - resetTime(); - } - - type DayEntry = { - number: number | string; - date: Date; - }; - - function daysInMonth(month: number, year: number) { - return new Date(year, month, 0).getDate(); - } - - const days = computed(() => { - const days = []; - - const totalDays = daysInMonth(time.value.getMonth() + 1, time.value.getFullYear()); - - const firstDay = new Date(time.value.getFullYear(), time.value.getMonth(), 1).getDay(); - - for (let i = 0; i < firstDay; i++) { - days.push({ - number: "", - date: new Date(), - }); - } - - for (let i = 1; i <= totalDays; i++) { - days.push({ - number: i, - date: new Date(time.value.getFullYear(), time.value.getMonth(), i), - }); - } - - return days; + const selected = computed({ + get() { + // return modelValue as string as YYYY-MM-DD or null + return props.modelValue ? props.modelValue.toISOString().split("T")[0] : null; + }, + set(value: string | null) { + // emit update:modelValue with a Date object or null + emit("update:modelValue", value ? new Date(value) : null); + }, }); + +