| 123456789101112131415161718192021222324252627282930313233343536 |
- (ns frontend.components.class
- (:require [frontend.components.block :as block]
- [frontend.db.model :as model]
- [frontend.state :as state]
- [frontend.ui :as ui]
- [rum.core :as rum]))
- (defn class-children-aux
- [class {:keys [default-collapsed?] :as opts}]
- (let [children (->> (:logseq.property/_parent class)
- ;; Disallow parent cycles
- (remove #(= (:db/id class) (:db/id %))))]
- (when (seq children)
- [:ul
- (for [child (sort-by :block/title children)]
- (let [title [:li.ml-2 (block/page-reference false (:block/title child) {:show-brackets? false} nil)]]
- (if (seq (:logseq.property/_parent child))
- (ui/foldable
- title
- (class-children-aux child opts)
- {:default-collapsed? default-collapsed?})
- title)))])))
- (rum/defc class-children
- [class]
- (when (seq (:logseq.property/_parent class))
- (let [children-pages (set (model/get-structured-children (state/get-current-repo) (:db/id class)))
- ;; Expand children if there are about a pageful of total blocks to display
- default-collapsed? (> (count children-pages) 30)]
- [:div.mt-4
- (ui/foldable
- [:div.font-medium.opacity-50
- (str "Children (" (count children-pages) ")")]
- [:div.ml-1.mt-2 (class-children-aux class {:default-collapsed? default-collapsed?})]
- {:default-collapsed? false
- :title-trigger? true})])))
|