Add a search bar over name and description
This commit is contained in:
parent
bb3e2630f3
commit
9207c34bf2
|
@ -1,3 +1,6 @@
|
||||||
|
import { searchInAny } from 'common/util/parse'
|
||||||
|
import { debounce } from 'lodash'
|
||||||
|
import { useMemo, useState } from 'react'
|
||||||
import { Col } from 'web/components/layout/col'
|
import { Col } from 'web/components/layout/col'
|
||||||
import { Page } from 'web/components/page'
|
import { Page } from 'web/components/page'
|
||||||
import { Title } from 'web/components/title'
|
import { Title } from 'web/components/title'
|
||||||
|
@ -66,14 +69,32 @@ function grantsToGrantees(grantsList: Grant[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Grants() {
|
export default function Grants() {
|
||||||
|
const [query, setQuery] = useState('')
|
||||||
|
const debouncedQuery = debounce(setQuery, 50)
|
||||||
|
|
||||||
|
const filteredGrantees = useMemo(
|
||||||
|
() =>
|
||||||
|
grantees.filter((grantee) =>
|
||||||
|
searchInAny(query, grantee.name, grantee.description)
|
||||||
|
),
|
||||||
|
[query]
|
||||||
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page>
|
<Page>
|
||||||
<Col className="w-full rounded px-4 py-6 sm:px-8 xl:w-[125%]">
|
<Col className="w-full rounded px-4 py-6 sm:px-8 xl:w-[125%]">
|
||||||
<Col className="">
|
<Col className="">
|
||||||
<Title className="!mt-0" text="Manifold for Charity" />
|
<Title className="!mt-0" text="EA Grants Database" />
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
onChange={(e) => debouncedQuery(e.target.value)}
|
||||||
|
placeholder="Find a charity"
|
||||||
|
className="input input-bordered mb-6 w-full"
|
||||||
|
/>
|
||||||
|
|
||||||
<div className="grid max-w-xl grid-flow-row grid-cols-1 gap-4 lg:max-w-full lg:grid-cols-2 xl:grid-cols-3">
|
<div className="grid max-w-xl grid-flow-row grid-cols-1 gap-4 lg:max-w-full lg:grid-cols-2 xl:grid-cols-3">
|
||||||
{grantees.map((grantee) => (
|
{filteredGrantees.map((grantee) => (
|
||||||
<GranteeCard grantee={grantee} key={grantee.name} />
|
<GranteeCard grantee={grantee} key={grantee.name} />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user