UNPKG

react-native-country-select

Version:

🌍 A lightweight and customizable country picker for React Native with modern UI, flags, search engine, and i18n support. Includes TypeScript types, offline support and no dependencies.

60 lines (49 loc) 1.93 kB
import {ICountry, ICountryCca2} from '../interface'; import countriesData from '../constants/countries.json'; const countries: ICountry[] = countriesData as unknown as ICountry[]; export const getAllCountries = (): ICountry[] => { return countries; }; export const getCountriesByCallingCode = (callingCode: string): ICountry[] => { return countries.filter( (country: ICountry) => country.idd.root === callingCode, ); }; export const getCountriesByName = ( name: string, language: keyof ICountry['translations'] = 'eng', ): ICountry[] => { return countries.filter((country: ICountry) => { const translation = country.translations[language]; if (translation) { return ( translation.common.toLowerCase().includes(name.toLowerCase()) || translation.official.toLowerCase().includes(name.toLowerCase()) ); } return ( country.name.common.toLowerCase().includes(name.toLowerCase()) || country.name.official.toLowerCase().includes(name.toLowerCase()) ); }); }; export const getCountryByCca2 = (cca2: ICountryCca2): ICountry | undefined => { return countries.find((country: ICountry) => country.cca2 === cca2); }; export const getCountryByCca3 = (cca3: string): ICountry | undefined => { return countries.find((country: ICountry) => country.cca3 === cca3); }; export const getCountriesByRegion = (region: string): ICountry[] => { return countries.filter((country: ICountry) => country.region === region); }; export const getCountriesBySubregion = (subregion: string): ICountry[] => { return countries.filter( (country: ICountry) => country.subregion === subregion, ); }; export const getCountriesIndependents = (): ICountry[] => { return countries.filter((country: ICountry) => country.independent); }; export const getContriesDependents = (): ICountry[] => { return countries.filter((country: ICountry) => !country.independent); };