mirror of
https://github.com/penpot/penpot.git
synced 2025-05-20 08:46:12 +02:00
🐛 Fix delete layers in bulk
This commit is contained in:
parent
6c09ecbef5
commit
3ea3ca3bd9
3 changed files with 38 additions and 14 deletions
|
@ -23,6 +23,7 @@
|
||||||
- Fix font search works only with lowercase letters [Taiga #4140](https://tree.taiga.io/project/penpot/issue/4140)
|
- Fix font search works only with lowercase letters [Taiga #4140](https://tree.taiga.io/project/penpot/issue/4140)
|
||||||
- Fix Terms and Privacy links overlapping [Taiga #4137](https://tree.taiga.io/project/penpot/issue/4137)
|
- Fix Terms and Privacy links overlapping [Taiga #4137](https://tree.taiga.io/project/penpot/issue/4137)
|
||||||
- Fix Export bounding box mask [Taiga #950](https://tree.taiga.io/project/penpot/issue/950)
|
- Fix Export bounding box mask [Taiga #950](https://tree.taiga.io/project/penpot/issue/950)
|
||||||
|
- Fix delete layers in bulk [Taiga #4160](https://tree.taiga.io/project/penpot/issue/4160)
|
||||||
|
|
||||||
## 1.15.3-beta
|
## 1.15.3-beta
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,16 @@
|
||||||
(update-in state [:workspace-local :selected] disj id))))
|
(update-in state [:workspace-local :selected] disj id))))
|
||||||
|
|
||||||
(defn shift-select-shapes
|
(defn shift-select-shapes
|
||||||
|
([id objects]
|
||||||
|
(ptk/reify ::shift-select-shapes
|
||||||
|
ptk/UpdateEvent
|
||||||
|
(update [_ state]
|
||||||
|
(let [selection (-> state
|
||||||
|
wsh/lookup-selected
|
||||||
|
(conj id))]
|
||||||
|
(-> state
|
||||||
|
(assoc-in [:workspace-local :selected]
|
||||||
|
(cph/expand-region-selection objects selection)))))))
|
||||||
([id]
|
([id]
|
||||||
(ptk/reify ::shift-select-shapes
|
(ptk/reify ::shift-select-shapes
|
||||||
ptk/UpdateEvent
|
ptk/UpdateEvent
|
||||||
|
|
|
@ -90,7 +90,7 @@
|
||||||
(l/derived refs/workspace-local)))
|
(l/derived refs/workspace-local)))
|
||||||
|
|
||||||
(mf/defc layer-item
|
(mf/defc layer-item
|
||||||
[{:keys [index item selected objects sortable?] :as props}]
|
[{:keys [index item selected objects sortable? filtered?] :as props}]
|
||||||
(let [id (:id item)
|
(let [id (:id item)
|
||||||
selected? (contains? selected id)
|
selected? (contains? selected id)
|
||||||
container? (or (cph/frame-shape? item)
|
container? (or (cph/frame-shape? item)
|
||||||
|
@ -134,7 +134,10 @@
|
||||||
(let [id (:id item)]
|
(let [id (:id item)]
|
||||||
(cond
|
(cond
|
||||||
(kbd/shift? event)
|
(kbd/shift? event)
|
||||||
(st/emit! (dw/shift-select-shapes id))
|
(if filtered?
|
||||||
|
(st/emit! (dw/shift-select-shapes id objects))
|
||||||
|
(st/emit! (dw/shift-select-shapes id)))
|
||||||
|
|
||||||
|
|
||||||
(kbd/mod? event)
|
(kbd/mod? event)
|
||||||
(st/emit! (dw/select-shape id true))
|
(st/emit! (dw/select-shape id true))
|
||||||
|
@ -263,7 +266,7 @@
|
||||||
(mf/defc layers-tree
|
(mf/defc layers-tree
|
||||||
{::mf/wrap [#(mf/memo % =)
|
{::mf/wrap [#(mf/memo % =)
|
||||||
#(mf/throttle % 200)]}
|
#(mf/throttle % 200)]}
|
||||||
[{:keys [objects] :as props}]
|
[{:keys [objects filtered?] :as props}]
|
||||||
(let [selected (mf/deref refs/selected-shapes)
|
(let [selected (mf/deref refs/selected-shapes)
|
||||||
selected (hooks/use-equal-memo selected)
|
selected (hooks/use-equal-memo selected)
|
||||||
root (get objects uuid/zero)]
|
root (get objects uuid/zero)]
|
||||||
|
@ -278,14 +281,16 @@
|
||||||
:index index
|
:index index
|
||||||
:objects objects
|
:objects objects
|
||||||
:key id
|
:key id
|
||||||
:sortable? true}]
|
:sortable? true
|
||||||
|
:filtered? filtered?}]
|
||||||
[:& layer-item
|
[:& layer-item
|
||||||
{:item obj
|
{:item obj
|
||||||
:selected selected
|
:selected selected
|
||||||
:index index
|
:index index
|
||||||
:objects objects
|
:objects objects
|
||||||
:key id
|
:key id
|
||||||
:sortable? true}])))]]))
|
:sortable? true
|
||||||
|
:filtered? filtered?}])))]]))
|
||||||
|
|
||||||
(mf/defc filters-tree
|
(mf/defc filters-tree
|
||||||
{::mf/wrap [#(mf/memo % =)
|
{::mf/wrap [#(mf/memo % =)
|
||||||
|
@ -303,7 +308,8 @@
|
||||||
:index index
|
:index index
|
||||||
:objects objects
|
:objects objects
|
||||||
:key id
|
:key id
|
||||||
:sortable? false}]))]))
|
:sortable? false
|
||||||
|
:filtered? true}]))]))
|
||||||
|
|
||||||
|
|
||||||
(defn calc-reparented-objects
|
(defn calc-reparented-objects
|
||||||
|
@ -531,15 +537,22 @@
|
||||||
|
|
||||||
filter-component)
|
filter-component)
|
||||||
|
|
||||||
(when (some? filtered-objects)
|
(if (some? filtered-objects)
|
||||||
|
[:*
|
||||||
[:div.tool-window-content {:ref on-render-container :key "filters"}
|
[:div.tool-window-content {:ref on-render-container :key "filters"}
|
||||||
[:& filters-tree {:objects filtered-objects
|
[:& filters-tree {:objects filtered-objects
|
||||||
:key (dm/str (:id page))}]
|
:key (dm/str (:id page))}]
|
||||||
[:div.lazy {:ref lazy-load-ref
|
[:div.lazy {:ref lazy-load-ref
|
||||||
:key "lazy-load"
|
:key "lazy-load"
|
||||||
:style {:min-height 16}}]])
|
:style {:min-height 16}}]]
|
||||||
|
[:div.tool-window-content {:on-scroll on-scroll
|
||||||
|
:style {:display (when (some? filtered-objects) "none")}}
|
||||||
|
[:& layers-tree {:objects filtered-objects
|
||||||
|
:key (dm/str (:id page))
|
||||||
|
:filtered? true}]]]
|
||||||
|
|
||||||
[:div.tool-window-content {:on-scroll on-scroll
|
[:div.tool-window-content {:on-scroll on-scroll
|
||||||
:style {:display (when (some? filtered-objects) "none")}}
|
:style {:display (when (some? filtered-objects) "none")}}
|
||||||
[:& layers-tree {:objects objects
|
[:& layers-tree {:objects objects
|
||||||
:key (dm/str (:id page))}]]]))
|
:key (dm/str (:id page))
|
||||||
|
:filtered? false}]])]))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue