diff --git a/assets/vue/app/domain/manga/presentation/components/MangaVolume.vue b/assets/vue/app/domain/manga/presentation/components/MangaVolume.vue index d8b4ab7..241bc93 100644 --- a/assets/vue/app/domain/manga/presentation/components/MangaVolume.vue +++ b/assets/vue/app/domain/manga/presentation/components/MangaVolume.vue @@ -83,7 +83,7 @@ ChevronUpIcon, MagnifyingGlassIcon } from '@heroicons/vue/24/outline'; -import { ref } from 'vue'; +import { ref, watch } from 'vue'; import { useMangaStore } from '../../application/store/mangaStore'; import MangaChapterList from './MangaChapterList.vue'; @@ -106,13 +106,21 @@ import MangaChapterList from './MangaChapterList.vue'; } }); + const emit = defineEmits(['toggle']); + const store = useMangaStore(); const isOpen = ref(props.isOpen); const isSearching = ref(false); const isDownloading = ref(false); + // Synchroniser l'état local avec la prop + watch(() => props.isOpen, (newValue) => { + isOpen.value = newValue; + }); + const toggleVolume = () => { isOpen.value = !isOpen.value; + emit('toggle', props.volume.number); }; const handleSearch = async () => { diff --git a/assets/vue/app/domain/manga/presentation/components/MangaVolumeList.vue b/assets/vue/app/domain/manga/presentation/components/MangaVolumeList.vue index e04be61..4623b87 100644 --- a/assets/vue/app/domain/manga/presentation/components/MangaVolumeList.vue +++ b/assets/vue/app/domain/manga/presentation/components/MangaVolumeList.vue @@ -6,12 +6,14 @@ :volume="volume" :mangaSlug="mangaSlug" :mangaId="mangaId" - :isOpen="index === 0" /> + :isOpen="expandedVolumes.has(volume.number)" + @toggle="handleVolumeToggle" /> diff --git a/assets/vue/app/domain/manga/presentation/pages/MangaDetails.vue b/assets/vue/app/domain/manga/presentation/pages/MangaDetails.vue index 070d4c2..5ba9664 100644 --- a/assets/vue/app/domain/manga/presentation/pages/MangaDetails.vue +++ b/assets/vue/app/domain/manga/presentation/pages/MangaDetails.vue @@ -27,7 +27,13 @@