Browse Source

fix: click contents page doesn't close the left bar

Tienson Qin 5 years ago
parent
commit
43e925767b

+ 24 - 20
src/main/frontend/components/block.cljs

@@ -17,6 +17,7 @@
             [frontend.ui :as ui]
             [frontend.handler.editor :as editor-handler]
             [frontend.handler.dnd :as dnd]
+            [frontend.handler.ui :as ui-handler]
             [frontend.handler.repeated :as repeated]
             [goog.object :as gobj]
             [medley.core :as medley]
@@ -239,7 +240,7 @@
 (declare page-reference)
 
 (defn page-cp
-  [{:keys [html-export? label children] :as config} page]
+  [{:keys [html-export? label children contents-page?] :as config} page]
   (when-let [page-name (:page/name page)]
     (let [original-page-name (get page :page/original-name page-name)
           original-page-name (if (date/valid-journal-title? original-page-name)
@@ -259,7 +260,11 @@
                          (state/get-current-repo)
                          (:db/id page-entity)
                          :page
-                         {:page page-entity}))))}
+                         {:page page-entity})))
+                    (when (and contents-page?
+                               (state/get-left-sidebar-open?))
+                      (ui-handler/close-left-sidebar!)))}
+
        (if (seq children)
          (for [child children]
            (if (= (first child) "Label")
@@ -275,24 +280,23 @@
 
 (defn page-reference
   [html-export? s config label]
-  [:span.page-reference
-   (when (and (not html-export?)
-              (not (= (:id config) "contents"))
-              (not (= (:id config) "Contents")))
-     [:span.text-gray-500 "[["])
-   (if (string/ends-with? s ".excalidraw")
-     [:a.page-ref
-      {:href (rfe/href :draw nil {:file (string/replace s (str config/default-draw-directory "/") "")})
-       :on-click (fn [e] (util/stop e))}
-      [:span
-       (svg/excalidraw-logo)
-       (string/capitalize (draw/get-file-title s))]]
-     (page-cp (assoc config
-                     :label (mldoc/plain->text label)) {:page/name s}))
-   (when (and (not html-export?)
-              (not (= (:id config) "contents"))
-              (not (= (:id config) "Contents")))
-     [:span.text-gray-500 "]]"])])
+  (let [contents-page? (= "contents" (string/lower-case (str (:id config))))]
+    [:span.page-reference
+     (when (and (not html-export?) (not contents-page?))
+       [:span.text-gray-500 "[["])
+     (if (string/ends-with? s ".excalidraw")
+       [:a.page-ref
+        {:href (rfe/href :draw nil {:file (string/replace s (str config/default-draw-directory "/") "")})
+         :on-click (fn [e]
+                     (util/stop e))}
+        [:span
+         (svg/excalidraw-logo)
+         (string/capitalize (draw/get-file-title s))]]
+       (page-cp (assoc config
+                       :label (mldoc/plain->text label)
+                       :contents-page? contents-page?) {:page/name s}))
+     (when (and (not html-export?) (not contents-page?))
+       [:span.text-gray-500 "]]"])]))
 
 (defn- latex-environment-content
   [name option content]

+ 1 - 1
src/main/frontend/components/sidebar.cljs

@@ -87,7 +87,7 @@
      :style {:background-color "#002b36"}}
     (if @open?
       [:div.absolute.top-0.right-0.-mr-14.p-1
-       [:button.flex.items-center.justify-center.h-12.w-12.rounded-full.focus:outline-none.focus:bg-gray-600
+       [:button#close-left-bar.flex.items-center.justify-center.h-12.w-12.rounded-full.focus:outline-none.focus:bg-gray-600
         {:on-click close-fn}
         [:svg.h-6.w-6.text-white
          {:viewBox "0 0 24 24", :fill "none", :stroke "currentColor"}

+ 4 - 21
src/main/frontend/handler/ui.cljs

@@ -8,27 +8,10 @@
             [frontend.util :as util :refer-macros [profile]]))
 
 ;; sidebars
-(defn hide-left-sidebar
+(defn close-left-sidebar!
   []
-  (dom/add-class! (dom/by-id "menu")
-                  "md:block")
-  (dom/remove-class! (dom/by-id "left-sidebar")
-                     "enter")
-  (dom/remove-class! (dom/by-id "search")
-                     "sidebar-open")
-  (dom/remove-class! (dom/by-id "main")
-                     "sidebar-open"))
-
-(defn show-left-sidebar
-  []
-  (dom/remove-class! (dom/by-id "menu")
-                     "md:block")
-  (dom/add-class! (dom/by-id "left-sidebar")
-                  "enter")
-  (dom/add-class! (dom/by-id "search")
-                  "sidebar-open")
-  (dom/add-class! (dom/by-id "main")
-                  "sidebar-open"))
+  (when-let [elem (gdom/getElement "close-left-bar")]
+    (.click elem)))
 
 (defn hide-right-sidebar
   []
@@ -92,5 +75,5 @@
                     (state/get-custom-css-link)
                     (db/get-custom-css)
                     ;; (state/get-custom-css-link)
-                    )]
+)]
     (util/add-style! style)))