Files
mixtape/zero.Backoffice.UI/app/modules/media/pages/overview/drop.vue
T

109 lines
2.2 KiB
Vue
Raw Normal View History

2021-12-17 13:51:16 +01:00
<template>
2021-12-18 16:24:07 +01:00
<form enctype="multipart/form-data" class="media-overview-drop-outer" dropzone=""
@dragenter.prevent="onDragEnter" @dragleave.prevent="onDragLeave" @dragover.prevent="" @drop.prevent.stop="onDrop($event.dataTransfer.files)">
<div class="media-overview-drop" :class="{ 'is-dragging': dragging }">
<ui-icon symbol="fth-upload" :size="26" :stroke-width="2" />
<input type="file" multiple class="-input" @change="onDrop($event.target.files)" />
</div>
2021-12-18 01:51:38 +01:00
</form>
2021-12-17 13:51:16 +01:00
</template>
2021-12-18 01:51:38 +01:00
<script lang="ts">
import * as overlays from '../../../../services/overlay';
2021-12-17 13:51:16 +01:00
export default {
name: 'mediaOverviewDrop',
props: {
2021-12-18 16:24:07 +01:00
folderId: {
type: String,
required: false
}
2021-12-18 01:51:38 +01:00
},
data: () => ({
dragging: false
}),
methods: {
2021-12-18 16:24:07 +01:00
async onDrop(files)
2021-12-18 01:51:38 +01:00
{
this.dragging = false;
const result = await overlays.open({
component: () => import('../../overlays/upload-status.vue'),
2021-12-18 16:24:07 +01:00
width: 420,
softdismiss: false,
model: {
files,
2022-01-03 13:29:03 +01:00
folderId: this.folderId == 'root' ? null : this.folderId
2021-12-18 16:24:07 +01:00
}
2021-12-18 01:51:38 +01:00
});
2021-12-18 16:24:07 +01:00
if (result.eventType === 'confirm')
{
this.$emit('completed', files);
}
2021-12-18 01:51:38 +01:00
},
onDragEnter(ev)
{
this.dragging = true;
},
onDrageLeave(ev)
{
this.dragging = false;
}
2021-12-17 13:51:16 +01:00
}
};
</script>
<style lang="scss">
.media-overview-drop
{
display: flex;
justify-content: center;
align-items: center;
width: 100%;
min-height: 130px;
border-radius: var(--radius);
align-self: flex-start;
border: 1px dashed var(--color-line-dashed-onbg);
color: var(--color-text);
2021-12-18 16:24:07 +01:00
position: relative;
cursor: pointer;
2021-12-18 01:51:38 +01:00
&.is-dragging
{
border-color: var(--color-accent);
}
2021-12-18 16:24:07 +01:00
.-input
{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
height: 130px;
opacity: 0;
}
input[type=file],
input[type=file]::-webkit-file-upload-button
{
cursor: pointer;
}
2021-12-17 13:51:16 +01:00
}
.ui-datagrid-outer.is-selecting .media-overview-drop
{
pointer-events: none;
opacity: .55;
}
</style>