Adapt previous component function to work with latest rum version.

This commit is contained in:
Andrey Antukh 2016-07-09 16:37:24 +03:00
parent 897fd2bae1
commit 938f4f5bfd
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95

View file

@ -5,42 +5,21 @@
[lentes.core :as l] [lentes.core :as l]
[goog.dom.forms :as gforms])) [goog.dom.forms :as gforms]))
(extend-type cljs.core.UUID
INamed
(-name [this] (str this))
(-namespace [_] ""))
(defn component (defn component
[spec] [{:keys [render] :as spec}]
(let [name (or (:name spec) {:pre [(ifn? render)]}
(str (gensym "rum-"))) (let [name (or (:name spec) (str (gensym "rum-")))
mixins (or (:mixins spec) mixins (or (:mixins spec) [])
[]) spec (dissoc spec :name :mixins :render)
spec (merge (dissoc spec :name :mixins) render' (fn [state]
(when-let [rfn (:render spec)] [(apply render state (:rum/args state)) state])
{:render (fn [state] mixins (conj mixins spec)]
[(apply rfn state (:rum/props state)) state])})) (rum/build-ctor render' mixins name)))
cls (rum/build-class (conj mixins spec) name)
ctr (fn self
([] (self {}))
([& props]
(let [state {:rum/props props}]
(rum/element cls state nil))))]
(with-meta ctr {:rum/class cls})))
(defn ref-html
[own ref]
(let [component (-> own :rum/react-component)
node (aget (.-refs component) ref)]
(.-innerHTML node)))
(defn ref-value
[own ref]
(let [component (-> own :rum/react-component)
ref-node (aget (.-refs component) ref)
dom-node (.findDOMNode js/ReactDOM ref-node)]
(.-value dom-node)))
(defn get-ref-dom
[own ref]
(let [component (-> own :rum/react-component)
ref-node (aget (.-refs component) ref)]
(.findDOMNode js/ReactDOM ref-node)))
(defn concat (defn concat
[& elements] [& elements]