All files / src/views/Package/ChooseSubmodule SearchInput.tsx

0% Statements 0/6
100% Branches 0/0
0% Functions 0/2
0% Lines 0/6

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";