Restore input focus after clicking reset value button

This commit is contained in:
Brian Vaughn
2019-02-21 14:13:48 -08:00
parent 4f64c9ef9e
commit 9898db02d1
+7 -1
View File
@@ -1,6 +1,6 @@
// @flow
import React, { Fragment, useCallback, useState } from 'react';
import React, { Fragment, useCallback, useRef, useState } from 'react';
import Button from './Button';
import ButtonIcon from './ButtonIcon';
import { getMetaValueLabel } from './utils';
@@ -175,6 +175,7 @@ export function EditableValue({
}: EditableValueProps) {
const [hasPendingChanges, setHasPendingChanges] = useState(false);
const [editableValue, setEditableValue] = useState(value);
const inputRef = useRef<HTMLInputElement | null>(null);
if (hasPendingChanges && editableValue === value) {
setHasPendingChanges(false);
@@ -198,6 +199,10 @@ export function EditableValue({
const handleReset = useCallback(() => {
setEditableValue(value);
setHasPendingChanges(false);
if (inputRef.current !== null) {
inputRef.current.focus();
}
}, [value]);
const handleKeyDown = useCallback(
@@ -242,6 +247,7 @@ export function EditableValue({
className={styles.ValueInput}
onChange={handleChange}
onKeyDown={handleKeyDown}
ref={inputRef}
type={type}
value={dataType === 'boolean' ? undefined : inputValue}
/>