diff --git a/src/plugins/layout/Inspector.tsx b/src/plugins/layout/Inspector.tsx index 4b9b251e6..bf25ed783 100644 --- a/src/plugins/layout/Inspector.tsx +++ b/src/plugins/layout/Inspector.tsx @@ -303,15 +303,24 @@ export default class Inspector extends Component { }), ); - onElementExpanded = (id: ElementID, deep: boolean) => { - const expanded = !this.elements()[id].expanded; - this.updateElement(id, {expanded}); - if (expanded) { - this.getChildren(id, {}).then(children => { - if (deep) { - children.forEach(child => this.onElementExpanded(child.id, deep)); - } - }); + onElementExpanded = ( + id: ElementID, + deep: boolean, + forceExpand: boolean = false, + ) => { + const shouldExpand = forceExpand || !this.elements()[id].expanded; + if (shouldExpand) { + this.updateElement(id, {expanded: shouldExpand}); + } + this.getChildren(id, {}).then(children => { + if (deep) { + children.forEach(child => + this.onElementExpanded(child.id, deep, shouldExpand), + ); + } + }); + if (!shouldExpand) { + this.updateElement(id, {expanded: shouldExpand}); } }; diff --git a/src/ui/components/elements-inspector/elements.tsx b/src/ui/components/elements-inspector/elements.tsx index 425093e83..b22adc4fd 100644 --- a/src/ui/components/elements-inspector/elements.tsx +++ b/src/ui/components/elements-inspector/elements.tsx @@ -253,6 +253,14 @@ class ElementsRow extends PureComponent { this.props.onElementExpanded(this.props.id, false); }, }, + { + label: props.element.expanded + ? 'Collapse all child elements' + : 'Expand all child elements', + click: () => { + this.props.onElementExpanded(this.props.id, true); + }, + }, ]; for (const extension of props.contextMenuExtensions) {