audiobookshelf/client/components/cards/NarratorCard.vue

61 lines
1.8 KiB
Vue
Raw Normal View History

2023-04-25 01:25:30 +02:00
<template>
2024-06-03 08:04:03 +02:00
<div>
<nuxt-link :to="`/library/${currentLibraryId}/bookshelf?filter=narrators.${$encode(name)}`">
<div cy-id="card" :style="{ width: cardWidth + 'px', height: cardHeight + 'px', fontSize: sizeMultiplier + 'rem' }" class="bg-primary box-shadow-book rounded-md relative overflow-hidden">
<div class="absolute inset-0 w-full h-full flex items-center justify-center pointer-events-none opacity-40">
<span class="material-symbols text-[10em]">&#xe91f;</span>
2024-06-03 08:04:03 +02:00
</div>
2023-04-25 01:25:30 +02:00
2024-06-03 08:04:03 +02:00
<!-- Narrator name & num books overlay -->
<div class="absolute bottom-0 left-0 w-full py-1e bg-black bg-opacity-60 px-2e">
2024-06-03 08:04:03 +02:00
<p cy-id="name" class="text-center font-semibold truncate text-gray-200" :style="{ fontSize: 0.75 + 'em' }">{{ name }}</p>
<p cy-id="numBooks" class="text-center text-gray-200" :style="{ fontSize: 0.65 + 'em' }">{{ numBooks }} Book{{ numBooks === 1 ? '' : 's' }}</p>
</div>
2023-04-25 01:25:30 +02:00
</div>
2024-06-03 08:04:03 +02:00
</nuxt-link>
</div>
2023-04-25 01:25:30 +02:00
</template>
<script>
export default {
props: {
narrator: {
type: Object,
default: () => {}
},
2024-06-03 08:04:03 +02:00
width: Number,
height: {
type: Number,
default: 100
2023-04-25 01:25:30 +02:00
}
},
data() {
return {}
},
computed: {
2024-06-03 08:04:03 +02:00
cardWidth() {
return this.cardHeight * 1.5
},
cardHeight() {
return this.height * this.sizeMultiplier
},
2023-04-25 01:25:30 +02:00
name() {
return this.narrator?.name || ''
},
numBooks() {
return this.narrator?.numBooks || this.narrator?.books?.length || 0
2023-04-25 01:25:30 +02:00
},
userCanUpdate() {
return this.$store.getters['user/getUserCanUpdate']
},
currentLibraryId() {
return this.$store.state.libraries.currentLibraryId
2024-06-03 08:04:03 +02:00
},
sizeMultiplier() {
return this.$store.getters['user/getSizeMultiplier']
2023-04-25 01:25:30 +02:00
}
},
methods: {}
}
2024-06-03 08:04:03 +02:00
</script>