Bug 1495775 - Flex items should be highlighted when hovered over in the flex item list. r=pbro

This commit is contained in:
Gabriel Luong 2018-10-11 12:00:37 -04:00
parent 5b7da2a429
commit 65571e884a
3 changed files with 33 additions and 12 deletions

View File

@ -7,15 +7,11 @@
const { PureComponent } = require("devtools/client/shared/vendor/react"); const { PureComponent } = require("devtools/client/shared/vendor/react");
const dom = require("devtools/client/shared/vendor/react-dom-factories"); const dom = require("devtools/client/shared/vendor/react-dom-factories");
const PropTypes = require("devtools/client/shared/vendor/react-prop-types"); const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
const { translateNodeFrontToGrip } = require("devtools/client/inspector/shared/utils");
loader.lazyGetter(this, "Rep", function() { const { REPS, MODE } = require("devtools/client/shared/components/reps/reps");
return require("devtools/client/shared/components/reps/reps").REPS.Rep; const { Rep } = REPS;
}); const ElementNode = REPS.ElementNode;
loader.lazyGetter(this, "MODE", function() {
return require("devtools/client/shared/components/reps/reps").MODE;
});
loader.lazyRequireGetter(this, "translateNodeFrontToGrip", "devtools/client/inspector/shared/utils", true);
const Types = require("../types"); const Types = require("../types");
@ -23,22 +19,35 @@ class FlexItem extends PureComponent {
static get propTypes() { static get propTypes() {
return { return {
flexItem: PropTypes.shape(Types.flexItem).isRequired, flexItem: PropTypes.shape(Types.flexItem).isRequired,
onHideBoxModelHighlighter: PropTypes.func.isRequired,
onShowBoxModelHighlighterForNode: PropTypes.func.isRequired,
setSelectedNode: PropTypes.func.isRequired, setSelectedNode: PropTypes.func.isRequired,
}; };
} }
render() { render() {
const { nodeFront } = this.props.flexItem; const {
flexItem,
onHideBoxModelHighlighter,
onShowBoxModelHighlighterForNode,
setSelectedNode,
} = this.props;
const { nodeFront } = flexItem;
return ( return (
dom.li({}, dom.li({},
dom.button( dom.button(
{ {
className: "devtools-button devtools-monospace", className: "devtools-button devtools-monospace",
onClick: () => this.props.setSelectedNode(nodeFront), onClick: () => {
setSelectedNode(nodeFront);
onHideBoxModelHighlighter();
},
onMouseOut: () => onHideBoxModelHighlighter(),
onMouseOver: () => onShowBoxModelHighlighterForNode(nodeFront),
}, },
Rep({ Rep({
defaultRep: Rep.ElementNode, defaultRep: ElementNode,
mode: MODE.TINY, mode: MODE.TINY,
object: translateNodeFrontToGrip(nodeFront), object: translateNodeFrontToGrip(nodeFront),
}) })

View File

@ -16,6 +16,8 @@ class FlexItemList extends PureComponent {
static get propTypes() { static get propTypes() {
return { return {
flexItems: PropTypes.arrayOf(PropTypes.shape(Types.flexItem)).isRequired, flexItems: PropTypes.arrayOf(PropTypes.shape(Types.flexItem)).isRequired,
onHideBoxModelHighlighter: PropTypes.func.isRequired,
onShowBoxModelHighlighterForNode: PropTypes.func.isRequired,
setSelectedNode: PropTypes.func.isRequired, setSelectedNode: PropTypes.func.isRequired,
}; };
} }
@ -23,6 +25,8 @@ class FlexItemList extends PureComponent {
render() { render() {
const { const {
flexItems, flexItems,
onHideBoxModelHighlighter,
onShowBoxModelHighlighterForNode,
setSelectedNode, setSelectedNode,
} = this.props; } = this.props;
@ -32,6 +36,8 @@ class FlexItemList extends PureComponent {
flexItems.map(flexItem => FlexItem({ flexItems.map(flexItem => FlexItem({
key: flexItem.actorID, key: flexItem.actorID,
flexItem, flexItem,
onHideBoxModelHighlighter,
onShowBoxModelHighlighterForNode,
setSelectedNode, setSelectedNode,
})) }))
) )

View File

@ -59,11 +59,17 @@ class Flexbox extends PureComponent {
} }
renderFlexItemList() { renderFlexItemList() {
const { setSelectedNode } = this.props; const {
onHideBoxModelHighlighter,
onShowBoxModelHighlighterForNode,
setSelectedNode,
} = this.props;
const { flexItems } = this.props.flexContainer; const { flexItems } = this.props.flexContainer;
return FlexItemList({ return FlexItemList({
flexItems, flexItems,
onHideBoxModelHighlighter,
onShowBoxModelHighlighterForNode,
setSelectedNode, setSelectedNode,
}); });
} }