Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import { SearchIcon } from "@chakra-ui/icons";
import {
InputGroup,
InputLeftElement,
Input,
forwardRef,
} from "@chakra-ui/react";
import { FormEventHandler, useState } from "react";
import { Form } from "../../../components/Form";
import { useDebounce } from "../../../hooks/useDebounce";
export interface SearchInputProps {
value: string;
onChange: (s: string) => void;
onSubmit: FormEventHandler<HTMLFormElement>;
}
export const SearchInput = forwardRef<SearchInputProps, "input">(
({ value, onChange, onSubmit }, inputRef) => {
const [inputValue, setInputValue] = useState(value);
useDebounce(inputValue, { onChange });
return (
<Form data-testid="choose-submodule-search-form" onSubmit={onSubmit}>
<InputGroup>
<InputLeftElement>
<SearchIcon color="gray.400" />
</InputLeftElement>
<Input
data-testid="choose-submodule-search-input"
onChange={(e) => setInputValue(e.target.value)}
placeholder="Search"
ref={inputRef}
value={inputValue}
variant="filled"
/>
</InputGroup>
</Form>
);
}
);
SearchInput.displayName = "SearchInput";
|