1ec26b768S猫头猫import React from 'react'; 2*1119c2eaS猫头猫import {StyleSheet, View} from 'react-native'; 3bf6e62f2S猫头猫import rpx from '@/utils/rpx'; 4bf6e62f2S猫头猫import {useAtom, useSetAtom} from 'jotai'; 5dec7a5f8S猫头猫import { 6dec7a5f8S猫头猫 pageStatusAtom, 7dec7a5f8S猫头猫 PageStatus, 8dec7a5f8S猫头猫 queryAtom, 9dec7a5f8S猫头猫 searchResultsAtom, 10dec7a5f8S猫头猫 initSearchResults, 11dec7a5f8S猫头猫} from '../store/atoms'; 12bf6e62f2S猫头猫import useSearch from '../hooks/useSearch'; 13bf6e62f2S猫头猫import {addHistory} from '../common/historySearch'; 14*1119c2eaS猫头猫import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; 15ec26b768S猫头猫import useColors from '@/hooks/useColors'; 16*1119c2eaS猫头猫import AppBar from '@/components/base/appBar'; 17*1119c2eaS猫头猫import Input from '@/components/base/input'; 18*1119c2eaS猫头猫import Color from 'color'; 19e650bfb3S猫头猫import Button from '@/components/base/button'; 20*1119c2eaS猫头猫import IconButton from '@/components/base/iconButton'; 21*1119c2eaS猫头猫import {iconSizeConst} from '@/constants/uiConst'; 22bf6e62f2S猫头猫 234060c00aS猫头猫export default function NavBar() { 24bf6e62f2S猫头猫 const search = useSearch(); 25bf6e62f2S猫头猫 const [query, setQuery] = useAtom(queryAtom); 26bf6e62f2S猫头猫 const setPageStatus = useSetAtom(pageStatusAtom); 27ec26b768S猫头猫 const colors = useColors(); 28a4ae8da5S猫头猫 const setSearchResultsState = useSetAtom(searchResultsAtom); 29bf6e62f2S猫头猫 30bf6e62f2S猫头猫 const onSearchSubmit = async () => { 31bf6e62f2S猫头猫 if (query === '') { 32bf6e62f2S猫头猫 return; 33bf6e62f2S猫头猫 } 34a4ae8da5S猫头猫 setSearchResultsState(initSearchResults); 35bf6e62f2S猫头猫 setPageStatus(prev => 36bf6e62f2S猫头猫 prev === PageStatus.EDITING ? PageStatus.SEARCHING : prev, 37bf6e62f2S猫头猫 ); 380b940038S猫头猫 await search(query, 1); 39bf6e62f2S猫头猫 await addHistory(query); 40bf6e62f2S猫头猫 }; 41bf6e62f2S猫头猫 42*1119c2eaS猫头猫 const hintTextColor = Color(colors.text).alpha(0.6).toString(); 43*1119c2eaS猫头猫 44bf6e62f2S猫头猫 return ( 45*1119c2eaS猫头猫 <AppBar containerStyle={style.appbar} contentStyle={style.appbar}> 46*1119c2eaS猫头猫 <View style={style.searchBarContainer}> 47*1119c2eaS猫头猫 <Icon 48*1119c2eaS猫头猫 name="magnify" 49*1119c2eaS猫头猫 color={hintTextColor} 50*1119c2eaS猫头猫 size={iconSizeConst.light} 51*1119c2eaS猫头猫 style={style.magnify} 524060c00aS猫头猫 /> 53*1119c2eaS猫头猫 <Input 54bf6e62f2S猫头猫 autoFocus 55*1119c2eaS猫头猫 style={[ 56*1119c2eaS猫头猫 style.searchBar, 57*1119c2eaS猫头猫 { 58*1119c2eaS猫头猫 color: colors.text, 59*1119c2eaS猫头猫 backgroundColor: colors.placeholder, 60*1119c2eaS猫头猫 }, 61*1119c2eaS猫头猫 ]} 623b870a26S猫头猫 accessible 633b870a26S猫头猫 accessibilityLabel="搜索框" 643b870a26S猫头猫 accessibilityHint={'输入要搜索的歌曲'} 65bf6e62f2S猫头猫 onFocus={() => { 66bf6e62f2S猫头猫 setPageStatus(PageStatus.EDITING); 67bf6e62f2S猫头猫 }} 68*1119c2eaS猫头猫 placeholderTextColor={hintTextColor} 69bf6e62f2S猫头猫 placeholder="输入要搜索的歌曲" 70bf6e62f2S猫头猫 onSubmitEditing={onSearchSubmit} 71dec7a5f8S猫头猫 onChangeText={_ => { 72dec7a5f8S猫头猫 if (_ === '') { 73dec7a5f8S猫头猫 setPageStatus(PageStatus.EDITING); 74dec7a5f8S猫头猫 } 75dec7a5f8S猫头猫 setQuery(_); 76dec7a5f8S猫头猫 }} 774060c00aS猫头猫 value={query} 784060c00aS猫头猫 /> 79*1119c2eaS猫头猫 {query.length ? ( 80*1119c2eaS猫头猫 <IconButton 81*1119c2eaS猫头猫 style={style.close} 82*1119c2eaS猫头猫 sizeType="light" 83*1119c2eaS猫头猫 onPress={() => { 84*1119c2eaS猫头猫 setQuery(''); 85*1119c2eaS猫头猫 }} 86*1119c2eaS猫头猫 color={hintTextColor} 87*1119c2eaS猫头猫 name="close" 88*1119c2eaS猫头猫 /> 89*1119c2eaS猫头猫 ) : null} 90*1119c2eaS猫头猫 </View> 91*1119c2eaS猫头猫 <Button 92*1119c2eaS猫头猫 style={[style.button]} 93*1119c2eaS猫头猫 hitSlop={0} 94*1119c2eaS猫头猫 fontColor={'headerText'} 95*1119c2eaS猫头猫 onPress={onSearchSubmit}> 96bf6e62f2S猫头猫 搜索 97bf6e62f2S猫头猫 </Button> 98*1119c2eaS猫头猫 </AppBar> 99bf6e62f2S猫头猫 ); 100bf6e62f2S猫头猫} 101bf6e62f2S猫头猫 102bf6e62f2S猫头猫const style = StyleSheet.create({ 103bf6e62f2S猫头猫 appbar: { 104*1119c2eaS猫头猫 paddingRight: 0, 105bf6e62f2S猫头猫 }, 106e650bfb3S猫头猫 button: { 107e650bfb3S猫头猫 paddingHorizontal: rpx(24), 108*1119c2eaS猫头猫 height: '100%', 109*1119c2eaS猫头猫 justifyContent: 'center', 110*1119c2eaS猫头猫 }, 111*1119c2eaS猫头猫 searchBarContainer: { 112*1119c2eaS猫头猫 flex: 1, 113*1119c2eaS猫头猫 flexDirection: 'row', 114*1119c2eaS猫头猫 alignItems: 'center', 115e650bfb3S猫头猫 }, 116bf6e62f2S猫头猫 searchBar: { 117bf6e62f2S猫头猫 minWidth: rpx(375), 118bf6e62f2S猫头猫 flex: 1, 119*1119c2eaS猫头猫 paddingHorizontal: rpx(64), 120bf6e62f2S猫头猫 borderRadius: rpx(64), 121*1119c2eaS猫头猫 height: rpx(64), 12298547244S猫头猫 maxHeight: rpx(64), 123dc1c1f5aS猫头猫 alignItems: 'center', 124bf6e62f2S猫头猫 }, 125*1119c2eaS猫头猫 magnify: { 126*1119c2eaS猫头猫 position: 'absolute', 127*1119c2eaS猫头猫 left: rpx(16), 128*1119c2eaS猫头猫 zIndex: 100, 129*1119c2eaS猫头猫 }, 130*1119c2eaS猫头猫 close: { 131*1119c2eaS猫头猫 position: 'absolute', 132*1119c2eaS猫头猫 right: rpx(16), 133ec26b768S猫头猫 }, 134bf6e62f2S猫头猫}); 135