From 2b74c34c001c801662f2c43ab239c5e3dab544f5 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 1 Feb 2016 23:25:23 +0200 Subject: [PATCH] Add drag and drop utils. --- src/uxbox/util/dom.cljs | 13 ------------- src/uxbox/util/dom/dnd.cljs | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 src/uxbox/util/dom/dnd.cljs diff --git a/src/uxbox/util/dom.cljs b/src/uxbox/util/dom.cljs index 46491c2b0..87cf270f2 100644 --- a/src/uxbox/util/dom.cljs +++ b/src/uxbox/util/dom.cljs @@ -24,16 +24,3 @@ (defn event->target [e] (.-target e)) - -(defn event->data-transfer - [e] - (.-dataTransfer e)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Drag & Drop helpers -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; (defn set-effect-allowed! -;; [e effect] -;; (let [dt (.-dataTransfer e)] -;; (set! diff --git a/src/uxbox/util/dom/dnd.cljs b/src/uxbox/util/dom/dnd.cljs new file mode 100644 index 000000000..2ab91ab6a --- /dev/null +++ b/src/uxbox/util/dom/dnd.cljs @@ -0,0 +1,33 @@ +(ns uxbox.util.dom.dnd + "Drag & Drop interop helpers." + (:require [uxbox.util.data :refer (read-string)])) + +(defn event->data-transfer + [e] + (.-dataTransfer e)) + +(defn set-allowed-effect! + [e effect] + (let [dt (.-dataTransfer e)] + (set! (.-effectAllowed dt) effect) + e)) + +(defn set-drop-effect! + [e effect] + (let [dt (.-dataTransfer e)] + (set! (.-dropEffect dt) effect) + e)) + +(defn set-data! + ([e data] + (set-data! e "uxbox/data" data)) + ([e key data] + (let [dt (.-dataTransfer e)] + (.setData dt (str key) (pr-str data))))) + +(defn get-data + ([e] + (get-data e "uxbox/data")) + ([e key] + (let [dt (.-dataTransfer e)] + (read-string (.getData dt (str key))))))