Skip to content

Instantly share code, notes, and snippets.

@jdkealy
Created July 15, 2014 17:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jdkealy/14bc7181039ddef20367 to your computer and use it in GitHub Desktop.
Save jdkealy/14bc7181039ddef20367 to your computer and use it in GitHub Desktop.
(ns ptv.scratch
(:require
[om.core :as om :include-macros true]
[om.dom :as dom :include-macros true]))
(enable-console-print!)
(def app-state (atom {}))
(defn component-one [data owner opts]
(reify
om/IDidMount
(did-mount [this]
(om/set-state! owner :mounted true))
om/IRenderState
(render-state [_ state]
(if (om/get-state owner :mounted)
(dom/div nil "COMPONENT ONE")
(dom/div nil "STILL WAITING TO MOUNT")))))
(defn component-two [data owner opts]
(reify
om/IRenderState
(render-state [_ state]
(dom/div nil "COMPONENT TWO"))))
(defn tabs [data owner opts]
(reify
om/IInitState
(init-state [_]
{:active-tab :c-one})
om/IRenderState
(render-state [_ state]
(dom/div nil
(dom/div nil
(dom/a #js{:onClick (fn [e] (om/set-state! owner :active-tab :c-one)) :href "#"} "component 1")
(dom/a #js{:onClick (fn [e] (om/set-state! owner :active-tab :c-two)) :href "#"} "component 2"))
(case (om/get-state owner :active-tab)
:c-one (om/build component-one data)
:c-two (om/build component-two data))))))
(defn app-view [data owner]
(reify
om/IRenderState
(render-state [_ state]
(dom/div nil (om/build tabs data)))))
(om/root app-view {} {:target (. js/document (getElementById "app"))})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment