0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-20 11:41:47 -05:00

Allow ungroup toplevel group.

Related to issue .
This commit is contained in:
Andrey Antukh 2017-03-08 20:20:45 +01:00
parent d8b21aa350
commit 1835b496d1
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95
2 changed files with 23 additions and 38 deletions
frontend
src/uxbox/main/ui/workspace/sidebar
test/uxbox/tests

View file

@ -288,7 +288,6 @@
"Check if the current situation allows grouping
of the currently selected shapes."
[selected shapes-map]
;; TODO: transducers
(let [xform (comp (map shapes-map)
(map :group))
groups (into #{} xform selected)]
@ -298,11 +297,12 @@
"Check if the current situation allows ungrouping
of the currently selected shapes."
[selected shapes-map]
(let [xform (comp (map shapes-map)
(map :group))
groups (into #{} xform selected)]
(and (= 1 (count groups))
(not (nil? (first groups))))))
(let [shapes (into #{} (map shapes-map) selected)
groups (into #{} (map :group) shapes)]
(or (and (= 1 (count shapes))
(= :group (:type (first shapes))))
(and (= 1 (count groups))
(not (nil? (first groups)))))))
(mx/defc layers-tools
"Layers widget options buttons."

View file

@ -435,13 +435,10 @@
:shapes {1 {:id 1 :page 1 :group 3}
2 {:id 2 :page 1 :group 3}
3 {:id 3 :page 1 :type :group :items [1 2]}}}
expected (-> initial
(assoc-in [:workspace :selected] #{1 2})
(assoc-in [:pages 1 :shapes] [1 2])
(update-in [:shapes 1] dissoc :group)
(update-in [:shapes 2] dissoc :group)
(update-in [:shapes] dissoc 3))]
expected {:workspace {:selected #{1 2}}
:pages {1 {:id 1 :shapes [1 2]}}
:shapes {1 {:id 1 :page 1}
2 {:id 2 :page 1}}}]
(let [result (impl/degroup-shapes initial [3] 1)]
;; (pprint expected)
;; (pprint result)
@ -455,12 +452,10 @@
2 {:id 2 :page 1 :type :group :items [3] :group 1}
3 {:id 3 :page 1 :group 2}}}
expected (-> initial
(assoc-in [:workspace :selected] #{3})
(assoc-in [:pages 1 :shapes] [1])
(update-in [:shapes] dissoc 2)
(assoc-in [:shapes 1 :items] [3])
(assoc-in [:shapes 3 :group] 1))]
expected {:pages {1 {:id 1, :shapes [1]}},
:shapes {1 {:id 1, :page 1, :type :group, :items [3]},
3 {:id 3, :page 1, :group 1}},
:workspace {:selected #{3}}}]
(let [result (impl/degroup-shapes initial [2] 1)]
;; (pprint expected)
;; (pprint result)
@ -475,13 +470,9 @@
3 {:id 3 :page 1 :group 1}
4 {:id 4 :page 1 :group 2}}}
expected (-> initial
(assoc-in [:workspace :selected] #{3 4})
(assoc-in [:pages 1 :shapes] [3 4])
(update :shapes dissoc 1)
(update :shapes dissoc 2)
(update-in [:shapes 3] dissoc :group)
(update-in [:shapes 4] dissoc :group))]
expected {:pages {1 {:id 1, :shapes [3 4]}},
:shapes {3 {:id 3, :page 1}, 4 {:id 4, :page 1}},
:workspace {:selected #{4 3}}}]
(let [result (impl/degroup-shapes initial [1 2] 1)]
;; (pprint expected)
;; (pprint result)
@ -495,12 +486,9 @@
2 {:id 2 :page 1 :type :group :items [3] :group 1}
3 {:id 3 :page 1 :group 2}}}
expected (-> initial
(assoc-in [:workspace :selected] #{3})
(assoc-in [:pages 1 :shapes] [3])
(update :shapes dissoc 1)
(update :shapes dissoc 2)
(update-in [:shapes 3] dissoc :group))]
expected {:pages {1 {:id 1, :shapes [3]}},
:shapes {3 {:id 3, :page 1}},
:workspace {:selected #{3}}}]
(let [result (impl/degroup-shapes initial [2 1] 1)]
;; (pprint expected)
;; (pprint result)
@ -514,12 +502,9 @@
2 {:id 2 :page 1 :type :group :items [3] :group 1}
3 {:id 3 :page 1 :group 2}}}
expected (-> initial
(assoc-in [:workspace :selected] #{3})
(assoc-in [:pages 1 :shapes] [3])
(update :shapes dissoc 1)
(update :shapes dissoc 2)
(update-in [:shapes 3] dissoc :group))]
expected {:pages {1 {:id 1, :shapes [3]}},
:shapes {3 {:id 3, :page 1}},
:workspace {:selected #{3}}}]
(let [result (impl/degroup-shapes initial [1 2] 1)]
;; (pprint expected)
;; (pprint result)