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.
- â 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
npm install react-country-choices
đĄ 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>
);
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
Cette fonction permet :
- une gestion centralisée des champs
- un reset automatique de lâĂ©tat
submitted
pour éviter queResult
sâaffiche avant validation
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 |
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 !
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
- 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
- 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 đ