Formulaires
Les composants de formulaire de base : champs texte, textarea, recherche, select et le wrapper de champ generique.
BcInput
Basique
Votre adresse email professionnelle
vue
<BcInput v-model="email" label="Email" placeholder="nom@exemple.com"
hint="Votre adresse email professionnelle" />
<BcInput v-model="age" label="Age" type="number" placeholder="25" />Etats
Ce champ est obligatoire
vue
<BcInput label="Succes" state="success" model-value="valeur@ok.com" />
<BcInput label="Erreur" state="error" error="Ce champ est obligatoire" />
<BcInput label="Desactive" disabled model-value="Non modifiable" />Monospace
Props
| Prop | Type | Default | Description |
|---|---|---|---|
id | string | auto | Identifiant HTML |
modelValue | string | number | "" | Valeur du champ (v-model) |
label | string | — | Label du champ |
type | string | "text" | Type HTML (text, email, number, etc.) |
name | string | — | Attribut name |
placeholder | string | — | Placeholder |
hint | string | — | Texte d'aide sous le champ |
error | string | — | Message d'erreur |
state | "default" | "success" | "error" | "default" | Etat visuel |
required | boolean | false | Champ requis |
disabled | boolean | false | Desactive le champ |
readonly | boolean | false | Lecture seule |
mono | boolean | false | Police monospace |
autocomplete | string | — | Attribut autocomplete |
BcTextarea
Maximum 500 caracteres
vue
<BcTextarea v-model="bio" label="Biographie"
placeholder="Decrivez-vous en quelques mots..."
hint="Maximum 500 caracteres" :rows="4" />Etats
Le champ ne peut pas etre vide
Props
| Prop | Type | Default | Description |
|---|---|---|---|
id | string | auto | Identifiant HTML |
modelValue | string | "" | Valeur (v-model) |
label | string | — | Label |
placeholder | string | — | Placeholder |
hint | string | — | Texte d'aide |
error | string | — | Message d'erreur |
state | "default" | "success" | "error" | "default" | Etat visuel |
rows | number | 4 | Nombre de lignes |
required | boolean | false | Requis |
disabled | boolean | false | Desactive |
readonly | boolean | false | Lecture seule |
resize | "none" | "vertical" | "both" | "vertical" | Mode redimensionnement |
BcSearchInput
vue
<BcSearchInput v-model="search" placeholder="Rechercher un utilisateur..." />Props
| Prop | Type | Default | Description |
|---|---|---|---|
modelValue | string | "" | Valeur de recherche (v-model) |
placeholder | string | "Search" | Placeholder |
ariaLabel | string | "Search" | Label ARIA |
disabled | boolean | false | Desactive |
clearable | boolean | true | Bouton de suppression |
loading | boolean | false | Indicateur de chargement |
BcSelect
Pays de residence
vue
<script setup>
const country = ref(null)
const countries = [
{ value: 'fr', label: 'France' },
{ value: 'de', label: 'Allemagne' },
{ value: 'es', label: 'Espagne' },
]
</script>
<BcSelect v-model="country" label="Pays" :options="countries"
placeholder="Choisir un pays..." />Etats
Selection obligatoire
Props
| Prop | Type | Default | Description |
|---|---|---|---|
id | string | auto | Identifiant HTML |
modelValue | string | number | null | null | Valeur selectionnee (v-model) |
label | string | — | Label |
hint | string | — | Texte d'aide |
error | string | — | Message d'erreur |
state | "default" | "success" | "error" | "default" | Etat visuel |
options | SelectOption[] | — | Liste d'options { value, label, disabled? } |
required | boolean | false | Requis |
disabled | boolean | false | Desactive |
name | string | — | Attribut name |
placeholder | string | "Selectionner..." | Texte par defaut |
BcField
Wrapper generique pour composer des champs personnalises avec label, hint et erreur.
Ce wrapper gere le label et les messages
vue
<BcField label="Champ personnalise" hint="Gere le label et les messages" required>
<template #default="{ id, describedBy, invalid }">
<input :id="id" type="text" placeholder="..."
:aria-describedby="describedBy" :aria-invalid="invalid || undefined" />
</template>
</BcField>Props
| Prop | Type | Default | Description |
|---|---|---|---|
id | string | auto | Identifiant |
label | string | — | Label |
hint | string | — | Texte d'aide |
error | string | — | Message d'erreur |
required | boolean | false | Indicateur requis |
disabled | boolean | false | Etat desactive |
state | "default" | "success" | "error" | "default" | Etat visuel |
Slot scope
| Propriete | Type | Description |
|---|---|---|
id | string | ID a binder sur le champ |
describedBy | string | undefined | IDs des elements hint/error |
invalid | boolean | true si etat erreur |
Pattern de validation
Tous les composants de formulaire suivent le meme pattern d'accessibilite :
- Le
labelest lie au champ viafor/id - Les messages
hinteterrorsont lies viaaria-describedby - L'etat erreur est signale via
aria-invalid="true" - Le type
FormFieldState("default" | "success" | "error") est partage entre BcInput, BcSelect et BcToggle