mirror of https://github.com/logseq/logseq
enhance(ux): set property description for the dropdown property editor
parent
8beb31db5e
commit
d62da80bc5
|
@ -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")])]))
|
||||||
|
|
Loading…
Reference in New Issue