MCPcopy Create free account
hub / github.com/codeaashu/DevDisplay / Search

Function Search

src/components/Search/Search.jsx:6–97  ·  view source on GitHub ↗
({ onSearch })

Source from the content-addressed store, hash-verified

4import { faMagnifyingGlass, faXmark } from '@fortawesome/free-solid-svg-icons';
5
6function Search({ onSearch }) {
7 const [searchValue, setSearchValue] = useState('');
8 const [prevSearchValue, setPrevSearchValue] = useState('');
9 const [searchCriteria, setSearchCriteria] = useState('name');
10 const searchInput = useRef(null);
11
12 const handleInputChange = (event) => {
13 setSearchValue(event.target.value);
14 };
15
16 const handleCriteriaChange = (event) => {
17 setSearchCriteria(event.target.value);
18 };
19
20 const debouncedValue = useDebounce(searchValue, 500);
21
22 useEffect(() => {
23 if (debouncedValue !== prevSearchValue) {
24 onSearch({ value: debouncedValue, criteria: searchCriteria });
25 setPrevSearchValue(debouncedValue);
26 }
27 // eslint-disable-next-line react-hooks/exhaustive-deps
28 }, [debouncedValue]);
29
30 const handleSearch = () => {
31 if (searchValue !== prevSearchValue) {
32 onSearch({ value: searchValue, criteria: searchCriteria });
33 setPrevSearchValue(searchValue);
34 }
35 };
36
37 const handleSearchOnEnter = (e) => {
38 if (e.keyCode === 13) {
39 handleSearch();
40 }
41 };
42
43 const handleSearchButtonClick = () => {
44 handleSearch();
45 };
46
47 const handleDeleteButtonClick = () => {
48 if (searchValue) {
49 setSearchValue('');
50 setPrevSearchValue('');
51 onSearch({ value: '', criteria: searchCriteria });
52 searchInput.current.focus();
53 }
54 };
55
56 useEffect(() => {
57 searchInput.current.focus();
58 }, []);
59
60 return (
61 <div className="relative flex items-center justify-end space-x-4 pb-6">
62 <select
63 className="focus:border-primaryFocus focus:bg-primaryLight dark:focus:border-secondaryFocus dark:focus:bg-secondaryLight h-12 rounded-lg border-2 border-borderSecondary bg-primaryColor px-4 py-3 text-base text-secondaryColor outline-none dark:border-borderColor dark:bg-secondaryColor dark:text-white"

Callers

nothing calls this directly

Calls 1

useDebounceFunction · 0.85

Tested by

no test coverage detected