import {
View,
Text,
TouchableOpacity,
Image,
Modal,
VirtualizedList,
} from "react-native";
import React, {memo, useCallback} from "react";
import {CountryCodePickerProps} from "./interfaces";
import Style from "./country-code-picker.styles";
import useCountryCodePicker from "./hooks/useCountryCodePicker";
import {SvgUri} from "react-native-svg";
import FilterBar from "./filter-bar/filter-bar";
import Spacer from "../spacer/spacer";
import Entypo from "react-native-vector-icons/Entypo";
const CountryCodePicker = ({
pickerStyle,
modalStyle,
textStyle,
onPickedCode,
filterBarColor,
defaultCountryName,
}: CountryCodePickerProps) => {
const {
isOpen,
setIsOpen,
selectedCountry,
setSelectedCountry,
Data: countriesData,
filteredCountriesData,
setFilteredCountriesData,
} = useCountryCodePicker(defaultCountryName);
const onPressItem = useCallback((item) => {
setSelectedCountry(item), setIsOpen(false);
onPickedCode("+" + item.callingCodes[0].toString(), item.name);
}, []);
const Item = memo(({item, onPress}) => {
return (
{
onPress(item);
}}
>
{/* */}
{item.name}
);
});
return (
<>
{
setIsOpen(true);
setFilteredCountriesData(countriesData);
}}
style={{...Style.container, ...pickerStyle}}
>
{isOpen ? (
) : (
)}
{selectedCountry ? (
<>
{selectedCountry.alpha2Code}
>
) : (
<>
{"Select"}
>
)}
setIsOpen(false)}
>
{
setFilteredCountriesData(countriesData);
}}
onUpdateSearchTerm={(t) => {
const filteredList = countriesData.filter((item) =>
item.name.toLowerCase().includes(t.toLowerCase())
);
setFilteredCountriesData(filteredList);
}}
/>
{filteredCountriesData?.length > 0 && (
data.length}
getItem={(data, index) => data[index]}
initialNumToRender={10}
maxToRenderPerBatch={10}
onEndReachedThreshold={0.5}
scrollEventThrottle={16}
windowSize={10}
data={filteredCountriesData}
removeClippedSubviews={true}
renderItem={({item, index}) => (
)}
keyExtractor={(item, index) => index.toString()}
style={Style.list}
getItemLayout={(data, index) => ({
length: 16,
offset: 16 * index,
index,
})}
/>
)}
>
);
};
export default CountryCodePicker;