文件选择器给modal加class防止被样式污染
This commit is contained in:
@@ -6,8 +6,7 @@
|
|||||||
<el-option v-for="item, index in listAllData" :key="index" :value="String(item[props.valueKey])"
|
<el-option v-for="item, index in listAllData" :key="index" :value="String(item[props.valueKey])"
|
||||||
:label="item.name" />
|
:label="item.name" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<div class="form-display" @mouseenter="formDisplayEnter" @mouseleave="formDisplayLeave"
|
<div v-if="props.inputType === 'image'" style="position: relative;"
|
||||||
v-if="props.inputType === 'image'" style="position: relative;"
|
|
||||||
:style="{ width: props.inputSize + 'px', height: props.inputSize + 'px' }">
|
:style="{ width: props.inputSize + 'px', height: props.inputSize + 'px' }">
|
||||||
<el-image :src="data" fit="scale-down" :style="{ width: props.inputSize + 'px', aspectRatio: '1 / 1' }">
|
<el-image :src="data" fit="scale-down" :style="{ width: props.inputSize + 'px', aspectRatio: '1 / 1' }">
|
||||||
<template #error>
|
<template #error>
|
||||||
@@ -26,8 +25,7 @@
|
|||||||
<Close />
|
<Close />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-display" @mouseenter="formDisplayEnter" @mouseleave="formDisplayLeave"
|
<div v-if="props.inputType === 'video'"
|
||||||
v-if="props.inputType === 'video'"
|
|
||||||
style="position: relative; display: flex; align-items: center; justify-items: center;"
|
style="position: relative; display: flex; align-items: center; justify-items: center;"
|
||||||
:style="{ width: props.inputSize * 2 + 'px', height: props.inputSize + 'px' }">
|
:style="{ width: props.inputSize * 2 + 'px', height: props.inputSize + 'px' }">
|
||||||
<video :src="data" :controls="false" :autoplay="true" :muted="true" :loop="true"
|
<video :src="data" :controls="false" :autoplay="true" :muted="true" :loop="true"
|
||||||
@@ -44,8 +42,7 @@
|
|||||||
<Close />
|
<Close />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-display" @mouseenter="formDisplayEnter" @mouseleave="formDisplayLeave"
|
<div v-if="props.inputType === 'audio'"
|
||||||
v-if="props.inputType === 'audio'"
|
|
||||||
style="position: relative; display: flex; align-items: center; justify-items: center;"
|
style="position: relative; display: flex; align-items: center; justify-items: center;"
|
||||||
:style="{ width: props.inputSize * 2 + 'px', height: props.inputSize + 'px' }">
|
:style="{ width: props.inputSize * 2 + 'px', height: props.inputSize + 'px' }">
|
||||||
<audio :src="data" :controls="!!data" :autoplay="false" :muted="true" :loop="true"
|
<audio :src="data" :controls="!!data" :autoplay="false" :muted="true" :loop="true"
|
||||||
@@ -64,7 +61,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog v-model="selectVisiable" :draggable="false" width="50%" :align-center="false"
|
<el-dialog v-model="selectVisiable" :draggable="false" width="50%" :align-center="false"
|
||||||
@open="if (listData.length === 0) listRequest();" @closed="clear">
|
@open="if (listData.length === 0) listRequest();" @closed="clear" modal-class="_overlay">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span class="el-dialog__title">文件选择</span>
|
<span class="el-dialog__title">文件选择</span>
|
||||||
<el-divider style="margin: 0;" />
|
<el-divider style="margin: 0;" />
|
||||||
@@ -181,8 +178,6 @@ const listRequest = async () => {
|
|||||||
pageForm.limit = res.limit;
|
pageForm.limit = res.limit;
|
||||||
selectedInit();
|
selectedInit();
|
||||||
};
|
};
|
||||||
const formDisplayEnter = (e: MouseEvent) => (e.target as HTMLElement).style.setProperty('--fileselector-close-display', 'block');
|
|
||||||
const formDisplayLeave = (e: MouseEvent) => (e.target as HTMLElement).style.setProperty('--fileselector-close-display', 'none');
|
|
||||||
const listRequestAll = async () => {
|
const listRequestAll = async () => {
|
||||||
if (props.inputType !== 'selector') return;
|
if (props.inputType !== 'selector') return;
|
||||||
let res = await fileApi.GetAll();
|
let res = await fileApi.GetAll();
|
||||||
@@ -264,9 +259,8 @@ onMounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.form-display {
|
._overlay {
|
||||||
--fileselector-close-display: none;
|
width: unset !important;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.headerBar>* {
|
.headerBar>* {
|
||||||
@@ -325,10 +319,13 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.closeHover {
|
.closeHover {
|
||||||
display: var(--fileselector-close-display);
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 2px;
|
right: 2px;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.closeHover:hover {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user