From 7468374bb50a47f0b28b71992af0fcbd244b3b6b Mon Sep 17 00:00:00 2001 From: Alexis Date: Sat, 9 Aug 2025 16:24:59 +0200 Subject: [PATCH 1/3] Added update logic for single day events --- app/components/calendar/event/Event.vue | 31 ++++++- .../calendar/state/monthly/DayTile.vue | 84 +++++++++++++++++-- app/stores/CalendarStore.ts | 8 +- 3 files changed, 110 insertions(+), 13 deletions(-) diff --git a/app/components/calendar/event/Event.vue b/app/components/calendar/event/Event.vue index b20538b..14f08a7 100644 --- a/app/components/calendar/event/Event.vue +++ b/app/components/calendar/event/Event.vue @@ -2,14 +2,17 @@ import { cn } from "@/lib/utils" import type { RPGDate } from "@@/models/Date" import type { CalendarEvent } from "@@/models/CalendarEvent" +import { ja } from "zod/v4/locales"; const props = defineProps<{ event: CalendarEvent tileDate: RPGDate }>() -const { areDatesIdentical, revealEditEventModal, revealDeleteEventModal } = useCalendar() -const { lastActiveEvent } = storeToRefs(useCalendar()) +const buttonRef = useTemplateRef('buttonRef') + +const { areDatesIdentical, revealEditEventModal, revealDeleteEventModal, resetSkeleton } = useCalendar() +const { lastActiveEvent, eventSkeleton, isDraggingEvent } = storeToRefs(useCalendar()) const spansMultipleDays = computed(() => Boolean(props.event.startDate && props.event.endDate)) const isStartEvent = computed(() => spansMultipleDays.value && areDatesIdentical(props.tileDate, props.event.startDate)) @@ -49,13 +52,29 @@ onMounted(() => { handleDelete() }) }) + +// Draggable logic +const isTileDragging = shallowRef(false) + +function handleDragStart() { + isTileDragging.value = true + isDraggingEvent.value = true + eventSkeleton.value = structuredClone(toRaw(props.event)) + handleClosePopover() +} +function handleDragEnd() { + isTileDragging.value = false + isDraggingEvent.value = false +}