Skip to content

Commit bb8a76c

Browse files
authored
[DevTools] Show fallback in inspected element pane when no element is selected (#35503)
1 parent fae15df commit bb8a76c

File tree

7 files changed

+24
-4
lines changed

7 files changed

+24
-4
lines changed

packages/react-devtools-shared/src/devtools/views/Components/Components.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
flex: 1 1 35%;
2323
overflow-x: hidden;
2424
overflow-y: auto;
25+
border-left: 1px solid var(--color-border);
2526
}
2627

2728
.ResizeBarWrapper {
@@ -55,6 +56,7 @@
5556

5657
.InspectedElementWrapper {
5758
flex: 1 1 50%;
59+
border-left: none;
5860
}
5961

6062
.ResizeBar {

packages/react-devtools-shared/src/devtools/views/Components/Components.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,11 @@ function Components(_: {}) {
159159
<div className={styles.InspectedElementWrapper}>
160160
<NativeStyleContextController>
161161
<InspectedElementErrorBoundary>
162-
<InspectedElement />
162+
<InspectedElement
163+
fallbackEmpty={
164+
'No React element selected. Select an element in the tree to inspect.'
165+
}
166+
/>
163167
</InspectedElementErrorBoundary>
164168
</NativeStyleContextController>
165169
</div>

packages/react-devtools-shared/src/devtools/views/Components/InspectedElement.css

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
flex-direction: column;
44
height: 100%;
55
width: 100%;
6-
border-left: 1px solid var(--color-border);
76
border-top: 1px solid var(--color-border);
87
}
98

@@ -69,7 +68,11 @@
6968
padding: 0.25rem;
7069
color: var(--color-dimmer);
7170
font-style: italic;
72-
border-left: 1px solid var(--color-border);
71+
}
72+
73+
.NoInspectionFallback {
74+
padding: 0.25rem;
75+
font-style: italic;
7376
}
7477

7578
.StrictModeNonCompliant {

packages/react-devtools-shared/src/devtools/views/Components/InspectedElement.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ import Tooltip from './reach-ui/tooltip';
3636

3737
export type Props = {
3838
actionButtons?: React.Node,
39+
/** fallback to show when no element is inspected */
40+
fallbackEmpty: React.Node,
3941
};
4042

4143
// TODO Make edits and deletes also use transition API!
@@ -44,6 +46,7 @@ const noSourcePromise = Promise.resolve(null);
4446

4547
export default function InspectedElementWrapper({
4648
actionButtons,
49+
fallbackEmpty,
4750
}: Props): React.Node {
4851
const {inspectedElementID} = useContext(TreeStateContext);
4952
const bridge = useContext(BridgeContext);
@@ -193,6 +196,7 @@ export default function InspectedElementWrapper({
193196
return (
194197
<div className={styles.InspectedElement}>
195198
<div className={styles.TitleRow} />
199+
<div className={styles.NoInspectionFallback}>{fallbackEmpty}</div>
196200
</div>
197201
);
198202
}

packages/react-devtools-shared/src/devtools/views/InspectedElement/InspectedElementPane.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ function InspectedElementPane() {
2525
<div className={styles.InspectedElementPane}>
2626
<InspectedElement
2727
actionButtons={!hideSettings && <SettingsModalContextToggle />}
28+
fallbackEmpty={"Selected element wasn't rendered with React."}
2829
/>
2930
<SettingsModal />
3031
</div>

packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseTab.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
flex: 0 0 calc(100% - var(--horizontal-resize-tree-percentage));
3636
overflow-x: hidden;
3737
overflow-y: auto;
38+
border-left: 1px solid var(--color-border);
3839
}
3940

4041
.ResizeBarWrapper {
@@ -70,6 +71,7 @@
7071

7172
.InspectedElementWrapper {
7273
flex: 0 0 calc(100% - var(--vertical-resize-tree-percentage));
74+
border-left: none;
7375
}
7476

7577
.TreeWrapper + .ResizeBarWrapper .ResizeBar {

packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseTab.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,11 @@ function SuspenseTab(_: {}) {
543543
className={styles.InspectedElementWrapper}
544544
hidden={inspectedElementHidden}>
545545
<InspectedElementErrorBoundary>
546-
<InspectedElement />
546+
<InspectedElement
547+
fallbackEmpty={
548+
'No React element selected. Select a Suspense boundary in the minimap to inspect.'
549+
}
550+
/>
547551
</InspectedElementErrorBoundary>
548552
</div>
549553
<SettingsModal />

0 commit comments

Comments
 (0)