fix dropdown
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::toggle-expense-accounts
|
::toggle-expense-accounts
|
||||||
(fn [{:keys [db] } [_ invoice-id]]
|
(fn [{:keys [db] } [_ invoice-id]]
|
||||||
|
(println "toggling")
|
||||||
{:db
|
{:db
|
||||||
(update-in db [::visible-expense-accounts] (fn [i] (if (= i invoice-id) nil invoice-id) ))}))
|
(update-in db [::visible-expense-accounts] (fn [i] (if (= i invoice-id) nil invoice-id) ))}))
|
||||||
|
|
||||||
@@ -169,14 +170,15 @@
|
|||||||
|
|
||||||
[:div.dropdown.is-right {:class (if (= id visible-expense-accounts)
|
[:div.dropdown.is-right {:class (if (= id visible-expense-accounts)
|
||||||
"is-active"
|
"is-active"
|
||||||
"")}
|
"")
|
||||||
|
:on-blur (dispatch-event [::toggle-expense-accounts id])
|
||||||
|
:on-focus (dispatch-event [::toggle-expense-accounts id])}
|
||||||
[:div.dropdown-trigger
|
[:div.dropdown-trigger
|
||||||
[:a.button.badge {:data-badge (str (clojure.core/count expense-accounts))
|
[:a.button.badge {:data-badge (str (clojure.core/count expense-accounts))
|
||||||
:aria-haspopup true
|
:aria-haspopup true
|
||||||
:tab-index "0"
|
:tab-index "0"
|
||||||
|
|
||||||
:on-blur (delayed-dispatch [::toggle-expense-accounts id])
|
|
||||||
:on-focus (dispatch-event [::toggle-expense-accounts id])
|
|
||||||
} "Accounts"]]
|
} "Accounts"]]
|
||||||
[:div.dropdown-menu {:role "menu"}
|
[:div.dropdown-menu {:role "menu"}
|
||||||
[:div.dropdown-content
|
[:div.dropdown-content
|
||||||
@@ -187,7 +189,7 @@
|
|||||||
[:hr.dropdown-divider]
|
[:hr.dropdown-divider]
|
||||||
|
|
||||||
(when expense-event
|
(when expense-event
|
||||||
[:a.dropdown-item.is-primary {:on-click (dispatch-event (conj expense-event i))} "Change"])]]])
|
[:a.dropdown-item.is-primary {:on-click (fn [x] (println "here"))#_(dispatch-event (conj expense-event i))} "Change"])]]])
|
||||||
[:span {:style {:margin-left "1em"}}]
|
[:span {:style {:margin-left "1em"}}]
|
||||||
(when (and on-edit-invoice (not= ":voided" (:status i)))
|
(when (and on-edit-invoice (not= ":voided" (:status i)))
|
||||||
[:a.button {:on-click (fn [] (on-edit-invoice i))} [:span.icon [:i.fa.fa-pencil]]])
|
[:a.button {:on-click (fn [] (on-edit-invoice i))} [:span.icon [:i.fa.fa-pencil]]])
|
||||||
|
|||||||
@@ -27,6 +27,24 @@
|
|||||||
[:a.navbar-item {:on-click (fn [e] (.preventDefault e) (re-frame/dispatch [::events/logout]))} "Logout"]]]
|
[:a.navbar-item {:on-click (fn [e] (.preventDefault e) (re-frame/dispatch [::events/logout]))} "Logout"]]]
|
||||||
[:a.navbar-item {:href login-url} "Login"])))
|
[: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]
|
(defn navbar [ap]
|
||||||
(let [client (re-frame/subscribe [::subs/client])
|
(let [client (re-frame/subscribe [::subs/client])
|
||||||
clients (re-frame/subscribe [::subs/clients])
|
clients (re-frame/subscribe [::subs/clients])
|
||||||
@@ -56,23 +74,20 @@
|
|||||||
[:span]]
|
[:span]]
|
||||||
[:div.navbar-end
|
[:div.navbar-end
|
||||||
(when (> (count @clients) 1)
|
(when (> (count @clients) 1)
|
||||||
[:div { :class (str "navbar-item has-dropdown " (when (get-in @menu [:client :active?]) "is-active"))}
|
[navbar-drop-down {:active? (get-in @menu [:client :active?])
|
||||||
[:a {:class "navbar-link login" :on-click (fn [] (re-frame/dispatch [::events/toggle-menu :client]))} "Client: " (if @client (:name @client)
|
:header (str "Client: " (if @client (:name @client)
|
||||||
"All")]
|
"All"))}
|
||||||
[:div {:class "navbar-dropdown"}
|
[:a {:class "navbar-item"
|
||||||
[:a {:class "navbar-item"
|
:on-click (fn []
|
||||||
:on-click (fn []
|
(re-frame/dispatch [::events/swap-client nil]))
|
||||||
(re-frame/dispatch [::events/toggle-menu :client])
|
} "All"]
|
||||||
(re-frame/dispatch [::events/swap-client nil]))
|
[:hr {:class "navbar-divider"}]
|
||||||
} "All"]
|
(for [{:keys [name id] :as client} @clients]
|
||||||
[:hr {:class "navbar-divider"}]
|
^{:key id }
|
||||||
(for [{:keys [name id] :as client} @clients]
|
[:a {:class "navbar-item"
|
||||||
^{:key id }
|
:on-click (fn []
|
||||||
[:a {:class "navbar-item"
|
(re-frame/dispatch [::events/swap-client client]))
|
||||||
:on-click (fn []
|
} name])])]]
|
||||||
(re-frame/dispatch [::events/toggle-menu :client])
|
|
||||||
(re-frame/dispatch [::events/swap-client client]))
|
|
||||||
} name])]])]]
|
|
||||||
[login-dropdown]]]))
|
[login-dropdown]]]))
|
||||||
|
|
||||||
(defn footer []
|
(defn footer []
|
||||||
|
|||||||
Reference in New Issue
Block a user