fix dropdown

This commit is contained in:
BC
2019-02-19 19:04:16 -08:00
parent 76f460c52c
commit 0ded06b26e
2 changed files with 38 additions and 21 deletions

View File

@@ -27,6 +27,24 @@
[:a.navbar-item {:on-click (fn [e] (.preventDefault e) (re-frame/dispatch [::events/logout]))} "Logout"]]]
[:a.navbar-item {:href login-url} "Login"])))
(defn navbar-drop-down-contents [children]
(let [toggle-fn (fn [] (re-frame/dispatch [::events/toggle-menu :client]))]
(reagent/create-class {:component-did-mount (fn [] (.addEventListener js/document "click" toggle-fn))
:component-will-unmount (fn [] (.removeEventListener js/document "click" toggle-fn))
:reagent-render
(fn [children]
children)})))
(defn navbar-drop-down [{:keys [active? header]} & children]
(reagent/create-class
{:reagent-render (fn [{:keys [active? header]} & children]
[:div { :class (str "navbar-item has-dropdown " (when active? "is-active"))}
[:a {:class "navbar-link login" :on-click (fn [] (re-frame/dispatch [::events/toggle-menu :client]))} header]
[:div {:class "navbar-dropdown"}
(when active?
[navbar-drop-down-contents
[:div
children]])]])}))
(defn navbar [ap]
(let [client (re-frame/subscribe [::subs/client])
clients (re-frame/subscribe [::subs/clients])
@@ -56,23 +74,20 @@
[:span]]
[:div.navbar-end
(when (> (count @clients) 1)
[:div { :class (str "navbar-item has-dropdown " (when (get-in @menu [:client :active?]) "is-active"))}
[:a {:class "navbar-link login" :on-click (fn [] (re-frame/dispatch [::events/toggle-menu :client]))} "Client: " (if @client (:name @client)
"All")]
[:div {:class "navbar-dropdown"}
[:a {:class "navbar-item"
:on-click (fn []
(re-frame/dispatch [::events/toggle-menu :client])
(re-frame/dispatch [::events/swap-client nil]))
} "All"]
[:hr {:class "navbar-divider"}]
(for [{:keys [name id] :as client} @clients]
^{:key id }
[:a {:class "navbar-item"
:on-click (fn []
(re-frame/dispatch [::events/toggle-menu :client])
(re-frame/dispatch [::events/swap-client client]))
} name])]])]]
[navbar-drop-down {:active? (get-in @menu [:client :active?])
:header (str "Client: " (if @client (:name @client)
"All"))}
[:a {:class "navbar-item"
:on-click (fn []
(re-frame/dispatch [::events/swap-client nil]))
} "All"]
[:hr {:class "navbar-divider"}]
(for [{:keys [name id] :as client} @clients]
^{:key id }
[:a {:class "navbar-item"
:on-click (fn []
(re-frame/dispatch [::events/swap-client client]))
} name])])]]
[login-dropdown]]]))
(defn footer []