import React from 'react' import {TextInput, View, StyleSheet, TouchableOpacity, Text} from 'react-native' import {UserAutocompleteViewModel} from 'state/models/user-autocomplete-view' import {observer} from 'mobx-react-lite' import {useStores} from 'state/index' import {usePalette} from 'lib/hooks/usePalette' import {MagnifyingGlassIcon} from 'lib/icons' import {ProfileCard} from '../../com/profile/ProfileCard' export const DesktopSearch = observer(function DesktopSearch() { const store = useStores() const pal = usePalette('default') const textInput = React.useRef(null) const [isInputFocused, setIsInputFocused] = React.useState(false) const [query, setQuery] = React.useState('') const autocompleteView = React.useMemo( () => new UserAutocompleteViewModel(store), [store], ) const onChangeQuery = (text: string) => { setQuery(text) if (text.length > 0 && isInputFocused) { autocompleteView.setActive(true) autocompleteView.setPrefix(text) } else { autocompleteView.setActive(false) } } const onPressCancelSearch = () => { setQuery('') autocompleteView.setActive(false) } return ( setIsInputFocused(true)} onBlur={() => setIsInputFocused(false)} onChangeText={onChangeQuery} /> {query ? ( Cancel ) : undefined} {query !== '' && ( {autocompleteView.searchRes.length ? ( <> {autocompleteView.searchRes.map((item, i) => ( ))} ) : ( No results found for {autocompleteView.prefix} )} )} ) }) const styles = StyleSheet.create({ container: { position: 'relative', width: 300, }, search: { paddingHorizontal: 10, width: 300, borderRadius: 20, borderWidth: 1, }, inputContainer: { flexDirection: 'row', }, iconWrapper: { paddingVertical: 7, marginRight: 4, }, input: { flex: 1, fontSize: 16, width: '100%', paddingTop: 7, paddingBottom: 7, }, cancelBtn: { paddingRight: 4, paddingLeft: 10, paddingVertical: 7, }, resultsContainer: { // @ts-ignore supported by web position: 'fixed', marginTop: 40, flexDirection: 'column', width: 300, borderWidth: 1, borderRadius: 6, paddingVertical: 4, }, noResults: { textAlign: 'center', paddingVertical: 10, }, })