mirror of
https://github.com/paricafe/misskey.git
synced 2024-11-25 02:46:43 -06:00
parent
ab439d0ed6
commit
6812b895e7
1 changed files with 45 additions and 4 deletions
|
@ -1,8 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="hoawjimk">
|
<div class="mk-media-list">
|
||||||
<XBanner v-for="media in mediaList.filter(media => !previewable(media))" :media="media" :key="media.id"/>
|
<XBanner v-for="media in mediaList.filter(media => !previewable(media))" :media="media" :key="media.id"/>
|
||||||
<div v-if="mediaList.filter(media => previewable(media)).length > 0" class="gird-container">
|
<div v-if="mediaList.filter(media => previewable(media)).length > 0" class="gird-container" ref="gridOuter">
|
||||||
<div :data-count="mediaList.filter(media => previewable(media)).length">
|
<div :data-count="mediaList.filter(media => previewable(media)).length" :style="gridInnerStyle">
|
||||||
<template v-for="media in mediaList">
|
<template v-for="media in mediaList">
|
||||||
<XVideo :video="media" :key="media.id" v-if="media.type.startsWith('video')"/>
|
<XVideo :video="media" :key="media.id" v-if="media.type.startsWith('video')"/>
|
||||||
<XImage :image="media" :key="media.id" v-else-if="media.type.startsWith('image')" :raw="raw"/>
|
<XImage :image="media" :key="media.id" v-else-if="media.type.startsWith('image')" :raw="raw"/>
|
||||||
|
@ -33,16 +33,57 @@ export default defineComponent({
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
gridInnerStyle: {},
|
||||||
|
sizeWaiting: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.size();
|
||||||
|
window.addEventListener('resize', this.size);
|
||||||
|
},
|
||||||
|
beforeUnmount() {
|
||||||
|
window.removeEventListener('resize', this.size);
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
this.size();
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
previewable(file) {
|
previewable(file) {
|
||||||
return file.type.startsWith('video') || file.type.startsWith('image');
|
return file.type.startsWith('video') || file.type.startsWith('image');
|
||||||
},
|
},
|
||||||
|
size() {
|
||||||
|
// for Safari bug
|
||||||
|
if (this.sizeWaiting) return;
|
||||||
|
|
||||||
|
this.sizeWaiting = true;
|
||||||
|
|
||||||
|
window.requestAnimationFrame(() => {
|
||||||
|
this.sizeWaiting = false;
|
||||||
|
|
||||||
|
if (this.$refs.gridOuter) {
|
||||||
|
let height = 287;
|
||||||
|
const parent = this.$parent.$el;
|
||||||
|
|
||||||
|
if (this.$refs.gridOuter.clientHeight) {
|
||||||
|
height = this.$refs.gridOuter.clientHeight;
|
||||||
|
} else if (parent) {
|
||||||
|
height = parent.getBoundingClientRect().width * 9 / 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.gridInnerStyle = { height: `${height}px` };
|
||||||
|
} else {
|
||||||
|
this.gridInnerStyle = {};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.hoawjimk {
|
.mk-media-list {
|
||||||
> .gird-container {
|
> .gird-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
Loading…
Reference in a new issue