2018-02-11 16:06:22 -08:00
|
|
|
<template>
|
2018-05-28 19:45:01 -07:00
|
|
|
<div class="mk-media-list">
|
2018-09-04 09:08:18 -07:00
|
|
|
<template v-for="media in mediaList">
|
|
|
|
<mk-media-banner :media="media" :key="media.id" v-if="!media.type.startsWith('image') && !media.type.startsWith('video')"/>
|
|
|
|
</template>
|
|
|
|
<div class="mk-media-list-fixed" v-if="mediaList.filter(media => media.type.startsWith('image') || media.type.startsWith('video')).length > 0">
|
|
|
|
<div :data-count="mediaList.filter(media => media.type.startsWith('video') || media.type.startsWith('image')).length" ref="grid">
|
|
|
|
<template v-for="media in mediaList">
|
|
|
|
<mk-media-video :video="media" :key="media.id" v-if="media.type.startsWith('video')"/>
|
|
|
|
<mk-media-image :image="media" :key="media.id" v-else-if="media.type.startsWith('image')" :raw="raw"/>
|
|
|
|
</template>
|
|
|
|
</div>
|
2018-05-28 19:45:01 -07:00
|
|
|
</div>
|
2018-02-11 16:06:22 -08:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
|
|
|
import Vue from 'vue';
|
|
|
|
|
|
|
|
export default Vue.extend({
|
2018-05-04 00:27:03 -07:00
|
|
|
props: {
|
|
|
|
mediaList: {
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
raw: {
|
|
|
|
default: false
|
|
|
|
}
|
2018-05-28 21:21:38 -07:00
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
// for Safari bug
|
2018-05-28 23:38:48 -07:00
|
|
|
this.$refs.grid.style.height = this.$refs.grid.clientHeight ? `${this.$refs.grid.clientHeight}px` : '128px';
|
2018-05-04 00:27:03 -07:00
|
|
|
}
|
2018-02-11 16:06:22 -08:00
|
|
|
});
|
|
|
|
</script>
|
2018-02-14 22:14:28 -08:00
|
|
|
|
|
|
|
<style lang="stylus" scoped>
|
2018-03-26 00:56:46 -07:00
|
|
|
.mk-media-list
|
2018-09-04 09:08:18 -07:00
|
|
|
> .mk-media-list-fixed
|
|
|
|
width 100%
|
|
|
|
margin-top 4px
|
|
|
|
|
|
|
|
&:before
|
|
|
|
content ''
|
|
|
|
display block
|
|
|
|
padding-top 56.25% // 16:9
|
|
|
|
|
|
|
|
> div
|
|
|
|
position absolute
|
|
|
|
top 0
|
|
|
|
right 0
|
|
|
|
bottom 0
|
|
|
|
left 0
|
|
|
|
display grid
|
|
|
|
grid-gap 4px
|
|
|
|
|
|
|
|
> *
|
|
|
|
overflow hidden
|
|
|
|
border-radius 4px
|
|
|
|
|
|
|
|
&[data-count="1"]
|
|
|
|
grid-template-rows 1fr
|
|
|
|
|
|
|
|
&[data-count="2"]
|
|
|
|
grid-template-columns 1fr 1fr
|
|
|
|
grid-template-rows 1fr
|
|
|
|
|
|
|
|
&[data-count="3"]
|
|
|
|
grid-template-columns 1fr 0.5fr
|
|
|
|
grid-template-rows 1fr 1fr
|
|
|
|
|
|
|
|
> *:nth-child(1)
|
|
|
|
grid-row 1 / 3
|
|
|
|
|
|
|
|
> *:nth-child(3)
|
|
|
|
grid-column 2 / 3
|
|
|
|
grid-row 2 / 3
|
|
|
|
|
|
|
|
&[data-count="4"]
|
|
|
|
grid-template-columns 1fr 1fr
|
|
|
|
grid-template-rows 1fr 1fr
|
2018-07-19 10:40:37 -07:00
|
|
|
|
|
|
|
> *:nth-child(1)
|
2018-09-04 09:08:18 -07:00
|
|
|
grid-column 1 / 2
|
|
|
|
grid-row 1 / 2
|
2018-07-19 10:40:37 -07:00
|
|
|
|
2018-09-04 09:08:18 -07:00
|
|
|
> *:nth-child(2)
|
2018-05-28 19:45:01 -07:00
|
|
|
grid-column 2 / 3
|
2018-09-04 09:08:18 -07:00
|
|
|
grid-row 1 / 2
|
2018-07-19 10:40:37 -07:00
|
|
|
|
2018-09-04 09:08:18 -07:00
|
|
|
> *:nth-child(3)
|
|
|
|
grid-column 1 / 2
|
|
|
|
grid-row 2 / 3
|
2018-07-19 10:40:37 -07:00
|
|
|
|
2018-09-04 09:08:18 -07:00
|
|
|
> *:nth-child(4)
|
|
|
|
grid-column 2 / 3
|
|
|
|
grid-row 2 / 3
|
2018-05-04 00:27:03 -07:00
|
|
|
|
2018-02-14 22:14:28 -08:00
|
|
|
</style>
|