mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-29 11:15:58 +00:00
merge local with remote changes (Peter)
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
||||||
'version' => '1.8-rc.1',
|
'version' => '1.8-rc.2',
|
||||||
|
|
||||||
// Define size of chunk uploaded by MB. E.g. integer 128 means chunk size will be 128MB.
|
// Define size of chunk uploaded by MB. E.g. integer 128 means chunk size will be 128MB.
|
||||||
'chunk_size' => env('CHUNK_SIZE', '128'),
|
'chunk_size' => env('CHUNK_SIZE', '128'),
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -30,7 +30,7 @@
|
|||||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=48efd0b887fbc804ac90",
|
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=48efd0b887fbc804ac90",
|
||||||
"/chunks/files.js": "/chunks/files.js?id=6a283c2c9f8a02500bc6",
|
"/chunks/files.js": "/chunks/files.js?id=6a283c2c9f8a02500bc6",
|
||||||
"/chunks/files~chunks/settings-subscription~chunks/shared-files~chunks/shared-page~chunks/user-subscription.js": "/chunks/files~chunks/settings-subscription~chunks/shared-files~chunks/shared-page~chunks/user-subscription.js?id=b646ec02fb9d6a497e74",
|
"/chunks/files~chunks/settings-subscription~chunks/shared-files~chunks/shared-page~chunks/user-subscription.js": "/chunks/files~chunks/settings-subscription~chunks/shared-files~chunks/shared-page~chunks/user-subscription.js?id=b646ec02fb9d6a497e74",
|
||||||
"/chunks/files~chunks/shared-files~chunks/shared-page.js": "/chunks/files~chunks/shared-files~chunks/shared-page.js?id=b5bf44fc6591d68c9d86",
|
"/chunks/files~chunks/shared-files~chunks/shared-page.js": "/chunks/files~chunks/shared-files~chunks/shared-page.js?id=9dfd4ea3069b9a4b4484",
|
||||||
"/chunks/files~chunks/shared-page.js": "/chunks/files~chunks/shared-page.js?id=47ade53389e84dd64310",
|
"/chunks/files~chunks/shared-page.js": "/chunks/files~chunks/shared-page.js?id=47ade53389e84dd64310",
|
||||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=d5e39543eeb619cb5513",
|
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=d5e39543eeb619cb5513",
|
||||||
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=f037ea11689d01ea489e",
|
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=f037ea11689d01ea489e",
|
||||||
@@ -157,5 +157,10 @@
|
|||||||
"/js/main.0bc57da76f8e324dc858.hot-update.js": "/js/main.0bc57da76f8e324dc858.hot-update.js",
|
"/js/main.0bc57da76f8e324dc858.hot-update.js": "/js/main.0bc57da76f8e324dc858.hot-update.js",
|
||||||
"/js/main.048759ef5eff401f09ae.hot-update.js": "/js/main.048759ef5eff401f09ae.hot-update.js",
|
"/js/main.048759ef5eff401f09ae.hot-update.js": "/js/main.048759ef5eff401f09ae.hot-update.js",
|
||||||
"/chunks/files~chunks/shared-files~chunks/shared-page.13ae03ed21af9031c4ca.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.13ae03ed21af9031c4ca.hot-update.js",
|
"/chunks/files~chunks/shared-files~chunks/shared-page.13ae03ed21af9031c4ca.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.13ae03ed21af9031c4ca.hot-update.js",
|
||||||
"/chunks/files~chunks/shared-files~chunks/shared-page.a0f0c6ef92df103283b1.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.a0f0c6ef92df103283b1.hot-update.js"
|
"/chunks/files~chunks/shared-files~chunks/shared-page.a0f0c6ef92df103283b1.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.a0f0c6ef92df103283b1.hot-update.js",
|
||||||
|
"/js/main.ebd9a9d444091a32f5fa.hot-update.js": "/js/main.ebd9a9d444091a32f5fa.hot-update.js",
|
||||||
|
"/chunks/files~chunks/shared-files~chunks/shared-page.ebd9a9d444091a32f5fa.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.ebd9a9d444091a32f5fa.hot-update.js",
|
||||||
|
"/chunks/files~chunks/shared-files~chunks/shared-page.bd9826df1de83fbfe624.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.bd9826df1de83fbfe624.hot-update.js",
|
||||||
|
"/chunks/files~chunks/shared-files~chunks/shared-page.3097e1eb906da5445447.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.3097e1eb906da5445447.hot-update.js",
|
||||||
|
"/chunks/files~chunks/shared-files~chunks/shared-page.5794b7a90772587fee54.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.5794b7a90772587fee54.hot-update.js"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
<!--Mobile Navigation-->
|
<!--Mobile Navigation-->
|
||||||
<MobileNavigation/>
|
<MobileNavigation/>
|
||||||
|
|
||||||
|
<ProcessingPopup/>
|
||||||
|
|
||||||
<!--Confirm Popup-->
|
<!--Confirm Popup-->
|
||||||
<Confirm/>
|
<Confirm/>
|
||||||
|
|
||||||
@@ -65,6 +67,7 @@
|
|||||||
import MobileSortingAndPreview from '@/components/FilesView/MobileSortingAndPreview'
|
import MobileSortingAndPreview from '@/components/FilesView/MobileSortingAndPreview'
|
||||||
import MobileMultiSelectMenu from '@/components/FilesView/MobileMultiSelectMenu'
|
import MobileMultiSelectMenu from '@/components/FilesView/MobileMultiSelectMenu'
|
||||||
import ToastrWrapper from '@/components/Others/Notifications/ToastrWrapper'
|
import ToastrWrapper from '@/components/Others/Notifications/ToastrWrapper'
|
||||||
|
import ProcessingPopup from '@/components/FilesView/ProcessingPopup'
|
||||||
import FileFullPreview from '@/components/FilesView/FileFullPreview'
|
import FileFullPreview from '@/components/FilesView/FileFullPreview'
|
||||||
import MobileNavigation from '@/components/Others/MobileNavigation'
|
import MobileNavigation from '@/components/Others/MobileNavigation'
|
||||||
import CookieDisclaimer from '@/components/Others/CookieDisclaimer'
|
import CookieDisclaimer from '@/components/Others/CookieDisclaimer'
|
||||||
@@ -91,6 +94,7 @@ export default {
|
|||||||
MobileNavigation,
|
MobileNavigation,
|
||||||
CookieDisclaimer,
|
CookieDisclaimer,
|
||||||
FileFullPreview,
|
FileFullPreview,
|
||||||
|
ProcessingPopup,
|
||||||
ToastrWrapper,
|
ToastrWrapper,
|
||||||
CreateFolder,
|
CreateFolder,
|
||||||
ShareCreate,
|
ShareCreate,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<div class="icon-item">
|
<div class="icon-item">
|
||||||
|
|
||||||
<!-- MultiSelecting for the mobile version -->
|
<!-- MultiSelecting for the mobile version -->
|
||||||
<div :class="{'check-select-folder' : this.data.type === 'folder', 'check-select' : this.data.type !== 'folder'}" v-if="mobileMultiSelect">
|
<div :class="{'check-select-folder' : this.data.type === 'folder', 'check-select' : this.data.type !== 'folder'}" v-if="multiSelectMode">
|
||||||
<div class="select-box" :class="{'select-box-active' : isClicked } ">
|
<div class="select-box" :class="{'select-box-active' : isClicked } ">
|
||||||
<CheckIcon v-if="isClicked" class="icon" size="17"/>
|
<CheckIcon v-if="isClicked" class="icon" size="17"/>
|
||||||
</div>
|
</div>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<span @click.stop="showItemActions" class="show-actions" v-if="$isMobile() && ! ( $checkPermission('visitor') && isFolder || mobileMultiSelect ) && canShowMobileOptions">
|
<span @click.stop="showItemActions" class="show-actions" v-if="$isMobile() && ! ( $checkPermission('visitor') && isFolder || multiSelectMode ) && canShowMobileOptions">
|
||||||
<FontAwesomeIcon icon="ellipsis-h" class="icon-action"></FontAwesomeIcon>
|
<FontAwesomeIcon icon="ellipsis-h" class="icon-action"></FontAwesomeIcon>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -132,7 +132,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
area: false,
|
area: false,
|
||||||
itemName: undefined,
|
itemName: undefined,
|
||||||
mobileMultiSelect: false
|
multiSelectMode: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -193,7 +193,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.mobileMultiSelect && this.$isMobile()) {
|
if (!this.multiSelectMode && this.$isMobile()) {
|
||||||
// Open in mobile version on first click
|
// Open in mobile version on first click
|
||||||
if (this.$isMobile() && this.isFolder) {
|
if (this.$isMobile() && this.isFolder) {
|
||||||
// Go to folder
|
// Go to folder
|
||||||
@@ -212,7 +212,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.mobileMultiSelect && this.$isMobile()) {
|
if (this.multiSelectMode && this.$isMobile()) {
|
||||||
if (this.fileInfoDetail.some(item => item.unique_id === this.data.unique_id)) {
|
if (this.fileInfoDetail.some(item => item.unique_id === this.data.unique_id)) {
|
||||||
this.$store.commit('REMOVE_ITEM_FILEINFO_DETAIL', this.data)
|
this.$store.commit('REMOVE_ITEM_FILEINFO_DETAIL', this.data)
|
||||||
} else {
|
} else {
|
||||||
@@ -264,12 +264,12 @@ export default {
|
|||||||
this.itemName = this.data.name
|
this.itemName = this.data.name
|
||||||
|
|
||||||
events.$on('mobileSelecting:start', () => {
|
events.$on('mobileSelecting:start', () => {
|
||||||
this.mobileMultiSelect = true
|
this.multiSelectMode = true
|
||||||
this.$store.commit('CLEAR_FILEINFO_DETAIL')
|
this.$store.commit('CLEAR_FILEINFO_DETAIL')
|
||||||
})
|
})
|
||||||
|
|
||||||
events.$on('mobileSelecting:stop', () => {
|
events.$on('mobileSelecting:stop', () => {
|
||||||
this.mobileMultiSelect = false
|
this.multiSelectMode = false
|
||||||
this.$store.commit('CLEAR_FILEINFO_DETAIL')
|
this.$store.commit('CLEAR_FILEINFO_DETAIL')
|
||||||
})
|
})
|
||||||
// Change item name
|
// Change item name
|
||||||
@@ -564,11 +564,11 @@ export default {
|
|||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
|
|
||||||
.select-box {
|
.select-box {
|
||||||
background-color: $dark_mode_foreground;
|
background-color: lighten($dark_mode_foreground, 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-box-active {
|
.select-box-active {
|
||||||
background-color: $theme;
|
background-color: #f4f5f6;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
stroke: $text;
|
stroke: $text;
|
||||||
|
|||||||
@@ -1,26 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="file-wrapper"
|
<div class="file-wrapper" @click.stop="clickedItem" @dblclick="goToItem" spellcheck="false">
|
||||||
@click.stop="clickedItem"
|
|
||||||
@dblclick="goToItem"
|
|
||||||
spellcheck="false">
|
|
||||||
<!--List preview-->
|
<!--List preview-->
|
||||||
<div
|
<div :draggable="canDrag" @dragstart="$emit('dragstart')" @drop="
|
||||||
:draggable="canDrag"
|
|
||||||
@dragstart="$emit('dragstart')"
|
|
||||||
@drop="
|
|
||||||
drop()
|
drop()
|
||||||
area = false"
|
area = false" @dragleave="dragLeave" @dragover.prevent="dragEnter" class="file-item" :class="{'is-clicked' : isClicked , 'no-clicked' : !isClicked && this.$isMobile(), 'is-dragenter': area }">
|
||||||
@dragleave="dragLeave"
|
|
||||||
@dragover.prevent="dragEnter"
|
|
||||||
class="file-item"
|
|
||||||
:class="{'is-clicked' : isClicked , 'no-clicked' : !isClicked && this.$isMobile(), 'is-dragenter': area }"
|
|
||||||
>
|
|
||||||
<!-- MultiSelecting for the mobile version -->
|
<!-- MultiSelecting for the mobile version -->
|
||||||
|
<transition name="slide-from-left">
|
||||||
<div class="check-select" v-if="mobileMultiSelect">
|
<div class="check-select" v-if="mobileMultiSelect">
|
||||||
<div class="select-box" :class="{'select-box-active' : isClicked } ">
|
<div class="select-box" :class="{'select-box-active' : isClicked } ">
|
||||||
<CheckIcon v-if="isClicked" class="icon" size="17"/>
|
<CheckIcon v-if="isClicked" class="icon" size="17"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</transition>
|
||||||
|
|
||||||
<!--Thumbnail for item-->
|
<!--Thumbnail for item-->
|
||||||
<div class="icon-item">
|
<div class="icon-item">
|
||||||
@@ -30,18 +21,17 @@
|
|||||||
</span>
|
</span>
|
||||||
|
|
||||||
<!--Folder thumbnail-->
|
<!--Folder thumbnail-->
|
||||||
<FontAwesomeIcon v-if="isFile" class="file-icon" icon="file" />
|
<FontAwesomeIcon v-if="isFile" class="file-icon" icon="file"/>
|
||||||
|
|
||||||
<!--Image thumbnail-->
|
<!--Image thumbnail-->
|
||||||
<img loading="lazy" v-if="isImage" class="image" :src="data.thumbnail" :alt="data.name" />
|
<img loading="lazy" v-if="isImage" class="image" :src="data.thumbnail" :alt="data.name"/>
|
||||||
|
|
||||||
<!--Else show only folder icon-->
|
<!--Else show only folder icon-->
|
||||||
<FontAwesomeIcon v-if="isFolder" :class="{ 'is-deleted': isDeleted }" class="folder-icon" icon="folder" />
|
<FontAwesomeIcon v-if="isFolder" :class="{ 'is-deleted': isDeleted }" class="folder-icon" icon="folder"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Name-->
|
<!--Name-->
|
||||||
<div class="item-name">
|
<div class="item-name">
|
||||||
<!--Name-->
|
|
||||||
<b ref="name" @input="renameItem" @keydown.delete.stop :contenteditable="canEditName" class="name">
|
<b ref="name" @input="renameItem" @keydown.delete.stop :contenteditable="canEditName" class="name">
|
||||||
{{ itemName }}
|
{{ itemName }}
|
||||||
</b>
|
</b>
|
||||||
@@ -65,18 +55,20 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Go Next icon-->
|
<!--Show item actions-->
|
||||||
|
<transition name="slide-from-right">
|
||||||
<div class="actions" v-if="$isMobile() && !($checkPermission('visitor') && isFolder || mobileMultiSelect)">
|
<div class="actions" v-if="$isMobile() && !($checkPermission('visitor') && isFolder || mobileMultiSelect)">
|
||||||
<span @click.stop="showItemActions" class="show-actions">
|
<span @click.stop="showItemActions" class="show-actions">
|
||||||
<FontAwesomeIcon icon="ellipsis-v" class="icon-action"></FontAwesomeIcon>
|
<FontAwesomeIcon icon="ellipsis-v" class="icon-action"></FontAwesomeIcon>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
</transition>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { LinkIcon, UserPlusIcon , CheckIcon } from 'vue-feather-icons'
|
import { LinkIcon, UserPlusIcon, CheckIcon } from 'vue-feather-icons'
|
||||||
import { debounce } from 'lodash'
|
import { debounce } from 'lodash'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
import { events } from '@/bus'
|
import { events } from '@/bus'
|
||||||
@@ -87,11 +79,11 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
UserPlusIcon,
|
UserPlusIcon,
|
||||||
LinkIcon,
|
LinkIcon,
|
||||||
CheckIcon,
|
CheckIcon
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['FilePreviewType', 'fileInfoDetail' ]),
|
...mapGetters(['FilePreviewType', 'fileInfoDetail']),
|
||||||
...mapGetters({allData: 'data'}),
|
...mapGetters({ allData: 'data' }),
|
||||||
isClicked() {
|
isClicked() {
|
||||||
return this.fileInfoDetail.some(element => element.unique_id == this.data.unique_id)
|
return this.fileInfoDetail.some(element => element.unique_id == this.data.unique_id)
|
||||||
},
|
},
|
||||||
@@ -143,7 +135,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
area: false,
|
area: false,
|
||||||
itemName: undefined,
|
itemName: undefined,
|
||||||
mobileMultiSelect:false
|
mobileMultiSelect: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -168,45 +160,45 @@ export default {
|
|||||||
clickedItem(e) {
|
clickedItem(e) {
|
||||||
events.$emit('unClick')
|
events.$emit('unClick')
|
||||||
|
|
||||||
if(!this.$isMobile()) {
|
if (!this.$isMobile()) {
|
||||||
|
|
||||||
if( (e.ctrlKey || e.metaKey ) && !e.shiftKey) {
|
if ((e.ctrlKey || e.metaKey) && !e.shiftKey) {
|
||||||
// Click + Ctrl
|
// Click + Ctrl
|
||||||
|
|
||||||
if(this.fileInfoDetail.some(item => item.unique_id === this.data.unique_id)){
|
if (this.fileInfoDetail.some(item => item.unique_id === this.data.unique_id)) {
|
||||||
this.$store.commit('REMOVE_ITEM_FILEINFO_DETAIL',this.data )
|
this.$store.commit('REMOVE_ITEM_FILEINFO_DETAIL', this.data)
|
||||||
}else {
|
} else {
|
||||||
this.$store.commit('GET_FILEINFO_DETAIL', this.data)
|
this.$store.commit('GET_FILEINFO_DETAIL', this.data)
|
||||||
}
|
}
|
||||||
}else if (e.shiftKey){
|
} else if (e.shiftKey) {
|
||||||
// Click + Shift
|
// Click + Shift
|
||||||
let lastItem = this.allData.indexOf(this.fileInfoDetail[this.fileInfoDetail.length -1])
|
let lastItem = this.allData.indexOf(this.fileInfoDetail[this.fileInfoDetail.length - 1])
|
||||||
let clickedItem = this.allData.indexOf(this.data)
|
let clickedItem = this.allData.indexOf(this.data)
|
||||||
|
|
||||||
// If Click + Shift + Ctrl dont remove already selected items
|
// If Click + Shift + Ctrl dont remove already selected items
|
||||||
if(!e.ctrlKey && !e.metaKey ) {
|
if (!e.ctrlKey && !e.metaKey) {
|
||||||
this.$store.commit('CLEAR_FILEINFO_DETAIL')
|
this.$store.commit('CLEAR_FILEINFO_DETAIL')
|
||||||
}
|
}
|
||||||
|
|
||||||
//Shift selecting from top to bottom
|
//Shift selecting from top to bottom
|
||||||
if(lastItem < clickedItem) {
|
if (lastItem < clickedItem) {
|
||||||
for(let i=lastItem ; i<=clickedItem; i++ ) {
|
for (let i = lastItem; i <= clickedItem; i++) {
|
||||||
this.$store.commit('GET_FILEINFO_DETAIL', this.allData[i])
|
this.$store.commit('GET_FILEINFO_DETAIL', this.allData[i])
|
||||||
}
|
}
|
||||||
//Shift selecting from bottom to top
|
//Shift selecting from bottom to top
|
||||||
}else {
|
} else {
|
||||||
for(let i=lastItem ; i>=clickedItem; i-- ) {
|
for (let i = lastItem; i >= clickedItem; i--) {
|
||||||
this.$store.commit('GET_FILEINFO_DETAIL', this.allData[i])
|
this.$store.commit('GET_FILEINFO_DETAIL', this.allData[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
// Click
|
// Click
|
||||||
this.$store.commit('CLEAR_FILEINFO_DETAIL')
|
this.$store.commit('CLEAR_FILEINFO_DETAIL')
|
||||||
this.$store.commit('GET_FILEINFO_DETAIL', this.data)
|
this.$store.commit('GET_FILEINFO_DETAIL', this.data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.mobileMultiSelect && this.$isMobile()){
|
if (!this.mobileMultiSelect && this.$isMobile()) {
|
||||||
// Open in mobile version on first click
|
// Open in mobile version on first click
|
||||||
if (this.$isMobile() && this.isFolder) {
|
if (this.$isMobile() && this.isFolder) {
|
||||||
// Go to folder
|
// Go to folder
|
||||||
@@ -225,10 +217,10 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.mobileMultiSelect && this.$isMobile()) {
|
if (this.mobileMultiSelect && this.$isMobile()) {
|
||||||
if(this.fileInfoDetail.some(item => item.unique_id === this.data.unique_id)) {
|
if (this.fileInfoDetail.some(item => item.unique_id === this.data.unique_id)) {
|
||||||
this.$store.commit('REMOVE_ITEM_FILEINFO_DETAIL', this.data )
|
this.$store.commit('REMOVE_ITEM_FILEINFO_DETAIL', this.data)
|
||||||
}else {
|
} else {
|
||||||
this.$store.commit('GET_FILEINFO_DETAIL', this.data)
|
this.$store.commit('GET_FILEINFO_DETAIL', this.data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -293,6 +285,30 @@ export default {
|
|||||||
@import '@assets/vue-file-manager/_variables';
|
@import '@assets/vue-file-manager/_variables';
|
||||||
@import '@assets/vue-file-manager/_mixins';
|
@import '@assets/vue-file-manager/_mixins';
|
||||||
|
|
||||||
|
.slide-from-left-move {
|
||||||
|
transition: transform 300s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-from-left-enter-active,
|
||||||
|
.slide-from-right-enter-active,
|
||||||
|
.slide-from-left-leave-active,
|
||||||
|
.slide-from-right-leave-active {
|
||||||
|
transition: all 300ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-from-left-enter,
|
||||||
|
.slide-from-left-leave-to {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(-100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-from-right-enter,
|
||||||
|
.slide-from-right-leave-to {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.check-select {
|
.check-select {
|
||||||
margin-right: 15px;
|
margin-right: 15px;
|
||||||
margin-left: 6px;
|
margin-left: 6px;
|
||||||
@@ -300,17 +316,18 @@ export default {
|
|||||||
.select-box {
|
.select-box {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
background-color: $light_background;
|
background-color: darken($light_background, 5%);
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
box-shadow: 0 3px 15px 2px hsla(220, 36%, 16%, 0.05);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-box-active {
|
.select-box-active {
|
||||||
background-color: $text ;
|
background-color: #f4f5f6;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
stroke: white;
|
stroke: $text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -480,7 +497,6 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 7px;
|
padding: 7px;
|
||||||
// background-color: white ;
|
|
||||||
|
|
||||||
&.is-dragenter {
|
&.is-dragenter {
|
||||||
border: 2px dashed $theme;
|
border: 2px dashed $theme;
|
||||||
@@ -489,19 +505,21 @@ export default {
|
|||||||
|
|
||||||
&.no-clicked {
|
&.no-clicked {
|
||||||
background: white !important;
|
background: white !important;
|
||||||
|
|
||||||
.item-name {
|
.item-name {
|
||||||
.name {
|
.name {
|
||||||
color: $text !important ;
|
color: $text !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover ,
|
&:hover,
|
||||||
&.is-clicked {
|
&.is-clicked {
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background: $light_background ;
|
background: $light_background;
|
||||||
|
|
||||||
.item-name .name {
|
.item-name .name {
|
||||||
color: $theme ;
|
color: $theme;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -509,13 +527,16 @@ export default {
|
|||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
.check-select {
|
.check-select {
|
||||||
|
|
||||||
.select-box {
|
.select-box {
|
||||||
background-color: $dark_mode_foreground;
|
background-color: lighten($dark_mode_foreground, 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-box-active {
|
.select-box-active {
|
||||||
background-color: $theme;
|
background-color: lighten($dark_mode_foreground, 10%);
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
stroke: $text;
|
stroke: $theme;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -541,13 +562,15 @@ export default {
|
|||||||
.file-item {
|
.file-item {
|
||||||
&.no-clicked {
|
&.no-clicked {
|
||||||
background: $dark_mode_background !important;
|
background: $dark_mode_background !important;
|
||||||
|
|
||||||
.file-icon {
|
.file-icon {
|
||||||
|
|
||||||
path {
|
path {
|
||||||
fill: $dark_mode_foreground !important;
|
fill: $dark_mode_foreground !important;
|
||||||
stroke: #2F3C54 ;
|
stroke: #2F3C54;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name {
|
.item-name {
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
@@ -555,17 +578,18 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&.is-clicked {
|
&.is-clicked {
|
||||||
background: $dark_mode_foreground ;
|
background: $dark_mode_foreground;
|
||||||
|
|
||||||
.item-name .name {
|
.item-name .name {
|
||||||
color: $theme ;
|
color: $theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-icon {
|
.file-icon {
|
||||||
path {
|
path {
|
||||||
fill: $dark_mode_background ;
|
fill: $dark_mode_background;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--ContextMenu for Base location with MASTER permission-->
|
<!--ContextMenu for Base location with MASTER permission-->
|
||||||
|
<transition name="button">
|
||||||
<div v-if="baseLocationMasterMenu && ! multiSelectMode" class="mobile-actions">
|
<div v-if="baseLocationMasterMenu && ! multiSelectMode" class="mobile-actions">
|
||||||
<MobileActionButton @click.native="createFolder" icon="folder-plus" :class="{'is-inactive' : multiSelectMode}">
|
<MobileActionButton @click.native="createFolder" icon="folder-plus" :class="{'is-inactive' : multiSelectMode}">
|
||||||
{{ $t('context_menu.add_folder') }}
|
{{ $t('context_menu.add_folder') }}
|
||||||
@@ -29,8 +30,10 @@
|
|||||||
{{$t('preview_sorting.preview_sorting_button')}}
|
{{$t('preview_sorting.preview_sorting_button')}}
|
||||||
</MobileActionButton>
|
</MobileActionButton>
|
||||||
</div>
|
</div>
|
||||||
|
</transition>
|
||||||
|
|
||||||
<!-- Selecting buttons -->
|
<!-- Selecting buttons -->
|
||||||
|
<transition name="button">
|
||||||
<div v-if="multiSelectMode" class="mobile-actions">
|
<div v-if="multiSelectMode" class="mobile-actions">
|
||||||
<MobileActionButton @click.native="selectAll" icon="check-square">
|
<MobileActionButton @click.native="selectAll" icon="check-square">
|
||||||
{{$t('mobile_selecting.select_all')}}
|
{{$t('mobile_selecting.select_all')}}
|
||||||
@@ -42,6 +45,7 @@
|
|||||||
{{$t('mobile_selecting.done')}}
|
{{$t('mobile_selecting.done')}}
|
||||||
</MobileActionButton>
|
</MobileActionButton>
|
||||||
</div>
|
</div>
|
||||||
|
</transition>
|
||||||
|
|
||||||
<!--ContextMenu for Base location with VISITOR permission-->
|
<!--ContextMenu for Base location with VISITOR permission-->
|
||||||
<div v-if="baseLocationVisitorMenu && ! multiSelectMode" class="mobile-actions">
|
<div v-if="baseLocationVisitorMenu && ! multiSelectMode" class="mobile-actions">
|
||||||
@@ -134,6 +138,25 @@
|
|||||||
@import '@assets/vue-file-manager/_variables';
|
@import '@assets/vue-file-manager/_variables';
|
||||||
@import '@assets/vue-file-manager/_mixins';
|
@import '@assets/vue-file-manager/_mixins';
|
||||||
|
|
||||||
|
.button-enter-active,
|
||||||
|
.button-leave-active {
|
||||||
|
transition: all 250ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-enter {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-leave-to {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-leave-active {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
.preview-sorting {
|
.preview-sorting {
|
||||||
background: $light_background !important;
|
background: $light_background !important;
|
||||||
/deep/ .label {
|
/deep/ .label {
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ export default {
|
|||||||
.multiselect-actions {
|
.multiselect-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
position: absolute;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|||||||
@@ -0,0 +1,138 @@
|
|||||||
|
<template>
|
||||||
|
<transition name="popup">
|
||||||
|
<div class="popup" v-if="isZippingFiles">
|
||||||
|
<div class="popup-wrapper">
|
||||||
|
<div class="popup-content">
|
||||||
|
<div class="spinner-wrapper">
|
||||||
|
<Spinner/>
|
||||||
|
</div>
|
||||||
|
<h1 class="title">{{ $t('popup_zipping.title') }}</h1>
|
||||||
|
<p class="message">{{ $t('popup_zipping.message') }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Spinner from '@/components/FilesView/Spinner'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ProcessingPopup',
|
||||||
|
components: {
|
||||||
|
Spinner
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters([
|
||||||
|
'isZippingFiles'
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
@import '@assets/vue-file-manager/_variables';
|
||||||
|
@import '@assets/vue-file-manager/_mixins';
|
||||||
|
|
||||||
|
.spinner-wrapper {
|
||||||
|
padding-bottom: 90px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 20;
|
||||||
|
overflow: auto;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-wrapper {
|
||||||
|
z-index: 12;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
max-width: 480px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%) scale(1);
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: $light_mode_popup_shadow;
|
||||||
|
border-radius: 8px;
|
||||||
|
text-align: center;
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-content {
|
||||||
|
|
||||||
|
.title {
|
||||||
|
@include font-size(22);
|
||||||
|
font-weight: 700;
|
||||||
|
color: $text;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message {
|
||||||
|
@include font-size(16);
|
||||||
|
color: #333;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 690px) {
|
||||||
|
.popup-wrapper {
|
||||||
|
padding: 20px;
|
||||||
|
left: 15px;
|
||||||
|
right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-content {
|
||||||
|
|
||||||
|
.title {
|
||||||
|
@include font-size(19);
|
||||||
|
}
|
||||||
|
|
||||||
|
.message {
|
||||||
|
@include font-size(15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
.popup-wrapper {
|
||||||
|
background: $dark_mode_background;
|
||||||
|
}
|
||||||
|
.popup-content {
|
||||||
|
.title {
|
||||||
|
color: $dark_mode_text_primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message {
|
||||||
|
color: $dark_mode_text_secondary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Animations
|
||||||
|
.popup-enter-active {
|
||||||
|
animation: popup-in 0.35s 0.15s ease both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-leave-active {
|
||||||
|
animation: popup-in 0.15s ease reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes popup-in {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.7);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -43,11 +43,7 @@
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Close popup
|
// Close popup
|
||||||
events.$on('popup:close', () => {
|
events.$on('popup:close', () => this.isVisibleWrapper = false)
|
||||||
|
|
||||||
// Close popup
|
|
||||||
this.isVisibleWrapper = false
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,14 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<transition name="vignette">
|
<transition name="vignette">
|
||||||
<div v-if="isVisibleVignette" class="vignette" @click="closePopup"></div>
|
<div v-if="isVisible" class="vignette" @click="closePopup"></div>
|
||||||
</transition>
|
</transition>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {events} from '@/bus'
|
import {events} from '@/bus'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Vignette',
|
name: 'Vignette',
|
||||||
|
computed: {
|
||||||
|
...mapGetters([
|
||||||
|
'isZippingFiles'
|
||||||
|
]),
|
||||||
|
isVisible() {
|
||||||
|
return this.isZippingFiles || this.isVisibleVignette
|
||||||
|
},
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isVisibleVignette: false,
|
isVisibleVignette: false,
|
||||||
@@ -31,9 +40,7 @@
|
|||||||
events.$on('alert:open', () => this.isVisibleVignette = true)
|
events.$on('alert:open', () => this.isVisibleVignette = true)
|
||||||
events.$on('success:open', () => this.isVisibleVignette = true)
|
events.$on('success:open', () => this.isVisibleVignette = true)
|
||||||
events.$on('confirm:open', () => this.isVisibleVignette = true)
|
events.$on('confirm:open', () => this.isVisibleVignette = true)
|
||||||
events.$on('mobileSortingAndPreviewVignette', (state) => {
|
events.$on('mobileSortingAndPreviewVignette', (state) => this.isVisibleVignette = state)
|
||||||
this.isVisibleVignette = state
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -522,6 +522,10 @@
|
|||||||
"title": "Oh no",
|
"title": "Oh no",
|
||||||
"message": "File of this type ({mimetype}) is not allowed to upload."
|
"message": "File of this type ({mimetype}) is not allowed to upload."
|
||||||
},
|
},
|
||||||
|
"popup_zipping": {
|
||||||
|
"title": "Zipping Your Files...",
|
||||||
|
"message": "Please wait until your files start downloading."
|
||||||
|
},
|
||||||
"popup_create_folder": {
|
"popup_create_folder": {
|
||||||
"folder_default_name": "New Folder",
|
"folder_default_name": "New Folder",
|
||||||
"title": "Create Folder",
|
"title": "Create Folder",
|
||||||
|
|||||||
@@ -565,6 +565,10 @@
|
|||||||
"message": "Sorry, your file is too large and can't be uploaded",
|
"message": "Sorry, your file is too large and can't be uploaded",
|
||||||
"title": "File is too large"
|
"title": "File is too large"
|
||||||
},
|
},
|
||||||
|
"popup_zipping": {
|
||||||
|
"title": "Zipping Your Files...",
|
||||||
|
"message": "Please wait until your files start downloading."
|
||||||
|
},
|
||||||
"popup_rename": {
|
"popup_rename": {
|
||||||
"title": "Rename Your {item}",
|
"title": "Rename Your {item}",
|
||||||
"label": "Edit Name",
|
"label": "Edit Name",
|
||||||
|
|||||||
@@ -524,6 +524,10 @@
|
|||||||
"title": "Ospravelnujume sa",
|
"title": "Ospravelnujume sa",
|
||||||
"message": "Nieje povolené nahrávať tento typ súboru ({mimetype})."
|
"message": "Nieje povolené nahrávať tento typ súboru ({mimetype})."
|
||||||
},
|
},
|
||||||
|
"popup_zipping": {
|
||||||
|
"title": "Súbory sa zipujú...",
|
||||||
|
"message": "Čakajte prosím, kým súbory sa nezačnú sťahovať."
|
||||||
|
},
|
||||||
"popup_create_folder": {
|
"popup_create_folder": {
|
||||||
"folder_default_name": "Nový priečinok",
|
"folder_default_name": "Nový priečinok",
|
||||||
"title": "Vytvoriť priečinok",
|
"title": "Vytvoriť priečinok",
|
||||||
|
|||||||
+7
-14
@@ -1,3 +1,4 @@
|
|||||||
|
import Vue from "vue"
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import {events} from '@/bus'
|
import {events} from '@/bus'
|
||||||
import router from '@/router'
|
import router from '@/router'
|
||||||
@@ -84,7 +85,7 @@ const actions = {
|
|||||||
commit('LOADING_STATE', {loading: false, data: response.data})
|
commit('LOADING_STATE', {loading: false, data: response.data})
|
||||||
events.$emit('scrollTop')
|
events.$emit('scrollTop')
|
||||||
})
|
})
|
||||||
.catch(() => isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
getShared: ({commit, getters}) => {
|
getShared: ({commit, getters}) => {
|
||||||
commit('LOADING_STATE', {loading: true, data: []})
|
commit('LOADING_STATE', {loading: true, data: []})
|
||||||
@@ -107,7 +108,7 @@ const actions = {
|
|||||||
|
|
||||||
events.$emit('scrollTop')
|
events.$emit('scrollTop')
|
||||||
})
|
})
|
||||||
.catch(() => isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
getParticipantUploads: ({commit, getters}) => {
|
getParticipantUploads: ({commit, getters}) => {
|
||||||
commit('LOADING_STATE', {loading: true, data: []})
|
commit('LOADING_STATE', {loading: true, data: []})
|
||||||
@@ -126,7 +127,7 @@ const actions = {
|
|||||||
|
|
||||||
events.$emit('scrollTop')
|
events.$emit('scrollTop')
|
||||||
})
|
})
|
||||||
.catch(() => isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
getTrash: ({commit, getters}) => {
|
getTrash: ({commit, getters}) => {
|
||||||
commit('LOADING_STATE', {loading: true, data: []})
|
commit('LOADING_STATE', {loading: true, data: []})
|
||||||
@@ -148,7 +149,7 @@ const actions = {
|
|||||||
|
|
||||||
events.$emit('scrollTop')
|
events.$emit('scrollTop')
|
||||||
})
|
})
|
||||||
.catch(() => isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
getSearchResult: ({commit, getters}, query) => {
|
getSearchResult: ({commit, getters}, query) => {
|
||||||
commit('LOADING_STATE', {loading: true, data: []})
|
commit('LOADING_STATE', {loading: true, data: []})
|
||||||
@@ -171,7 +172,7 @@ const actions = {
|
|||||||
.then(response => {
|
.then(response => {
|
||||||
commit('LOADING_STATE', {loading: false, data: response.data})
|
commit('LOADING_STATE', {loading: false, data: response.data})
|
||||||
})
|
})
|
||||||
.catch(() => isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
getFolderTree: ({commit, getters}) => {
|
getFolderTree: ({commit, getters}) => {
|
||||||
|
|
||||||
@@ -197,7 +198,7 @@ const actions = {
|
|||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
reject(error)
|
reject(error)
|
||||||
|
|
||||||
isSomethingWrong()
|
Vue.prototype.$isSomethingWrong()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -305,14 +306,6 @@ const getters = {
|
|||||||
data: state => state.data,
|
data: state => state.data,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show error message
|
|
||||||
function isSomethingWrong() {
|
|
||||||
events.$emit('alert:open', {
|
|
||||||
title: i18n.t('popup_error.title'),
|
|
||||||
message: i18n.t('popup_error.message'),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
state: defaultState,
|
state: defaultState,
|
||||||
getters,
|
getters,
|
||||||
|
|||||||
+61
-41
@@ -1,24 +1,28 @@
|
|||||||
import i18n from '@/i18n/index'
|
import i18n from '@/i18n/index'
|
||||||
import router from '@/router'
|
import router from '@/router'
|
||||||
import {events} from '@/bus'
|
import { events } from '@/bus'
|
||||||
import { Store } from 'vuex'
|
import { last } from 'lodash'
|
||||||
import {last} from 'lodash'
|
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import Vue from "vue"
|
import Vue from 'vue'
|
||||||
|
|
||||||
|
const defaultState = {
|
||||||
|
isZippingFiles: false,
|
||||||
|
}
|
||||||
|
|
||||||
const actions = {
|
const actions = {
|
||||||
downloadFiles: ({ getters }) => {
|
downloadFiles: ({ commit, getters }) => {
|
||||||
let files = []
|
let files = []
|
||||||
|
|
||||||
// get unique_ids of selected files
|
// get unique_ids of selected files
|
||||||
getters.fileInfoDetail.forEach(file => files.push(file.unique_id))
|
getters.fileInfoDetail.forEach(file => files.push(file.unique_id))
|
||||||
|
|
||||||
// Get route
|
// Get route
|
||||||
let route = getters.sharedDetail && ! getters.sharedDetail.protected
|
let route = getters.sharedDetail && !getters.sharedDetail.protected
|
||||||
? '/api/zip/public/' + router.currentRoute.params.token
|
? '/api/zip/public/' + router.currentRoute.params.token
|
||||||
: '/api/zip'
|
: '/api/zip'
|
||||||
|
|
||||||
|
commit('ZIPPING_FILE_STATUS', true)
|
||||||
|
|
||||||
axios.post(route, {
|
axios.post(route, {
|
||||||
files: files
|
files: files
|
||||||
})
|
})
|
||||||
@@ -28,8 +32,11 @@ const actions = {
|
|||||||
.catch(() => {
|
.catch(() => {
|
||||||
Vue.prototype.$isSomethingWrong()
|
Vue.prototype.$isSomethingWrong()
|
||||||
})
|
})
|
||||||
|
.finally(() => {
|
||||||
|
commit('ZIPPING_FILE_STATUS', false)
|
||||||
|
})
|
||||||
},
|
},
|
||||||
moveItem: ({commit, getters, dispatch}, {to_item ,noSelectedItem}) => {
|
moveItem: ({ commit, getters, dispatch }, { to_item, noSelectedItem }) => {
|
||||||
|
|
||||||
let itemsToMove = []
|
let itemsToMove = []
|
||||||
let items = [noSelectedItem]
|
let items = [noSelectedItem]
|
||||||
@@ -40,7 +47,7 @@ const actions = {
|
|||||||
|
|
||||||
items.forEach(data => itemsToMove.push({
|
items.forEach(data => itemsToMove.push({
|
||||||
'force_delete': data.deleted_at ? true : false,
|
'force_delete': data.deleted_at ? true : false,
|
||||||
"unique_id": data.unique_id,
|
'unique_id': data.unique_id,
|
||||||
'type': data.type
|
'type': data.type
|
||||||
}))
|
}))
|
||||||
|
|
||||||
@@ -49,7 +56,7 @@ const actions = {
|
|||||||
commit('CLEAR_FILEINFO_DETAIL')
|
commit('CLEAR_FILEINFO_DETAIL')
|
||||||
|
|
||||||
// Get route
|
// Get route
|
||||||
let route = getters.sharedDetail && ! getters.sharedDetail.protected
|
let route = getters.sharedDetail && !getters.sharedDetail.protected
|
||||||
? '/api/move/public/' + router.currentRoute.params.token
|
? '/api/move/public/' + router.currentRoute.params.token
|
||||||
: '/api/move'
|
: '/api/move'
|
||||||
|
|
||||||
@@ -66,16 +73,16 @@ const actions = {
|
|||||||
|
|
||||||
if (item.type === 'folder')
|
if (item.type === 'folder')
|
||||||
dispatch('getAppData')
|
dispatch('getAppData')
|
||||||
if ( getters.currentFolder.location === 'public')
|
if (getters.currentFolder.location === 'public')
|
||||||
dispatch('getFolderTree')
|
dispatch('getFolderTree')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => Vue.prototype.$isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
createFolder: ({commit, getters, dispatch}, folderName) => {
|
createFolder: ({ commit, getters, dispatch }, folderName) => {
|
||||||
|
|
||||||
// Get route
|
// Get route
|
||||||
let route = getters.sharedDetail && ! getters.sharedDetail.protected
|
let route = getters.sharedDetail && !getters.sharedDetail.protected
|
||||||
? '/api/create-folder/public/' + router.currentRoute.params.token
|
? '/api/create-folder/public/' + router.currentRoute.params.token
|
||||||
: '/api/create-folder'
|
: '/api/create-folder'
|
||||||
|
|
||||||
@@ -89,22 +96,22 @@ const actions = {
|
|||||||
|
|
||||||
events.$emit('scrollTop')
|
events.$emit('scrollTop')
|
||||||
|
|
||||||
if ( getters.currentFolder.location !== 'public' )
|
if (getters.currentFolder.location !== 'public')
|
||||||
dispatch('getAppData')
|
dispatch('getAppData')
|
||||||
if ( getters.currentFolder.location === 'public')
|
if (getters.currentFolder.location === 'public')
|
||||||
dispatch('getFolderTree')
|
dispatch('getFolderTree')
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(() => Vue.prototype.$isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
renameItem: ({commit, getters, dispatch}, data) => {
|
renameItem: ({ commit, getters, dispatch }, data) => {
|
||||||
|
|
||||||
// Updated name in favourites panel
|
// Updated name in favourites panel
|
||||||
if (getters.permission === 'master' && data.type === 'folder')
|
if (getters.permission === 'master' && data.type === 'folder')
|
||||||
commit('UPDATE_NAME_IN_FAVOURITES', data)
|
commit('UPDATE_NAME_IN_FAVOURITES', data)
|
||||||
|
|
||||||
// Get route
|
// Get route
|
||||||
let route = getters.sharedDetail && ! getters.sharedDetail.protected
|
let route = getters.sharedDetail && !getters.sharedDetail.protected
|
||||||
? '/api/rename-item/' + data.unique_id + '/public/' + router.currentRoute.params.token
|
? '/api/rename-item/' + data.unique_id + '/public/' + router.currentRoute.params.token
|
||||||
: '/api/rename-item/' + data.unique_id
|
: '/api/rename-item/' + data.unique_id
|
||||||
|
|
||||||
@@ -124,17 +131,17 @@ const actions = {
|
|||||||
})
|
})
|
||||||
.catch(() => Vue.prototype.$isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
uploadFiles: ({commit, getters}, {form, fileSize, totalUploadedSize}) => {
|
uploadFiles: ({ commit, getters }, { form, fileSize, totalUploadedSize }) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|
||||||
// Get route
|
// Get route
|
||||||
let route = getters.sharedDetail && ! getters.sharedDetail.protected
|
let route = getters.sharedDetail && !getters.sharedDetail.protected
|
||||||
? '/api/upload/public/' + router.currentRoute.params.token
|
? '/api/upload/public/' + router.currentRoute.params.token
|
||||||
: '/api/upload'
|
: '/api/upload'
|
||||||
|
|
||||||
// Create cancel token for axios cancelation
|
// Create cancel token for axios cancelation
|
||||||
const CancelToken = axios.CancelToken;
|
const CancelToken = axios.CancelToken
|
||||||
const source = CancelToken.source();
|
const source = CancelToken.source()
|
||||||
|
|
||||||
axios
|
axios
|
||||||
.post(route, form, {
|
.post(route, form, {
|
||||||
@@ -174,27 +181,27 @@ const actions = {
|
|||||||
title: i18n.t('popup_exceed_limit.title'),
|
title: i18n.t('popup_exceed_limit.title'),
|
||||||
message: i18n.t('popup_exceed_limit.message')
|
message: i18n.t('popup_exceed_limit.message')
|
||||||
})
|
})
|
||||||
break;
|
break
|
||||||
case 415:
|
case 415:
|
||||||
events.$emit('alert:open', {
|
events.$emit('alert:open', {
|
||||||
emoji: '😬😬😬',
|
emoji: '😬😬😬',
|
||||||
title: i18n.t('popup_mimetypes_blacklist.title'),
|
title: i18n.t('popup_mimetypes_blacklist.title'),
|
||||||
message: i18n.t('popup_mimetypes_blacklist.message')
|
message: i18n.t('popup_mimetypes_blacklist.message')
|
||||||
})
|
})
|
||||||
break;
|
break
|
||||||
case 413:
|
case 413:
|
||||||
events.$emit('alert:open', {
|
events.$emit('alert:open', {
|
||||||
emoji: '😟😟😟',
|
emoji: '😟😟😟',
|
||||||
title: i18n.t('popup_paylod_error.title'),
|
title: i18n.t('popup_paylod_error.title'),
|
||||||
message: i18n.t('popup_paylod_error.message')
|
message: i18n.t('popup_paylod_error.message')
|
||||||
})
|
})
|
||||||
break;
|
break
|
||||||
default:
|
default:
|
||||||
events.$emit('alert:open', {
|
events.$emit('alert:open', {
|
||||||
title: i18n.t('popup_error.title'),
|
title: i18n.t('popup_error.title'),
|
||||||
message: i18n.t('popup_error.message'),
|
message: i18n.t('popup_error.message')
|
||||||
})
|
})
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset uploader
|
// Reset uploader
|
||||||
@@ -203,7 +210,7 @@ const actions = {
|
|||||||
|
|
||||||
// Cancel the upload request
|
// Cancel the upload request
|
||||||
events.$on('cancel-upload', () => {
|
events.$on('cancel-upload', () => {
|
||||||
source.cancel();
|
source.cancel()
|
||||||
|
|
||||||
// Hide upload progress bar
|
// Hide upload progress bar
|
||||||
commit('PROCESSING_FILE', false)
|
commit('PROCESSING_FILE', false)
|
||||||
@@ -211,7 +218,7 @@ const actions = {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
restoreItem: ({commit, getters}, item) => {
|
restoreItem: ({ commit, getters }, item) => {
|
||||||
|
|
||||||
let restoreToHome = false
|
let restoreToHome = false
|
||||||
|
|
||||||
@@ -233,20 +240,20 @@ const actions = {
|
|||||||
})
|
})
|
||||||
.catch(() => Vue.prototype.$isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
deleteItem: ({commit, getters, dispatch}, noSelectedItem) => {
|
deleteItem: ({ commit, getters, dispatch }, noSelectedItem) => {
|
||||||
|
|
||||||
let itemsToDelete = []
|
let itemsToDelete = []
|
||||||
let items = [noSelectedItem]
|
let items = [noSelectedItem]
|
||||||
|
|
||||||
// If coming no selected item dont get items to move from fileInfoDetail
|
// If coming no selected item dont get items to move from fileInfoDetail
|
||||||
if(!noSelectedItem)
|
if (!noSelectedItem)
|
||||||
items = getters.fileInfoDetail
|
items = getters.fileInfoDetail
|
||||||
|
|
||||||
items.forEach(data => {
|
items.forEach(data => {
|
||||||
itemsToDelete.push({
|
itemsToDelete.push({
|
||||||
'force_delete': data.deleted_at ? true : false,
|
'force_delete': data.deleted_at ? true : false,
|
||||||
'type': data.type,
|
'type': data.type,
|
||||||
"unique_id": data.unique_id
|
'unique_id': data.unique_id
|
||||||
})
|
})
|
||||||
|
|
||||||
// Remove file
|
// Remove file
|
||||||
@@ -271,12 +278,12 @@ const actions = {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Remove file preview
|
// Remove file preview
|
||||||
if(!noSelectedItem){
|
if (!noSelectedItem) {
|
||||||
commit('CLEAR_FILEINFO_DETAIL')
|
commit('CLEAR_FILEINFO_DETAIL')
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get route
|
// Get route
|
||||||
let route = getters.sharedDetail && ! getters.sharedDetail.protected
|
let route = getters.sharedDetail && !getters.sharedDetail.protected
|
||||||
? '/api/remove-item/public/' + router.currentRoute.params.token
|
? '/api/remove-item/public/' + router.currentRoute.params.token
|
||||||
: '/api/remove-item'
|
: '/api/remove-item'
|
||||||
|
|
||||||
@@ -294,44 +301,57 @@ const actions = {
|
|||||||
|
|
||||||
if (data.unique_id === getters.currentFolder.unique_id) {
|
if (data.unique_id === getters.currentFolder.unique_id) {
|
||||||
|
|
||||||
if ( getters.currentFolder.location === 'public' ) {
|
if (getters.currentFolder.location === 'public') {
|
||||||
dispatch('browseShared', [{folder: last(getters.browseHistory), back: true, init: false}])
|
dispatch('browseShared', [{ folder: last(getters.browseHistory), back: true, init: false }])
|
||||||
} else {
|
} else {
|
||||||
dispatch('getFolder', [{folder: last(getters.browseHistory), back: true, init: false}])
|
dispatch('getFolder', [{ folder: last(getters.browseHistory), back: true, init: false }])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if ( getters.currentFolder.location !== 'public' )
|
if (getters.currentFolder.location !== 'public')
|
||||||
dispatch('getAppData')
|
dispatch('getAppData')
|
||||||
|
|
||||||
if ( getters.currentFolder.location === 'public')
|
if (getters.currentFolder.location === 'public')
|
||||||
dispatch('getFolderTree')
|
dispatch('getFolderTree')
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(() => Vue.prototype.$isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
},
|
||||||
emptyTrash: ({commit, getters}) => {
|
emptyTrash: ({ commit, getters }) => {
|
||||||
|
|
||||||
// Clear file browser
|
// Clear file browser
|
||||||
commit('LOADING_STATE', {loading: true, data: []})
|
commit('LOADING_STATE', { loading: true, data: [] })
|
||||||
|
|
||||||
axios
|
axios
|
||||||
.post(getters.api + '/empty-trash', {
|
.post(getters.api + '/empty-trash', {
|
||||||
_method: 'delete'
|
_method: 'delete'
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
commit('LOADING_STATE', {loading: false, data: []})
|
commit('LOADING_STATE', { loading: false, data: [] })
|
||||||
events.$emit('scrollTop')
|
events.$emit('scrollTop')
|
||||||
|
|
||||||
// Remove file preview
|
// Remove file preview
|
||||||
commit('CLEAR_FILEINFO_DETAIL')
|
commit('CLEAR_FILEINFO_DETAIL')
|
||||||
})
|
})
|
||||||
.catch(() => Vue.prototype.$isSomethingWrong())
|
.catch(() => Vue.prototype.$isSomethingWrong())
|
||||||
},
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const mutations = {
|
||||||
|
ZIPPING_FILE_STATUS(state, status) {
|
||||||
|
state.isZippingFiles = status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getters = {
|
||||||
|
isZippingFiles: state => state.isZippingFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
state: defaultState,
|
||||||
|
mutations,
|
||||||
actions,
|
actions,
|
||||||
|
getters
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ $dark_background: #EBEBEB;
|
|||||||
$shadow: 0 7px 25px 1px rgba(0, 0, 0, 0.12);
|
$shadow: 0 7px 25px 1px rgba(0, 0, 0, 0.12);
|
||||||
|
|
||||||
$light_mode_input_background: hsla(210, 10%, 98%, 1);
|
$light_mode_input_background: hsla(210, 10%, 98%, 1);
|
||||||
$light_mode_popup_shadow: 0 15px 50px 10px rgba(26,38,74,0.12);
|
$light_mode_popup_shadow: 0 2px 40px rgba(26,38,74,0.12);
|
||||||
$light_mode_vignette: rgba(9, 8, 12, 0.35);
|
$light_mode_vignette: rgba(9, 8, 12, 0.35);
|
||||||
|
|
||||||
// Dark Mode
|
// Dark Mode
|
||||||
|
|||||||
Reference in New Issue
Block a user