diff --git a/frontend/uxbox/data/workspace.cljs b/frontend/uxbox/data/workspace.cljs index 05ece16eb..2a031814e 100644 --- a/frontend/uxbox/data/workspace.cljs +++ b/frontend/uxbox/data/workspace.cljs @@ -44,12 +44,14 @@ (defn toggle-tool "Toggle the enabled flag of the specified tool." - [toolname] + [key] (reify rs/UpdateEvent (-apply-update [_ state] - (let [key (keyword (str (name toolname) "-enabled"))] - (update-in state [:workspace key] (fnil not false)))))) + (let [flags (get-in state [:workspace :flags])] + (if (contains? flags key) + (assoc-in state [:workspace :flags] (disj flags key)) + (assoc-in state [:workspace :flags] (conj flags key))))))) (defn toggle-toolbox "Toggle the visibility flag of the specified toolbox." @@ -174,6 +176,7 @@ (-apply-update [_ state] (let [s {:project projectid :toolboxes #{} + :flags #{} :drawing nil :selected #{} :page pageid}] diff --git a/frontend/uxbox/ui/workspace/base.cljs b/frontend/uxbox/ui/workspace/base.cljs index b125172e3..9766a377f 100644 --- a/frontend/uxbox/ui/workspace/base.cljs +++ b/frontend/uxbox/ui/workspace/base.cljs @@ -36,6 +36,10 @@ (as-> (l/in [:workspace :toolboxes]) $ (l/focus-atom $ st/state))) +(def ^:static flags-state + (as-> (l/in [:workspace :flags]) $ + (l/focus-atom $ st/state))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Scroll Stream ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/frontend/uxbox/ui/workspace/grid.cljs b/frontend/uxbox/ui/workspace/grid.cljs index acb19fe6a..ac4e7ae31 100644 --- a/frontend/uxbox/ui/workspace/grid.cljs +++ b/frontend/uxbox/ui/workspace/grid.cljs @@ -56,9 +56,9 @@ (let [padding (* 0 zoom) ticks-mod (/ 100 zoom) step-size (/ 10 zoom) - workspace (rum/react wb/workspace-state) + flags (rum/react wb/flags-state) page (rum/react wb/page-state) - enabled? (:grid-enabled workspace false) + enabled? (contains? flags :workspace/grid) vertical-ticks (range (- 0 wb/document-start-y) (- (:width page) wb/document-start-y) step-size) diff --git a/frontend/uxbox/ui/workspace/header.cljs b/frontend/uxbox/ui/workspace/header.cljs index 8c49ad464..2f204a676 100644 --- a/frontend/uxbox/ui/workspace/header.cljs +++ b/frontend/uxbox/ui/workspace/header.cljs @@ -24,14 +24,14 @@ (defn header-render [own] (let [page (rum/react wb/page-state) - workspace (rum/react wb/workspace-state) + flags (rum/react wb/flags-state) toggle #(rs/emit! (dw/toggle-tool %))] (html [:header#workspace-bar.workspace-bar [:div.main-icon (nav/link (r/route-for :dashboard/projects) i/logo-icon)] [:div.project-tree-btn - {:on-click (partial toggle :pagesbar)} + {:on-click (partial toggle :workspace/pagesmngr)} i/project-tree [:span (:name page)]] [:div.workspace-options @@ -57,8 +57,8 @@ i/ruler] [:li.tooltip.tooltip-bottom {:alt "Grid (Ctrl + G)" - :class (when (:grid-enabled workspace) "selected") - :on-click (partial toggle :grid)} + :class (when (contains? flags :workspace/grid) "selected") + :on-click (partial toggle :workspace/grid)} i/grid] [:li.tooltip.tooltip-bottom {:alt "Align (Ctrl + A)"} diff --git a/frontend/uxbox/ui/workspace/pagesmngr.cljs b/frontend/uxbox/ui/workspace/pagesmngr.cljs index 3c8ea9b27..ff8cd46db 100644 --- a/frontend/uxbox/ui/workspace/pagesmngr.cljs +++ b/frontend/uxbox/ui/workspace/pagesmngr.cljs @@ -116,11 +116,11 @@ (defn pagesmngr-render [own] (let [local (:rum/local own) - workspace (rum/react wb/workspace-state) + flags (rum/react wb/flags-state) project (rum/react wb/project-state)] (html [:div#project-bar.project-bar - (when-not (:pagesbar-enabled workspace false) + (when-not (contains? flags :workspace/pagesmngr) {:class "toggle"}) (if (:edit @local) (page-form local) diff --git a/frontend/uxbox/ui/workspace/sidebar.cljs b/frontend/uxbox/ui/workspace/sidebar.cljs index 601d41112..51759d66c 100644 --- a/frontend/uxbox/ui/workspace/sidebar.cljs +++ b/frontend/uxbox/ui/workspace/sidebar.cljs @@ -10,7 +10,6 @@ [uxbox.ui.workspace.base :as wb] [uxbox.ui.workspace.toolboxes :as toolboxes])) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Aside ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;