From 3c6c788c569a4109bad53280d74da0e4c6dedc17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20Schl=C3=BCter?= Date: Wed, 30 Jan 2019 18:15:12 +0100 Subject: [PATCH] Add option to toggle a modal --- src/cljs/bulma/modal/events.cljs | 8 ++++++++ test/cljs/bulma/modal_test.cljs | 14 +++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/cljs/bulma/modal/events.cljs b/src/cljs/bulma/modal/events.cljs index b2d75d9..15cc644 100644 --- a/src/cljs/bulma/modal/events.cljs +++ b/src/cljs/bulma/modal/events.cljs @@ -10,3 +10,11 @@ (update db :bulma dissoc :visible-modal)) (rf/reg-event-db ::hide hide-modal) + +(defn toggle-modal [db [_ modal-id]] + (let [visible-modal (get-in db [:bulma :visible-modal])] + (if (= visible-modal modal-id) + (hide-modal db [::hide]) + (show-modal db [::show modal-id])))) + +(rf/reg-event-db ::toggle toggle-modal) diff --git a/test/cljs/bulma/modal_test.cljs b/test/cljs/bulma/modal_test.cljs index 0a85127..6079a99 100644 --- a/test/cljs/bulma/modal_test.cljs +++ b/test/cljs/bulma/modal_test.cljs @@ -23,6 +23,14 @@ (ev/hide-modal [::ev/hide]))] (is (not (some? (sub/visible-modal new-db [::sub/visible-modal])))))) (testing "Should tell us about the visibility of a modal with a predicate" - (is (-> (ev/show-modal {} [::ev/show :getting-repetitive]) - (sub/visible-modal [::sub/visible-modal]) - (sub/visible? [::sub/visible? :getting-repetitive]))))) + (is (true? (-> (ev/show-modal {} [::ev/show :getting-repetitive]) + (sub/visible-modal [::sub/visible-modal]) + (sub/visible? [::sub/visible? :getting-repetitive]))))) + (testing "Modal toggling" + (is (true? (-> (ev/toggle-modal {} [::ev/toggle :some-generic-modal]) + (sub/visible-modal [::sub/visible-modal]) + (sub/visible? [::sub/visible? :some-generic-modal])))) + (is (not (true? (-> (ev/toggle-modal {} [::ev/toggle :some-generic-modal]) + (ev/toggle-modal [::ev/toggle :some-generic-modal]) + (sub/visible-modal [::sub/visible-modal]) + (sub/visible? [::sub/visible? :some-generic-modal])))))))