Files
logseq/src/main/frontend/components/class.cljs
Gabriel Horner 2d01784b5c fix: Root Tag page showing properties as children
Root Tag was showing non-tag children b/c page-ref wasn't
using a unique identifier to display refs
2024-10-15 12:41:19 -04:00

37 lines
1.5 KiB
Clojure

(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/uuid 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})])))