1ec26b768S猫头猫import React from 'react'; 21119c2eaS猫头猫import {StyleSheet, View} from 'react-native'; 3bf6e62f2S猫头猫import rpx from '@/utils/rpx'; 4bf6e62f2S猫头猫import {useAtom, useSetAtom} from 'jotai'; 5dec7a5f8S猫头猫import { 65589cdf3S猫头猫 initSearchResults, 7dec7a5f8S猫头猫 PageStatus, 85589cdf3S猫头猫 pageStatusAtom, 9dec7a5f8S猫头猫 queryAtom, 10dec7a5f8S猫头猫 searchResultsAtom, 11dec7a5f8S猫头猫} from '../store/atoms'; 12bf6e62f2S猫头猫import useSearch from '../hooks/useSearch'; 13bf6e62f2S猫头猫import {addHistory} from '../common/historySearch'; 14ec26b768S猫头猫import useColors from '@/hooks/useColors'; 151119c2eaS猫头猫import AppBar from '@/components/base/appBar'; 161119c2eaS猫头猫import Input from '@/components/base/input'; 171119c2eaS猫头猫import Color from 'color'; 18*756bc302S猫头猫import Button from '@/components/base/textButton.tsx'; 191119c2eaS猫头猫import IconButton from '@/components/base/iconButton'; 201119c2eaS猫头猫import {iconSizeConst} from '@/constants/uiConst'; 215589cdf3S猫头猫import Icon from '@/components/base/icon.tsx'; 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猫头猫 421119c2eaS猫头猫 const hintTextColor = Color(colors.text).alpha(0.6).toString(); 431119c2eaS猫头猫 44bf6e62f2S猫头猫 return ( 451119c2eaS猫头猫 <AppBar containerStyle={style.appbar} contentStyle={style.appbar}> 461119c2eaS猫头猫 <View style={style.searchBarContainer}> 471119c2eaS猫头猫 <Icon 485589cdf3S猫头猫 name="magnifying-glass" 491119c2eaS猫头猫 color={hintTextColor} 50a27adc20S猫头猫 size={iconSizeConst.small} 511119c2eaS猫头猫 style={style.magnify} 524060c00aS猫头猫 /> 531119c2eaS猫头猫 <Input 54bf6e62f2S猫头猫 autoFocus 551119c2eaS猫头猫 style={[ 561119c2eaS猫头猫 style.searchBar, 571119c2eaS猫头猫 { 581119c2eaS猫头猫 color: colors.text, 59277c5280S猫头猫 backgroundColor: colors.pageBackground, 601119c2eaS猫头猫 }, 611119c2eaS猫头猫 ]} 623b870a26S猫头猫 accessible 633b870a26S猫头猫 accessibilityLabel="搜索框" 643b870a26S猫头猫 accessibilityHint={'输入要搜索的歌曲'} 65bf6e62f2S猫头猫 onFocus={() => { 66bf6e62f2S猫头猫 setPageStatus(PageStatus.EDITING); 67bf6e62f2S猫头猫 }} 681119c2eaS猫头猫 placeholderTextColor={hintTextColor} 69bf6e62f2S猫头猫 placeholder="输入要搜索的歌曲" 70bf6e62f2S猫头猫 onSubmitEditing={onSearchSubmit} 71dec7a5f8S猫头猫 onChangeText={_ => { 72dec7a5f8S猫头猫 if (_ === '') { 73dec7a5f8S猫头猫 setPageStatus(PageStatus.EDITING); 74dec7a5f8S猫头猫 } 75dec7a5f8S猫头猫 setQuery(_); 76dec7a5f8S猫头猫 }} 774060c00aS猫头猫 value={query} 784060c00aS猫头猫 /> 791119c2eaS猫头猫 {query.length ? ( 801119c2eaS猫头猫 <IconButton 811119c2eaS猫头猫 style={style.close} 821119c2eaS猫头猫 sizeType="light" 831119c2eaS猫头猫 onPress={() => { 841119c2eaS猫头猫 setQuery(''); 85fe32deaaS猫头猫 setPageStatus(PageStatus.EDITING); 861119c2eaS猫头猫 }} 871119c2eaS猫头猫 color={hintTextColor} 885589cdf3S猫头猫 name="x-mark" 891119c2eaS猫头猫 /> 901119c2eaS猫头猫 ) : null} 911119c2eaS猫头猫 </View> 921119c2eaS猫头猫 <Button 931119c2eaS猫头猫 style={[style.button]} 941119c2eaS猫头猫 hitSlop={0} 95277c5280S猫头猫 fontColor={'appBarText'} 961119c2eaS猫头猫 onPress={onSearchSubmit}> 97bf6e62f2S猫头猫 搜索 98bf6e62f2S猫头猫 </Button> 991119c2eaS猫头猫 </AppBar> 100bf6e62f2S猫头猫 ); 101bf6e62f2S猫头猫} 102bf6e62f2S猫头猫 103bf6e62f2S猫头猫const style = StyleSheet.create({ 104bf6e62f2S猫头猫 appbar: { 1051119c2eaS猫头猫 paddingRight: 0, 106bf6e62f2S猫头猫 }, 107e650bfb3S猫头猫 button: { 108e650bfb3S猫头猫 paddingHorizontal: rpx(24), 1091119c2eaS猫头猫 height: '100%', 1101119c2eaS猫头猫 justifyContent: 'center', 1111119c2eaS猫头猫 }, 1121119c2eaS猫头猫 searchBarContainer: { 1131119c2eaS猫头猫 flex: 1, 1141119c2eaS猫头猫 flexDirection: 'row', 1151119c2eaS猫头猫 alignItems: 'center', 116e650bfb3S猫头猫 }, 117bf6e62f2S猫头猫 searchBar: { 118bf6e62f2S猫头猫 minWidth: rpx(375), 119bf6e62f2S猫头猫 flex: 1, 1201119c2eaS猫头猫 paddingHorizontal: rpx(64), 121bf6e62f2S猫头猫 borderRadius: rpx(64), 1221119c2eaS猫头猫 height: rpx(64), 12398547244S猫头猫 maxHeight: rpx(64), 124dc1c1f5aS猫头猫 alignItems: 'center', 125bf6e62f2S猫头猫 }, 1261119c2eaS猫头猫 magnify: { 1271119c2eaS猫头猫 position: 'absolute', 1281119c2eaS猫头猫 left: rpx(16), 1291119c2eaS猫头猫 zIndex: 100, 1301119c2eaS猫头猫 }, 1311119c2eaS猫头猫 close: { 1321119c2eaS猫头猫 position: 'absolute', 1331119c2eaS猫头猫 right: rpx(16), 134ec26b768S猫头猫 }, 135bf6e62f2S猫头猫}); 136