mirror of
https://github.com/C9Glax/tranga-website.git
synced 2025-10-15 09:50:48 +02:00
48 lines
1.5 KiB
Vue
48 lines
1.5 KiB
Vue
<template>
|
|
<USelect
|
|
v-model="library"
|
|
placeholder="Library"
|
|
icon="i-lucide-library-big"
|
|
color="secondary"
|
|
:items="libraries?.map((l) => l.key)"
|
|
class="w-xs"
|
|
:loading="loading"
|
|
@change="onLibrarySelectChange">
|
|
<template #default="{ modelValue }">
|
|
<p v-if="modelValue">
|
|
<span class="mr-2">{{ libraries?.find((l) => l.key == modelValue)?.libraryName }}</span>
|
|
<span class="text-secondary">({{ libraries?.find((l) => l.key == modelValue)?.basePath }})</span>
|
|
</p>
|
|
</template>
|
|
<template #item="{ item }">
|
|
<p>
|
|
<span class="mr-2">{{ libraries?.find((l) => l.key == item)?.libraryName }}</span>
|
|
<span class="text-secondary">({{ libraries?.find((l) => l.key == item)?.basePath }})</span>
|
|
</p>
|
|
</template>
|
|
</USelect>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
export interface LibrarySelectProps {
|
|
mangaId: string;
|
|
libraryId?: string;
|
|
}
|
|
|
|
const props = defineProps<LibrarySelectProps>();
|
|
|
|
const library = ref(props.libraryId);
|
|
const { data: libraries } = await useApi('/v2/FileLibrary', { key: FetchKeys.FileLibraries });
|
|
|
|
const loading = ref(false);
|
|
const onLibrarySelectChange = async () => {
|
|
if (!library.value) return;
|
|
loading.value = true;
|
|
await useApi('/v2/Manga/{MangaId}/ChangeLibrary/{LibraryId}', {
|
|
method: 'POST',
|
|
path: { MangaId: props.mangaId, LibraryId: library.value },
|
|
});
|
|
loading.value = false;
|
|
};
|
|
</script>
|