Small updates to Layout Extension code (committing to keep separate from larger changes)
Summary: Changed AXVisible checking, added AX specific hover Reviewed By: danielbuechele Differential Revision: D8795383 fbshipit-source-id: bb10b9e860629cfd385d97e79587c76460b516bc
This commit is contained in:
committed by
Facebook Github Bot
parent
fcd1b1e773
commit
9e673a07a8
@@ -23,3 +23,5 @@ export class AXElementsInspector extends Component<{
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const AXToggleButtonEnabled: boolean = false;
|
||||||
|
|||||||
@@ -25,7 +25,10 @@ import {
|
|||||||
VerticalRule,
|
VerticalRule,
|
||||||
} from 'sonar';
|
} from 'sonar';
|
||||||
|
|
||||||
import {AXElementsInspector} from '../../fb-stubs/AXLayoutExtender.js';
|
import {
|
||||||
|
AXElementsInspector,
|
||||||
|
AXToggleButtonEnabled,
|
||||||
|
} from '../../fb-stubs/AXLayoutExtender.js';
|
||||||
|
|
||||||
// $FlowFixMe
|
// $FlowFixMe
|
||||||
import debounce from 'lodash.debounce';
|
import debounce from 'lodash.debounce';
|
||||||
@@ -252,7 +255,6 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
...element,
|
...element,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return {AXelements: updatedElements};
|
return {AXelements: updatedElements};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -399,6 +401,7 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (AXToggleButtonEnabled) {
|
||||||
this.client.call('getRoot').then((element: Element) => {
|
this.client.call('getRoot').then((element: Element) => {
|
||||||
this.dispatchAction({elements: [element], type: 'UpdateAXElements'});
|
this.dispatchAction({elements: [element], type: 'UpdateAXElements'});
|
||||||
this.dispatchAction({root: element.id, type: 'SetAXRoot'});
|
this.dispatchAction({root: element.id, type: 'SetAXRoot'});
|
||||||
@@ -406,15 +409,19 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
this.setState({AXinitialised: true});
|
this.setState({AXinitialised: true});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.client.subscribe(
|
this.client.subscribe(
|
||||||
'invalidate',
|
'invalidate',
|
||||||
({nodes}: {nodes: Array<{id: ElementID}>}) => {
|
({nodes}: {nodes: Array<{id: ElementID}>}) => {
|
||||||
this.invalidate(nodes.map(node => node.id)).then(
|
this.invalidate(nodes.map(node => node.id)).then(
|
||||||
(elements: Array<Element>) => {
|
(elements: Array<Element>) => {
|
||||||
this.dispatchAction({elements, type: 'UpdateElements'});
|
if (this.state.inAXMode) {
|
||||||
// to be removed once trees are separate - will have own invalidate
|
// to be removed once trees are separate - will have own invalidate
|
||||||
this.dispatchAction({elements, type: 'UpdateAXElements'});
|
this.dispatchAction({elements, type: 'UpdateAXElements'});
|
||||||
|
} else {
|
||||||
|
this.dispatchAction({elements, type: 'UpdateElements'});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -445,10 +452,13 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
return Promise.resolve([]);
|
return Promise.resolve([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.getNodes(ids, true, false).then((elements: Array<Element>) => {
|
const ax = this.state.inAXMode;
|
||||||
|
return this.getNodes(ids, true, ax).then((elements: Array<Element>) => {
|
||||||
const children = elements
|
const children = elements
|
||||||
.filter(element => {
|
.filter(element => {
|
||||||
const prev = this.state.elements[element.id];
|
const prev = (ax ? this.state.AXelements : this.state.elements)[
|
||||||
|
element.id
|
||||||
|
];
|
||||||
return prev && prev.expanded;
|
return prev && prev.expanded;
|
||||||
})
|
})
|
||||||
.map(element => element.children)
|
.map(element => element.children)
|
||||||
@@ -462,7 +472,7 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
|
|
||||||
getNodesAndDirectChildren(
|
getNodesAndDirectChildren(
|
||||||
ids: Array<ElementID>,
|
ids: Array<ElementID>,
|
||||||
ax: boolean,
|
ax: boolean, // always false at the moment bc only used for select
|
||||||
): Promise<Array<Element>> {
|
): Promise<Array<Element>> {
|
||||||
return this.getNodes(ids, false, ax).then((elements: Array<Element>) => {
|
return this.getNodes(ids, false, ax).then((elements: Array<Element>) => {
|
||||||
const children = elements
|
const children = elements
|
||||||
@@ -630,6 +640,10 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
this.client.send('setHighlighted', {id: key});
|
this.client.send('setHighlighted', {id: key});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onAXElementHovered = debounce((key: ?ElementID) => {
|
||||||
|
this.client.send('setHighlighted', {id: key});
|
||||||
|
});
|
||||||
|
|
||||||
onDataValueChanged = (path: Array<string>, value: any) => {
|
onDataValueChanged = (path: Array<string>, value: any) => {
|
||||||
const selected = this.state.inAXMode
|
const selected = this.state.inAXMode
|
||||||
? this.state.AXselected
|
? this.state.AXselected
|
||||||
@@ -683,20 +697,6 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
outstandingSearchQuery,
|
outstandingSearchQuery,
|
||||||
} = this.state;
|
} = this.state;
|
||||||
|
|
||||||
const AXInspector = (
|
|
||||||
<AXElementsInspector
|
|
||||||
onElementSelected={this.onAXElementSelected}
|
|
||||||
onElementHovered={this.onElementHovered}
|
|
||||||
onElementExpanded={this.onAXElementExpanded}
|
|
||||||
onValueChanged={this.onDataValueChanged}
|
|
||||||
selected={AXselected}
|
|
||||||
searchResults={this.state.searchResults}
|
|
||||||
root={AXroot}
|
|
||||||
elements={AXelements}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
const AXButtonVisible = AXInspector !== null;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FlexColumn fill={true}>
|
<FlexColumn fill={true}>
|
||||||
<Toolbar>
|
<Toolbar>
|
||||||
@@ -715,7 +715,7 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</SearchIconContainer>
|
</SearchIconContainer>
|
||||||
{AXButtonVisible ? (
|
{AXToggleButtonEnabled ? (
|
||||||
<SearchIconContainer
|
<SearchIconContainer
|
||||||
onClick={this.onToggleAccessibility}
|
onClick={this.onToggleAccessibility}
|
||||||
role="button"
|
role="button"
|
||||||
@@ -760,7 +760,18 @@ export default class Layout extends SonarPlugin<InspectorState> {
|
|||||||
</Center>
|
</Center>
|
||||||
)}
|
)}
|
||||||
{AXinitialised && inAXMode ? <VerticalRule /> : null}
|
{AXinitialised && inAXMode ? <VerticalRule /> : null}
|
||||||
{AXinitialised && inAXMode ? AXInspector : null}
|
{AXinitialised && inAXMode ? (
|
||||||
|
<AXElementsInspector
|
||||||
|
onElementSelected={this.onAXElementSelected}
|
||||||
|
onElementHovered={this.onAXElementHovered}
|
||||||
|
onElementExpanded={this.onAXElementExpanded}
|
||||||
|
onValueChanged={this.onDataValueChanged}
|
||||||
|
selected={AXselected}
|
||||||
|
searchResults={null}
|
||||||
|
root={AXroot}
|
||||||
|
elements={AXelements}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
</FlexRow>
|
</FlexRow>
|
||||||
<SonarSidebar>{this.renderSidebar()}</SonarSidebar>
|
<SonarSidebar>{this.renderSidebar()}</SonarSidebar>
|
||||||
</FlexColumn>
|
</FlexColumn>
|
||||||
|
|||||||
Reference in New Issue
Block a user