1
0
mirror of https://github.com/TeamPiped/Piped.git synced 2024-12-17 07:40:27 +05:30
Piped/src/components/VideoItem.vue

98 lines
3.4 KiB
Vue
Raw Normal View History

2021-06-17 00:44:46 +05:30
<template>
<div>
<router-link :to="video.url">
2021-12-27 20:16:30 +05:30
<img :height="height" :width="width" class="w-full" :src="video.thumbnail" alt="" loading="lazy" />
2021-12-27 20:16:33 +05:30
<div class="relative text-sm">
2021-12-27 21:59:25 +05:30
<span
v-if="video.duration"
class="thumbnail-overlay bottom-5px right-5px"
style="padding: 0 5px"
v-text="timeFormat(video.duration)"
/>
<span
v-if="video.watched"
class="thumbnail-overlay bottom-5px left-5px"
style="padding: 0 5px"
v-text="$t('video.watched')"
/>
</div>
<div>
2021-10-08 04:14:54 +05:30
<p
2021-12-28 20:09:20 +05:30
style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical"
2021-12-27 20:16:30 +05:30
class="my-2 overflow-hidden flex link"
2021-10-08 04:14:54 +05:30
:title="video.title"
2021-12-27 21:59:25 +05:30
v-text="video.title"
/>
</div>
2021-06-17 00:44:46 +05:30
</router-link>
2021-12-27 20:16:30 +05:30
<div class="float-right ml-0 mb-0 inline-block">
2021-10-08 04:14:54 +05:30
<router-link
:to="video.url + '&listen=1'"
:aria-label="'Listen to ' + video.title"
:title="'Listen to ' + video.title"
>
<font-awesome-icon icon="headphones"></font-awesome-icon>
</router-link>
</div>
2021-12-27 20:16:30 +05:30
<div class="flex" style="flex-flow: row">
<router-link :to="video.uploaderUrl">
2021-10-08 04:14:54 +05:30
<img
v-if="video.uploaderAvatar"
:src="video.uploaderAvatar"
loading="lazy"
:alt="video.uploaderName"
2021-12-27 20:16:29 +05:30
class="rounded-full mr-0.5 mt-0.5 w-32px h-32px"
2021-12-27 20:16:31 +05:30
width="68"
height="68"
2021-10-08 04:14:54 +05:30
/>
</router-link>
2021-12-27 20:16:29 +05:30
<div class="w-[calc(100%-32px-1rem)]">
2021-10-08 04:14:54 +05:30
<router-link
v-if="video.uploaderUrl && video.uploaderName && !hideChannel"
class="link-secondary overflow-hidden block"
2021-10-08 04:14:54 +05:30
:to="video.uploaderUrl"
:title="video.uploaderName"
>
2021-12-27 21:59:25 +05:30
<span v-text="video.uploaderName" />
<font-awesome-icon class="ml-1.5" v-if="video.uploaderVerified" icon="check"></font-awesome-icon>
2021-06-17 00:44:46 +05:30
</router-link>
<strong v-if="video.views >= 0 || video.uploadedDate" class="uk-text-small">
<span v-if="video.views >= 0">
<font-awesome-icon icon="eye"></font-awesome-icon>
2021-12-27 21:59:25 +05:30
<span v-text="`${numberFormat(video.views)} `" />
</span>
2021-12-27 21:59:25 +05:30
<span v-if="video.uploadedDate" v-text="video.uploadedDate" />
<span v-if="video.uploaded" v-text="timeAgo(video.uploaded)" />
</strong>
2021-06-17 00:44:46 +05:30
</div>
</div>
</div>
</template>
2021-12-27 20:16:29 +05:30
<style>
.thumbnail-overlay {
@apply rounded-md absolute bg-black bg-opacity-75;
}
</style>
2021-06-17 00:44:46 +05:30
<script>
export default {
props: {
video: {
type: Object,
default: () => {
return {};
},
},
height: { type: String, default: "118" },
width: { type: String, default: "210" },
hideChannel: { type: Boolean, default: false },
2021-06-17 00:44:46 +05:30
},
};
</script>