Combinez recherche, sélection et navigation segmentée.
Gérez chaque valeur dans un état unique et déduisez-en les résultats visibles. La barre conserve une structure HTML sémantique.
import { useState } from "react"
import { Picker, SegmentedControl, TextField } from "@liquidify/react"
import "@liquidify/react/styles.css"
export function FilteringToolbar() {
const [query, setQuery] = useState("")
const [owner, setOwner] = useState("anyone")
const [status, setStatus] = useState("open")
return (
<section aria-labelledby="filters-title">
<h2 id="filters-title">Filters</h2>
<TextField
aria-label="Search issues"
type="search"
value={query}
onChange={setQuery}
placeholder="Search issues"
clearable
/>
<Picker
aria-label="Owner"
items={[
{ value: "anyone", label: "Anyone" },
{ value: "me", label: "Assigned to me" },
{ value: "unassigned", label: "Unassigned" },
]}
value={owner}
onChange={setOwner}
/>
<SegmentedControl aria-label="Issue status" value={status} onChange={setStatus}>
<SegmentedControl.Item value="open">Open</SegmentedControl.Item>
<SegmentedControl.Item value="closed">Closed</SegmentedControl.Item>
<SegmentedControl.Item value="all">Tous</SegmentedControl.Item>
</SegmentedControl>
<p aria-live="polite">Showing {status} issues for {owner} matching “{query}”.</p>
</section>
)
}Dans les applications avec routage, stockez les trois valeurs dans l’URL pour partager la vue filtrée. Lisez la route avant le premier rendu afin de garder les mêmes états sur le serveur et le client.