@@ -4,31 +4,16 @@ import { Trans } from '@lingui/macro';
44import * as React from 'react' ;
55import { type BehaviorEditorProps } from './BehaviorEditorProps.flow' ;
66import BehaviorPropertiesEditor from './BehaviorPropertiesEditor' ;
7- import SmallCrossIcon from '../../UI/CustomSvgIcons/SmallCross' ;
8- import LeftAlignmentIcon from '../../UI/CustomSvgIcons/LeftAlignment' ;
9- import CenterAlignmentIcon from '../../UI/CustomSvgIcons/CenterAlignment' ;
10- import RightAlignmentIcon from '../../UI/CustomSvgIcons/RightAlignment' ;
11- import FillIcon from '../../UI/CustomSvgIcons/HorizontalSize' ;
12- import ProportionalFillIcon from '../../UI/CustomSvgIcons/HorizontalSizePercent' ;
13- import TopAlignmentIcon from '../../UI/CustomSvgIcons/TopAlignment' ;
14- import CenterVerticalAlignmentIcon from '../../UI/CustomSvgIcons/CenterVerticalAlignment' ;
15- import BottomAlignmentIcon from '../../UI/CustomSvgIcons/BottomAlignment' ;
16- import VerticalFillIcon from '../../UI/CustomSvgIcons/VerticalSize' ;
17- import VerticalProportionalFillIcon from '../../UI/CustomSvgIcons/VerticalSizePercent' ;
187import useForceUpdate from '../../Utils/UseForceUpdate' ;
198import { ColumnStackLayout } from '../../UI/Layout' ;
209import Text from '../../UI/Text' ;
2110import {
2211 getPropertyValue ,
2312 updateProperty ,
2413} from '../../ObjectEditor/CompactObjectPropertiesEditor/CompactBehaviorPropertiesEditor' ;
25- import CompactToggleButtons , {
26- type CompactToggleButton ,
27- } from '../../UI/CompactToggleButtons' ;
2814import AnchorGrid from './AnchorGrid' ;
29- import { propertiesToGridSelection } from './AnchorGridMapping' ;
3015
31- type BasicAnchor =
16+ export type BasicAnchor =
3217 | 'None'
3318 | 'ProportionalFill'
3419 | 'FixedFill'
@@ -111,13 +96,13 @@ export const getBasicVerticalAnchor = (
11196 getAnchorProperty ( getPropertyValue , 'bottomEdgeAnchor' )
11297 ) ;
11398
114- type AnchorMapping = Array < { |
99+ export type AnchorMapping = Array < { |
115100 basicAnchor : BasicAnchor ,
116101 minEdge : string ,
117102 maxEdge : string ,
118103| } > ;
119104
120- const horizontalAnchorMapping : AnchorMapping = [
105+ export const horizontalAnchorMapping : AnchorMapping = [
121106 { basicAnchor : 'None' , minEdge : 'None' , maxEdge : 'None' } ,
122107 { basicAnchor : 'MinEdge' , minEdge : 'WindowLeft' , maxEdge : 'WindowLeft' } ,
123108 { basicAnchor : 'Center' , minEdge : 'WindowCenter' , maxEdge : 'WindowCenter' } ,
@@ -130,7 +115,7 @@ const horizontalAnchorMapping: AnchorMapping = [
130115 } ,
131116] ;
132117
133- const verticalAnchorMapping : AnchorMapping = [
118+ export const verticalAnchorMapping : AnchorMapping = [
134119 { basicAnchor : 'None' , minEdge : 'None' , maxEdge : 'None' } ,
135120 { basicAnchor : 'MinEdge' , minEdge : 'WindowTop' , maxEdge : 'WindowTop' } ,
136121 { basicAnchor : 'Center' , minEdge : 'WindowCenter' , maxEdge : 'WindowCenter' } ,
@@ -143,157 +128,6 @@ const verticalAnchorMapping: AnchorMapping = [
143128 } ,
144129] ;
145130
146- const AnchorButtonGroup = ( {
147- id,
148- basicAnchor,
149- minEdgePropertyName,
150- maxEdgePropertyName,
151- anchorMapping,
152- renderIcon,
153- renderTooltip,
154- onUpdateProperty,
155- expand,
156- } : { |
157- id : string ,
158- basicAnchor : BasicAnchor ,
159- minEdgePropertyName : string ,
160- maxEdgePropertyName : string ,
161- anchorMapping : Array < { |
162- basicAnchor : BasicAnchor ,
163- minEdge : string ,
164- maxEdge : string ,
165- | } > ,
166- renderIcon : ( basicAnchor : string , className ? : string ) = > React . Node ,
167- renderTooltip : ( basicAnchor : string ) = > React . Node ,
168- onUpdateProperty : ( propertyName : string , value : string ) = > void ,
169- expand ?: boolean ,
170- | } ) : React . Node => {
171- const buttons : Array < CompactToggleButton > = anchorMapping . map ( item => ( {
172- id : item . basicAnchor ,
173- renderIcon : ( className ? : string ) => renderIcon ( item . basicAnchor , className ) ,
174- tooltip : renderTooltip ( item . basicAnchor ) ,
175- isActive : basicAnchor === item . basicAnchor ,
176- onClick : ( ) => {
177- onUpdateProperty ( minEdgePropertyName , item . minEdge ) ;
178- onUpdateProperty ( maxEdgePropertyName , item . maxEdge ) ;
179- } ,
180- } ) ) ;
181-
182- return < CompactToggleButtons id = { id} buttons = { buttons} expand = { false} / > ;
183- } ;
184-
185- export const HorizontalAnchorButtonGroup = ( {
186- basicAnchor,
187- onUpdateProperty,
188- expand,
189- } : { |
190- basicAnchor : BasicAnchor ,
191- onUpdateProperty : ( propertyName : string , value : string ) = > void ,
192- expand ?: boolean ,
193- | } ) : React . Node => {
194- return (
195- < AnchorButtonGroup
196- id = "horizontal-anchor"
197- basicAnchor = { basicAnchor }
198- minEdgePropertyName = "leftEdgeAnchor"
199- maxEdgePropertyName = "rightEdgeAnchor"
200- anchorMapping = { horizontalAnchorMapping }
201- renderIcon = { ( basicAnchor , className ) => {
202- switch ( basicAnchor ) {
203- case 'MinEdge' :
204- return < LeftAlignmentIcon class = { className } /> ;
205- case 'Center' :
206- return < CenterAlignmentIcon class = { className } /> ;
207- case 'MaxEdge' :
208- return < RightAlignmentIcon class = { className } /> ;
209- case 'FixedFill' :
210- return < FillIcon class = { className } /> ;
211- case 'ProportionalFill' :
212- return < ProportionalFillIcon class = { className } /> ;
213- case 'None' :
214- default :
215- return < SmallCrossIcon class = { className } /> ;
216- }
217- } }
218- renderTooltip = { basicAnchor => {
219- switch ( basicAnchor ) {
220- case 'MinEdge' :
221- return < Trans > Left</ Trans > ;
222- case 'Center' :
223- return < Trans > Center</ Trans > ;
224- case 'MaxEdge' :
225- return < Trans > Right</ Trans > ;
226- case 'FixedFill' :
227- return < Trans > Fill</ Trans > ;
228- case 'ProportionalFill' :
229- return < Trans > Fill proportionally</ Trans > ;
230- case 'None' :
231- default :
232- return < Trans > None</ Trans > ;
233- }
234- } }
235- onUpdateProperty = { onUpdateProperty }
236- expand = { expand }
237- />
238- ) ;
239- } ;
240-
241- export const VerticalAnchorButtonGroup = ( {
242- basicAnchor,
243- onUpdateProperty,
244- expand,
245- } : { |
246- basicAnchor : BasicAnchor ,
247- onUpdateProperty : ( propertyName : string , value : string ) = > void ,
248- expand ?: boolean ,
249- | } ) : React . Node => {
250- return (
251- < AnchorButtonGroup
252- id = "vertical-anchor"
253- basicAnchor = { basicAnchor }
254- minEdgePropertyName = "topEdgeAnchor"
255- maxEdgePropertyName = "bottomEdgeAnchor"
256- anchorMapping = { verticalAnchorMapping }
257- renderIcon = { ( basicAnchor , className ) => {
258- switch ( basicAnchor ) {
259- case 'MinEdge' :
260- return < TopAlignmentIcon class = { className } /> ;
261- case 'Center' :
262- return < CenterVerticalAlignmentIcon class = { className } /> ;
263- case 'MaxEdge' :
264- return < BottomAlignmentIcon class = { className } /> ;
265- case 'FixedFill' :
266- return < VerticalFillIcon class = { className } /> ;
267- case 'ProportionalFill' :
268- return < VerticalProportionalFillIcon class = { className } /> ;
269- case 'None' :
270- default :
271- return < SmallCrossIcon class = { className } /> ;
272- }
273- } }
274- renderTooltip = { basicAnchor => {
275- switch ( basicAnchor ) {
276- case 'MinEdge' :
277- return < Trans > Top</ Trans > ;
278- case 'Center' :
279- return < Trans > Center</ Trans > ;
280- case 'MaxEdge' :
281- return < Trans > Bottom</ Trans > ;
282- case 'FixedFill' :
283- return < Trans > Fill</ Trans > ;
284- case 'ProportionalFill' :
285- return < Trans > Fill proportionally</ Trans > ;
286- case 'None' :
287- default :
288- return < Trans > None</ Trans > ;
289- }
290- } }
291- onUpdateProperty = { onUpdateProperty }
292- expand = { expand }
293- />
294- ) ;
295- } ;
296-
297131type Props = BehaviorEditorProps ;
298132
299133const AnchorBehaviorEditor = ( {
@@ -325,12 +159,9 @@ const AnchorBehaviorEditor = ({
325159 [ forceUpdate , onBehaviorUpdated ]
326160 ) ;
327161
328- const gridSelection = propertiesToGridSelection (
329- _getPropertyValue ( 'leftEdgeAnchor' ) ,
330- _getPropertyValue ( 'rightEdgeAnchor' ) ,
331- _getPropertyValue ( 'topEdgeAnchor' ) ,
332- _getPropertyValue ( 'bottomEdgeAnchor' )
333- ) ;
162+ const isAdvanced =
163+ getBasicHorizontalAnchor ( _getPropertyValue ) === 'Advanced' ||
164+ getBasicVerticalAnchor ( _getPropertyValue ) === 'Advanced' ;
334165
335166 return (
336167 < ColumnStackLayout expand >
@@ -340,6 +171,7 @@ const AnchorBehaviorEditor = ({
340171 < AnchorGrid
341172 getPropertyValue = { _getPropertyValue }
342173 onUpdateProperty = { _updateProperty }
174+ initialInstance = { null }
343175 />
344176 < BehaviorPropertiesEditor
345177 project = { project }
@@ -349,7 +181,7 @@ const AnchorBehaviorEditor = ({
349181 resourceManagementProps = { resourceManagementProps }
350182 projectScopedContainersAccessor = { projectScopedContainersAccessor }
351183 isAdvancedSectionInitiallyUncollapsed = {
352- gridSelection . isAdvanced ||
184+ isAdvanced ||
353185 _getPropertyValue ( 'relativeToOriginalWindowSize' ) === 'false'
354186 }
355187 />
0 commit comments