diff --git a/website/src/components/Playground/EditValue.js b/website/src/components/Playground/EditValue.js index 89e3b15f..5222449d 100644 --- a/website/src/components/Playground/EditValue.js +++ b/website/src/components/Playground/EditValue.js @@ -15,14 +15,14 @@ import YogaEnumSelect from './YogaEnumSelect'; import YogaPositionEditor from './YogaPositionEditor'; import {Input} from 'antd'; -type Props = { +type Props = { property: string, disabled?: boolean, - value: string | number, - onChange: (value: number) => void, + value?: ?T, + onChange: (property: string, value: T) => void, }; -export default (props: Props) => { +export default (props: Props<*>) => { if (YogaEnumSelect.availableProperties.indexOf(props.property) > -1) { return ; } else if ( @@ -30,6 +30,12 @@ export default (props: Props) => { ) { return ; } else { - return ; + return ( + props.onChange(props.property, e.target.value)} + /> + ); } }; diff --git a/website/src/components/Playground/Editor.js b/website/src/components/Playground/Editor.js index a32429eb..56b4cda2 100644 --- a/website/src/components/Playground/Editor.js +++ b/website/src/components/Playground/Editor.js @@ -66,7 +66,7 @@ export default class Editor extends Component { this.props.onChangeSetting('direction', e)} + onChange={this.props.onChangeSetting} />

Flex direction @@ -75,8 +75,8 @@ export default class Editor extends Component { this.props.onChangeLayout('flexDirection', e)} + value={node ? node.flexDirection : undefined} + onChange={this.props.onChangeLayout} /> @@ -90,11 +90,10 @@ export default class Editor extends Component {

- this.props.onChangeLayout('flexGrow', e.target.value) - } + value={node ? node.flexGrow : undefined} + onChange={this.props.onChangeLayout} /> @@ -107,11 +106,10 @@ export default class Editor extends Component { - this.props.onChangeLayout('flexShrink', e.target.value) - } + value={node ? node.flexShrink : undefined} + onChange={this.props.onChangeLayout} /> @@ -125,8 +123,8 @@ export default class Editor extends Component { this.props.onChangeLayout('flexWrap', e)} + value={node ? node.flexWrap : undefined} + onChange={this.props.onChangeLayout} /> @@ -137,8 +135,8 @@ export default class Editor extends Component { this.props.onChangeLayout('justifyContent', e)} + value={node ? node.justifyContent : undefined} + onChange={this.props.onChangeLayout} />

@@ -148,8 +146,8 @@ export default class Editor extends Component { this.props.onChangeLayout('alignItems', e)} + value={node ? node.alignItems : undefined} + onChange={this.props.onChangeLayout} />

@@ -161,8 +159,8 @@ export default class Editor extends Component { this.props.onChangeLayout('alignSelf', e)} + value={node ? node.alignSelf : undefined} + onChange={this.props.onChangeLayout} />

@@ -174,8 +172,8 @@ export default class Editor extends Component { this.props.onChangeLayout('alignContent', e)} + value={node ? node.alignContent : undefined} + onChange={this.props.onChangeLayout} /> @@ -188,22 +186,20 @@ export default class Editor extends Component { - this.props.onChangeLayout('width', e.target.value) - } + value={node ? node.width : undefined} + onChange={this.props.onChangeLayout} /> - this.props.onChangeLayout('height', e.target.value) - } + value={node ? node.height : undefined} + onChange={this.props.onChangeLayout} /> @@ -218,11 +214,10 @@ export default class Editor extends Component { - this.props.onChangeLayout('aspectRatio', e.target.value) - } + value={node ? node.aspectRatio : undefined} + onChange={this.props.onChangeLayout} />

Box model

@@ -231,7 +226,7 @@ export default class Editor extends Component { property={property} key={property} value={node ? node[property] : undefined} - onChange={value => this.props.onChangeLayout(property, value)} + onChange={this.props.onChangeLayout} /> ))}

@@ -246,13 +241,13 @@ export default class Editor extends Component { this.props.onChangeLayout('positionType', e)} + value={node ? node.positionType : undefined} + onChange={this.props.onChangeLayout} /> this.props.onChangeLayout('position', value)} + onChange={this.props.onChangeLayout} /> diff --git a/website/src/components/Playground/YogaEnumSelect.js b/website/src/components/Playground/YogaEnumSelect.js index 3208b5db..b04df772 100644 --- a/website/src/components/Playground/YogaEnumSelect.js +++ b/website/src/components/Playground/YogaEnumSelect.js @@ -28,11 +28,13 @@ const PROPERTY_LOOKUP = { flexWrap: 'WRAP', }; +type Property = $Keys; + type Props = { - property: $Keys, + property: Property, disabled?: boolean, value: string | number, - onChange: (value: number) => void, + onChange: (property: Property, value: number) => void, }; export default class YogaEnumSelect extends Component { @@ -52,7 +54,7 @@ export default class YogaEnumSelect extends Component { } handleMenuClick = ({key}: {key: string}) => { - this.props.onChange(yoga[key]); + this.props.onChange(this.props.property, yoga[key]); }; render() { @@ -85,7 +87,7 @@ export default class YogaEnumSelect extends Component { ) : ( this.props.onChange(e.target.value)} + onChange={e => this.props.onChange(this.props.property, e.target.value)} defaultValue="a" className="YogaEnumSelect"> {this.values.map(({key, value}) => ( diff --git a/website/src/components/Playground/YogaPositionEditor.js b/website/src/components/Playground/YogaPositionEditor.js index dbace9bf..df1b1261 100644 --- a/website/src/components/Playground/YogaPositionEditor.js +++ b/website/src/components/Playground/YogaPositionEditor.js @@ -16,10 +16,12 @@ import PositionRecord from './PositionRecord'; import type {PositionRecordT} from './PositionRecord'; import './YogaPositionEditor.css'; +type Property = 'position' | 'margin' | 'padding' | 'border'; + type Props = { value: PositionRecordT, - property: 'position' | 'margin' | 'padding' | 'border', - onChange: (value: PositionRecordT) => void, + property: Property, + onChange: (property: Property, value: PositionRecordT) => void, }; export default class YogaPositionEditor extends Component { @@ -36,25 +38,31 @@ export default class YogaPositionEditor extends Component { onChange(value.set('top', e.target.value))} + onChange={e => onChange(property, value.set('top', e.target.value))} />
onChange(value.set('left', e.target.value))} + onChange={e => + onChange(property, value.set('left', e.target.value)) + } /> {property} onChange(value.set('right', e.target.value))} + onChange={e => + onChange(property, value.set('right', e.target.value)) + } />
onChange(value.set('bottom', e.target.value))} + onChange={e => + onChange(property, value.set('bottom', e.target.value)) + } /> ); diff --git a/website/src/templates/withPlayground.js b/website/src/templates/withPlayground.js index 036a2362..c6e1d14b 100644 --- a/website/src/templates/withPlayground.js +++ b/website/src/templates/withPlayground.js @@ -34,7 +34,7 @@ export default ({pathContext}) => ( onChange(prop, e)} + onChange={onChange} /> ))}