0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-23 23:35:58 -05:00

🔧 Fix multiple edition

This commit is contained in:
Andrés Moya 2022-03-02 15:12:37 +01:00 committed by Alonso Torres
parent 17fc15138a
commit 087d896569
5 changed files with 31 additions and 21 deletions

View file

@ -30,17 +30,11 @@
;; shapes that has border radius, and so it hasn't :rx nor :r1.
;; In this case operations must leave shape untouched.
(defn has-radius?
[shape]
(#{:rect :image :frame} (:type shape)))
(defn radius-mode
[shape]
(cond (:rx shape) :radius-1
(:r1 shape) :radius-4
:else (if (has-radius? shape)
:radius-1
nil)))
(if (:r1 shape)
:radius-4
:radius-1))
(defn radius-1?
[shape]

View file

@ -19,6 +19,7 @@
[app.main.ui.icons :as i]
[app.util.dom :as dom]
[app.util.i18n :as i18n :refer [tr]]
[clojure.set :refer [union]]
[rumext.alpha :as mf]))
(def measure-attrs
@ -30,6 +31,17 @@
:r1 :r2 :r3 :r4
:selrect])
(def ^:private type->options
{:bool #{:size :position :rotation}
:circle #{:size :position :rotation}
:frame #{:size :position :rotation :radius :presets}
:group #{:size :position :rotation}
:image #{:size :position :rotation :radius}
:path #{:size :position :rotation}
:rect #{:size :position :rotation :radius}
:svg-raw #{:size :position :rotation}
:text #{:size :position :rotation}})
(defn- attr->string [attr values]
(let [value (attr values)]
(if (= value :multiple)
@ -42,8 +54,11 @@
;; -- User/drawing coords
(mf/defc measures-menu
[{:keys [options ids ids-with-children values type] :as props}]
(let [options (or options #{:size :position :rotation :radius})
[{:keys [ids ids-with-children values type all-types] :as props}]
(let [options (if (= type :multiple)
(reduce #(union %1 %2) (map #(get type->options %) all-types))
(get type->options type))
ids-with-children (or ids-with-children ids)
old-shapes (deref (refs/objects-by-id ids))
@ -183,9 +198,11 @@
[:*
[:div.element-set
[:div.element-set-content
;; FRAME PRESETS
(when (= type :frame)
[:div.row-flex
(when (and (options :presets)
(or (nil? all-types) (= (count all-types) 1))) ;; Dont' show presets if multi selected
[:div.row-flex ;; some frames and some non frames
[:div.presets.custom-select.flex-grow {:on-click #(reset! show-presets-dropdown? true)}
[:span (tr "workspace.options.size-presets")]
[:span.dropdown-button i/arrow-down]
@ -251,7 +268,7 @@
:precision 2}]]])
;; ROTATION
(when (and (options :rotation) (not (= type :frame)))
(when (options :rotation)
[:div.row-flex
[:span.element-set-subtitle (tr "workspace.options.rotation")]
[:div.input-element.degrees {:title (tr "workspace.options.rotation")}
@ -274,7 +291,7 @@
:value (attr->string :rotation values)}]])
;; RADIUS
(when (and (options :radius) (some? radius-mode))
(when (options :radius)
[:div.row-flex
[:div.radius-options
[:div.radius-icon.tooltip.tooltip-bottom

View file

@ -27,8 +27,7 @@
[:*
[:& measures-menu {:ids ids
:type type
:values measure-values
:options #{:size :position :rotation}}]
:values measure-values}]
[:& constraints-menu {:ids ids
:values constraint-values}]
[:& layer-menu {:ids ids

View file

@ -25,8 +25,7 @@
[:*
[:& measures-menu {:ids [(:id shape)]
:values measure-values
:type type
:options #{:size :position :rotation :presets :radius}}]
:type type}]
[:& layer-menu {:ids ids
:type type
:values layer-values}]

View file

@ -214,6 +214,7 @@
objects-no-measures (hooks/use-equal-memo objects-no-measures)
type :multiple
all-types (into #{} (map :type shapes))
[measure-ids measure-values] (get-attrs shapes objects :measure)
@ -240,7 +241,7 @@
[:div.options
(when-not (empty? measure-ids)
[:& measures-menu {:type type :ids measure-ids :values measure-values}])
[:& measures-menu {:type type :all-types all-types :ids measure-ids :values measure-values}])
(when-not (empty? constraint-ids)
[:& constraints-menu {:ids constraint-ids :values constraint-values}])