Pārlūkot izejas kodu

fix: batch set tag on view selected blocks

Tienson Qin 7 mēneši atpakaļ
vecāks
revīzija
449f6cf700

+ 5 - 2
src/main/frontend/components/property/value.cljs

@@ -122,8 +122,11 @@
                                  (map (fn [id] (db/entity [:block/uuid id])))
                                  (seq)
                                  block-handler/get-top-level-blocks
-                                 (remove ldb/property?))]
-    (or (seq selected-blocks) [block])))
+                                 (remove ldb/property?))
+        view-selected-blocks (:view/selected-blocks @state/state)]
+    (or (seq selected-blocks)
+        (seq view-selected-blocks)
+        [block])))
 
 (defn <create-new-block!
   [block property value & {:keys [edit-block? batch-op?]

+ 15 - 14
src/main/frontend/components/selection.cljs

@@ -8,7 +8,7 @@
             [rum.core :as rum]))
 
 (rum/defc action-bar
-  [& {:keys [on-cut on-copy selected-blocks]
+  [& {:keys [on-cut on-copy selected-blocks hide-dots?]
       :or {on-cut #(editor-handler/cut-selection-blocks true)}}]
   (let [on-copy (if (and selected-blocks (nil? on-copy))
                   #(editor-handler/copy-selection-blocks true {:selected-blocks selected-blocks})
@@ -54,16 +54,17 @@
                                  (on-cut)
                                  (state/pub-event! [:editor/hide-action-bar])))
        "Cut")
-      (shui/button
-       (assoc button-opts
-              :on-pointer-down (fn [e]
-                                 (util/stop e)
-                                 (shui/popup-hide!)
-                                 (shui/popup-show! e
-                                                   (fn []
-                                                     (state/get-component :selection/context-menu))
-                                                   {:on-before-hide state/dom-clear-selection!
-                                                    :on-after-hide state/state-clear-selection!
-                                                    :content-props {:class "w-[280px] ls-context-menu-content"}
-                                                    :as-dropdown? true})))
-       (ui/icon "dots" {:size 13})))]))
+      (when-not hide-dots?
+        (shui/button
+         (assoc button-opts
+                :on-pointer-down (fn [e]
+                                   (util/stop e)
+                                   (shui/popup-hide!)
+                                   (shui/popup-show! e
+                                                     (fn []
+                                                       ((state/get-component :selection/context-menu)))
+                                                     {:on-before-hide state/dom-clear-selection!
+                                                      :on-after-hide state/state-clear-selection!
+                                                      :content-props {:class "w-[280px] ls-context-menu-content"}
+                                                      :as-dropdown? true})))
+         (ui/icon "dots" {:size 13}))))]))

+ 2 - 1
src/main/frontend/components/views.cljs

@@ -411,7 +411,8 @@
     (str (count selected-rows) " selected"))
    (selection/action-bar
     {:on-cut #(on-delete-rows table selected-rows)
-     :selected-blocks selected-rows})))
+     :selected-blocks selected-rows
+     :hide-dots? true})))
 
 (rum/defc column-resizer
   [_column on-sized!]

+ 3 - 1
src/main/frontend/handler/events.cljs

@@ -986,8 +986,10 @@
                              {:id :property-dialog
                               :align "start"}))))))
 
-(defmethod handle :editor/new-property [[_ {:keys [block target] :as opts}]]
+(defmethod handle :editor/new-property [[_ {:keys [block target selected-blocks] :as opts}]]
   (when-not config/publishing?
+    (when (seq selected-blocks)
+      (state/set-state! :view/selected-blocks selected-blocks))
     (p/do!
      (editor-handler/save-current-block!)
      (editor-new-property block target opts))))

+ 1 - 0
src/main/frontend/state.cljs

@@ -258,6 +258,7 @@
       :command-palette/commands              (atom [])
 
       :view/components                       {}
+      :view/selected-blocks                  nil
 
       :srs/mode?                             false