enhance: use shui select for class parent

experiment/tanstack-table
Tienson Qin 2024-05-20 18:40:26 +08:00
parent 4fcb95a5a7
commit a604ce6697
2 changed files with 26 additions and 32 deletions

View File

@ -5,9 +5,9 @@
[frontend.handler.route :as route-handler]
[frontend.state :as state]
[frontend.ui :as ui]
[frontend.util :as util]
[rum.core :as rum]
[frontend.components.block :as block]))
[frontend.components.block :as block]
[logseq.shui.ui :as shui]))
(rum/defc class-select
[page class on-select]
@ -25,40 +25,34 @@
classes))
options (cons (if class
{:label "Choose parent class"
:value ""}
:value "Choose"}
{:label "Choose parent class"
:disabled true
:selected true
:value ""})
:value "Choose"})
options)]
(ui/select options
(fn [_e value]
(on-select value))
{:on-pointer-down
(fn [e]
(when (util/meta-key? e)
(if-let [page (db/entity [:block/uuid (some-> (util/evalue e) uuid)])]
(do
(route-handler/redirect-to-page! (:block/uuid page))
(.preventDefault e))
(js/console.error "No selected option found to navigate to"))))})))
(shui/select
{:on-value-change on-select
:default-value (:block/uuid (:class/parent page))}
(shui/select-trigger
{:class "!px-2 !py-0 !h-8"}
(shui/select-value
{:placeholder "Empty"}))
(shui/select-content
(shui/select-group
(for [{:keys [label value disabled]} options]
(shui/select-item {:value value :disabled disabled} label)))))))
(rum/defcs page-parent <
(rum/local false ::show?)
[state page parent]
(let [*show? (::show? state)
parent-id (:block/uuid parent)]
(if (or parent-id @*show?)
[:div.w-60
(class-select page parent-id (fn [value]
(if (seq value)
(db/transact!
[{:db/id (:db/id page)
:class/parent [:block/uuid (uuid value)]}])
(db/transact!
[[:db.fn/retractAttribute (:db/id page) :class/parent]]))))]
[:div.opacity-50.pointer.text-sm.cursor-pointer {:on-click #(reset! *show? true)}
"Empty"])))
(rum/defc page-parent
[page parent]
(let [parent-id (:block/uuid parent)]
(class-select page parent-id (fn [value]
(if (uuid? value)
(db/transact!
[{:db/id (:db/id page)
:class/parent [:block/uuid value]}])
(db/transact!
[[:db.fn/retractAttribute (:db/id page) :class/parent]]))))))
(rum/defcs configure < rum/reactive
"Configure a class page"

View File

@ -539,7 +539,7 @@
(cond
(and db-based? (not block?))
(db-page/page-info page
(if (ldb/class? page)
(if (and (ldb/class? page) sidebar?)
(atom true)
(::show-page-info? state)))