Resolve #6811
This commit is contained in:
		
							parent
							
								
									e24c8b6878
								
							
						
					
					
						commit
						558d288e7b
					
				
					 1 changed files with 4 additions and 45 deletions
				
			
		|  | @ -1,8 +1,8 @@ | |||
| <template> | ||||
| <div class="mk-media-list"> | ||||
| <div class="hoawjimk"> | ||||
| 	<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" ref="gridOuter"> | ||||
| 		<div :data-count="mediaList.filter(media => previewable(media)).length" :style="gridInnerStyle"> | ||||
| 	<div v-if="mediaList.filter(media => previewable(media)).length > 0" class="gird-container"> | ||||
| 		<div :data-count="mediaList.filter(media => previewable(media)).length"> | ||||
| 			<template v-for="media in mediaList"> | ||||
| 				<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"/> | ||||
|  | @ -33,57 +33,16 @@ export default defineComponent({ | |||
| 			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: { | ||||
| 		previewable(file) { | ||||
| 			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> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| .mk-media-list { | ||||
| .hoawjimk { | ||||
| 	> .gird-container { | ||||
| 		position: relative; | ||||
| 		width: 100%; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue