Select

Le champ de sélection utilise le champ de sélection natif HTML. Les champs de sélection peuvent être à sélection de valeur unique, ou à sélections de valeurs multiples en utilisant l'attribut multiple. Il existe 4 manières de fournir des options à un champ de sélection :

  • Un tableau de chaînes de caractères
  • Un objet de paires valeur/étiquette
  • Un tableau d'objets avec des propriétés label et value (comme pour les champs checkbox et radio)
  • En utilisant directement les balises <option> à l'intérieur de l'emplacement default.
Alternative Pro

Besoin de plus de flexibilité que ce que le champ de sélection HTML select offre ? Découvrez le champ dropdown disponible dans FormKit Pro.

Sélection unique

Les listes de sélection sont le plus souvent utilisées pour sélectionner un seul élément d'une liste d'options.

Tableau de chaînes de caractères

La manière la plus simple de fournir des options est un tableau de chaînes de caractères. Les chaînes fournies seront utilisées à la fois pour l'étiquette et la valeur de l'option.

Charger l'exemple en direct

Objet Valeur / Étiquette

Vous pouvez également fournir la propriété options où les clés sont les valeurs et les valeurs de chaque propriété sont les étiquettes.

Charger l'exemple en direct

Tableau d'objets

La manière la plus flexible de définir des options est de fournir un tableau d'objets. Les objets doivent inclure les propriétés value et label — mais peuvent également inclure une propriété help ainsi qu'un objet attrs d'attributs supplémentaires à appliquer à chaque balise de champ de sélection.

Charger l'exemple en direct
Attributs des options

Pour passer des attributs supplémentaires à chaque élément <option>, votre objet peut également contenir une propriété attrs.

[
  {
    label: 'Mon Étiquette',
    value: 'une-valeur',
    attrs: {
      disabled: true
    }
  }
]

Groupes d'options (optgroup)

En utilisant la syntaxe tableau d'objets, vous pouvez également créer des groupes d'options (<optgroup> en HTML). Pour ce faire, fournissez une option group :

Charger l'exemple en direct

Emplacement par défaut

Il peut parfois être souhaitable de sortir manuellement le contenu d'une liste déroulante afin de créer des structures spécialisées. Cela peut être fait en utilisant l'emplacement default pour afficher explicitement vos options.

Charger l'exemple en direct
warning

Lorsque vous utilisez l'emplacement par défaut pour sortir des options, vous ne devriez pas utiliser les props placeholder ou options.

Multiple

L'entrée select prend également en charge un attribut multiple qui permet la sélection multiple. Lorsqu'il est utilisé avec FormKit, cette option produit un tableau de valeurs.

Charger l'exemple en direct
Alternatives

Les entrées de sélection avec l'attribut multiple peuvent être difficiles pour certains utilisateurs car elles nécessitent de maintenir les touches contrôle ou commande pour effectuer plusieurs sélections. Selon votre public, vous pourriez envisager d'utiliser une entrée de case à cocher avec options à la place.

Multiple avec emplacement par défaut

Lorsque vous utilisez l'emplacement par défaut en conjonction avec l'attribut multiple, vous devez explicitement attribuer l'attribut selected à chaque option.

Props & Attributs

PropTypePar défautDescription
optionsArray/Object[]Un objet de paires valeur/étiquette ou un tableau de chaînes de caractères, ou un tableau d'objets qui doivent contenir une propriété d'étiquette et de valeur.
placeholderStringnoneLorsqu'il est défini, FormKit injecte une balise option cachée non sélectionnable comme première valeur de la liste pour servir de placeholder.
select-iconString’’Spécifie une icône à mettre dans la section selectIcon. Par défaut, l'icône select.
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.

Taille du smoothie
👩🏼‍🦱
Moyen
Choisissez une taille de smoothie.
Vous devez faire une sélection.
Section-keyDescription
optionResponsable du rendu de chaque option. Le contexte inclut une propriété option avec l'option en cours de rendu. Cet objet comprend des propriétés label et value.
selectIconUn élément pour afficher une icône pour ouvrir la liste déroulante. Habituellement une flèche vers le bas.
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
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 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.