import { AutoComplete as PrimeAutoComplete } from 'primereact/autocomplete'
import { useState } from 'react'
const AutoComplete = ({ languages, onComplete }) => {
const [autoComplete, setAutoComplete] = useState('')
const [suggestions, setSuggestions] = useState([])
const exampleCodes = ['de', 'fr', 'ar', 'hi', 'sw', 'fa']
const exampleLanguages = exampleCodes.map(code =>
languages?.find(item => item.bcp_47 === code)
)
const search = e => {
const matches = languages.filter(language => {
const query = e.query.toLowerCase()
return (
language.language_name.toLowerCase().includes(query) ||
language.autonym.toLowerCase().includes(query) ||
language.bcp_47.toLowerCase().includes(query)
)
})
setSuggestions(matches)
}
const itemTemplate = item => (
{item.autonym}
{item.language_name}
{item.bcp_47}
)
return (
<>
setAutoComplete(e.value)}
onClick={() => {
setAutoComplete('')
setSuggestions(languages)
}}
onSelect={e => {
setAutoComplete(e.value.language_name)
onComplete([e.value])
}}
suggestions={suggestions}
completeMethod={search}
virtualScrollerOptions={{ itemSize: 50 }} // smaller values give layout problems
delay={500}
autoHighlight
autoFocus
itemTemplate={itemTemplate}
field='language_name'
minLength={0}
/>
Examples:
{exampleLanguages?.map(language => (
{
onComplete([language])
setAutoComplete(language.language_name)
}}
style={{ textDecoration: 'underline', cursor: 'pointer' }}
>
{language.language_name} Leaderboard
))}
{/* African Leaderboard
Indic Leaderboard
Transcription Leaderboard
Dataset Availability for African Languages
GPT 4.5 Evaluation
MMLU Evaluation of Open Models */}
>
)
}
export default AutoComplete