Démarrage rapide de l'installation Pro :rocket:

Exemple de base

L'input repeater est utilisé pour répéter des groupes d'inputs. Vous pouvez utiliser n'importe quel nombre d'inputs FormKit au sein d'un répéteur, et les répéteurs eux-mêmes peuvent être imbriqués à l'infini.

Par défaut, l'input répéteur a la capacité de déplacer, ajouter et supprimer des éléments :

Charger l'exemple en direct

Contrairement à la plupart des autres types d'input FormKit, l'input répéteur est de type list. Vous pouvez voir ci-dessus que la propriété users (la valeur de notre répéteur) est un tableau.

Exemple de schéma

Comme tous les autres inputs FormKit, le Répéteur peut être utilisé dans un formulaire écrit en schéma FormKit schema.

Charger l'exemple en direct

Attributs du bouton Ajouter

Dans l'exemple précédent, le bouton 'Ajouter des utilisateurs' est fourni par défaut, et le libellé du bouton est dérivé du label du répéteur. Nous pouvons personnaliser le libellé en utilisant la propriété add-button et en la définissant sur une string, ou la supprimer complètement en la définissant sur false. De manière similaire à la propriété submit-attrs sur les formulaires FormKit, nous pouvons fournir un objet d'attributs à appliquer au bouton avec add-attrs. Dans cet exemple, nous changeons le libellé du répéteur de Add Users à Mon libellé personnalisé en utilisant la propriété add-label :

Charger l'exemple en direct

Min/max

Comme beaucoup d'autres inputs FormKit, le répéteur est doté des propriétés min et max. Vous pouvez utiliser ces propriétés pour limiter le nombre d'éléments à ajouter ou à supprimer.

Charger l'exemple en direct

État vide

Lorsqu'un répéteur est autorisé à être vide en ayant sa propriété min définie sur 0 et sans valeurs, vous pouvez contrôler le contenu rendu dans l'état vide en utilisant le slot empty.

Charger l'exemple en direct

Contrôles

L'input répéteur est livré par défaut avec un ensemble de contrôles qui vous permettent de déplacer, ajouter et supprimer des éléments. Vous pouvez contrôler la visibilité de ces contrôles en définissant les propriétés upControl, downControl, insertControl et removeControl sur true ou false.

Charger l'exemple en direct

Contrôles personnalisés

Avec le répéteur de FormKit, vous n'êtes pas limité à nos contrôles par défaut. Vous pouvez manipuler le répéteur de la manière que vous souhaitez :

Charger l'exemple en direct

Définition des erreurs

Vous pouvez définir des erreurs sur un répéteur ou sur n'importe quel élément répétable en utilisant la notation par points. Ici, nous utilisons l'assistant setErrors, mais il existe d'autres méthodes également :

// le 2ème argument de setErrors est les erreurs au niveau de l'entrée
formNode.setErrors( null, // pas d'erreurs de formulaire,
  {
    // erreur sur le champ répéteur :
    'teamMembers': ['Il y a eu un problème avec 1 de vos membres d’équipe.']

    // erreur sur un élément répéteur spécifique :
    'teamMembers.1.email': ['emily@formkit.com fait déjà partie d’une équipe.'],
  }
)

Rappelez-vous, votre gestionnaire de soumission reçoit le node central du formulaire et peut être utilisé pour définir facilement des erreurs en profondeur. Lisez plus sur la gestion des erreurs ici. Voici un exemple d'un faux backend retournant des erreurs pour le répéteur et un enfant :

Charger l'exemple en direct

Props & Attributs

PropTypePar défautDescription
add-labelstringnullUtilisé pour changer le libellé du bouton d'ajout.
add-attrsobject[object Object]Utilisé pour appliquer des attributs à l'élément du bouton d'ajout.
add-buttonbooleantrueConditionnel pour afficher ou non le bouton d'ajout.
up-controlbooleantrueConditionnel pour afficher ou non le contrôle de montée.
down-controlbooleantrueConditionnel pour afficher ou non le contrôle de descente.
insert-controlbooleanfalseConditionnel pour afficher ou non le contrôle d'insertion.
remove-controlbooleantrueConditionnel pour afficher ou non le contrôle de suppression.
minNumber1Le nombre minimum d'enfants.
maxNumbernullLe nombre maximum d'enfants.
Afficher Universel props
configObject{}Options de configuration à fournir au nœud d'entrée et à tout nœud descendant de cette entrée.
delayNumber20Nombre de millisecondes à attendre avant que la valeur d'une entrée ne soit déclenchée avant que le commit hook ne soit déclenché.
dirtyBehaviorstringtouchedDétermine comment le drapeau "dirty" de cette entrée est défini. Peut être défini sur touched ou comparetouched (par défaut) est plus performant, mais ne détectera pas lorsque le formulaire correspond à nouveau à son état initial.
errorsArray[]Tableau de chaînes à afficher comme messages d'erreur sur ce champ.
helpString''Texte pour le texte d'aide associé à l'entrée.
idStringinput_{n}L'identifiant unique de l'entrée. Fournir un identifiant permet également d'accéder globalement au nœud de l'entrée.
ignoreBooleanfalseEmpêche une entrée d'être incluse dans un parent (groupe, liste, formulaire, etc). Utile lors de l'utilisation d'entrées pour l'interface utilisateur au lieu de valeurs réelles.
indexNumberundefinedPermet d'insérer une entrée à l'index donné si le parent est une liste. Si la valeur de l'entrée est indéfinie, elle hérite de la valeur de cette position d'index. Si elle a une valeur, elle l'insère dans les valeurs de la liste à l'index donné.
labelString''Texte pour l'élément label associé à l'entrée.
nameStringinput_{n}Le nom de l'entrée tel qu'identifié dans l'objet de données. Cela doit être unique au sein d'un groupe de champs.
parentFormKitNodecontextualPar défaut, le parent est un groupe d'enrobage, une liste ou un formulaire — mais cette propriété permet une affectation explicite du nœud parent.
prefix-iconString''Spécifie une icône à placer dans la section prefixIcon.
preservebooleanfalseConserve la valeur de l'entrée sur un groupe parent, une liste ou un formulaire lorsque l'entrée est démontée.
preserve-errorsbooleanfalsePar défaut, les erreurs définies sur les entrées à l'aide de setErrors sont automatiquement effacées lors de l'entrée, en définissant cette propriété sur true, l'erreur est maintenue jusqu'à ce qu'elle soit explicitement effacée.
sections-schemaObject{}Un objet de clés de section et de valeurs partielles de schéma, où chaque partie de schéma est appliquée à la section respective.
suffix-iconString''Spécifie une icône à placer dans la section suffixIcon.
typeStringtextLe type d'entrée à afficher à partir de la bibliothèque.
validationString, Array[]Les règles de validation à appliquer à l'entrée.
validation-visibilityStringblurDétermine quand afficher les règles de validation en échec d'une entrée. Les valeurs valides sont blur, dirty et live.
validation-labelString{label prop}Détermine quelle étiquette utiliser dans les messages d'erreur de validation, par défaut, elle utilise la propriété label si elle est disponible, sinon elle utilise la propriété name.
validation-rulesObject{}Règles de validation personnalisées supplémentaires à rendre disponibles pour la propriété de validation.
valueAnyundefinedInitialise la valeur initiale d'une entrée et/ou de ses enfants. Non réactif. Peut initialiser des groupes entiers (formulaires) et des listes..

Sections

Vous pouvez cibler une section spécifique d'une entrée en utilisant la "key" de cette section, ce qui vous permet de modifier les classes de cette section, le HTML (via :sections-schema) ou le contenu (via des emplacements)). En savoir plus sur les sections ici.

View on a larger screen to see this section diagram.

Invités
Notez les invités que vous amènerez au circuit de course.
Champs répétés ici.
🗑
Ajouter un invité
Désolé, vous ne pouvez pas ajouter plus de 3 invités.
Section-keyDescription
fieldsetUn élément fieldset qui agit comme l'enveloppe du répéteur.
legendUn élément legend qui affiche l'étiquette.
itemsUn élément ul qui enveloppe les éléments du répéteur.
itemUn élément li qui est rendu pour chaque élément du répéteur.
contentUn conteneur pour la section de groupe.
groupNe rend pas d'élément. Il structure l'emplacement par défaut en une structure de données d'objet.
controlsUn élément ul qui enveloppe les contrôles du répéteur.
controlLabelUn élément span qui affiche l'étiquette du contrôle donné.
upUn élément li qui affiche le contrôle de montée.
upControlUn élément bouton qui affiche le contrôle de montée.
moveUpIconUn élément span qui affiche l'icône du contrôle de montée.
downUn élément li qui affiche le contrôle de descente.
downControlUn élément bouton qui affiche le contrôle de descente.
moveDownIconUn élément span qui affiche l'icône du contrôle de descente.
insertUn élément li qui affiche le contrôle d'insertion.
insertControlUn élément bouton qui affiche le contrôle d'insertion.
insertIconUn élément span qui affiche l'icône du contrôle d'insertion.
removeUn élément li qui affiche le contrôle de suppression.
removeControlUn élément bouton qui affiche le contrôle de suppression.
removeIconUn élément span qui affiche l'icône du contrôle de suppression.
Afficher Universel section keys
outerL'élément d'enrobage le plus externe.
wrapperUn enrobage autour de l'étiquette et de l'entrée.
labelL'étiquette de l'entrée.
prefixN'a pas de sortie par défaut, mais permet du contenu directement avant un élément d'entrée.
prefixIconUn élément pour afficher une icône avant la section de préfixe.
innerUn enrobage autour de l'élément d'entrée réel.
suffixN'a pas de sortie par défaut, mais permet du contenu directement après un élément d'entrée.
suffixIconUn élément pour afficher une icône après la section de suffixe.
inputL'élément d'entrée lui-même.
helpL'élément contenant le texte d'aide.
messagesUn enrobage autour de tous les messages.
messageL'élément (ou plusieurs éléments) contenant un message — le plus souvent des messages de validation et d'erreur.

Accessibilité

Tous les champs de saisie FormKit sont conçus en tenant compte des considérations d'accessibilité suivantes. Aidez-nous à améliorer continuellement l'accessibilité pour tous en signalant les problèmes d'accessibilité ici :

Balises sémantiquesAttributs AriaAccessible au clavierIndicateurs de focusContraste des couleurs avec le thème fourniÉtiquettes accessibles, texte d'aide et erreurs
Clé de SectionAttributPar défautDescription
itemsrolelistIndique aux technologies d'assistance que cet élément fonctionne comme une liste.
itemrolelistitemIndique aux technologies d'assistance que cet élément fonctionne comme un élément de liste.
Afficher Universel clé de section
labellabelforAssocie cela à un élément de saisie, améliorant l'accessibilité et l'expérience utilisateur
inputinputdisabledDésactive un élément HTML, empêchant l'interaction de l'utilisateur et signalant un état non interactif
aria-describedbyAméliore l'accessibilité en associant un élément à une description, facilitant la lecture par les lecteurs d'écran
aria-requiredAjoute l'état requis lorsque la validation est requise.
iconiconforChaque fois qu'une icône est définie comme libellé, elle la relie à un élément de saisie, améliorant l'accessibilité et l'expérience utilisateur

Interactions au clavier

Événement clavierDescription
TabDéplace le focus vers la prochaine entrée pouvant être ciblée sur la page.
Shift + TabDéplace le focus vers l'entrée précédente pouvant être ciblée sur la page.