Skip to content

Instantly share code, notes, and snippets.

@rksm
Created July 29, 2019 15:03
Show Gist options
  • Save rksm/e9fc85eb29c9033da23827029711063f to your computer and use it in GitHub Desktop.
Save rksm/e9fc85eb29c9033da23827029711063f to your computer and use it in GitHub Desktop.
clojurescript HTML dragging snippet
(def dragged (atom nil))
(cljs.core/add-watch dragged :drag-watcher (fn [key ref old-state new-state] (println "dragged changed")))
(defn on-drag [evt]
(println "on-drag"))
(defn on-drag-start [evt]
(println "on-drag-start")
(reset! dragged (.-target evt))
(set! (.. evt -target -style -opacity) .5))
(defn on-drag-end [evt]
(println "on-drag-end")
(set! (.. evt -target -style -opacity) "")
(reset! dragged nil)
)
(defn on-drag-over [evt]
(println "on-drag-over"))
(defn on-drag-enter [evt]
(println "on-drag-enter"))
(defn on-drag-leave [evt]
(println "on-drag-leave"))
(defn on-drop [evt]
(println "on-drop"))
;; /* Event wird vom ge-drag-ten Element ausgelöst */
(.addEventListener js/document.body "drag" on-drag)
(.addEventListener js/document.body "dragstart" on-drag-start)
(.addEventListener js/document.body "dragend" on-drag-end)
;; // Standard-Aktion verhindern um das drop-Event zu erlauben
(.addEventListener js/document.body "dragover" on-drag-over)
(.addEventListener js/document.body "dragenter" on-drag-enter)
(.addEventListener js/document.body "dragleave" on-drag-leave)
;; // Standard-Aktion verhindern (Bei einigen Elementen wäre das das Öffnen als Link)
(.addEventListener js/document.body "drop" on-drop)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment