forked from platypush/platypush
[Media UI] Support audio types in the embed player.
This commit is contained in:
parent
3a9d5700ea
commit
ec8fe401d2
3 changed files with 63 additions and 3 deletions
|
@ -9,6 +9,19 @@
|
||||||
frameborder="0"
|
frameborder="0"
|
||||||
v-else-if="youtubeUrl" />
|
v-else-if="youtubeUrl" />
|
||||||
|
|
||||||
|
<div class="audio-container" v-else-if="isAudio">
|
||||||
|
<div class="poster-container" v-if="poster">
|
||||||
|
<img :src="poster" />
|
||||||
|
</div>
|
||||||
|
<audio ref="audio"
|
||||||
|
class="player"
|
||||||
|
controls
|
||||||
|
@canplay="$refs.audio.play()"
|
||||||
|
@ended="$emit('ended')">
|
||||||
|
<source :src="mediaItem.url" :type="mediaItem.mime_type">
|
||||||
|
</audio>
|
||||||
|
</div>
|
||||||
|
|
||||||
<video ref="video"
|
<video ref="video"
|
||||||
class="player"
|
class="player"
|
||||||
controls
|
controls
|
||||||
|
@ -49,11 +62,22 @@ export default {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
mediaItem: null,
|
mediaItem: null,
|
||||||
mimeType: null,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
isAudio() {
|
||||||
|
return (this.mediaItem?.mime_type || '').startsWith('audio')
|
||||||
|
},
|
||||||
|
|
||||||
|
poster() {
|
||||||
|
if (this.isAudio && this.item?.image) {
|
||||||
|
return this.item.image
|
||||||
|
}
|
||||||
|
|
||||||
|
return null
|
||||||
|
},
|
||||||
|
|
||||||
youtubeUrl() {
|
youtubeUrl() {
|
||||||
if (this.item.type !== 'youtube')
|
if (this.item.type !== 'youtube')
|
||||||
return null
|
return null
|
||||||
|
@ -127,6 +151,8 @@ export default {
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import "~@/components/Media/vars";
|
@import "~@/components/Media/vars";
|
||||||
|
|
||||||
|
$audio-height: 2.5em;
|
||||||
|
|
||||||
.embed-player {
|
.embed-player {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -145,7 +171,36 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
video {
|
.audio-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
min-width: 50vw;
|
||||||
|
min-height: 50vh;
|
||||||
|
background-color: black;
|
||||||
|
|
||||||
|
audio {
|
||||||
|
height: $audio-height;
|
||||||
|
}
|
||||||
|
|
||||||
|
.poster-container {
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100% - #{$audio-height});
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
video, audio {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -880,6 +880,10 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.embed-player-container) {
|
:deep(.embed-player-container) {
|
||||||
|
.modal {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
max-width: 95%;
|
max-width: 95%;
|
||||||
background: black;
|
background: black;
|
||||||
|
|
|
@ -10,7 +10,8 @@
|
||||||
@play="$emit('play', $event)"
|
@play="$emit('play', $event)"
|
||||||
@play-with-opts="$emit('play-with-opts', $event)"
|
@play-with-opts="$emit('play-with-opts', $event)"
|
||||||
@select="selectedResult = $event; $emit('select', $event)"
|
@select="selectedResult = $event; $emit('select', $event)"
|
||||||
@select-collection="selectCollection" />
|
@select-collection="selectCollection"
|
||||||
|
@view="$emit('view', $event)" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<NoItems :with-shadow="false"
|
<NoItems :with-shadow="false"
|
||||||
|
|
Loading…
Reference in a new issue