diff --git a/deps/outliner/src/logseq/outliner/property.cljs b/deps/outliner/src/logseq/outliner/property.cljs index 32b6fc67af..abbe0bfd98 100644 --- a/deps/outliner/src/logseq/outliner/property.cljs +++ b/deps/outliner/src/logseq/outliner/property.cljs @@ -363,6 +363,9 @@ block (d/entity @conn eid) property (d/entity @conn property-id)] (cond + (= :logseq.property/empty-placeholder (:db/ident (get block property-id))) + nil + (= (:logseq.property/default-value property) (get block property-id)) (ldb/transact! conn [{:db/id (:db/id block) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 947817bf0c..47ae2a9c2e 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -791,12 +791,12 @@ {:ref *el-trigger :on-mouse-enter (fn [^js e] (when (= (some-> (.-target e) (.closest ".preview-ref-link")) - (rum/deref *el-trigger)) + (rum/deref *el-trigger)) (let [timer (rum/deref *timer) timer1 (rum/deref *timer1)] (when-not timer (rum/set-ref! *timer - (js/setTimeout #(set-visible! true) 1000))) + (js/setTimeout #(set-visible! true) 1000))) (when timer1 (js/clearTimeout timer1) (rum/set-ref! *timer1 nil))))) @@ -809,7 +809,7 @@ (rum/set-ref! *timer nil)) (when-not timer1 (rum/set-ref! *timer1 - (js/setTimeout #(set-visible! false) 300))))))} + (js/setTimeout #(set-visible! false) 300))))))} children])) (rum/defc page-preview-trigger @@ -825,8 +825,8 @@ (let [[ready? set-ready!] (rum/use-state false)] (rum/use-effect! - (fn [] - (let [el-popup (rum/deref *el-popup) + (fn [] + (let [el-popup (rum/deref *el-popup) focus! #(js/setTimeout (fn [] (.focus el-popup)))] (set-ready! true) (focus!) @@ -849,7 +849,7 @@ ;; check the top popup whether is the preview popup (when (ui/last-shui-preview-popup?) (rum/set-ref! *timer1 - (js/setTimeout #(set-visible! false) 500))))} + (js/setTimeout #(set-visible! false) 500))))} (when-let [page-cp (and ready? (state/get-page-blocks-cp))] (page-cp {:repo (state/get-current-repo) :page-name (str (:block/uuid source)) @@ -858,11 +858,11 @@ :preview? true}))])))] (rum/use-effect! - (fn [] - (if (some-> (rum/deref *el-wrap) (.closest "[data-radix-popper-content-wrapper]")) - (set-in-popup! true) - (set-in-popup! false))) - []) + (fn [] + (if (some-> (rum/deref *el-wrap) (.closest "[data-radix-popper-content-wrapper]")) + (set-in-popup! true) + (set-in-popup! false))) + []) [:span {:ref *el-wrap} (if (boolean? in-popup?) @@ -1184,15 +1184,15 @@ :on-mouse-leave (fn [] (when (ui/last-shui-preview-popup?) (rum/set-ref! *timer1 - (js/setTimeout #(set-visible! false) 500))))} + (js/setTimeout #(set-visible! false) 500))))} [(breadcrumb config repo id {:indent? true}) (blocks-container - (assoc config :id (str id) :preview? true) - [(db/entity [:block/uuid id])])]])] + (assoc config :id (str id) :preview? true) + [(db/entity [:block/uuid id])])]])] (popup-preview-impl children - {:visible? visible? :set-visible! set-visible! - :*timer *timer :*timer1 *timer1 - :render render}))) + {:visible? visible? :set-visible! set-visible! + :*timer *timer :*timer1 *timer1 + :render render}))) (rum/defc block-reference < rum/reactive db-mixins/query {:init (fn [state] @@ -3342,7 +3342,14 @@ (when order-list? " is-order-list") (when (string/blank? title) " is-blank") (when original-block " embed-block")) - :haschild (str (boolean has-child?))} + :haschild (str (boolean has-child?)) + :on-focus (fn [] + (when (:property-default-value? config) + (when-let [f (:on-block-content-pointer-down config)] + (f))))} + + (:property-default-value? config) + (assoc :data-is-property-default-value (:property-default-value? config)) original-block (assoc :originalblockid (str (:block/uuid original-block))) @@ -3459,8 +3466,8 @@ (query-property-cp block config collapsed?)) (when (and db-based? - (or sidebar? (not collapsed?)) - (not (or table? property?))) + (or sidebar? (not collapsed?)) + (not (or table? property?))) [:div (when-not (:page-title? config) {:style {:padding-left 45}}) (db-properties-cp config block {:in-block-container? true})]) diff --git a/src/main/frontend/components/container.cljs b/src/main/frontend/components/container.cljs index 16a2235db6..b4a8cecd6d 100644 --- a/src/main/frontend/components/container.cljs +++ b/src/main/frontend/components/container.cljs @@ -836,11 +836,13 @@ ;; block bullet (and block-id (parse-uuid block-id)) - (let [block (.closest target ".ls-block")] + (let [block (.closest target ".ls-block") + property-default-value? (when block + (= "true" (d/attr block "data-is-property-default-value")))] (when block (state/clear-selection!) (state/conj-selection-block! block :down)) - (show! (cp-content/block-context-menu-content target (uuid block-id)))) + (show! (cp-content/block-context-menu-content target (uuid block-id) property-default-value?))) :else false)] diff --git a/src/main/frontend/components/content.cljs b/src/main/frontend/components/content.cljs index e1c631309e..a337f9a1a9 100644 --- a/src/main/frontend/components/content.cljs +++ b/src/main/frontend/components/content.cljs @@ -64,7 +64,7 @@ {:key "delete" :on-click #(do (editor-handler/delete-selection %) (state/hide-custom-context-menu!) - (shui/popup-hide!))} + (shui/popup-hide!))} (t :editor/delete-selection) (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/delete))) @@ -165,15 +165,15 @@ (p/let [exists? (page-handler/ [:div.px-4.py-2.text-sm {:on-click (fn [e] (util/stop e))} @@ -183,7 +183,7 @@ :on-key-down (fn [e] (util/stop-propagation e) (when (and (= "Enter" (util/ekey e)) - (not (string/blank? (util/trim-safe @input)))) + (not (string/blank? (util/trim-safe @input)))) (submit!))) :on-change (fn [e] (reset! input (util/evalue e)))}] @@ -192,7 +192,7 @@ (ui/button (t :submit) :on-click submit!)] (shui/dropdown-menu-separator)]) (shui/dropdown-menu-item - {:key "Make a Template" + {:key "Make a Template" :on-click (fn [e] (util/stop e) (reset! edit? true))} @@ -200,7 +200,7 @@ (rum/defc ^:large-vars/cleanup-todo block-context-menu-content < shortcut/disable-all-shortcuts - [_target block-id] + [_target block-id property-default-value?] (let [repo (state/get-current-repo) db? (config/db-based-graph? repo)] (when-let [block (db/entity [:block/uuid block-id])] @@ -265,18 +265,20 @@ #(export/export-blocks [block-id] {:whiteboard? false})))} (t :content/copy-export-as)) - (shui/dropdown-menu-item - {:key "Cut" - :on-click (fn [_e] - (editor-handler/cut-block! block-id))} - (t :editor/cut) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/cut))) + (when-not property-default-value? + (shui/dropdown-menu-item + {:key "Cut" + :on-click (fn [_e] + (editor-handler/cut-block! block-id))} + (t :editor/cut) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/cut)))) - (shui/dropdown-menu-item - {:key "delete" - :on-click #(editor-handler/delete-block-aux! block)} - (t :editor/delete-selection) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/delete))) + (when-not property-default-value? + (shui/dropdown-menu-item + {:key "delete" + :on-click #(editor-handler/delete-block-aux! block)} + (t :editor/delete-selection) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/delete)))) (shui/dropdown-menu-separator) diff --git a/src/main/frontend/components/property/value.cljs b/src/main/frontend/components/property/value.cljs index ae1616c44d..a3463c92d6 100644 --- a/src/main/frontend/components/property/value.cljs +++ b/src/main/frontend/components/property/value.cljs @@ -728,6 +728,7 @@ (:block/uuid block) (:block/uuid value-block))) :container-id container-id + :property-default-value? default-value? :editor-box (state/get-component :editor/box) :property-block? true :on-block-content-pointer-down (when default-value?