mirror of
https://github.com/logseq/logseq.git
synced 2026-05-04 02:46:45 +00:00
fix: re-order selected blocks before bulk indent and delete
This commit is contained in:
@@ -683,11 +683,23 @@
|
||||
end-block-parent (get-end-block-parent end-block blocks)]
|
||||
(outliner-core/block end-block-parent)))
|
||||
|
||||
(defn- reorder-blocks
|
||||
[blocks]
|
||||
(if (<= (count blocks) 1)
|
||||
blocks
|
||||
(let [[f s & others] blocks]
|
||||
(if (= (or (:block/left s)
|
||||
(:block/parent s))
|
||||
{:db/id (:db/id f)})
|
||||
blocks
|
||||
(reverse blocks)))))
|
||||
|
||||
(defn delete-blocks!
|
||||
[repo block-uuids]
|
||||
(when (seq block-uuids)
|
||||
(let [lookup-refs (map (fn [id] [:block/uuid id]) block-uuids)
|
||||
blocks (db/pull-many repo '[*] lookup-refs)]
|
||||
blocks (db/pull-many repo '[*] lookup-refs)
|
||||
blocks (reorder-blocks blocks)]
|
||||
(let [start-node (outliner-core/block (first blocks))
|
||||
end-node (get-top-level-end-node blocks)]
|
||||
(outliner-core/delete-nodes start-node end-node lookup-refs)
|
||||
@@ -1544,29 +1556,29 @@
|
||||
(cond
|
||||
(seq blocks)
|
||||
(do
|
||||
(util/stop e)
|
||||
(let [lookup-refs (->> (map (fn [block] (when-let [id (dom/attr block "blockid")]
|
||||
[:block/uuid (medley/uuid id)])) blocks)
|
||||
(remove nil?))
|
||||
blocks (db/pull-many repo '[*] lookup-refs)
|
||||
end-node (get-top-level-end-node blocks)
|
||||
end-node-parent (tree/-get-parent end-node)
|
||||
top-level-nodes (->> (filter #(= (get-in end-node-parent [:data :db/id])
|
||||
(get-in % [:block/parent :db/id])) blocks)
|
||||
(map outliner-core/block))]
|
||||
(outliner-core/indent-outdent-nodes top-level-nodes (= direction :right))
|
||||
(let [opts {:key :block/change
|
||||
:data blocks}]
|
||||
(db/refresh! repo opts)
|
||||
(let [blocks (doall
|
||||
(map
|
||||
(remove nil?))
|
||||
blocks (db/pull-many repo '[*] lookup-refs)
|
||||
blocks (reorder-blocks blocks)
|
||||
end-node (get-top-level-end-node blocks)
|
||||
end-node-parent (tree/-get-parent end-node)
|
||||
top-level-nodes (->> (filter #(= (get-in end-node-parent [:data :db/id])
|
||||
(get-in % [:block/parent :db/id])) blocks)
|
||||
(map outliner-core/block))]
|
||||
(outliner-core/indent-outdent-nodes top-level-nodes (= direction :right))
|
||||
(let [opts {:key :block/change
|
||||
:data blocks}]
|
||||
(db/refresh! repo opts)
|
||||
(let [blocks (doall
|
||||
(map
|
||||
(fn [block]
|
||||
(when-let [id (gobj/get block "id")]
|
||||
(when-let [block (gdom/getElement id)]
|
||||
(dom/add-class! block "selected noselect")
|
||||
block)))
|
||||
blocks-dom-nodes))]
|
||||
(state/set-selection-blocks! blocks)))))
|
||||
(state/set-selection-blocks! blocks)))))
|
||||
|
||||
(gdom/getElement "date-time-picker")
|
||||
nil
|
||||
|
||||
Reference in New Issue
Block a user