Alignment mode

Summary: Adding a toggle to enable/disable alignment mode

Reviewed By: jknoxville

Differential Revision: D14100534

fbshipit-source-id: e3a49f1f31112ca2c99c2246a12c4f34be1ec61a
This commit is contained in:
Daniel Büchele
2019-02-18 04:53:54 -08:00
committed by Facebook Github Bot
parent 53f3f2d40f
commit 4f425b05b4
2 changed files with 21 additions and 0 deletions

View File

@@ -22,6 +22,7 @@ type Props = {
ax?: boolean, ax?: boolean,
client: PluginClient, client: PluginClient,
showsSidebar: boolean, showsSidebar: boolean,
inAlignmentMode?: boolean,
selectedElement: ?ElementID, selectedElement: ?ElementID,
selectedAXElement: ?ElementID, selectedAXElement: ?ElementID,
onSelect: (ids: ?ElementID) => void, onSelect: (ids: ?ElementID) => void,
@@ -196,6 +197,7 @@ export default class Inspector extends Component<Props> {
onElementHovered = debounce((key: ?ElementID) => onElementHovered = debounce((key: ?ElementID) =>
this.props.client.call(this.call().SET_HIGHLIGHTED, { this.props.client.call(this.call().SET_HIGHLIGHTED, {
id: key, id: key,
isAlignmentMode: this.props.inAlignmentMode,
}), }),
); );

View File

@@ -23,6 +23,7 @@ type State = {|
init: boolean, init: boolean,
inTargetMode: boolean, inTargetMode: boolean,
inAXMode: boolean, inAXMode: boolean,
inAlignmentMode: boolean,
selectedElement: ?ElementID, selectedElement: ?ElementID,
selectedAXElement: ?ElementID, selectedAXElement: ?ElementID,
|}; |};
@@ -46,6 +47,7 @@ export default class Layout extends FlipperPlugin<State, void, PersistedState> {
init: false, init: false,
inTargetMode: false, inTargetMode: false,
inAXMode: false, inAXMode: false,
inAlignmentMode: false,
selectedElement: null, selectedElement: null,
selectedAXElement: null, selectedAXElement: null,
}; };
@@ -81,6 +83,16 @@ export default class Layout extends FlipperPlugin<State, void, PersistedState> {
this.setState({inAXMode: !this.state.inAXMode}); this.setState({inAXMode: !this.state.inAXMode});
}; };
onToggleAlignmentMode = () => {
if (this.state.selectedElement) {
this.client.send('setHighlighted', {
id: this.state.selectedElement,
inAlignmentMode: !this.state.inAlignmentMode,
});
}
this.setState({inAlignmentMode: !this.state.inAlignmentMode});
};
onDataValueChanged = (path: Array<string>, value: any) => { onDataValueChanged = (path: Array<string>, value: any) => {
const id = this.state.inAXMode const id = this.state.inAXMode
? this.state.selectedAXElement ? this.state.selectedAXElement
@@ -96,6 +108,7 @@ export default class Layout extends FlipperPlugin<State, void, PersistedState> {
render() { render() {
const inspectorProps = { const inspectorProps = {
client: this.client, client: this.client,
inAlignmentMode: this.state.inAlignmentMode,
selectedElement: this.state.selectedElement, selectedElement: this.state.selectedElement,
selectedAXElement: this.state.selectedAXElement, selectedAXElement: this.state.selectedAXElement,
setPersistedState: this.props.setPersistedState, setPersistedState: this.props.setPersistedState,
@@ -122,6 +135,12 @@ export default class Layout extends FlipperPlugin<State, void, PersistedState> {
active={this.state.inAXMode} active={this.state.inAXMode}
/> />
)} )}
<ToolbarIcon
onClick={this.onToggleAlignmentMode}
title="Toggle AlignmentMode to show alignment lines"
icon="borders"
active={this.state.inAlignmentMode}
/>
</Toolbar> </Toolbar>
<FlexRow grow={true}> <FlexRow grow={true}>