diff --git a/src/main/frontend/commands.cljs b/src/main/frontend/commands.cljs index b3c027356..851cd976d 100644 --- a/src/main/frontend/commands.cljs +++ b/src/main/frontend/commands.cljs @@ -252,6 +252,12 @@ ["Toggle Number list" [[:editor/clear-current-slash] [:editor/toggle-children-number-list]] "Make children as number list"]] + ;; order list + [["Number list" [[:editor/clear-current-slash] + [:editor/toggle-own-number-list]] "Number list"] + ["Bullet list" [[:editor/clear-current-slash] + [:editor/remove-own-number-list]] "Bullet list"]] + ;; task management (get-preferred-workflow) @@ -660,6 +666,10 @@ (when-let [block (state/get-edit-block)] (state/pub-event! [:editor/toggle-children-number-list block]))) +(defmethod handle-step :editor/toggle-own-number-list [[_]] + (when-let [block (state/get-edit-block)] + (state/pub-event! [:editor/toggle-own-number-list block]))) + (defmethod handle-step :editor/show-date-picker [[_ type]] (if (and (contains? #{:scheduled :deadline} type) diff --git a/src/main/frontend/handler/block.cljs b/src/main/frontend/handler/block.cljs index af331ba26..e6ac91380 100644 --- a/src/main/frontend/handler/block.cljs +++ b/src/main/frontend/handler/block.cljs @@ -297,10 +297,10 @@ (let [order-block-fn? #(some-> % :block/properties :logseq.order-list-type (= order-list-type)) prev-block-fn #(some->> (:db/id %) (db-model/get-prev-sibling (state/get-current-repo))) prev-block (prev-block-fn block)] - (if prev-block - (letfn [(sibling-list [b] - (lazy-seq - (when (order-block-fn? b) - (cons b (sibling-list (prev-block-fn b))))))] - (count (sibling-list block))) - 1))) \ No newline at end of file + (letfn [(order-sibling-list [b] + (lazy-seq + (when (order-block-fn? b) + (cons b (order-sibling-list (prev-block-fn b)))))) + (order-parent-list [b])] + (if prev-block + (count (order-sibling-list block)) 1)))) \ No newline at end of file diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 732207248..d9cfad9aa 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -87,6 +87,10 @@ [block] (= (get-block-own-order-list-type block) "number")) +(defn make-block-as-own-order-list! + [block] + (some-> block (set-block-own-order-list-type! "number"))) + (defn get-selection-and-format [] (when-let [block (state/get-edit-block)] @@ -2537,7 +2541,9 @@ "properties-drawer" (dwim-in-properties state)) (and (string/blank? content) - (own-order-number-list? block)) + (own-order-number-list? block) + (not (some-> (db-model/get-block-parent (:block/uuid block)) + (own-order-number-list?)))) (remove-block-own-order-list-type! block) (and diff --git a/src/main/frontend/handler/events.cljs b/src/main/frontend/handler/events.cljs index b6d0d7f72..7d7328964 100644 --- a/src/main/frontend/handler/events.cljs +++ b/src/main/frontend/handler/events.cljs @@ -959,6 +959,12 @@ (editor-handler/remove-block-property! uuid :logseq.children-as) (editor-handler/set-block-property! uuid :logseq.children-as "number-list")))) +(defmethod handle :editor/toggle-own-number-list [[_ block]] + (when block + (if (editor-handler/own-order-number-list? block) + (editor-handler/remove-block-own-order-list-type! block) + (editor-handler/make-block-as-own-order-list! block)))) + (defn run! [] (let [chan (state/get-events-chan)]