diff --git a/src/App.vue b/src/App.vue index 0f7a129..4fceb40 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,12 +1,10 @@ diff --git a/src/components/CalendarView.vue b/src/components/CalendarView.vue index 5a5f7c1..b34fef2 100644 --- a/src/components/CalendarView.vue +++ b/src/components/CalendarView.vue @@ -14,9 +14,20 @@ import { toLocalString, fromLocalString, DEFAULT_TZ } from '@/utils/date' import { addDays, differenceInWeeks } from 'date-fns' import { createVirtualWeekManager } from '@/plugins/virtualWeeks' import { rtl } from '@/utils/locale' +import EventDialog from '@/components/EventDialog.vue' const calendarStore = useCalendarStore() -const emit = defineEmits(['create-event', 'edit-event']) +defineEmits([]) // previously emitted create/edit events externally +import { shallowRef } from 'vue' +const eventDialogRef = shallowRef(null) +function openCreateEventDialog(eventData) { + if (!eventDialogRef.value) return + const selectionData = { startDate: eventData.startDate, dayCount: eventData.dayCount } + setTimeout(() => eventDialogRef.value?.openCreateDialog(selectionData), 30) +} +function openEditEventDialog(eventClickPayload) { + eventDialogRef.value?.openEditDialog(eventClickPayload) +} const viewport = ref(null) const viewportHeight = ref(600) const rowHeight = ref(64) @@ -207,7 +218,7 @@ function finalizeDragAndCreate() { const eventData = createEventFromSelection() if (eventData) { clearSelection() - emit('create-event', eventData) + openCreateEventDialog(eventData) } removeGlobalTouchListeners() } @@ -373,7 +384,7 @@ const handleDayMouseUp = (d) => { const ev = createEventFromSelection() if (ev) { clearSelection() - emit('create-event', ev) + openCreateEventDialog(ev) } } const handleDayTouchStart = (d) => { @@ -383,7 +394,7 @@ const handleDayTouchStart = (d) => { } const handleEventClick = (payload) => { - emit('edit-event', payload) + openEditEventDialog(payload) } // Heuristic: rotate month label (180deg) only for predominantly Latin text. @@ -489,6 +500,7 @@ window.addEventListener('resize', () => { + diff --git a/src/components/EventDialog.vue b/src/components/EventDialog.vue index a4c503d..82712f3 100644 --- a/src/components/EventDialog.vue +++ b/src/components/EventDialog.vue @@ -594,8 +594,10 @@ const recurrenceSummary = computed(() => {