mirror of
https://github.com/penpot/penpot.git
synced 2025-02-20 13:55:34 -05:00
✨ Child element options
This commit is contained in:
parent
1c4678ad5d
commit
8671e9cf8a
12 changed files with 109 additions and 3 deletions
|
@ -501,7 +501,25 @@
|
||||||
(->> ids
|
(->> ids
|
||||||
(map (d/getf objects))
|
(map (d/getf objects))
|
||||||
(every? (partial ctl/any-layout-immediate-child? objects))))
|
(every? (partial ctl/any-layout-immediate-child? objects))))
|
||||||
workspace-page-objects))
|
workspace-page-objects =))
|
||||||
|
|
||||||
|
(defn flex-layout-child?
|
||||||
|
[ids]
|
||||||
|
(l/derived
|
||||||
|
(fn [objects]
|
||||||
|
(->> ids
|
||||||
|
(map (d/getf objects))
|
||||||
|
(every? (partial ctl/flex-layout-immediate-child? objects))))
|
||||||
|
workspace-page-objects =))
|
||||||
|
|
||||||
|
(defn grid-layout-child?
|
||||||
|
[ids]
|
||||||
|
(l/derived
|
||||||
|
(fn [objects]
|
||||||
|
(->> ids
|
||||||
|
(map (d/getf objects))
|
||||||
|
(every? (partial ctl/grid-layout-immediate-child? objects))))
|
||||||
|
workspace-page-objects =))
|
||||||
|
|
||||||
(defn get-flex-child-viewer
|
(defn get-flex-child-viewer
|
||||||
[ids page-id]
|
[ids page-id]
|
||||||
|
|
|
@ -177,7 +177,7 @@
|
||||||
(get-layout-flex-icon :align-self align is-col?)])]))
|
(get-layout-flex-icon :align-self align is-col?)])]))
|
||||||
|
|
||||||
(mf/defc layout-item-menu
|
(mf/defc layout-item-menu
|
||||||
{::mf/wrap [#(mf/memo' % (mf/check-props ["ids" "values" "type" "is-layout-child?"]))]}
|
{::mf/wrap [#(mf/memo' % (mf/check-props ["ids" "values" "type" "is-layout-child?" "is-grid-parent?" "is-flex-parent?"]))]}
|
||||||
[{:keys [ids values is-layout-child? is-layout-container? is-grid-parent? is-flex-parent?] :as props}]
|
[{:keys [ids values is-layout-child? is-layout-container? is-grid-parent? is-flex-parent?] :as props}]
|
||||||
|
|
||||||
(let [selection-parents-ref (mf/use-memo (mf/deps ids) #(refs/parents-by-ids ids))
|
(let [selection-parents-ref (mf/use-memo (mf/deps ids) #(refs/parents-by-ids ids))
|
||||||
|
@ -285,7 +285,7 @@
|
||||||
:layout-item-h-sizing (or (:layout-item-h-sizing values) :fix)
|
:layout-item-h-sizing (or (:layout-item-h-sizing values) :fix)
|
||||||
:on-change-behavior on-change-behavior}]]
|
:on-change-behavior on-change-behavior}]]
|
||||||
|
|
||||||
(when is-layout-child?
|
(when (and is-layout-child? is-flex-parent?)
|
||||||
[:div.layout-row
|
[:div.layout-row
|
||||||
[:div.row-title "Align"]
|
[:div.row-title "Align"]
|
||||||
[:div.btn-wrapper
|
[:div.btn-wrapper
|
||||||
|
|
|
@ -33,6 +33,12 @@
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
||||||
[:*
|
[:*
|
||||||
[:& measures-menu {:ids ids
|
[:& measures-menu {:ids ids
|
||||||
|
@ -47,6 +53,8 @@
|
||||||
:type type
|
:type type
|
||||||
:values layout-item-values
|
:values layout-item-values
|
||||||
:is-layout-child? true
|
:is-layout-child? true
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:shape shape}])
|
:shape shape}])
|
||||||
|
|
||||||
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
||||||
|
|
|
@ -34,6 +34,13 @@
|
||||||
|
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
||||||
[:*
|
[:*
|
||||||
[:& measures-menu {:ids ids
|
[:& measures-menu {:ids ids
|
||||||
|
@ -48,6 +55,8 @@
|
||||||
:values layout-item-values
|
:values layout-item-values
|
||||||
:is-layout-child? true
|
:is-layout-child? true
|
||||||
:is-layout-container? false
|
:is-layout-container? false
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:shape shape}])
|
:shape shape}])
|
||||||
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
||||||
[:& constraints-menu {:ids ids
|
[:& constraints-menu {:ids ids
|
||||||
|
|
|
@ -38,6 +38,13 @@
|
||||||
|
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
is-flex-layout-container? (ctl/flex-layout? shape)
|
is-flex-layout-container? (ctl/flex-layout? shape)
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
||||||
[:*
|
[:*
|
||||||
|
@ -58,6 +65,8 @@
|
||||||
{:ids ids
|
{:ids ids
|
||||||
:type type
|
:type type
|
||||||
:values layout-item-values
|
:values layout-item-values
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:is-layout-child? is-layout-child?
|
:is-layout-child? is-layout-child?
|
||||||
:is-layout-container? is-flex-layout-container?
|
:is-layout-container? is-flex-layout-container?
|
||||||
:shape shape}])
|
:shape shape}])
|
||||||
|
|
|
@ -38,6 +38,13 @@
|
||||||
ids [(:id shape)]
|
ids [(:id shape)]
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)
|
is-layout-child-absolute? (ctl/layout-absolute? shape)
|
||||||
|
|
||||||
type :group
|
type :group
|
||||||
|
@ -64,6 +71,8 @@
|
||||||
:ids layout-item-ids
|
:ids layout-item-ids
|
||||||
:is-layout-child? true
|
:is-layout-child? true
|
||||||
:is-layout-container? false
|
:is-layout-container? false
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:values layout-item-values}])
|
:values layout-item-values}])
|
||||||
|
|
||||||
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
||||||
|
|
|
@ -34,6 +34,13 @@
|
||||||
|
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
||||||
[:*
|
[:*
|
||||||
[:& measures-menu {:ids ids
|
[:& measures-menu {:ids ids
|
||||||
|
@ -48,6 +55,8 @@
|
||||||
:type type
|
:type type
|
||||||
:values layout-item-values
|
:values layout-item-values
|
||||||
:is-layout-child? true
|
:is-layout-child? true
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:shape shape}])
|
:shape shape}])
|
||||||
|
|
||||||
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
||||||
|
|
|
@ -297,6 +297,12 @@
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
has-text? (contains? all-types :text)
|
has-text? (contains? all-types :text)
|
||||||
|
|
||||||
has-flex-layout-container? (->> shapes (some ctl/flex-layout?))
|
has-flex-layout-container? (->> shapes (some ctl/flex-layout?))
|
||||||
|
@ -348,6 +354,8 @@
|
||||||
:ids layout-item-ids
|
:ids layout-item-ids
|
||||||
:is-layout-child? all-layout-child?
|
:is-layout-child? all-layout-child?
|
||||||
:is-layout-container? all-flex-layout-container?
|
:is-layout-container? all-flex-layout-container?
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:values layout-item-values}])
|
:values layout-item-values}])
|
||||||
|
|
||||||
(when-not (or (empty? constraint-ids) is-layout-child?)
|
(when-not (or (empty? constraint-ids) is-layout-child?)
|
||||||
|
|
|
@ -34,6 +34,13 @@
|
||||||
|
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
||||||
[:*
|
[:*
|
||||||
[:& measures-menu {:ids ids
|
[:& measures-menu {:ids ids
|
||||||
|
@ -48,6 +55,8 @@
|
||||||
:values layout-item-values
|
:values layout-item-values
|
||||||
:is-layout-child? true
|
:is-layout-child? true
|
||||||
:is-layout-container? false
|
:is-layout-container? false
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:shape shape}])
|
:shape shape}])
|
||||||
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
||||||
[:& constraints-menu {:ids ids
|
[:& constraints-menu {:ids ids
|
||||||
|
|
|
@ -32,8 +32,15 @@
|
||||||
stroke-values (select-keys shape stroke-attrs)
|
stroke-values (select-keys shape stroke-attrs)
|
||||||
layout-item-values (select-keys shape layout-item-attrs)
|
layout-item-values (select-keys shape layout-item-attrs)
|
||||||
layout-container-values (select-keys shape layout-container-flex-attrs)
|
layout-container-values (select-keys shape layout-container-flex-attrs)
|
||||||
|
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
||||||
[:*
|
[:*
|
||||||
[:& measures-menu {:ids ids
|
[:& measures-menu {:ids ids
|
||||||
|
@ -47,6 +54,8 @@
|
||||||
:type type
|
:type type
|
||||||
:values layout-item-values
|
:values layout-item-values
|
||||||
:is-layout-child? true
|
:is-layout-child? true
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:shape shape}])
|
:shape shape}])
|
||||||
|
|
||||||
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
||||||
|
|
|
@ -108,6 +108,13 @@
|
||||||
|
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
is-layout-child-absolute? (ctl/layout-absolute? shape)]
|
||||||
|
|
||||||
(when (contains? svg-elements tag)
|
(when (contains? svg-elements tag)
|
||||||
|
@ -124,6 +131,8 @@
|
||||||
:type type
|
:type type
|
||||||
:values layout-item-values
|
:values layout-item-values
|
||||||
:is-layout-child? true
|
:is-layout-child? true
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:shape shape}])
|
:shape shape}])
|
||||||
|
|
||||||
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
||||||
|
|
|
@ -30,6 +30,13 @@
|
||||||
|
|
||||||
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
is-layout-child-ref (mf/use-memo (mf/deps ids) #(refs/is-layout-child? ids))
|
||||||
is-layout-child? (mf/deref is-layout-child-ref)
|
is-layout-child? (mf/deref is-layout-child-ref)
|
||||||
|
|
||||||
|
is-flex-parent-ref (mf/use-memo (mf/deps ids) #(refs/flex-layout-child? ids))
|
||||||
|
is-flex-parent? (mf/deref is-flex-parent-ref)
|
||||||
|
|
||||||
|
is-grid-parent-ref (mf/use-memo (mf/deps ids) #(refs/grid-layout-child? ids))
|
||||||
|
is-grid-parent? (mf/deref is-grid-parent-ref)
|
||||||
|
|
||||||
layout-container-values (select-keys shape layout-container-flex-attrs)
|
layout-container-values (select-keys shape layout-container-flex-attrs)
|
||||||
is-layout-child-absolute? (ctl/layout-absolute? shape)
|
is-layout-child-absolute? (ctl/layout-absolute? shape)
|
||||||
state-map (mf/deref refs/workspace-editor-state)
|
state-map (mf/deref refs/workspace-editor-state)
|
||||||
|
@ -82,6 +89,8 @@
|
||||||
:type type
|
:type type
|
||||||
:values layout-item-values
|
:values layout-item-values
|
||||||
:is-layout-child? true
|
:is-layout-child? true
|
||||||
|
:is-flex-parent? is-flex-parent?
|
||||||
|
:is-grid-parent? is-grid-parent?
|
||||||
:shape shape}])
|
:shape shape}])
|
||||||
|
|
||||||
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
(when (or (not is-layout-child?) is-layout-child-absolute?)
|
||||||
|
|
Loading…
Add table
Reference in a new issue