Skip to content

đŸ§© React component for selecting countries and displaying them in the language of your choice. ✹ Supports flags, dynamic updates, and multi-language translation via REST Countries API.

Notifications You must be signed in to change notification settings

Susanoov90/react-country-choices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-country-choices 🌍

react-country-choices est un composant React modulaire permettant d’intĂ©grer facilement un sĂ©lecteur de pays dans vos formulaires.Il est pensĂ© pour ĂȘtre dynamique et rĂ©actif selon le pays choisi, avec prise en charge des traductions, des drapeaux, et la gestion des champs selon le pays sĂ©lectionnĂ©.

📡 Ce composant repose sur l’API publique REST Countries pour rĂ©cupĂ©rer dynamiquement les informations de pays : noms, codes ISO, langues, drapeaux, etc.

✹ FonctionnalitĂ©s

  • ✅ SĂ©lecteur de pays rĂ©actif
  • 🌐 Traduction des noms de pays (translateTo)
  • đŸš© Affichage des drapeaux (flags)
  • ⚡ Callback dynamique (onChangeCountry) pour capturer le pays sĂ©lectionnĂ©
  • 📩 LĂ©ger et facile Ă  intĂ©grer dans tout projet React

📩 Installation

npm install react-country-choices

🚀 Exemple d'utilisation de base

💡 Note importante :

Pour que le composant fonctionne correctement et que l'interface se recharge automatiquement en fonction du pays sélectionné , vous devez impérativement créer une fonction handleSelectCountry() qui actualise l'état selon la logique métier désirée.

import { useState } from "react";
import Country from "../Country";
import { Result } from "./Result"; // composant d'affichage du résultat

export const Form = () => {
  const [form, setForm] = useState({
    title: "",
    country: ""
  });

  const [submitted, setSubmitted] = useState(false);

  // Fonction pivot : ici vous pouvez adapter dynamiquement le comportement
  const handleSelectCountry = (val) => {
    return val; // ou appliquez une logique personnalisée
  };

  // Réinitialise l'affichage des résultats à chaque modification
  const handleChange = (key, value) => {
    setForm({ ...form, [key]: value });
    setSubmitted(false); // empĂȘche d'afficher Result tant qu'on n'a pas cliquĂ© "Submit"
  };

  const handleSubmit = () => {
    setSubmitted(true);
    console.log("Form Submit", form);
  };

  return (
    <div style={{ width: "80%", marginTop: "2rem" }}>
      <input
        type="text"
        placeholder="Enter a title"
        style={{ width: "100%", padding: "1rem" }}
        onChange={(e) => handleChange("title", e.target.value)}
        value={form.title}
      />

      <Country.Select
        translateTo="eng"
        flags
        onChangeCountry={(value) =>
          handleChange("country", handleSelectCountry(value))
        }
      />

      <button onClick={handleSubmit} style={{ padding: 10 }}>
        Submit
      </button>

      {submitted && <Result title={form.title} country={form.country} />}
    </div>
  );

🔍 Pourquoi handleSelectCountry est crucial ?

La fonction handleSelectCountry(val) permet de :

  • appliquer une logique personnalisĂ©e selon le pays sĂ©lectionnĂ©
  • modifier dynamiquement le formulaire ou l'affichage en fonction du contexte pays
  • garder le systĂšme ouvert Ă  l'Ă©volution , sans figer le comportement

🧠 Astuce : handleChange

Cette fonction permet :

  • une gestion centralisĂ©e des champs
  • un reset automatique de l’état submitted pour Ă©viter que Result s’affiche avant validation

⚙ Props disponibles

Prop Type Description
translateTo string Code ISO de la langue pour traduire les noms de pays <br> (ex: "kor" pour corĂ©en, "fra" pour français, etc.) Voir l'’API publique REST Countries pour comprendre les props
flags boolean Affiche les drapeaux des pays à cÎté du nom
onChangeCountry func Callback qui renvoie la valeur sélectionnée pour <br> mettre à jour dynamiquement le formulaire

🌍 Langues prises en charge (translateTo)

Le composant react-country-choices vous permet d'afficher les noms de pays dans différentes langues en utilisant la prop translateTo. Voici les codes ISO pris en charge ainsi que leur statut de fonctionnement :

Code ISO Langue Fonctionne
ara Arabe ✅ Oui
bre Breton ✅ Oui
ces Tchùque ✅ Oui
cym Gallois ✅ Oui
deu Allemand ✅ Oui
est Estonien ✅ Oui
fin Finnois ✅ Oui
hrv Croate ❌ Non
hun Hongrois ✅ Oui
ita Italien ✅ Oui
jpn Japonais ❌ Non
kor CorĂ©en ✅ Oui
nld NĂ©erlandais ✅ Oui
per Persan ❌ Non
pol Polonais ✅ Oui
por Portugais ✅ Oui
rus Russe ✅ Oui
slk Slovaque ✅ Oui
spa Espagnol ✅ Oui
srp Serbe ✅ Oui
swe SuĂ©dois ✅ Oui
tur Turc ✅ Oui
urd Ourdou ✅ Oui
zho Chinois (simplifiĂ©) ❌ Non

✅ Remarques :

  • Les langues marquĂ©es comme ❌ ne fonctionnent pas actuellement car l'API ne renvoie pas de traduction valide ou exploitable dans ces cas.
  • Vous pouvez contribuer pour Ă©largir la compatibilitĂ© ou corriger les exceptions !

📁 Structure du package

react-country-choices/
├── components/
│   ├── imports/
│   │   ├── Checkbox.js
│   │   ├── Radio.js
│   │   └── Select.js
│   ├── context/
│   │   └── CountryContext.js
│   ├── demo/
│   │   ├── Form.js
│   │   ├── Form.css
│   │   └── Result.js
│   └── styles/
│       └── Select.css
│   └── Country.js
├── App.js
├── index.js

📘 Roadmap

  • Ceci est la 1ere version. Elle prĂ©sente juste la solution prevue.
  • Migration progressive vers TypeScript prĂ©vue pour amĂ©liorer la robustesse et la documentation du code.

đŸ› ïž Cette transition est en rĂ©flexion, le projet Ă©tant encore en phase d’évolution.

  • Modularisation avancĂ©e des composants
  • Ajout de tests unitaires
  • CrĂ©ation d’une documentation en ligne interactive

đŸ™‡â€â™‚ïž Mentions spĂ©ciales

  • REST Countries API : utilisĂ©e pour rĂ©cupĂ©rer les donnĂ©es des pays (noms, codes, drapeaux, langues
)
  • Merci Ă  la communautĂ© open source pour les idĂ©es et les contributions futures 🙌

About

đŸ§© React component for selecting countries and displaying them in the language of your choice. ✹ Supports flags, dynamic updates, and multi-language translation via REST Countries API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published