全列番検索システムにフィルタリング入力欄を追加
This commit is contained in:
parent
57459d975b
commit
a4e85ff2e6
4
App.js
4
App.js
@ -116,7 +116,9 @@ export function AppContainer() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<NavigationContainer name="Root" style={{ flex: 1 }}>
|
<NavigationContainer name="Root" style={{ flex: 1 }}>
|
||||||
<Tab.Navigator detachInactiveScreens={false}>
|
<Tab.Navigator
|
||||||
|
tabBarOptions={{ keyboardHidesTabBar: Platform.OS === "android" }}
|
||||||
|
>
|
||||||
<Tab.Screen
|
<Tab.Screen
|
||||||
name="login"
|
name="login"
|
||||||
options={{
|
options={{
|
||||||
|
@ -6,6 +6,10 @@ import {
|
|||||||
Linking,
|
Linking,
|
||||||
ScrollView,
|
ScrollView,
|
||||||
FlatList,
|
FlatList,
|
||||||
|
KeyboardAvoidingView,
|
||||||
|
TextInput,
|
||||||
|
Platform,
|
||||||
|
Keyboard,
|
||||||
} from "react-native";
|
} from "react-native";
|
||||||
import MapView, { Marker } from "react-native-maps";
|
import MapView, { Marker } from "react-native-maps";
|
||||||
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
||||||
@ -30,6 +34,22 @@ export default function AllTrainDiagramView({ navigation: { navigate } }) {
|
|||||||
() => allTrainDiagram && setKeyList(Object.keys(allTrainDiagram)),
|
() => allTrainDiagram && setKeyList(Object.keys(allTrainDiagram)),
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
const [input, setInput] = useState(""); // 文字入力
|
||||||
|
const [keyBoardVisible, setKeyBoardVisible] = useState(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const showSubscription = Keyboard.addListener("keyboardDidShow", () => {
|
||||||
|
setKeyBoardVisible(true);
|
||||||
|
});
|
||||||
|
const hideSubscription = Keyboard.addListener("keyboardDidHide", () => {
|
||||||
|
setKeyBoardVisible(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
showSubscription.remove();
|
||||||
|
hideSubscription.remove();
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
const openTrainInfo = (d) => {
|
const openTrainInfo = (d) => {
|
||||||
const train = customTrainDataDetector(d);
|
const train = customTrainDataDetector(d);
|
||||||
@ -60,13 +80,46 @@ export default function AllTrainDiagramView({ navigation: { navigate } }) {
|
|||||||
return (
|
return (
|
||||||
<View style={{ backgroundColor: "#0099CC", height: "100%" }}>
|
<View style={{ backgroundColor: "#0099CC", height: "100%" }}>
|
||||||
<FlatList
|
<FlatList
|
||||||
data={keyList}
|
style={{ flex: 1 }}
|
||||||
|
data={keyList?.filter((d) => d.includes(input))}
|
||||||
renderItem={({ item }) => (
|
renderItem={({ item }) => (
|
||||||
<Item openTrainInfo={openTrainInfo} id={item} />
|
<Item openTrainInfo={openTrainInfo} id={item} />
|
||||||
)}
|
)}
|
||||||
keyExtractor={(item) => item}
|
keyExtractor={(item) => item}
|
||||||
initialNumToRender={100}
|
initialNumToRender={100}
|
||||||
/>
|
/>
|
||||||
|
<KeyboardAvoidingView
|
||||||
|
behavior="padding"
|
||||||
|
keyboardVerticalOffset={80}
|
||||||
|
enabled={Platform.OS === "ios"}
|
||||||
|
>
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
height: 35,
|
||||||
|
margin: 5,
|
||||||
|
alignItems: "center",
|
||||||
|
backgroundColor: "#F4F4F4",
|
||||||
|
flexDirection: "row",
|
||||||
|
paddingLeft: 10,
|
||||||
|
paddingRight: 10,
|
||||||
|
borderRadius: 25,
|
||||||
|
borderColor: "#F4F4F4",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<TextInput
|
||||||
|
placeholder="列番を入力してフィルタリングします。"
|
||||||
|
onFocus={() => {
|
||||||
|
setKeyBoardVisible(true);
|
||||||
|
}}
|
||||||
|
onEndEditing={() => {}}
|
||||||
|
onChange={(ret) => {
|
||||||
|
setInput(ret.nativeEvent.text);
|
||||||
|
}}
|
||||||
|
value={input}
|
||||||
|
style={{ flex: 1 }}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</KeyboardAvoidingView>
|
||||||
|
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
style={{
|
style={{
|
||||||
@ -77,6 +130,8 @@ export default function AllTrainDiagramView({ navigation: { navigate } }) {
|
|||||||
margin: 10,
|
margin: 10,
|
||||||
borderRadius: 5,
|
borderRadius: 5,
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
|
display:
|
||||||
|
Platform.OS === "ios" ? "flex" : keyBoardVisible ? "none" : "flex",
|
||||||
}}
|
}}
|
||||||
onPress={() => navigate("menu")}
|
onPress={() => navigate("menu")}
|
||||||
>
|
>
|
||||||
|
Loading…
Reference in New Issue
Block a user