Transfer List

View pricing →

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

Introduction

Aperçu de la liste de transfert

1 min

La liste de transfert d'entrée est idéale pour les situations où l'utilisateur final doit sélectionner et trier plusieurs valeurs à partir d'une liste d'options. Dans cet exemple, nous permettons à l'utilisateur final de sélectionner parmi un groupe d'invités et de les déplacer vers une liste VIP :

Charger l'exemple en direct

Pour commencer

Dans cette section, nous allons couvrir les bases de la façon de reproduire l'exemple 'Invités vs VIPs' ci-dessus.

Entrée de base

Ci-dessous se trouve un exemple de la liste de transfert d'entrée avec les propriétés requises minimales. Comme vous pouvez le voir, il y a deux boîtes de liste : la boîte de liste source et la boîte de liste cible. La boîte de liste source contiendra la liste des options, et la boîte de liste cible contiendra les options sélectionnées :

Charger l'exemple en direct

Étiquettes

Ajoutons quelques propriétés d'étiquette pour clarifier à l'utilisateur final comment utiliser la liste de transfert d'entrée. Nous ajouterons une propriété label pour expliquer la directive à l'utilisateur, et les propriétés source-label et target-label pour indiquer quelle boîte de liste est la source et laquelle est la cible :

Charger l'exemple en direct

Messages pour source et cible vides

Dans cet état, sans options passées et sans valeurs sélectionnées, nous pouvons afficher un message personnalisé à l'utilisateur en définissant les propriétés source-empty-message et target-empty-message :

Charger l'exemple en direct

Définir les options

La propriété options peut accepter trois formats différents de valeurs :

  • Un tableau d'objets avec les clés value et label
  • Un tableau de chaînes de caractères 'A', 'B', 'C'
  • Un objet littéral avec des paires clé-valeur { a: 'A', b: 'B', c: 'C' }
  • Une fonction qui retourne l'un des formats ci-dessus

Allons de l'avant et peuplons les options de la liste de transfert avec une liste de noms d'invités :

Charger l'exemple en direct

Valeurs

La valeur de l'entrée de la liste de transfert est un tableau. Les valeurs des options sélectionnées de la liste source seront ajoutées au tableau. Pour montrer la valeur qui change dans l'exemple ci-dessous, enveloppons l'entrée de la liste de transfert dans un formulaire FormKit, définissons le nom de l'entrée de la liste de transfert à vips, et affichons la valeur du formulaire lui-même dans une balise <pre> (si vous n'êtes pas familier avec les formulaires FormKit, vous pouvez en lire plus ici) :

Charger l'exemple en direct

Valeurs initiales

L'entrée de la liste de transfert peut être pré-remplie avec des valeurs en définissant la propriété value sur la transferlist elle-même ou sur un form ou group englobant. Rappelez-vous que les valeurs que vous passez à la propriété value doivent correspondre aux clés des valeurs dans votre liste d'options :

Charger l'exemple en direct

Recherchable

L'entrée de la liste de transfert peut être rendue recherchable en définissant la propriété searchable. Dans cet exemple, nous allons définir la propriété searchable et également définir une propriété placeholder pour l'entrée de recherche :

Charger l'exemple en direct
Seules les options sont recherchées
L'entrée de recherche ne cherche qu'à travers les options dans la liste d'options source. Elle ne retourne pas les options qui ont déjà été transférées à la liste cible.

Filtrage

L'entrée de la liste de transfert filtrera les options avec sa propre fonction de recherche interne. Vous pouvez remplacer cette fonction de recherche en fournissant à la propriété filter une fonction de votre choix. Votre fonction recevra deux arguments, l'option en cours d'itération et la valeur de recherche actuelle :

Charger l'exemple en direct

Effacer lors de la sélection

Par défaut, l'entrée de la liste de transfert effacera l'entrée de recherche lors de la sélection. Vous pouvez changer ce comportement en définissant la propriété clear-on-select à false :

Max

L'entrée de la liste de transfert peut être limitée à un nombre maximum de valeurs sélectionnées en définissant la propriété max. Pour cet exemple seulement, définissons la propriété max à 2 pour limiter le nombre de VIP qui peuvent être sélectionnés :

Charger l'exemple en direct

Récupération de données supplémentaires

Vous pouvez également utiliser optionLoader pour récupérer des données supplémentaires sur les valeurs sélectionnées qui ne sont pas déjà dans la liste des options. Dans cet exemple, après avoir sélectionné une option, nous allons effectuer une recherche pour charger l'âge de l'invité sélectionné :

Charger l'exemple en direct

Slots

Tout comme n'importe quelle autre entrée FormKit, l'entrée de liste de transfert vous permet d'utiliser des slots pour personnaliser son balisage.

Options de source et de cible

Maintenant que nous chargeons des données supplémentaires sur les valeurs sélectionnées (l'âge et l'adresse e-mail de l'invité sélectionné), personnalisons l'apparence des valeurs sélectionnées en utilisant les slots target-option :

Charger l'exemple en direct

Exemples

Ordre classé

L'entrée de liste de transfert peut être utilisée pour créer une liste classée, faisons cela avec les plus grands joueurs de la NBA :

Charger l'exemple en direct

Props & Attributs

PropTypePar défautDescription
debouncenumber200Nombre de millisecondes pour temporiser les appels à une fonction d'options.
optionsany[]La liste des options parmi lesquelles l'utilisateur peut choisir.
filterfunctionnullUtilisé pour appliquer votre propre fonction de filtrage personnalisée pour les options statiques.
option-loaderfunctionnullUtilisé pour hydrater la valeur initiale, ou effectuer une demande supplémentaire pour charger plus d'informations sur une option sélectionnée.
source-empty-messagestringundefinedAffiche un message lorsqu'il n'y a pas d'options à afficher.
target-empty-messagestringundefinedAffiche un message lorsqu'il n'y a pas de valeurs à afficher.
maxnumberundefinedLimite le nombre d'options qui peuvent être sélectionnées.
clear-on-selectbooleantrueEfface l'entrée de recherche après avoir sélectionné une option (uniquement pour les options qui ne sont pas chargées via une fonction).
searchablebooleanfalseActive l'entrée de recherche.
source-labelstringundefinedAffiche une étiquette pour la liste source.
target-labelstringundefinedAffiche une étiquette pour la liste cible.
transfer-on-selectbooleantrueTransfère automatiquement les options sélectionnées vers la liste cible. Si défini sur false, affichera des boutons de transfert vers l'avant et de transfert vers l'arrière.
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 "clé" de cette section, ce qui vous permet de modifier les classes de cette section, le HTML (via :sections-schema), ou le contenu (via les slots). Lisez plus sur les sections ici.

Enveloppe de la liste de transfert

View on a larger screen to see this section diagram.

Choisissez les VIP pour la fête
Vous pouvez sélectionner jusqu'à 3 VIP.
Liste source
Contrôles de transfert
Liste cible
Désolé, vous ne pouvez pas ajouter plus de 3 invités.

Source

View on a larger screen to see this section diagram.

Invités
97
Aucun invité trouvé
John Doe

Contrôles de transfert

View on a larger screen to see this section diagram.

Cible

View on a larger screen to see this section diagram.

VIPs
3
Aucun VIP sélectionné
John Doe
Section-keyDescription
fieldsetUn élément fieldset qui agit comme l'élément racine pour l'entrée de la liste de transfert.
legendUn élément legend qui rend le label.
sourceUn élément div qui contient les sections sourceHeader, sourceControls et sourceListItems.
sourceHeaderUn élément div qui contient les sections sourceHeaderLabel et sourceHeaderItemCount
sourceHeaderLabelUn élément label qui rend la propriété sourceLabel.
sourceHeaderItemCountUn élément span qui rend le nombre d'éléments et le nombre d'éléments sélectionnés dans la liste source.
sourceControlsUn élément div qui contient les sections sourceSearchInput et sourceSearchClear
sourceSearchUn élément div qui contient les sections sourceSearchInput et sourceSearchClear
sourceSearchInputUn élément de saisie de texte utilisé pour la recherche.
sourceSearchClearUn élément bouton qui efface la saisie de recherche.
closeIconLe span utilisé contenant l'icône pour effacer la saisie de recherche.
sourceListItemsUn élément ul qui contient les sourceListItems.
sourceEmptyMessageUn élément li qui contient la section emptyMessageInner.
emptyMessageInnerUn élément span qui rend le texte du message vide fourni.
sourceListItemUn élément li pour la section sourceListItems qui contient la section sourceOption.
selectIconUn élément span qui rend l'icône sélectionnée lorsque le sourceListItem est défini sur sélectionné.
sourceOptionUn élément div qui rend le label de l'option.
sourceLoadMoreUn élément li qui contient la section loadMoreInner.
loadMoreInnerUn élément span qui rend l'icône de chargement.
loaderIconUn élément span qui produit une icône lorsque le chargement est en cours.
transferControlsUn élément div qui contient les sections transferButtonForwardAll, transferButtonForward, transferButtonBackward et transferButtonBackwardAll.
transferButtonForwardAllUn élément bouton qui transfère toutes les options vers la liste cible.
transferButtonForwardUn élément bouton qui transfère les options sélectionnées vers la liste cible.
transferButtonBackwardUn élément bouton qui transfère les options sélectionnées vers la liste source.
transferButtonBackwardAllUn élément bouton qui transfère toutes les options vers la liste source.
controlLabelUn élément span qui rend le label de contrôle.
fastForwardIconUn élément span qui rend l'icône d'avance rapide.
moveRightIconUn élément span qui rend l'icône de déplacement vers la droite.
moveLeftIconUn élément span qui rend l'icône de déplacement vers la gauche.
rewindIconUn élément span qui rend l'icône de retour rapide.
targetUn élément div qui contient les sections targetHeader, targetControls et targetListItems.
targetHeaderUn élément div qui contient les sections targetHeaderLabel et targetHeaderItemCount
targetHeaderLabelUn élément label qui rend la propriété targetLabel.
targetHeaderItemCountUn élément span qui rend le nombre d'éléments et le nombre d'éléments sélectionnés dans la liste cible.
targetListItemsUn élément ul qui contient les targetListItems.
targetEmptyMessageUn élément li qui contient la section emptyMessageInner.
targetListItemUn élément li pour la section targetListItems qui contient la section targetOption.
targetLoadMoreUn élément li qui contient la section loadMoreInner.
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
fieldsetrolepresentationIndique aux technologies d'assistance que cet élément fonctionne comme une présentation.
aria-describedbyAssocie un élément à une description, aidant les lecteurs d'écran.
sourceHeaderrolepresentationIndique aux technologies d'assistance que cet élément fonctionne comme une présentation.
sourceHeaderLabelforAssocie le label à un élément de saisie. Les utilisateurs peuvent cliquer sur le label pour focaliser la saisie ou pour basculer entre les états.
sourceHeaderItemCountrolepresentationIndique aux technologies d'assistance que cet élément fonctionne comme une présentation.
aria-labelFournit un nom accessible.
sourceSearchInputrolesearchboxIndique aux technologies d'assistance que cet élément fonctionne comme une boîte de recherche.
aria-labelFournit un nom accessible.
sourceSearchCleararia-labelFournit un nom accessible.
sourceListItemstabindex-1 or 0Priorise l'ordre de focus au clavier en le réglant sur -1 lorsque c'est recherchable ou qu'il n'y a pas d'options de source et 0 dans le cas contraire.
aria-activedescendantGère le focus vers l'élément descendant actif courant.
rolelistboxIndique aux technologies d'assistance que cet élément fonctionne comme une liste déroulante.
aria-multiselectabletrueIndique qu'il permet de sélectionner plusieurs éléments simultanément.
aria-roledescriptionFournit une description de ce rôle d'élément.
sourceListItemaria-selectedIndique que cet élément est actuellement sélectionné.
roleoptionIndique aux technologies d'assistance que cet élément fonctionne comme une option.
sourceLoadMoretabindex-1Priorise l'ordre de focus au clavier en le réglant sur -1.
aria-selectedfalseIndique que cet élément n'est jamais sélectionné.
sourceEmptyMessagerolepresentationIndique aux technologies d'assistance que cet élément fonctionne comme une présentation.
targetHeaderrolepresentationIndique aux technologies d'assistance que cet élément fonctionne comme une présentation.
targetHeaderLabelforAssocie le label à un élément de saisie. Les utilisateurs peuvent cliquer sur le label pour focaliser la saisie ou pour basculer entre les états.
targetHeaderItemCountrolepresentationIndique aux technologies d'assistance que cet élément fonctionne comme une présentation.
aria-labelFournit un nom accessible.
targetListItemstabindex-1 or 0Priorise l'ordre de focus au clavier en le réglant sur -1 lorsque c'est recherchable ou qu'il n'y a pas d'options de source et 0 dans le cas contraire.
aria-activedescendantGère le focus vers l'élément descendant actif courant.
rolelistboxIndique aux technologies d'assistance que cet élément fonctionne comme une liste déroulante.
aria-multiselectabletrueIndique qu'il permet de sélectionner plusieurs éléments simultanément.
aria-roledescriptionFournit une description de ce rôle d'élément.
targetListItemaria-selectedIndique que cet élément est actuellement sélectionné.
roleoptionIndique aux technologies d'assistance que cet élément fonctionne comme une option.
targetLoadMoretabindex-1Priorise l'ordre de focus au clavier en le réglant sur -1.
aria-selectedfalseIndique que cet élément n'est jamais sélectionné.
targetEmptyMessagerolepresentationIndique aux technologies d'assistance que cet élément fonctionne comme une présentation.
transferButtonForwardaria-labelFournit un nom accessible.
transferButtonForwardAllaria-labelFournit un nom accessible.
transferButtonBackwardaria-labelFournit un nom accessible.
transferButtonBackwardAllaria-labelFournit un nom accessible.
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 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.