Skip to content

Commit c48ee4f

Browse files
committed
[PR Feedback] Remove autoFocus from both the read mode button and edit mode input in favor of manual focus management. Created a ref/useEffect combo that keeps track of the state and sets focus on the edit mode input only when the read mode button is clicked.
1 parent 192a6a7 commit c48ee4f

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

src/components/inline_edit/inline_edit_form.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import React, {
1313
HTMLAttributes,
1414
MouseEvent,
1515
KeyboardEvent,
16+
useRef,
17+
useEffect,
1618
} from 'react';
1719
import classNames from 'classnames';
1820

@@ -146,6 +148,14 @@ export const EuiInlineEditForm: FunctionComponent<EuiInlineEditFormProps> = ({
146148
const [editModeValue, setEditModeValue] = useState(defaultValue);
147149
const [readModeValue, setReadModeValue] = useState(defaultValue);
148150

151+
const editModeInputRef = useRef<HTMLInputElement>(null);
152+
153+
useEffect(() => {
154+
if (isEditing) {
155+
editModeInputRef.current?.focus();
156+
}
157+
}, [isEditing]);
158+
149159
const cancelInlineEdit = () => {
150160
setEditModeValue(readModeValue);
151161
setIsEditing(false);
@@ -186,12 +196,12 @@ export const EuiInlineEditForm: FunctionComponent<EuiInlineEditFormProps> = ({
186196
>
187197
<EuiFieldText
188198
id={inlineEditInputId}
199+
inputRef={editModeInputRef}
189200
value={editModeValue}
190201
onChange={(e) => {
191202
setEditModeValue(e.target.value);
192203
}}
193204
aria-label={inputAriaLabel}
194-
autoFocus
195205
compressed={sizes.compressed}
196206
isInvalid={isInvalid}
197207
isLoading={isLoading}
@@ -265,13 +275,12 @@ export const EuiInlineEditForm: FunctionComponent<EuiInlineEditFormProps> = ({
265275
color="text"
266276
iconType="pencil"
267277
iconSide="right"
268-
autoFocus
269278
flush="both"
270279
iconSize={sizes.iconSize}
271280
size={sizes.buttonSize}
272281
data-test-subj="euiInlineReadModeButton"
273282
{...readModeProps}
274-
onClick={(e) => {
283+
onClick={(e: MouseEvent<HTMLButtonElement>) => {
275284
setIsEditing(true);
276285
readModeProps?.onClick?.(e);
277286
}}

0 commit comments

Comments
 (0)