diff --git a/client/src/components/layout/MobileHeader.tsx b/client/src/components/layout/MobileHeader.tsx index 19ce238..2ce60e3 100644 --- a/client/src/components/layout/MobileHeader.tsx +++ b/client/src/components/layout/MobileHeader.tsx @@ -29,12 +29,7 @@ export function MobileHeader({ query }: MobileHeaderProps) { } }} > - + ) : ( <> diff --git a/client/src/components/layout/SearchBar.tsx b/client/src/components/layout/SearchBar.tsx index f292ba0..88bd659 100644 --- a/client/src/components/layout/SearchBar.tsx +++ b/client/src/components/layout/SearchBar.tsx @@ -1,5 +1,5 @@ -import { useState, type SubmitEvent } from 'react'; -import { useNavigate } from 'react-router'; +import { useState, useEffect, type SubmitEvent } from 'react'; +import { useNavigate, useLocation } from 'react-router'; type SearchBarProps = { initialQuery: string; @@ -17,6 +17,34 @@ export default function SearchBar({ }: SearchBarProps) { const [input, setInput] = useState(initialQuery); const navigate = useNavigate(); + const location = useLocation(); + + //oppdaterer søket når URL forandes med feks. tilbakeknapp + const [prevQuery, setPrevQuery] = useState(initialQuery); + if (initialQuery !== prevQuery) { + setPrevQuery(initialQuery); + setInput(initialQuery); + } + + // søker av seg selv litt etter man slutter å skrive + useEffect(() => { + const trimmed = input.trim(); + // søker ikke på nytt hvis søkteksten matcher urlen + if (trimmed === initialQuery) return; + + const timer = setTimeout(() => { + // tomt felt viser alle oppskrifter + const url = trimmed + ? `/recipes?q=${encodeURIComponent(trimmed)}` + : '/recipes'; + // erstatter historikken så tilbakeknappen ikke går gjennom hver bokstav + navigate(url, { replace: location.pathname === '/recipes' }); + // forandre her hvis vi skal forandre hvor fort autosøk skjer + }, 400); + + // avbryter hvis man skriver mer før tiden er ute + return () => clearTimeout(timer); + }, [input, initialQuery, navigate, location.pathname]); function handleSubmit(event: SubmitEvent) { // Hindrer at skjemaet laster siden på nytt @@ -69,6 +97,7 @@ export default function SearchBar({ onChange={(event) => setInput(event.target.value)} placeholder="Søk etter oppskrift" autoFocus={autoFocus} + autoComplete="off" className="min-w-0 flex-1 bg-transparent py-2 pr-4 pl-1 text-sm placeholder:text-text/70 focus:outline-none" /> diff --git a/client/src/components/layout/StickyHeader.tsx b/client/src/components/layout/StickyHeader.tsx index eda7b4e..8d7ad35 100644 --- a/client/src/components/layout/StickyHeader.tsx +++ b/client/src/components/layout/StickyHeader.tsx @@ -40,7 +40,7 @@ export function StickyHeader({ visible, query }: StickyHeaderProps) {
- +
diff --git a/client/src/components/layout/TopHeader.tsx b/client/src/components/layout/TopHeader.tsx index 4a738ef..c97e5b6 100644 --- a/client/src/components/layout/TopHeader.tsx +++ b/client/src/components/layout/TopHeader.tsx @@ -51,12 +51,7 @@ export function TopHeader({ query, scrolled }: TopHeaderProps) { } }} > - + ) : (