fix: whiteboard page ref styles

pull/6345/head
Peng Xiao 2022-08-08 15:51:38 +08:00
parent 67c9bad450
commit 23969f18c1
1 changed files with 10 additions and 7 deletions

View File

@ -43,18 +43,20 @@
(rum/defc page-refs-count < rum/static (rum/defc page-refs-count < rum/static
([page-name classname] ([page-name classname]
(page-refs-count page-name classname nil)) (page-refs-count page-name classname nil))
([page-name classname children] ([page-name classname render-fn]
(let [page-entity (model/get-page page-name) (let [page-entity (model/get-page page-name)
block-uuid (:block/uuid page-entity) block-uuid (:block/uuid page-entity)
ref (rum/use-ref nil) ref (rum/use-ref nil)
refs-count (count (:block/_refs page-entity)) refs-count (count (:block/_refs page-entity))
[open? set-open?] (rum/use-state nil)] [open-flag set-open-flag] (rum/use-state 0)
open? (not= open-flag 0)
d-open-flag (rum/use-memo #(util/debounce 200 set-open-flag) [])]
;; TODO: move click outside to the utility? ;; TODO: move click outside to the utility?
(rum/use-effect! (rum/use-effect!
(let [listener (fn [e] (let [listener (fn [e]
(when (and (.-current ref) (when (and (.-current ref)
(not (.contains (.-current ref) (.-target e)))) (not (.contains (.-current ref) (.-target e))))
(set-open? nil)))] (d-open-flag 0)))]
(.addEventListener js/document.body "mousedown" listener true) (.addEventListener js/document.body "mousedown" listener true)
#(.removeEventListener js/document.body "mousedown" listener)) #(.removeEventListener js/document.body "mousedown" listener))
[ref]) [ref])
@ -62,7 +64,6 @@
(ui/tippy {:in-editor? false (ui/tippy {:in-editor? false
:html (fn [] [:div.mx-2 {:ref ref} (reference/block-linked-references block-uuid)]) :html (fn [] [:div.mx-2 {:ref ref} (reference/block-linked-references block-uuid)])
:interactive true :interactive true
:delay [100, 500]
:position "bottom" :position "bottom"
:distance 10 :distance 10
:open? open? :open? open?
@ -71,11 +72,13 @@
:boundariesElement "viewport"}}}} :boundariesElement "viewport"}}}}
[:div.flex.items-center.gap-2.whiteboard-page-refs-count [:div.flex.items-center.gap-2.whiteboard-page-refs-count
{:class (str classname (when open? " open")) {:class (str classname (when open? " open"))
:on-mouse-enter (fn [] (d-open-flag #(if (= % 0) 1 %)))
:on-mouse-leave (fn [] (d-open-flag #(if (= % 2) % 0)))
:on-click (fn [e] :on-click (fn [e]
(util/stop e) (util/stop e)
(set-open? (fn [o] (if (nil? o) true nil))))} (d-open-flag (fn [o] (if (not= o 2) 2 0))))}
[:div.open-page-ref-link refs-count] [:div.open-page-ref-link refs-count]
children]))))) (when render-fn (render-fn open?))])))))
(defn- get-page-display-name (defn- get-page-display-name
[page-name] [page-name]
@ -187,7 +190,7 @@
(page-refs-count name (page-refs-count name
"text-md px-3 py-1 cursor-default whiteboard-page-refs-count" "text-md px-3 py-1 cursor-default whiteboard-page-refs-count"
[:<> "Reference" (ui/icon "references-show")])] (fn [open?] [:<> "Reference" (ui/icon (if open? "references-hide" "references-show"))]))]
(tldraw-app name block-id)]) (tldraw-app name block-id)])
(rum/defc whiteboard-route (rum/defc whiteboard-route