react-native-countries-sel
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

react-native-country

This package provides a country selector with a search engine.

Example

selector1 selector2 selector3

Basic usage

import { CountrySelector } from "react-native-countries";

export default function App() {
  const [show, setShow] = useState(false);
  const [countryCode, setCountryCode] = useState('');
  const [flag, setFlag] = useState('');
  return (
    <View style={styles.container}>
      <TouchableOpacity
        onPress={() => setShow(true)}
        style={{
            width: '80%',
            height: 60,
            backgroundColor: 'white',
            padding: 10,
        }}
      >
        <Text style={{
            color: 'black',
            fontSize: 20
        }}>
            {countryCode ? 'Selected  country: ' + countryCode + ` ${flag}` : 'Click Here!'}
        </Text>
      </TouchableOpacity>

      {/* For showing picker just put show state to show prop */}
      <CountrySelector
        show={show}
        searchMessage={`No country was found`}
        onBackdropPress={() => setShow(false)}
        inputPlaceholder='Search for the country by name'
        // when selector button press you will get the country object with dial code
        selectorButtonOnPress={(item) => {
          setCountryCode(item.dial_code);
          setFlag(item.flag);
          setShow(false);
        }}
      />
      <StatusBar style="auto" />
    </View>
  );
}

Props

Below are the props you can pass to the React Component.

Prop Type Default Example Description
show boolean this prop is used to show/hide the modal.
selectorButtonOnPress function (country) => setCode(country.dial_code) Put your function here to get the result of the selected country.
inputPlaceholder string inputPlaceholder={'Your placeholder'} If you want a custom placeholder
searchMessage string searchMessage={'Some search message here'} If you want a different message when you can't find a country
lang string 'en' lang={'pl'} If you want to change the language, just 'en'/'es'. required lang just add them and make a PR :)
enableModalAvoiding boolean false enableModalAvoiding={true} For the modal to avoid the keyboard androidWindowSoftInputMode with value pan, by default android will avoid keyboard by itself
androidWindowSoftInputMode string androidWindowSoftInputMode={'pan'} Basically android bypasses the keyboard by itself, if you want to use the custom bypassing you can use this prop
itemTemplate ReactNode CountryButton itemTemplate={YourTemplateComponentsHere} This parameter gets a React Node element to render as a template for each item in the list. These properties are sent to the element: key, element, style, name and onPress.
style Object style={{yoursStylesHere}} If you want to change the styles of the components you probably need this props. You can check the styling part below.
disableBackdrop boolean false disableBackdrop if you don't want to show the modal background pass this prop.
onBackdropPress function null onBackdropPress={() => setShow(false)} If you want to close the modal by pressing outside the modal.
initialState string initialState={'+380'} Sometimes it is necessary to pre-select the country, for example, because of the user's current location, so you can use this option.
excludedCountries array excludedCountries={['RU', 'AF']} In this option you can define the list of countries to be deleted by adding their codes.

You can also use all the other FlatList and TextInput props if you need to.

Styling

<CountrySelector
    show={show}
    lang={'es'}
    style={{
        // styles for the modal
        modal: {
            height: 800,
            backgroundColor: '#17bebb'
        },
        // Styles for modal backdrop [View]
        backdrop: {
        
        },
        // Styles for bottom input line [View]
        line: {
        
        },
        // Styles for list of countries [FlatList]
        itemsList: {
        
        },
        // Styles for input [TextInput]
        textInput: {
              height: 80,
              borderRadius: 0,
        },
        // Styles for country button [TouchableOpacity]
        countryButtonStyles: {
              height: 80
        },
        // Styles for search message [Text]
        searchMessageText: {

        },
        // Styles for search message container [View]
        countryMessageContainer: {
        
        },
        // Flag styles [Text]
        flag: {

        },
        // Dial code styles [Text]
        dialCode: {

        },
        // Country name styles [Text]
        countryName: {

        }
    }}
    selectorButtonOnPress={(item) => {
        setCountryCode(item.dial_code);
        setShow(false);
    }}
/>

Package Sidebar

Install

npm i react-native-countries-sel

Weekly Downloads

1

Version

1.0.3

License

MIT

Unpacked Size

73.1 kB

Total Files

13

Last publish

Collaborators

  • manuelmaciel