File size: 1,722 Bytes
f723129
 
 
 
 
 
 
 
 
 
 
 
 
 
33469f2
 
 
 
 
 
 
 
 
 
f723129
 
 
 
 
33469f2
f723129
 
33469f2
 
f723129
 
 
 
 
 
 
 
 
 
 
b6b84c7
f723129
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { AutoComplete as PrimeAutoComplete } from 'primereact/autocomplete'
import { useState } from 'react'
const AutoComplete = ({ allSuggestions, onComplete }) => {
  const [autoComplete, setAutoComplete] = useState('')
  const [suggestions, setSuggestions] = useState([])

  const search = e => {
    const matches = allSuggestions.filter(suggestion =>
      suggestion.searchText.includes(e.query.toLowerCase())
    )
    setSuggestions(matches)
  }

  const itemTemplate = item => {
    let detail
    if (item.type === "Dataset") {
        detail = <span>
            {item.detail.map(task => <span key={task} style={{ color: "gray", marginLeft: '1rem', backgroundColor: 'lightgray', padding: '0.2rem', borderRadius: '0.2rem' }}>{task}</span>)}
        </span>
    } else if (item.detail) {
        detail = <span style={{ color: 'gray', marginLeft: '1rem' }}>{item.detail}</span>
    } else {
        detail = null
    }
    return (
      <div
        style={{
          display: 'flex',
          flexDirection: 'row',
          justifyContent: 'space-between',
        }}
      >
        <span>{item.value}{detail}</span>
        <span style={{ color: 'gray' }}>{item.type}</span>
      </div>
    )
  }

  return (
    <PrimeAutoComplete
      placeholder='Search for model, language, or dataset'
      value={autoComplete}
      onChange={e => setAutoComplete(e.value)}
      onSelect={e => {
        setAutoComplete(e.value.value)
        onComplete(e.value)
      }}
      suggestions={suggestions}
      completeMethod={search}
      virtualScrollerOptions={{ itemSize: 50 }}
      delay={500}
      autoHighlight
      autoFocus
      itemTemplate={itemTemplate}
    />
  )
}

export default AutoComplete