Last active
September 15, 2019 01:31
-
-
Save nikopol/d68700b45319016e7506f694ae50e6e5 to your computer and use it in GitHub Desktop.
Revisions
-
nikopol revised this gist
Oct 25, 2016 . 1 changed file with 7 additions and 7 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -9,7 +9,7 @@ (defn- nodelist-coll [nodelist] (doall (map #(.item nodelist %) (range (.-length nodelist))))) (defn- coll! [item] (cond (coll? item) item (nil? item) [] @@ -18,7 +18,7 @@ (defn +css "add classname(s) to given nodes" [nodes css] (let [cnodes (coll! nodes) +cn (set (str/split css #"\s+"))] (doseq [n cnodes] (let [c (union (set (str/split (.-className n) #"\s+")) +cn)] @@ -28,7 +28,7 @@ (defn -css "remove classname(s) of given nodes" [nodes css] (let [cnodes (coll! nodes) -cn (set (str/split css #"\s+"))] (doseq [n cnodes] (let [c (difference (set (str/split (.-className n) #"\s+")) -cn)] @@ -38,21 +38,21 @@ (defn hide "hide the given nodes" [nodes] (doseq [n (coll! nodes)] (set! (.-display (.-style n)) "none")) nodes) (defn show "display the given nodes" [nodes] (doseq [n (coll! nodes)] (set! (.-display (.-style n)) "block")) nodes) (defn html ([nodes html] "setup inner html of given nodes" (doseq [n (coll! nodes)] (set! (.-innerHTML n) (or html ""))) nodes) ([html] @@ -83,6 +83,6 @@ [nodes selector] (let [dst-node (one selector)] (if (not (nil? dst-node)) (doseq [n (coll! nodes)] (.appendChild dst-node n))) nodes)) -
nikopol revised this gist
Oct 25, 2016 . 1 changed file with 6 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,15 +3,17 @@ [clojure.set :refer [difference union]])) ; sample usage: ; (-> (all ".class") (hide) (+css "titi") (clear) (html "<span>zob</span>") (show)) (defn- nodelist-coll [nodelist] (doall (map #(.item nodelist %) (range (.-length nodelist))))) (defn- coll [item] (cond (coll? item) item (nil? item) [] [item])) (defn +css "add classname(s) to given nodes" -
nikopol created this gist
Oct 25, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,86 @@ (ns dom.core (:require [clojure.string :as str] [clojure.set :refer [difference union]])) ; sample usage: ; (-> (all ".class") (hide) (+css "titi") 'clear) (html "<span>zob</span>") (show)) (defn- nodelist-coll [nodelist] (doall (map #(.item nodelist %) (range (.-length nodelist))))) (defn- coll [item] (if (coll? item) item (if (nil? item) [] [item]))) (defn +css "add classname(s) to given nodes" [nodes css] (let [cnodes (coll nodes) +cn (set (str/split css #"\s+"))] (doseq [n cnodes] (let [c (union (set (str/split (.-className n) #"\s+")) +cn)] (set! (.-className n) (str/join " " c)))) nodes)) (defn -css "remove classname(s) of given nodes" [nodes css] (let [cnodes (coll nodes) -cn (set (str/split css #"\s+"))] (doseq [n cnodes] (let [c (difference (set (str/split (.-className n) #"\s+")) -cn)] (set! (.-className n) (str/join " " c)))) nodes)) (defn hide "hide the given nodes" [nodes] (doseq [n (coll nodes)] (set! (.-display (.-style n)) "none")) nodes) (defn show "display the given nodes" [nodes] (doseq [n (coll nodes)] (set! (.-display (.-style n)) "block")) nodes) (defn html ([nodes html] "setup inner html of given nodes" (doseq [n (coll nodes)] (set! (.-innerHTML n) (or html ""))) nodes) ([html] "create html element from an html string, returning generated nodes" (let [div (.createElement js/document "div")] (set! (.-innerHTML div) (or html "")) (nodelist-coll (.childNodes div))))) (defn clear "remove children of given nodes" [nodes] (html nodes "")) (defn all "return an HTMLElement collection matching the given selector" [selector] (let [nodelist (.querySelectorAll js/document selector)] (nodelist-coll nodelist))) (defn one "return the first HTMLElement matching the given selector" [selector] (first (all selector))) (defn append-to "append nodes to the first match of given selector" [nodes selector] (let [dst-node (one selector)] (if (not (nil? dst-node)) (doseq [n (coll nodes)] (.appendChild dst-node n))) nodes))