diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 83e000805d..a01ed5480b 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -1742,7 +1742,8 @@ child-typed-list? (string? (:as-list-of config)) child-number-list? (= as-list-of "number-list") own-number-list? (:own-order-number-list? config) - number-list? (or child-number-list? own-number-list?)] + number-list? (or child-number-list? own-number-list?) + number-list-idx (if child-number-list? (inc as-index-of) (:own-order-list-index config))] [:div.block-control-wrap.mr-1.flex.flex-row.items-center.sm:mr-2 (when (or (not fold-button-right?) has-child?) [:a.block-control @@ -1776,7 +1777,7 @@ [:span.bullet {:blockid (str uuid)} (when number-list? - [:label (str (inc as-index-of) ".")])]]]] + [:label (str number-list-idx ".")])]]]] (cond (and (or (mobile-util/native-platform?) (:ui/show-empty-bullets? (state/get-config))) @@ -2799,6 +2800,7 @@ has-child? (first (:block/_parent (db/entity (:db/id block)))) as-list-of (:as-list-of config) own-order-list-type (some-> properties :logseq.order-list-type str string/lower-case) + own-order-list-index (and own-order-list-type (block-handler/get-idx-of-order-list-block block own-order-list-type)) own-order-number-list? (= own-order-list-type "number") attrs (on-drag-and-mouse-attrs block uuid top? block-id *move-to) children-refs (get-children-refs children) @@ -2811,6 +2813,7 @@ selected? (when-not slide? (state/sub-block-selected? blocks-container-id uuid)) config (assoc config :own-order-list-type own-order-list-type + :own-order-list-index own-order-list-index :own-order-number-list? own-order-number-list?)] [:div.ls-block (cond-> diff --git a/src/main/frontend/handler/block.cljs b/src/main/frontend/handler/block.cljs index f7a898a557..af331ba269 100644 --- a/src/main/frontend/handler/block.cljs +++ b/src/main/frontend/handler/block.cljs @@ -291,3 +291,16 @@ (recur parent (conj result parent)) result))))] (distinct (mapcat get-parents filtered-ref-blocks))))) + +(defn get-idx-of-order-list-block + [block order-list-type] + (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