feat: upload button prompt

This commit is contained in:
Ramires Viana 2020-06-16 16:06:55 +00:00
parent 073076d2d5
commit 7e6b4af48b
6 changed files with 98 additions and 7 deletions

View File

@ -10,7 +10,11 @@ export default {
name: 'upload-button',
methods: {
upload: function () {
document.getElementById('upload-input').click()
if (typeof(DataTransferItem.prototype.webkitGetAsEntry) !== 'undefined') {
this.$store.commit('showHover', 'upload')
} else {
document.getElementById('upload-input').click();
}
}
}
}

View File

@ -5,6 +5,7 @@
<span>{{ $t('files.lonely') }}</span>
</h2>
<input style="display:none" type="file" id="upload-input" @change="uploadInput($event)" multiple>
<input style="display:none" type="file" id="upload-folder-input" @change="uploadInput($event)" webkitdirectory multiple>
</div>
<div v-else id="listing"
:class="user.viewMode"
@ -75,6 +76,7 @@
</div>
<input style="display:none" type="file" id="upload-input" @change="uploadInput($event)" multiple>
<input style="display:none" type="file" id="upload-folder-input" @change="uploadInput($event)" webkitdirectory multiple>
<div :class="{ active: $store.state.multiple }" id="multiple-selection">
<p>{{ $t('files.multipleSelectionEnabled') }}</p>
@ -331,7 +333,7 @@ export default {
let conflict = false
for (let i = 0; i < files.length; i++) {
let file = files[i];
let file = files[i]
let name = file.name
if (folder_upload) {
@ -366,7 +368,19 @@ export default {
})
},
uploadInput (event) {
this.checkConflict(event.currentTarget.files, this.req.items, '')
this.$store.commit('closeHovers')
let files = event.currentTarget.files
let folder_upload = files[0].webkitRelativePath !== undefined && files[0].webkitRelativePath !== ''
if (folder_upload) {
for (let i = 0; i < files.length; i++) {
let file = files[i]
files[i].fullPath = file.webkitRelativePath
}
}
this.checkConflict(files, this.req.items, '')
},
resetOpacity () {
let items = document.getElementsByClassName('item')
@ -388,7 +402,7 @@ export default {
}
}
} else {
resolve(dt.files);
resolve(dt.files)
}
function readEntry(entry, directory = "") {

View File

@ -17,6 +17,7 @@ import NewFile from './NewFile'
import NewDir from './NewDir'
import Replace from './Replace'
import Share from './Share'
import Upload from './Upload'
import { mapState } from 'vuex'
import buttons from '@/utils/buttons'
@ -33,7 +34,8 @@ export default {
NewFile,
NewDir,
Help,
Replace
Replace,
Upload
},
data: function () {
return {
@ -58,7 +60,8 @@ export default {
'newDir',
'download',
'replace',
'share'
'share',
'upload'
].indexOf(this.show) >= 0;
return matched && this.show || null;

View File

@ -0,0 +1,37 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.upload') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.uploadMessage') }}</p>
</div>
<div class="card-action full">
<div @click="uploadFile" class="action">
<i class="material-icons">insert_drive_file</i>
<div class="title">File</div>
</div>
<div @click="uploadFolder" class="action">
<i class="material-icons">folder</i>
<div class="title">Folder</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'upload',
methods: {
uploadFile: function () {
document.getElementById('upload-input').click()
},
uploadFolder: function () {
document.getElementById('upload-folder-input').click()
}
}
}
</script>

View File

@ -96,6 +96,7 @@ table tr>*:last-child {
background-color: #fff;
border-radius: 2px;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
overflow: auto;
}
.card.floating {
@ -366,3 +367,33 @@ table tr>*:last-child {
.card .collapsible .collapse {
padding: 0 1em;
}
.card .card-action.full {
padding-top: 0;
display: flex;
flex-wrap: wrap;
}
.card .card-action.full .action {
flex: 1;
padding: 2em;
border-radius: 0.2em;
border: 1px solid rgba(0, 0, 0, 0.1);
text-align: center;
}
.card .card-action.full .action {
margin: 0 0.25em 0.50em;
}
.card .card-action.full .action i {
display: block;
padding: 0;
margin-bottom: 0.25em;
font-size: 4em;
}
.card .card-action.full .action .title {
font-size: 1.5em;
font-weight: 500;
}

View File

@ -116,7 +116,9 @@
"size": "Size",
"schedule": "Schedule",
"scheduleMessage": "Pick a date and time to schedule the publication of this post.",
"newArchetype": "Create a new post based on an archetype. Your file will be created on content folder."
"newArchetype": "Create a new post based on an archetype. Your file will be created on content folder.",
"upload": "Upload",
"uploadMessage": "Select an option to upload."
},
"settings": {
"themes": {