A searchable ISO 3166-1 based list of country names, codes and emoji flags
The library is intended to be used qualified (i.e. Countries.search, Countries.all).
> import Countries
> Countries.fromCode "AU"
Just { name = "Australia", code = "AU", flag = "🇦🇺" }
: Maybe.Maybe Countries.CountryUpdates to this package are only made after the ISO 3166-1 standard is officially updated.
Note: Country names do change! It's best to use the code as a key if you are using and storing country details outside of this library.
ISO 3166 is based on United Nations data (source).
While this library sticks to the official data set, there are disputes, and you may wish to adjust the data as appropriate for your own use case.
Here's how you can define your own countries set:
-- Example: add the famous Pirate Island, Isla de Muerta
countries =
Countries.all
|> List.append [ { name = "Isla de Muerta", code = "XX", flag = "🏴☠️" } ]
-- Example: rename a particular country
renamedCountries =
countries
|> List.map
(\country ->
if country.name == "Isla de Muerta" then
{ country | name = "Island of the Dead" }
else
country
)This is also demonstrated in the example app.
There's an example with a basic country picker in the example directory.
cd example
elm-reactorNote: You must run elm-reactor from within the example directory to use the correct package dependencies.