Skip to content

Commit 67415c8

Browse files
authored
[DevTools] Stop using native title for buttons/icons (facebook#34379)
1 parent f3a8036 commit 67415c8

File tree

10 files changed

+43
-47
lines changed

10 files changed

+43
-47
lines changed

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,17 @@ import styles from './Badge.css';
1414
type Props = {
1515
className?: string,
1616
children: React$Node,
17+
...
1718
};
1819

19-
export default function Badge({className = '', children}: Props): React.Node {
20-
return <div className={`${styles.Badge} ${className}`}>{children}</div>;
20+
export default function Badge({
21+
className = '',
22+
children,
23+
...props
24+
}: Props): React.Node {
25+
return (
26+
<div {...props} className={`${styles.Badge} ${className}`}>
27+
{children}
28+
</div>
29+
);
2130
}

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import type {Element as ElementType} from 'react-devtools-shared/src/frontend/ty
2424
import styles from './Element.css';
2525
import Icon from '../Icon';
2626
import {useChangeOwnerAction} from './OwnersListContext';
27+
import Tooltip from './reach-ui/tooltip';
2728

2829
type Props = {
2930
data: ItemData,
@@ -231,15 +232,16 @@ export default function Element({data, index, style}: Props): React.Node {
231232
/>
232233
)}
233234
{showStrictModeBadge && (
234-
<Icon
235-
className={
236-
isSelected && treeFocused
237-
? styles.StrictModeContrast
238-
: styles.StrictMode
239-
}
240-
title="This component is not running in StrictMode."
241-
type="strict-mode-non-compliant"
242-
/>
235+
<Tooltip label="This component is not running in StrictMode.">
236+
<Icon
237+
className={
238+
isSelected && treeFocused
239+
? styles.StrictModeContrast
240+
: styles.StrictMode
241+
}
242+
type="strict-mode-non-compliant"
243+
/>
244+
</Tooltip>
243245
)}
244246
</div>
245247
</div>

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,3 @@
1111
position: absolute;
1212
right: 0.25em;
1313
}
14-
15-
.ForgetToggle {
16-
display: flex;
17-
}
18-
19-
.ForgetToggle > span { /* targets .ToggleContent */
20-
padding: 0;
21-
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import * as React from 'react';
1111

1212
import Badge from './Badge';
1313
import IndexableDisplayName from './IndexableDisplayName';
14-
import Toggle from '../Toggle';
14+
import Tooltip from './reach-ui/tooltip';
1515

1616
import styles from './ForgetBadge.css';
1717

@@ -40,12 +40,11 @@ export default function ForgetBadge(props: Props): React.Node {
4040
'Memo'
4141
);
4242

43-
const onChange = () => {};
4443
const title =
4544
'✨ This component has been auto-memoized by the React Compiler.';
4645
return (
47-
<Toggle onChange={onChange} className={styles.ForgetToggle} title={title}>
46+
<Tooltip label={title}>
4847
<Badge className={`${styles.Root} ${className}`}>{innerView}</Badge>
49-
</Toggle>
48+
</Tooltip>
5049
);
5150
}

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import InspectedElementViewSourceButton from './InspectedElementViewSourceButton
2929
import useEditorURL from '../useEditorURL';
3030

3131
import styles from './InspectedElement.css';
32+
import Tooltip from './reach-ui/tooltip';
3233

3334
export type Props = {};
3435

@@ -192,14 +193,15 @@ export default function InspectedElementWrapper(_: Props): React.Node {
192193
let strictModeBadge = null;
193194
if (element.isStrictModeNonCompliant) {
194195
strictModeBadge = (
195-
<a
196-
className={styles.StrictModeNonCompliant}
197-
href="https://react.dev/reference/react/StrictMode"
198-
rel="noopener noreferrer"
199-
target="_blank"
200-
title="This component is not running in StrictMode. Click to learn more.">
201-
<Icon type="strict-mode-non-compliant" />
202-
</a>
196+
<Tooltip label="This component is not running in StrictMode. Click to learn more.">
197+
<a
198+
className={styles.StrictModeNonCompliant}
199+
href="https://react.dev/reference/react/StrictMode"
200+
rel="noopener noreferrer"
201+
target="_blank">
202+
<Icon type="strict-mode-non-compliant" />
203+
</a>
204+
</Tooltip>
203205
);
204206
}
205207

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
.Toggle {
2-
display: flex;
3-
}
4-
5-
.Toggle > span { /* targets .ToggleContent */
6-
padding: 0;
7-
}
8-
91
.Badge {
102
cursor: help;
113
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,21 @@
1010
import * as React from 'react';
1111

1212
import Badge from './Badge';
13-
import Toggle from '../Toggle';
13+
import Tooltip from './reach-ui/tooltip';
1414

1515
import styles from './NativeTagBadge.css';
1616

1717
type Props = {
1818
nativeTag: number,
1919
};
2020

21-
const noop = () => {};
2221
const title =
2322
'Unique identifier for the corresponding native component. React Native only.';
2423

2524
export default function NativeTagBadge({nativeTag}: Props): React.Node {
2625
return (
27-
<Toggle onChange={noop} className={styles.Toggle} title={title}>
26+
<Tooltip label={title}>
2827
<Badge className={styles.Badge}>Tag {nativeTag}</Badge>
29-
</Toggle>
28+
</Tooltip>
3029
);
3130
}

packages/react-devtools-shared/src/devtools/views/ErrorBoundary/ReportNewIssue.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ export default function ReportNewIssue({
6363
className={styles.ReportLink}
6464
href={bugURL}
6565
rel="noopener noreferrer"
66-
target="_blank"
67-
title="Report bug">
66+
target="_blank">
6867
Report this issue
6968
</a>
7069
<div className={styles.ReproSteps}>

packages/react-devtools-shared/src/devtools/views/ErrorBoundary/WorkplaceGroup.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ export default function WorkplaceGroup(): React.Node {
2525
className={styles.ReportLink}
2626
href={REACT_DEVTOOLS_WORKPLACE_URL}
2727
rel="noopener noreferrer"
28-
target="_blank"
29-
title="Report bug">
28+
target="_blank">
3029
Report this on Workplace
3130
</a>
3231
<div className={styles.FacebookOnly}>(Facebook employees only.)</div>

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@ type Props = {
3333
className?: string,
3434
title?: string,
3535
type: IconType,
36+
...
3637
};
3738

3839
export default function Icon({
3940
className = '',
4041
title = '',
4142
type,
43+
...props
4244
}: Props): React.Node {
4345
let pathData = null;
4446
let viewBox = '0 0 24 24';
@@ -102,6 +104,7 @@ export default function Icon({
102104

103105
return (
104106
<svg
107+
{...props}
105108
xmlns="http://www.w3.org/2000/svg"
106109
className={`${styles.Icon} ${className}`}
107110
width="24"

0 commit comments

Comments
 (0)