mirror of
https://github.com/logseq/logseq.git
synced 2026-06-01 19:01:22 +00:00
enhance: create empty block when a new block type property created
This commit is contained in:
@@ -49,7 +49,7 @@
|
||||
(reset! (::property-name state) (:block/original-name property))
|
||||
(reset! (::property-schema state) (:block/schema property))
|
||||
state))}
|
||||
[state repo property {:keys [toggle-fn]}]
|
||||
[state repo property {:keys [toggle-fn block]}]
|
||||
(let [*property-name (::property-name state)
|
||||
*property-schema (::property-schema state)
|
||||
built-in-property? (contains? gp-property/db-built-in-properties-keys-str (:block/original-name property))
|
||||
@@ -112,13 +112,16 @@
|
||||
(ui/button
|
||||
"Save"
|
||||
:on-click (fn [e]
|
||||
(util/stop e)
|
||||
(property-handler/update-property!
|
||||
repo (:block/uuid property)
|
||||
{:property-name @*property-name
|
||||
:property-schema @*property-schema})
|
||||
(state/close-modal!)
|
||||
(when toggle-fn (toggle-fn)))))]]]))
|
||||
(let [block? (= :block (:type @*property-schema))]
|
||||
(util/stop e)
|
||||
(property-handler/update-property!
|
||||
repo (:block/uuid property)
|
||||
{:property-name @*property-name
|
||||
:property-schema @*property-schema})
|
||||
(state/close-modal!)
|
||||
(when toggle-fn (toggle-fn))
|
||||
(when (and block? block)
|
||||
(pv/create-new-block! block property nil))))))]]]))
|
||||
|
||||
(defn- get-property-from-db [name]
|
||||
(when-not (string/blank? name)
|
||||
@@ -127,7 +130,8 @@
|
||||
(defn- add-property-from-dropdown
|
||||
"Adds an existing or new property from dropdown. Used from a block or page context.
|
||||
For pages, used to add both schema properties or properties for a page"
|
||||
[entity property-name {:keys [class-schema? blocks-container-id page-configure?]}]
|
||||
[entity property-name {:keys [class-schema? blocks-container-id page-configure?
|
||||
*show-new-property-config?]}]
|
||||
(let [repo (state/get-current-repo)]
|
||||
;; existing property selected or entered
|
||||
(if-let [property (get-property-from-db property-name)]
|
||||
@@ -147,7 +151,8 @@
|
||||
(pv/add-property! entity property-name "" {:class-schema? class-schema? :exit-edit? page-configure?})
|
||||
(do
|
||||
(db-property/upsert-property! repo property-name {:type :default} {})
|
||||
))
|
||||
(when *show-new-property-config?
|
||||
(reset! *show-new-property-config? true))))
|
||||
(do (notification/show! "This is an invalid property name. A property name cannot start with page reference characters '#' or '[['." :error)
|
||||
(pv/exit-edit-property))))))
|
||||
|
||||
@@ -178,11 +183,12 @@
|
||||
(when (not class-schema?)
|
||||
(if @*show-new-property-config?
|
||||
(ui/dropdown
|
||||
(fn [_toggle-fn]
|
||||
(fn [_opts]
|
||||
(pv/property-scalar-value entity property @*property-value (assoc opts :editing? true)))
|
||||
(fn [toggle-fn]
|
||||
(fn [{:keys [toggle-fn]}]
|
||||
[:div.p-6
|
||||
(property-config repo property toggle-fn)])
|
||||
(property-config repo property {:toggle-fn toggle-fn
|
||||
:block entity})])
|
||||
{:initial-open? true
|
||||
:modal-class (util/hiccup->class
|
||||
"origin-top-right.absolute.left-0.rounded-md.shadow-lg.mt-2")})
|
||||
@@ -197,8 +203,7 @@
|
||||
:input-default-placeholder "Add a property"
|
||||
:on-chosen (fn [{:keys [value]}]
|
||||
(reset! *property-key value)
|
||||
(reset! *show-new-property-config? true)
|
||||
(add-property-from-dropdown entity value opts))
|
||||
(add-property-from-dropdown entity value (assoc opts :*show-new-property-config? *show-new-property-config?)))
|
||||
:input-opts {:on-blur (fn []
|
||||
(when *configure-show?
|
||||
(reset! *configure-show? false))
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
(when-let [f (:on-chosen opts)] (f))
|
||||
nil))})})))
|
||||
|
||||
(defn- create-new-block!
|
||||
(defn create-new-block!
|
||||
[block property {:keys [*add-new-item?]}]
|
||||
(let [repo (state/get-current-repo)
|
||||
pid (:block/uuid (db/entity [:block/name "created-in-property"]))
|
||||
|
||||
Reference in New Issue
Block a user