mirror of https://github.com/prometheus/prometheus
Augustin Husson
3 years ago
3 changed files with 37 additions and 18 deletions
@ -0,0 +1,31 @@
|
||||
import React, { ChangeEvent, FC } from 'react'; |
||||
import { Input, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap'; |
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; |
||||
import { faSearch } from '@fortawesome/free-solid-svg-icons'; |
||||
|
||||
export interface SearchBarProps { |
||||
handleChange: (e: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => void; |
||||
placeholder: string; |
||||
} |
||||
|
||||
const SearchBar: FC<SearchBarProps> = ({ handleChange, placeholder }) => { |
||||
let filterTimeout: NodeJS.Timeout; |
||||
|
||||
const handleSearchChange = (e: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => { |
||||
clearTimeout(filterTimeout); |
||||
filterTimeout = setTimeout(() => { |
||||
handleChange(e); |
||||
}, 300); |
||||
}; |
||||
|
||||
return ( |
||||
<InputGroup> |
||||
<InputGroupAddon addonType="prepend"> |
||||
<InputGroupText>{<FontAwesomeIcon icon={faSearch} />}</InputGroupText> |
||||
</InputGroupAddon> |
||||
<Input autoFocus onChange={handleSearchChange} placeholder={placeholder} /> |
||||
</InputGroup> |
||||
); |
||||
}; |
||||
|
||||
export default SearchBar; |
Loading…
Reference in new issue