Skip to content

Commit 6b5c90c

Browse files
prevent layout shift on hover in libs/board manager
1 parent 87ebcbe commit 6b5c90c

File tree

2 files changed

+7
-28
lines changed

2 files changed

+7
-28
lines changed

arduino-ide-extension/src/browser/widgets/component-list/component-list-item.tsx

+2-21
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,14 @@ export class ComponentListItem<
1414
)[0];
1515
this.state = {
1616
selectedVersion: version,
17-
focus: false,
18-
versionUpdate: false,
1917
};
2018
}
2119
}
2220

23-
override componentDidUpdate(
24-
prevProps: ComponentListItem.Props<T>,
25-
prevState: ComponentListItem.State
26-
): void {
27-
if (this.state.focus !== prevState.focus) {
28-
this.props.onFocusDidChange();
29-
}
30-
}
31-
3221
override render(): React.ReactNode {
3322
const { item, itemRenderer } = this.props;
3423
return (
35-
<div
36-
onMouseEnter={() => this.setState({ focus: true })}
37-
onMouseLeave={() => {
38-
if (!this.state.versionUpdate) this.setState({ focus: false });
39-
}}
40-
>
24+
<div>
4125
{itemRenderer.renderItem(
4226
Object.assign(this.state, { item }),
4327
this.install.bind(this),
@@ -55,7 +39,6 @@ export class ComponentListItem<
5539
)[0];
5640
this.setState({
5741
selectedVersion: version,
58-
versionUpdate: false,
5942
});
6043
try {
6144
await this.props.install(item, toInstall);
@@ -71,7 +54,7 @@ export class ComponentListItem<
7154
}
7255

7356
private onVersionChange(version: Installable.Version): void {
74-
this.setState({ selectedVersion: version, versionUpdate: true });
57+
this.setState({ selectedVersion: version });
7558
}
7659
}
7760

@@ -86,7 +69,5 @@ export namespace ComponentListItem {
8669

8770
export interface State {
8871
selectedVersion?: Installable.Version;
89-
focus: boolean;
90-
versionUpdate: boolean;
9172
}
9273
}

arduino-ide-extension/src/browser/widgets/component-list/list-item-renderer.tsx

+5-7
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export class ListItemRenderer<T extends ArduinoComponent> {
2828
uninstall: (item: T) => Promise<void>,
2929
onVersionChange: (version: Installable.Version) => void
3030
): React.ReactNode {
31-
const { item, focus } = input;
31+
const { item } = input;
3232
let nameAndAuthor: JSX.Element;
3333
if (item.name && item.author) {
3434
const name = <span className="name">{item.name}</span>;
@@ -127,12 +127,10 @@ export class ListItemRenderer<T extends ArduinoComponent> {
127127
{description}
128128
</div>
129129
<div className="info">{moreInfo}</div>
130-
{focus && (
131-
<div className="footer">
132-
{versions}
133-
{installButton}
134-
</div>
135-
)}
130+
<div className="footer">
131+
{versions}
132+
{installButton}
133+
</div>
136134
</div>
137135
);
138136
}

0 commit comments

Comments
 (0)