From a2dbcc868cead588d72126fe15696120066196d3 Mon Sep 17 00:00:00 2001 From: William Chong Date: Mon, 2 Feb 2026 02:23:04 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=9A=B8=20Add=20nav=20arrows=20in=20ca?= =?UTF-8?q?rousel=20modal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/BookCoverCarousel.vue | 76 +++++++++++++++++++++----------- 1 file changed, 50 insertions(+), 26 deletions(-) diff --git a/components/BookCoverCarousel.vue b/components/BookCoverCarousel.vue index 2f94bc72..fbb0cf5e 100644 --- a/components/BookCoverCarousel.vue +++ b/components/BookCoverCarousel.vue @@ -64,33 +64,50 @@ :close="{ color: 'neutral', variant: 'ghost', class: 'text-white' }" > @@ -141,13 +158,20 @@ const props = defineProps({ }) const isModalOpen = ref(false) -const modalItem = ref(null) +const modalItemIndex = ref(0) +const modalItem = computed(() => carouselItems.value[modalItemIndex.value] || null) function openModal(item: CarouselItem) { - modalItem.value = item + const index = carouselItems.value.indexOf(item) + modalItemIndex.value = index >= 0 ? index : 0 isModalOpen.value = true } +function navigateModal(direction: number) { + const len = carouselItems.value.length + modalItemIndex.value = (modalItemIndex.value + direction + len) % len +} + const carouselItems = computed(() => { const items: CarouselItem[] = [] From a2f8d019a70ac6225c64f1bc470ba32a25553857 Mon Sep 17 00:00:00 2001 From: William Chong Date: Mon, 2 Feb 2026 15:27:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=8E=A8=20Move=20relative=20wrapper=20?= =?UTF-8?q?into=20modal=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/BookCoverCarousel.vue | 60 +++++++++++++++++--------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/components/BookCoverCarousel.vue b/components/BookCoverCarousel.vue index fbb0cf5e..899879f3 100644 --- a/components/BookCoverCarousel.vue +++ b/components/BookCoverCarousel.vue @@ -59,44 +59,45 @@