Fixed calendar layout reactivity issue

This commit is contained in:
2026-01-15 19:57:29 -05:00
parent 81bac9bcfb
commit 7d5e9c33bf
2 changed files with 12 additions and 4 deletions

View File

@@ -31,9 +31,14 @@ watch(
{ immediate: true } { immediate: true }
); );
watch(loaded, (value) => {
if (value) emit('load');
});
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'close'): void (e: 'close'): void
(e: 'reload'): void (e: 'reload'): void
(e: 'load'): void
(e: 'edit', event: CalendarEvent): void (e: 'edit', event: CalendarEvent): void
}>() }>()
@@ -302,11 +307,14 @@ defineExpose({ forceReload })
</section> </section>
</div> </div>
</div> </div>
<div v-else class="flex justify-center h-full items-center"> <div v-else class="relative flex justify-center items-center h-full">
<Button variant="ghost" size="icon" @click="emit('close')"> <!-- Close button (top-right) -->
<Button variant="ghost" size="icon" class="absolute top-2 right-2" @click="emit('close')">
<X class="size-5" /> <X class="size-5" />
</Button> </Button>
<Spinner class="size-8"></Spinner> <!-- Spinner (centered) -->
<Spinner class="size-8" />
</div> </div>
</template> </template>

View File

@@ -211,7 +211,7 @@ onMounted(() => {
class="3xl:w-lg 2xl:w-md border-l bg-card text-foreground flex flex-col overflow-auto scrollbar-themed" class="3xl:w-lg 2xl:w-md border-l bg-card text-foreground flex flex-col overflow-auto scrollbar-themed"
:style="{ height: 'calc(100vh - 61px)', position: 'sticky', top: '64px' }"> :style="{ height: 'calc(100vh - 61px)', position: 'sticky', top: '64px' }">
<ViewCalendarEvent ref="eventViewRef" :key="currentEventID" @close="() => { router.push('/calendar'); }" <ViewCalendarEvent ref="eventViewRef" :key="currentEventID" @close="() => { router.push('/calendar'); }"
@reload="loadEvents()" @edit="(val) => { dialogRef.openDialog(null, 'edit', val) }"> @reload="loadEvents()" @load="calendarRef.getApi().updateSize()" @edit="(val) => { dialogRef.openDialog(null, 'edit', val) }">
</ViewCalendarEvent> </ViewCalendarEvent>
</aside> </aside>
</div> </div>