import React, { useEffect, useState } from 'react'; import { StyleSheet, View, Modal, Text, ScrollView, Dimensions, TouchableOpacity, TextInput, ViewStyle, } from 'react-native'; import { FlagImage } from '../FlagImage'; import countries from '../../data/countries.json'; interface CountryModalSelector { setModalVisible: (visible: boolean) => void; modalVisible: boolean; setSelectedCountry: (flag: string) => void; modalStyle: ViewStyle; } export const CountryModalSelector = ({ setModalVisible, modalVisible, setSelectedCountry, modalStyle, }: CountryModalSelector) => { const styles = StyleSheet.create({ modalView: modalStyle, itemCountry: { paddingVertical: 15, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', }, countryCode: { fontSize: 20, marginLeft: 10, }, itemCountryText: { fontSize: 20, flex: 0.6, }, visualInformation: { flexDirection: 'row', flex: 0.3, alignItems: 'center', }, line: { borderBottomColor: 'black', borderBottomWidth: StyleSheet.hairlineWidth, }, backgroundModal: { backgroundColor: '#9e9e9ea7', position: 'absolute', width: Dimensions.get('screen').width, height: Dimensions.get('screen').height, }, searchInput: { borderColor: '#9d9d9d', borderWidth: 2, padding: 10, borderRadius: 10, marginBottom: 20, }, }); const [modalCountries, setCountries] = useState(countries); const searchCountry = (countryName: string) => { const countriesSearched = countries.filter((country) => country.country_name.includes(countryName) ); setCountries(countriesSearched); }; useEffect(() => { setCountries(countries); }, [modalVisible]); const renderItem = (item: any) => { return ( { setModalVisible(false); setSelectedCountry(item.flag); }} > {item.country_name} ); }; return ( <> setModalVisible(false)} > <> setModalVisible(false)} /> {modalCountries.map((country: any) => renderItem(country))} ); }; export default CountryModalSelector;