71 lines
1.4 KiB
Vue
71 lines
1.4 KiB
Vue
<template>
|
|
<div class="flex">
|
|
<NcAvatar
|
|
:display-name="episode.name"
|
|
:is-no-user="true"
|
|
:size="256"
|
|
:url="episode.image" />
|
|
<h2>{{ episode.name }}</h2>
|
|
<SafeHtml :source="episode.description" />
|
|
<div class="flex">
|
|
<NcButton v-if="episode.link" :href="episode.link" target="_blank">
|
|
<template #icon>
|
|
<OpenInNewIcon :size="20" />
|
|
</template>
|
|
{{ episode.title }}
|
|
</NcButton>
|
|
<NcButton
|
|
v-if="episode.url"
|
|
:download="filenameFromUrl(episode.url)"
|
|
:href="episode.url"
|
|
target="_blank">
|
|
<template #icon>
|
|
<DownloadIcon :size="20" />
|
|
</template>
|
|
{{ t('repod', 'Download') }}
|
|
{{ episode.size ? `(${humanFileSize(episode.size)})` : '' }}
|
|
</NcButton>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { NcAvatar, NcButton } from '@nextcloud/vue'
|
|
import DownloadIcon from 'vue-material-design-icons/Download.vue'
|
|
import OpenInNewIcon from 'vue-material-design-icons/OpenInNew.vue'
|
|
import SafeHtml from './SafeHtml.vue'
|
|
import { filenameFromUrl } from '../../utils/url.js'
|
|
import { humanFileSize } from '../../utils/size.js'
|
|
|
|
export default {
|
|
name: 'Modal',
|
|
components: {
|
|
DownloadIcon,
|
|
NcAvatar,
|
|
NcButton,
|
|
OpenInNewIcon,
|
|
SafeHtml,
|
|
},
|
|
props: {
|
|
episode: {
|
|
type: Object,
|
|
required: true,
|
|
},
|
|
},
|
|
methods: {
|
|
filenameFromUrl,
|
|
humanFileSize,
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.flex {
|
|
align-items: center;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1rem;
|
|
margin: 2rem;
|
|
}
|
|
</style>
|