Files
tranga-website/website/app/components/ChaptersList.vue

50 lines
1.7 KiB
Vue

<template>
<UPageList>
<UPageCard
v-for="chapter in chapters"
:key="chapter.key"
orientation="horizontal"
:ui="{ container: 'p-2 sm:p-2' }">
<template #title>
<p class="text-primary">{{ chapter.title }}</p>
</template>
<template #leading>
<p class="mr-1">Downloaded:</p>
<Icon v-if="chapter.downloaded" name="i-lucide-circle-check-big" />
<Icon v-else name="i-lucide-circle-x" />
</template>
<template #footer>
<p class="text-secondary">
<span v-if="chapter.volume" class="mr-1">Vol. {{ chapter.volume }}</span>
<span class="inline">Ch. {{ chapter.chapterNumber }}</span>
</p>
</template>
<template #description>
<p>{{ chapter.fileName }}</p>
</template>
<template #default>
<div>
<MangaconnectorIcon
v-for="mangaconnectorId in chapter.mangaConnectorIds.sort((a, b) =>
a.mangaConnectorName < b.mangaConnectorName ? -1 : 1
)"
v-bind="mangaconnectorId"
:key="mangaconnectorId.key" />
</div>
</template>
</UPageCard>
</UPageList>
</template>
<script setup lang="ts">
export interface ChaptersListProps {
mangaId: string;
}
const props = defineProps<ChaptersListProps>();
const { data: chapters } = await useApi('/v2/Manga/{MangaId}/Chapters', {
path: { MangaId: props.mangaId },
key: FetchKeys.Chapters.All,
});
</script>