上传组件增加预览功能
parent
9132fe0386
commit
f9f4d7d785
|
@ -199,7 +199,6 @@ class Uploader extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
|
|
||||||
// drag
|
// drag
|
||||||
css`
|
css`
|
||||||
:host([drag]) {
|
:host([drag]) {
|
||||||
|
@ -241,6 +240,29 @@ class Uploader extends Component {
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
`,
|
||||||
|
// preview
|
||||||
|
css`
|
||||||
|
.preview {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 99;
|
||||||
|
display: none;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
max-width: 90%;
|
||||||
|
max-height: 90%;
|
||||||
|
object-fit: contain;
|
||||||
|
box-shadow: 0 0 20px #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
`
|
`
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -334,6 +356,18 @@ class Uploader extends Component {
|
||||||
this.#fetchUpload(files.map(it => it.file))
|
this.#fetchUpload(files.map(it => it.file))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#preview(ev, item) {
|
||||||
|
if (ev.target.name !== 'doc') {
|
||||||
|
this.$refs.view.firstElementChild.src =
|
||||||
|
item.url || URL.createObjectURL(item.file)
|
||||||
|
this.$refs.view.style.display = 'flex'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#closePreview(ev) {
|
||||||
|
this.$refs.view.style.display = ''
|
||||||
|
}
|
||||||
|
|
||||||
mounted() {}
|
mounted() {}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
@ -387,8 +421,11 @@ class Uploader extends Component {
|
||||||
>
|
>
|
||||||
<wc-icon
|
<wc-icon
|
||||||
name=${it.stat === 0 ? 'loading' : grid ? 'search' : 'doc'}
|
name=${it.stat === 0 ? 'loading' : grid ? 'search' : 'doc'}
|
||||||
|
@click=${ev => this.#preview(ev, it)}
|
||||||
></wc-icon>
|
></wc-icon>
|
||||||
<span class="name">${it.file.name}</span>
|
<span class="name" @click=${ev => this.#preview(ev, it)}
|
||||||
|
>${it.file.name}</span
|
||||||
|
>
|
||||||
<wc-icon
|
<wc-icon
|
||||||
class="del"
|
class="del"
|
||||||
name="trash"
|
name="trash"
|
||||||
|
@ -400,6 +437,9 @@ class Uploader extends Component {
|
||||||
)}
|
)}
|
||||||
</footer>
|
</footer>
|
||||||
</main>
|
</main>
|
||||||
|
<div class="preview" ref="view" @click.self=${this.#closePreview}>
|
||||||
|
<img />
|
||||||
|
</div>
|
||||||
`
|
`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue