fix: recent in sidebar do not remember it's state (#6144)

* fix: recent in sidebar do not remember it's state

* fix: recent in sidebar do not remember it's state

* fix: store the collapsed state of navigatin item in left side bar

* enhance: use react to handle toggling

Co-authored-by: Junyi Du <junyidu.cn@gmail.com>
pull/6241/head
maxweilun1989 2022-08-01 23:16:40 +08:00 committed by GitHub
parent 57b9547ba7
commit 85acd60b9c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 9 deletions

View File

@ -41,18 +41,15 @@
[reitit.frontend.easy :as rfe]
[rum.core :as rum]))
(rum/defc nav-content-item
(rum/defc nav-content-item < rum/reactive
[name {:keys [class]} child]
[:div.nav-content-item.is-expand
{:class class}
[:div.nav-content-item
{:class (util/classnames [class {:is-expand (not (state/sub [:ui/navigation-item-collapsed? class]))}])}
[:div.nav-content-item-inner
[:div.header.items-center.mb-1
{:on-click (fn [^js/MouseEvent e]
(let [^js target (.-target e)
^js parent (.closest target ".nav-content-item")]
(.toggle (.-classList parent) "is-expand")))}
{:on-click (fn [^js/MouseEvent _e]
(state/toggle-navigation-item-collapsed! class))}
[:div.font-medium.fade-link name]
[:span
[:a.more svg/arrow-down-v2]]]
@ -263,7 +260,7 @@
:active (and (not srs-open?) (= route-name :all-pages))
:icon "files"})]]
(favorites t)
(when (and left-sidebar-open? (not config/publishing?)) (favorites t))
(when (and left-sidebar-open? (not config/publishing?)) (recent-pages t))

View File

@ -60,6 +60,8 @@
:modal/close-btn? nil
:modal/subsets []
;; left sidebar
:ui/navigation-item-collapsed? {}
;; right sidebar
:ui/fullscreen? false
@ -738,6 +740,10 @@
:custom-context-menu/show? false
:custom-context-menu/links nil))
(defn toggle-navigation-item-collapsed!
[item]
(update-state! [:ui/navigation-item-collapsed? item] not))
(defn toggle-sidebar-open?!
[]
(swap! state update :ui/sidebar-open? not))