UNPKG

@aotearoan/neon

Version:

Neon is a lightweight design library of Vue 3 components with minimal dependencies.

44 lines (43 loc) 1.7 kB
import { defineComponent as f, ref as o, onMounted as u, onUnmounted as i } from "vue"; import { NeonState as v } from "../../../model/common/state/NeonState.es.js"; const m = f({ name: "NeonDropZone", props: { /** * The state of the drop zone, used to indicate loading. ACCEPTS <em>Ready</em> and <em>Loading</em> states ONLY. */ state: { type: String, default: () => v.Ready }, /** * The disabled state of the drop zone */ disabled: { type: Boolean, default: !1 }, /** * Display the drop zone as a circle instead of square */ circular: { type: Boolean, default: !1 } }, emits: [ /** * Emitted when files are dropped on the drop zone * @type {FileList} the list of dropped files */ "files" ], setup(n, { emit: d }) { const e = o(null), r = o(!1), t = (a) => (a != null && a.dataTransfer && (a.preventDefault(), a.dataTransfer.effectAllowed = "copy", r.value = !0), !1), l = () => { r.value = !1; }, s = (a) => (n.state !== "loading" && !n.disabled && a != null && a.dataTransfer && (a.preventDefault(), d("files", a.dataTransfer.files), r.value = !1), !1); return u(() => { e.value && (e.value.addEventListener("dragover", t), e.value.addEventListener("dragenter", t), e.value.addEventListener("dragleave", l), e.value.addEventListener("drop", s)); }), i(() => { e.value && (e.value.removeEventListener("dragover", t), e.value.removeEventListener("dragenter", t), e.value.addEventListener("dragleave", l), e.value.removeEventListener("drop", s)); }), { active: r, dropzone: e }; } }); export { m as default }; //# sourceMappingURL=NeonDropZone.es.js.map