Skip to content

Commit

Permalink
fix(system): pass id to form, handle hot reload
Browse files Browse the repository at this point in the history
  • Loading branch information
goshatch committed Feb 12, 2025
1 parent e2a5789 commit bf931b9
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
4 changes: 4 additions & 0 deletions src/main/parts/frontend/app.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,7 @@
(uix.dom/render-root ($ app) root)
(let [version (.-version htmx)]
(js/console.log "HTMX loaded! Version:" version)))))

(defn ^:dev/after-load reload! []
(js/console.log "Reloading app...")
(uix.dom/render-root ($ app) root))
13 changes: 7 additions & 6 deletions src/main/parts/frontend/components/nodes.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
[parts.frontend.components.node-form :refer [node-form]]
[parts.common.part-types :refer [part-types]]))

(defui parts-node [{:keys [type data is-connectable]}]
(defui parts-node [{:keys [id type data is-connectable]}]
(let [[editing? set-editing] (use-state false)]
($ :div {:class (str "node " type)}
($ Handle {:type "target"
Expand All @@ -17,7 +17,7 @@
($ :button {:onClick #(set-editing true)}
"✏️")))
(when editing?
($ node-form {:node {:type type :data data}
($ node-form {:node {:id id :type type :data data}
:on-save (fn [id form-data]
;; FIXME: Implement actual handler
(println id form-data)
Expand All @@ -29,10 +29,11 @@

(def PartsNode
(uix.core/as-react
(fn [{:keys [type data isConnectable]}]
($ parts-node {:type type
:data (js->clj data)
:is-connectable isConnectable}))))
(fn [{:keys [id type data isConnectable] :as ^js props}]
($ parts-node {:id id
:type type
:data (js->clj data)
:is-connectable isConnectable}))))

(def node-types
(->> part-types
Expand Down
6 changes: 3 additions & 3 deletions src/main/parts/frontend/components/system.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
;; all -- it should all be Clojure.
(defn- new-node [type _opts]
#js{:id (str (random-uuid))
:type type
:position #js{:x 390 :y 290}
:data #js{:label type}})
:type type
:position #js{:x 390 :y 290}
:data #js{:label type}})

(defn- add-node
([type]
Expand Down

0 comments on commit bf931b9

Please # to comment.