enhance(ux): set property description for the dropdown property editor

pull/11483/head
charlie 2024-08-22 18:36:03 +08:00
parent 082511cf83
commit 55c8fd8e44
1 changed files with 22 additions and 6 deletions

View File

@ -10,6 +10,7 @@
[frontend.util :as util] [frontend.util :as util]
[logseq.db.frontend.property :as db-property] [logseq.db.frontend.property :as db-property]
[logseq.db.frontend.property.type :as db-property-type] [logseq.db.frontend.property.type :as db-property-type]
[logseq.outliner.core :as outliner-core]
[logseq.shui.ui :as shui] [logseq.shui.ui :as shui]
[logseq.shui.popup.core :as shui-popup] [logseq.shui.popup.core :as shui-popup]
[promesa.core :as p] [promesa.core :as p]
@ -45,11 +46,23 @@
(inc current-idx))] (inc current-idx))]
(some-> els (nth to-idx) (.focus)))))) (some-> els (nth to-idx) (.focus))))))
(defn- set-property-description!
[property description]
(if-let [ent (:logseq.property/description property)]
(db/transact! (state/get-current-repo)
[(outliner-core/block-with-updated-at
{:db/id (:db/id ent) :block/title description})]
{:outliner-op :save-block})
(when-not (string/blank? description)
(db-property-handler/set-block-property!
(:db/id property)
:logseq.property/description description))))
(rum/defc name-edit-pane (rum/defc name-edit-pane
[property {:keys [set-sub-open!]}] [property {:keys [set-sub-open!]}]
(let [*form-data (rum/use-ref {:icon (:logseq.property/icon property) (let [*form-data (rum/use-ref {:icon (:logseq.property/icon property)
:title (or (:block/title property) "") :title (or (:block/title property) "")
:description (or (:logseq.property/description property) "")}) :description (or (db-property/property-value-content (:logseq.property/description property)) "")})
[form-data, set-form-data!] (rum/use-state (rum/deref *form-data)) [form-data, set-form-data!] (rum/use-state (rum/deref *form-data))
*el (rum/use-ref nil) *el (rum/use-ref nil)
*input-ref (rum/use-ref nil) *input-ref (rum/use-ref nil)
@ -85,11 +98,14 @@
(some-> (rum/deref *input-ref) (.focus)) (some-> (rum/deref *input-ref) (.focus))
(throw (js/Error. "property name is empty"))) (throw (js/Error. "property name is empty")))
(-> (db-property-handler/upsert-property! (-> [(db-property-handler/upsert-property!
(:db/ident property) (:db/ident property)
(:block/schema property) (:block/schema property)
{:property-name title {:property-name title
:properties {:logseq.property/icon (:icon form-data)}}) :properties {:logseq.property/icon (:icon form-data)}})
(when (not= description (:description (rum/deref *form-data)))
(set-property-description! property description))]
(p/all)
(p/then #(set-sub-open! false)) (p/then #(set-sub-open! false))
(p/catch #(shui/toast! (str %) :error))))} (p/catch #(shui/toast! (str %) :error))))}
"Save")])])) "Save")])]))