Browse Source

chore: add a hidden button to show the blocks created in the whiteboard

Peng Xiao 3 years ago
parent
commit
306fe621bb
2 changed files with 31 additions and 20 deletions
  1. 2 2
      src/main/frontend/components/page.cljs
  2. 29 18
      src/main/frontend/components/whiteboard.cljs

+ 2 - 2
src/main/frontend/components/page.cljs

@@ -369,8 +369,8 @@
           journal? (db/journal-page? page-name)
           fmt-journal? (boolean (date/journal-title->int page-name))
           sidebar? (:sidebar? option)
-          whiteboard? (:whiteboard? option)
-          whiteboard-page? (model/whiteboard-page? page-name)
+          whiteboard? (:whiteboard? option) ;; in a whiteboard portal shape?
+          whiteboard-page? (model/whiteboard-page? page-name) ;; is this page a whiteboard?
           route-page-name path-page-name
           page (if block?
                  (->> (:db/id (:block/page (db/entity repo [:block/uuid block-id])))

+ 29 - 18
src/main/frontend/components/whiteboard.cljs

@@ -76,30 +76,36 @@
                 :left offset-x
                 :top offset-y}} children])]))
 
+(rum/defc dropdown-menu
+  [{:keys [label children classname hover?]}]
+  (let [[open-flag set-open-flag] (rum/use-state 0)
+        open? (> open-flag (if hover? 0 1))
+        d-open-flag (rum/use-memo #(util/debounce 200 set-open-flag) [])]
+    (dropdown
+     [:div {: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]
+                        (util/stop e)
+                        (d-open-flag (fn [o] (if (not= o 2) 2 0))))}
+      (if (fn? label) (label open?) label)]
+     children open? #(set-open-flag 0))))
+
 (rum/defc page-refs-count < rum/static
   ([page-name classname]
    (page-refs-count page-name classname nil))
   ([page-name classname render-fn]
    (let [page-entity (model/get-page page-name)
          block-uuid (:block/uuid page-entity)
-         refs-count (count (:block/_refs page-entity))
-         [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) [])]
+         refs-count (count (:block/_refs page-entity))]
      (when (> refs-count 0)
-       (dropdown
-        [:div.flex.items-center.gap-2.whiteboard-page-refs-count
-         {: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]
-                      (util/stop e)
-                      (d-open-flag (fn [o] (if (not= o 2) 2 0))))}
-         [:div.open-page-ref-link refs-count]
-         (when render-fn (render-fn open? refs-count))]
-        (reference/block-linked-references block-uuid)
-        open?
-        #(set-open-flag 0))))))
+       (dropdown-menu {:classname classname
+                       :label (fn [open?]
+                                [:div.flex.items-center.gap-2
+                                 [:div.open-page-ref-link refs-count]
+                                 (when render-fn (render-fn open? refs-count))])
+                       :hover? true
+                       :children (reference/block-linked-references block-uuid)})))))
 
 (defn- get-page-display-name
   [page-name]
@@ -253,7 +259,12 @@
                         (fn [open? refs-count] [:span.whiteboard-page-refs-count-label
                                                 (if (> refs-count 1) "References" "Reference")
                                                 (ui/icon (if open? "references-hide" "references-show")
-                                                         {:extension? true})]))]]
+                                                         {:extension? true})]))]
+      (dropdown-menu {:label "(DEV) Show blocks in outliner"
+                      :classname "hidden"
+                      :children
+                      [:div.p-2 (page/page-blocks-cp (state/get-current-repo)
+                                                     (model/get-page page-name) nil)]})]
      (tldraw-app page-name block-id)]))
 
 (rum/defc whiteboard-route