Merge "Add drag and drop file upload." am: 066f9d3eea
Original change: https://android-review.googlesource.com/c/platform/development/+/1763193 Change-Id: I8765308f62c05a45d1fd74af4cb6543e3a1a8f5a
This commit is contained in:
@@ -1,11 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<label class="file-select">
|
<label class="file-select ma-5">
|
||||||
<div class="select-button">
|
<div
|
||||||
<span v-if="label">{{ label }}</span>
|
class="select-button"
|
||||||
|
@dragover="dragover"
|
||||||
|
@dragleave="dragleave"
|
||||||
|
@drop="drop"
|
||||||
|
>
|
||||||
|
<span v-if="label">{{ !fileName ? label : '' }}</span>
|
||||||
<span v-else>Select File</span>
|
<span v-else>Select File</span>
|
||||||
|
<div v-if="fileName"> File selected: {{ fileName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<input
|
<input
|
||||||
|
ref="file"
|
||||||
type="file"
|
type="file"
|
||||||
|
accept=".zip"
|
||||||
@change="handleFileChange"
|
@change="handleFileChange"
|
||||||
>
|
>
|
||||||
</label>
|
</label>
|
||||||
@@ -16,31 +24,53 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
label: {
|
label: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
fileName: '',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleFileChange(e) {
|
handleFileChange(event) {
|
||||||
this.$emit('file-select', e.target.files)
|
this.$emit('file-select', this.$refs.file.files)
|
||||||
}
|
this.fileName = this.$refs.file.files[0].name
|
||||||
}
|
},
|
||||||
|
dragover(event) {
|
||||||
|
event.preventDefault()
|
||||||
|
if (!event.currentTarget.classList.contains('file-hover')) {
|
||||||
|
event.currentTarget.classList.add('file-hover')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dragleave(event) {
|
||||||
|
event.currentTarget.classList.remove('file-hover')
|
||||||
|
},
|
||||||
|
drop(event) {
|
||||||
|
event.preventDefault()
|
||||||
|
this.$refs.file.files = event.dataTransfer.files
|
||||||
|
this.handleFileChange(event)
|
||||||
|
event.currentTarget.classList.remove('file-hover')
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.file-select > .select-button {
|
.file-select > .select-button {
|
||||||
padding: 1rem;
|
padding: 3rem;
|
||||||
|
border-radius: 0.3rem;
|
||||||
color: white;
|
border: 4px dashed #eaebec;
|
||||||
background-color: #2EA169;
|
|
||||||
|
|
||||||
border-radius: .3rem;
|
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-select > input[type="file"] {
|
.file-select > input[type='file'] {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.file-hover {
|
||||||
|
background-color: #95e995;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user