Search

1import { List, Navigation, NavigationStack, Script, Text, useMemo, useState } from "scripting"
2
3function Example() {
4  const [searchText, setSearchText] = useState("")
5  const languages = useMemo(() => [
6    "Java",
7    "Objective-C",
8    "Swift",
9    "Python",
10    "JavaScript",
11    "C++",
12    "Ruby",
13    "Lua"
14  ], [])
15
16  const filteredLanguages = useMemo(() => {
17    if (searchText.length === 0) {
18      return languages
19    }
20
21    const text = searchText.toLowerCase()
22
23    return languages.filter(language =>
24      language.toLowerCase().includes(text)
25    )
26  }, [searchText, languages])
27
28  return <NavigationStack>
29    <List
30      navigationTitle={"Searchable List"}
31      navigationBarTitleDisplayMode={"inline"}
32      searchable={{
33        value: searchText,
34        onChanged: setSearchText,
35      }}
36    >
37      {filteredLanguages.map(language =>
38        <Text>{language}</Text>
39      )}
40    </List>
41  </NavigationStack>
42}
43
44async function run() {
45  await Navigation.present({
46    element: <Example />
47  })
48
49  Script.exit()
50}
51
52run()