Skip to content

Commit d3947e8

Browse files
author
Brian Vaughn
committed
Tweaked commit selector input
nits: Removed a few unnecessary useCallbacks and a useRef. Tweak CSS to add :focus style.
1 parent 237aecb commit d3947e8

File tree

2 files changed

+57
-52
lines changed

2 files changed

+57
-52
lines changed

packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.css

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,17 @@
3030
}
3131

3232
.Input {
33+
background: none;
3334
font-size: var(--font-size-sans-normal);
3435
text-align: right;
3536
font-family: var(--font-family-monospace);
3637
border: 1px solid transparent;
3738
border-radius: 0.125rem;
3839
padding: 0.125rem;
40+
color: var(--color-attribute-editable-value);
3941
}
4042

41-
.Input:hover {
42-
border: 1px solid var(--color-border);
43+
.Input:focus {
44+
background-color: var(--color-button-background-focus);
45+
outline: none;
4346
}

packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.js

Lines changed: 52 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99

1010
import * as React from 'react';
11-
import {Fragment, useCallback, useContext, useMemo, useRef} from 'react';
11+
import {Fragment, useContext, useMemo} from 'react';
1212
import Button from '../Button';
1313
import ButtonIcon from '../ButtonIcon';
1414
import {ProfilerContext} from './ProfilerContext';
@@ -85,88 +85,90 @@ export default function SnapshotSelector(_: Props) {
8585
}
8686

8787
let label = null;
88-
const commitInputRef = useRef(null);
89-
const handleCommitInputKeyDown = useCallback(event => {
90-
switch (event.key) {
91-
case 'Enter':
92-
event.stopPropagation();
93-
if (commitInputRef.current) {
94-
commitInputRef.current.blur();
95-
}
96-
break;
97-
default:
98-
break;
99-
}
100-
}, []);
101-
const handleCommitInputChange = useCallback(
102-
event => {
103-
const value = parseInt(event.target.value, 10);
88+
if (numFilteredCommits > 0) {
89+
const handleCommitInputChange = event => {
90+
const value = parseInt(event.currentTarget.value, 10);
10491
if (!isNaN(value)) {
10592
const filteredIndex = Math.min(
10693
Math.max(value - 1, 0),
94+
95+
// Snashots are shown to the user as 1-based
96+
// but the indices within the profiler data array ar 0-based.
10797
numFilteredCommits - 1,
10898
);
10999
selectCommitIndex(filteredCommitIndices[filteredIndex]);
110100
}
111-
},
112-
[numFilteredCommits, selectCommitIndex, filteredCommitIndices],
113-
);
114-
if (numFilteredCommits > 0) {
115-
const numFilteredCommitsString = `${numFilteredCommits}`;
116-
const selectedFilteredCommitIndexString = `${selectedFilteredCommitIndex +
117-
1}`;
101+
};
102+
103+
const handleClick = event => {
104+
event.currentTarget.select();
105+
};
106+
107+
const handleKeyDown = event => {
108+
switch (event.key) {
109+
case 'ArrowDown':
110+
viewPrevCommit();
111+
event.stopPropagation();
112+
break;
113+
case 'ArrowUp':
114+
viewNextCommit();
115+
event.stopPropagation();
116+
break;
117+
default:
118+
break;
119+
}
120+
};
121+
118122
const input = (
119123
<input
120-
ref={commitInputRef}
121124
className={styles.Input}
122125
type="text"
123126
inputMode="numeric"
124127
pattern="[0-9]*"
125-
value={selectedFilteredCommitIndexString}
126-
size={numFilteredCommitsString.length}
128+
value={selectedFilteredCommitIndex + 1}
129+
size={`${numFilteredCommits}`.length}
127130
onChange={handleCommitInputChange}
128-
onKeyDown={handleCommitInputKeyDown}
131+
onClick={handleClick}
132+
onKeyDown={handleKeyDown}
129133
/>
130134
);
135+
131136
label = (
132137
<Fragment>
133-
{input} / {numFilteredCommitsString}
138+
{input} / {numFilteredCommits}
134139
</Fragment>
135140
);
136141
}
137142

138-
const viewNextCommit = useCallback(() => {
143+
const viewNextCommit = () => {
139144
let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) + 1;
140145
if (nextCommitIndex === filteredCommitIndices.length) {
141146
nextCommitIndex = 0;
142147
}
143148
selectCommitIndex(filteredCommitIndices[nextCommitIndex]);
144-
}, [selectedFilteredCommitIndex, filteredCommitIndices, selectCommitIndex]);
145-
const viewPrevCommit = useCallback(() => {
149+
};
150+
const viewPrevCommit = () => {
146151
let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) - 1;
147152
if (nextCommitIndex < 0) {
148153
nextCommitIndex = filteredCommitIndices.length - 1;
149154
}
150155
selectCommitIndex(filteredCommitIndices[nextCommitIndex]);
151-
}, [selectedFilteredCommitIndex, filteredCommitIndices, selectCommitIndex]);
156+
};
152157

153-
const handleKeyDown = useCallback(
154-
event => {
155-
switch (event.key) {
156-
case 'ArrowLeft':
157-
viewPrevCommit();
158-
event.stopPropagation();
159-
break;
160-
case 'ArrowRight':
161-
viewNextCommit();
162-
event.stopPropagation();
163-
break;
164-
default:
165-
break;
166-
}
167-
},
168-
[viewNextCommit, viewPrevCommit],
169-
);
158+
const handleKeyDown = event => {
159+
switch (event.key) {
160+
case 'ArrowLeft':
161+
viewPrevCommit();
162+
event.stopPropagation();
163+
break;
164+
case 'ArrowRight':
165+
viewNextCommit();
166+
event.stopPropagation();
167+
break;
168+
default:
169+
break;
170+
}
171+
};
170172

171173
if (commitData.length === 0) {
172174
return null;

0 commit comments

Comments
 (0)