import React from "react"; import { TouchableOpacity, Text, View, LayoutAnimation, TextInput, KeyboardAvoidingView, Platform, } from "react-native"; import Ionicons from "react-native-vector-icons/Ionicons"; import { useWindowDimensions } from "react-native"; import lineColorList from "@/assets/originData/lineColorList"; import { lineList_LineWebID, stationIDPair } from "@/lib/getStationList"; import { StationSource } from "@/types"; export const SearchUnitBox = ({ stationSource, setStationSource, closeSearch, }: { stationSource: StationSource; setStationSource: (s: StationSource) => void; closeSearch: () => void; }) => { const { height, width } = useWindowDimensions(); const isSearch = stationSource.type === "search"; const query = isSearch ? stationSource.query : ""; const lineId = isSearch ? stationSource.lineId : undefined; return ( <> { LayoutAnimation.configureNext({ duration: 100, update: { type: "easeInEaseOut", springDamping: 0.6 }, }); setStationSource({ type: "search", query: "", lineId: undefined }); }} > {!isSearch && } {isSearch && ( { LayoutAnimation.configureNext({ duration: 100, update: { type: "easeInEaseOut", springDamping: 0.6 }, }); closeSearch(); }} > {}} onChange={(ret) => setStationSource({ type: "search", query: ret.nativeEvent.text, lineId }) } value={query} style={{ flex: 1 }} /> {query && ( setStationSource({ type: "search", query: "", lineId })} style={{ padding: 3, borderRadius: 15, backgroundColor: "lightgray", }} > )} {!query && ( {Object.keys(lineList_LineWebID).map((d) => { const buttonLineId = stationIDPair[lineList_LineWebID[d]]; return ( { // 同じ路線を再タップしても変化なし(元の挙動を維持) if (lineId === buttonLineId) return; setStationSource({ type: "search", query, lineId: buttonLineId }); }} key={buttonLineId} > {buttonLineId} ); })} )} )} ); };