anzorq commited on
Commit
d355ffc
β€’
1 Parent(s): 8316e17

~stop placeholder animation on input

Browse files
Files changed (1) hide show
  1. components/searchBar.jsx +13 -5
components/searchBar.jsx CHANGED
@@ -38,7 +38,7 @@ const SearchBar = ({ onSearch }) => {
38
  }, []);
39
 
40
  useEffect(() => {
41
- if (!showInitialPlaceholder) {
42
  let typingInterval;
43
  if (placeholder.length < placeholders[placeholderIndex].length) {
44
  const typingSpeed = Math.floor(Math.random() * 50) + 100;
@@ -48,10 +48,10 @@ const SearchBar = ({ onSearch }) => {
48
  }
49
  return () => clearInterval(typingInterval);
50
  }
51
- }, [placeholder, placeholderIndex, showInitialPlaceholder]);
52
 
53
  useEffect(() => {
54
- if (!showInitialPlaceholder) {
55
  const indexInterval = setInterval(() => {
56
  if (placeholder === placeholders[placeholderIndex]) {
57
  setPlaceholderIndex(Math.floor(Math.random() * placeholders.length));
@@ -61,7 +61,7 @@ const SearchBar = ({ onSearch }) => {
61
 
62
  return () => clearInterval(indexInterval);
63
  }
64
- }, [placeholder, placeholderIndex, showInitialPlaceholder]);
65
 
66
  const handleKeyDown = (event) => {
67
  if (event.key === "Enter") {
@@ -69,6 +69,14 @@ const SearchBar = ({ onSearch }) => {
69
  }
70
  };
71
 
 
 
 
 
 
 
 
 
72
  return (
73
  <div className="flex items-center justify-center bg-gray-900 rounded-xl shadow-sm w-full lg:w-1/2 h-12 my-8">
74
  <input
@@ -76,7 +84,7 @@ const SearchBar = ({ onSearch }) => {
76
  placeholder={showInitialPlaceholder ? initialPlaceholder : placeholder}
77
  className="search-bar w-full h-full px-4 py-2 text-gray-200 bg-gray-800 border border-gray-700 rounded-xl shadow-sm appearance-none focus:outline-none focus:ring-2"
78
  value={query}
79
- onChange={(e) => setQuery(e.target.value)}
80
  onKeyDown={handleKeyDown}
81
  />
82
  </div>
 
38
  }, []);
39
 
40
  useEffect(() => {
41
+ if (!showInitialPlaceholder && query === "") {
42
  let typingInterval;
43
  if (placeholder.length < placeholders[placeholderIndex].length) {
44
  const typingSpeed = Math.floor(Math.random() * 50) + 100;
 
48
  }
49
  return () => clearInterval(typingInterval);
50
  }
51
+ }, [placeholder, placeholderIndex, showInitialPlaceholder, query]);
52
 
53
  useEffect(() => {
54
+ if (!showInitialPlaceholder && query === "") {
55
  const indexInterval = setInterval(() => {
56
  if (placeholder === placeholders[placeholderIndex]) {
57
  setPlaceholderIndex(Math.floor(Math.random() * placeholders.length));
 
61
 
62
  return () => clearInterval(indexInterval);
63
  }
64
+ }, [placeholder, placeholderIndex, showInitialPlaceholder, query]);
65
 
66
  const handleKeyDown = (event) => {
67
  if (event.key === "Enter") {
 
69
  }
70
  };
71
 
72
+ const handleChange = (e) => {
73
+ setQuery(e.target.value);
74
+ if (e.target.value === "") {
75
+ setPlaceholder("");
76
+ setPlaceholderIndex(Math.floor(Math.random() * placeholders.length));
77
+ }
78
+ };
79
+
80
  return (
81
  <div className="flex items-center justify-center bg-gray-900 rounded-xl shadow-sm w-full lg:w-1/2 h-12 my-8">
82
  <input
 
84
  placeholder={showInitialPlaceholder ? initialPlaceholder : placeholder}
85
  className="search-bar w-full h-full px-4 py-2 text-gray-200 bg-gray-800 border border-gray-700 rounded-xl shadow-sm appearance-none focus:outline-none focus:ring-2"
86
  value={query}
87
+ onChange={handleChange}
88
  onKeyDown={handleKeyDown}
89
  />
90
  </div>