mirror of
https://github.com/wukko/cobalt.git
synced 2025-06-13 05:37:44 +02:00
web: core system for queue & queen bee, move remux to new system
it's 3 am and i think i had a divine intervention
This commit is contained in:
@ -3,19 +3,20 @@
|
||||
export let classes = "";
|
||||
|
||||
export let draggedOver = false;
|
||||
export let file: File | undefined;
|
||||
export let files: FileList | undefined;
|
||||
|
||||
const dropHandler = async (ev: DragEvent) => {
|
||||
draggedOver = false;
|
||||
ev.preventDefault();
|
||||
|
||||
if (ev?.dataTransfer?.files.length === 1) {
|
||||
file = ev.dataTransfer.files[0];
|
||||
return file;
|
||||
if (ev?.dataTransfer?.files && ev?.dataTransfer?.files.length > 0) {
|
||||
files = ev.dataTransfer.files;
|
||||
return files;
|
||||
}
|
||||
};
|
||||
|
||||
const dragOverHandler = (ev: DragEvent) => {
|
||||
console.log("dragged over omg")
|
||||
draggedOver = true;
|
||||
ev.preventDefault();
|
||||
};
|
||||
@ -25,6 +26,7 @@
|
||||
{id}
|
||||
class={classes}
|
||||
role="region"
|
||||
aria-hidden="true"
|
||||
on:drop={(ev) => dropHandler(ev)}
|
||||
on:dragover={(ev) => dragOverHandler(ev)}
|
||||
on:dragend={() => {
|
||||
|
@ -5,22 +5,33 @@
|
||||
import IconFileImport from "@tabler/icons-svelte/IconFileImport.svelte";
|
||||
import IconUpload from "@tabler/icons-svelte/IconUpload.svelte";
|
||||
|
||||
export let file: File | undefined;
|
||||
export let files: FileList | undefined;
|
||||
export let draggedOver = false;
|
||||
export let acceptTypes: string[];
|
||||
export let acceptExtensions: string[];
|
||||
export let maxFileNumber: number = 100;
|
||||
|
||||
let selectorStringMultiple = maxFileNumber > 1 ? ".multiple" : "";
|
||||
|
||||
let fileInput: HTMLInputElement;
|
||||
|
||||
const openFile = async () => {
|
||||
fileInput = document.createElement("input");
|
||||
fileInput.type = "file";
|
||||
fileInput.accept = acceptTypes.join(",");
|
||||
|
||||
if (maxFileNumber > 1) {
|
||||
fileInput.multiple = true;
|
||||
}
|
||||
|
||||
fileInput.click();
|
||||
fileInput.onchange = async () => {
|
||||
if (fileInput.files?.length === 1) {
|
||||
file = fileInput.files[0];
|
||||
return file;
|
||||
let userFiles = fileInput?.files;
|
||||
if (userFiles && userFiles.length >= 1) {
|
||||
if (userFiles.length > maxFileNumber) {
|
||||
return alert("too many files, limit is " + maxFileNumber);
|
||||
}
|
||||
return files = userFiles;
|
||||
}
|
||||
};
|
||||
};
|
||||
@ -47,9 +58,9 @@
|
||||
<div class="open-file-text">
|
||||
<div class="open-title">
|
||||
{#if draggedOver}
|
||||
{$t("receiver.title.drop")}
|
||||
{$t("receiver.title.drop" + selectorStringMultiple)}
|
||||
{:else}
|
||||
{$t("receiver.title")}
|
||||
{$t("receiver.title" + selectorStringMultiple)}
|
||||
{/if}
|
||||
</div>
|
||||
<div class="subtext accept-list">
|
||||
|
Reference in New Issue
Block a user