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

Introduction

L'input slider est une version avancée et hautement configurable de l'input HTML natif range. Quelques ajouts notables par rapport à l'input range standard sont :

  • Prise en charge des entrées à valeurs multiples.
  • Affichage de bulles d'information pour montrer les valeurs sélectionnées.
  • Affichage d'inputs liés pour les valeurs min et max.
  • Affichage de marques de graduation pour les étapes de valeur.
  • Ajout de marques de graduation arbitraires.
  • Forcer la sélection à se fixer sur les marques de graduation.
  • Affichage de données de graphique à barres liées aux valeurs de sélection.

Aperçu du curseur

7 mins

Exemple de base

Charger l'exemple en direct

Props natifs

Si vous êtes familier avec l'utilisation de l'input HTML natif range, vous trouverez que de nombreuses props existantes avec lesquelles vous êtes familier fonctionnent comme prévu avec l'input slider.

Charger l'exemple en direct

Touches modificateurs du clavier

Même dans sa forme la plus simple, l'input slider a quelques astuces dans sa manche. Tout comme l'input range natif, vous pouvez utiliser vos touches fléchées pour ajuster la valeur de l'input lorsqu'il est sélectionné — mais avec l'input slider, vous pouvez maintenir la touche shift pour incrémenter par 10x et la touche modificateur de votre système (command ou ctrl) pour sauter aux valeurs min / max.

Saisie de nombres au clavier

Chaque fois que vous avez un curseur sélectionné sur un input slider, vous pouvez taper une valeur sur votre clavier et après un léger délai, votre curseur slider sera réglé sur la valeur que vous avez fournie — ou sur le match le plus proche disponible.

Valeurs multiples

Pour afficher deux poignées de valeur sur un input slider, fournissez un tableau comme valeur de l'input. Les poignées de contrôle peuvent être glissées l'une à travers l'autre et la valeur de votre tableau résultant sera toujours retournée triée dans l'ordre du plus petit au plus grand.

Charger l'exemple en direct

Personnalisation des poignées

En utilisant les slots maxHandleInner (par défaut) et minHandleInner, vous pouvez personnaliser l'apparence de vos poignées slider. Le slot maxHandleInner est utilisé pour les inputs slider à valeur unique.

Charger l'exemple en direct

Personnalisation des bulles d'information

Visibilité des bulles d'information

Par défaut, les bulles d'information slider s'affichent au survol et lorsqu'une poignée de sélection est en train d'être déplacée. Vous pouvez forcer les bulles d'information dans un état activé ou désactivé en utilisant la prop tooltip et en fournissant une valeur booléenne.

Charger l'exemple en direct

Formatage des infobulles

En fournissant une fonction à la propriété tooltip-format, vous pouvez personnaliser la valeur de l'infobulle de votre slider. Votre fonction tooltip-format recevra deux arguments :

value : La valeur actuelle qui serait affichée par défaut dans l'infobulle. handle : Le curseur actuel affecté par la fonction. Soit min, soit max.

Charger l'exemple en direct

En utilisant la propriété tooltip-format, vous pouvez introduire de la variété dans vos entrées de slider — surtout lorsqu'elle est combinée avec le système de propriétés de classe de section de FormKit.

Charger l'exemple en direct

Champs numériques liés

Parfois, une entrée de type plage est plus utile pour les utilisateurs s'ils peuvent également entrer directement des valeurs numériques dans des champs liés. Vous pouvez révéler des entrées number qui sont liées aux valeurs des poignées de la plage du slider en définissant la propriété show-input sur true.

Charger l'exemple en direct

Attributs des entrées liées

Les entrées number liées sont des entrées de FormKit. Vous pouvez leur appliquer des propriétés en utilisant les propriétés fournies :

  • input-attrs : liera l'objet que vous fournissez aux entrées min et max.
  • min-input-attrs : Objet à lier à l'entrée min liée.
  • max-input-attrs : Objet à lier à l'entrée max liée.
Charger l'exemple en direct

Marques

Utilisation de base

L'entrée slider prend en charge l'affichage de marques sur la piste de l'entrée. En définissant la propriété marks sur true, des marques seront rendues à chaque intervalle de steps.

Charger l'exemple en direct

Avec étiquettes

Vous pouvez activer les étiquettes pour vos marques en définissant la propriété mark-labels sur true.

Charger l'exemple en direct

Marques personnalisées

En fournissant un tableau d'objets à la propriété marks au lieu d'un booléen, vous pouvez placer des marques arbitraires sur la piste du curseur. Les objets de marque doivent avoir les propriétés suivantes :

  • at : La position (valeur) sur la piste où la marque doit être rendue.
  • label : L'étiquette à rendre pour la marque si la propriété mark-labels est activée.
  • class : Une chaîne de classes à appliquer à l'élément de marque.
  • labelClasses : Une chaîne de classes à appliquer à l'élément d'étiquette de la marque.
Charger l'exemple en direct

Accrochage aux marques

Lorsque vous fournissez des marques personnalisées, vous pouvez vouloir forcer la sélection à s'accrocher aux marques fournies. Cela peut être réalisé avec la propriété snap-to-marks. Lorsque snap-to-marks est true, les événements clavier sauteront à la marque la plus proche et les valeurs entrées via le clavier ou les entrées liées s'accrocheront à la marque disponible la plus proche.

Charger l'exemple en direct

Style des marques

Vous pouvez appliquer des classes personnalisées à vos marques et étiquettes de marques en utilisant les propriétés class et labelClasses sur vos objets de marque.

Charger l'exemple en direct

Mise à l'échelle des valeurs du curseur

Par défaut, l'entrée slider met à l'échelle les valeurs de manière linéaire sur toute sa plage. Cependant, vous pouvez utiliser les propriétés scaling-function ou intervals pour modifier ce comportement.

Utilisation de fonctions

La propriété scaling-function accepte 3 valeurs :

  • La chaîne linear — c'est le comportement par défaut
  • La chaîne log qui appliquera une fonction de mise à l'échelle logarithmique à votre slider
  • Un objet qui consiste en deux fonctions nommées forward et reverse qui appliqueront votre propre logique de mise à l'échelle.
Charger l'exemple en direct

Utilisation d'intervalles

La propriété intervals accepte un tableau d'objets où chaque objet définit une plage d'intervalle sur le slider. Chaque objet contient :

  • value : Le point sur le slider où l'intervalle commence
  • step : La taille de pas qui devrait être utilisée à l'intérieur de l'intervalle

Votre dernier intervalle couvrira la plage s'étendant de votre value spécifiée à la valeur de la propriété max sur votre slider. Si votre intervalle le plus bas ne commence pas à la valeur minimale possible de votre slider, alors un intervalle couvrant la plage de votre propriété min du curseur à votre premier intervalle sera créé pour vous. Sa valeur step sera la valeur de la propriété step sur votre entrée slider.

Il est important de noter que la représentation visuelle des intervalles sur une piste de slider est basée sur le nombre total de pas possibles à l'intérieur d'un intervalle donné et non sur la valeur numérique brute de l'intervalle.

Charger l'exemple en direct

Graphique

Vous pouvez afficher un graphique en barres au-dessus du curseur avec des valeurs arbitraires en fournissant un tableau à la propriété chart. Le tableau chart a une structure similaire au tableau marks. Chaque objet imbriqué doit contenir :

  • at : La position (valeur) sur la piste où la barre pour le graphique doit être rendue.
  • value : Une valeur numérique qui sera utilisée pour calculer la hauteur relative de la barre dans le graphique.

L'entrée slider itérera sur votre tableau chart et déterminera la plus grande value contenue dans le tableau, puis divisera toutes les autres valeurs par cette plus grande valeur pour déterminer les hauteurs relatives pour le rendu des barres du graphique.

Charger l'exemple en direct

Exemple complet

En combinant les props fournies pour le composant slider, vous pouvez créer une entrée robuste pour couvrir une variété de cas d'utilisation. Voici un exemple pour un curseur de sélection de gamme de prix.

Charger l'exemple en direct

Props & Attributs

PropTypePar défautDescription
chartarraynoneUn tableau d'objets contenant les clés at et value. Affiche un graphique en barres de hauteur relative au-dessus de la piste du curseur.
input-attrsobject{}Applique des attributs personnalisés aux entrées FormKit liées imbriquées pour les valeurs min et max.
intervalsarraynoneUn tableau de valeurs d'intervalle composé de value et step utilisé pour définir une échelle différente pour différentes sections de la piste du curseur.
marksboolean || arrayfalseLorsque true, affiche des marques sur la piste à chaque valeur de step. Lorsqu'un tableau d'objets avec les clés at et label, affiche une marque sur la piste à la valeur at de chaque objet.
mark-labelsbooleanfalseActive l'affichage des étiquettes sous les marques sur la piste
maxnumber100La valeur maximale possible de la gamme du curseur.
max-input-attrsobject{}Applique des attributs personnalisés à l'entrée FormKit liée imbriquée pour la valeur max.
minnumber0La valeur minimale possible de la gamme du curseur.
min-input-attrsobject{}Applique des attributs personnalisés à l'entrée FormKit liée imbriquée pour la valeur min.
prefixstringnoneCaractères qui apparaîtront toujours au début de l'entrée.
scaling-functionstring || objectlinearDéfinit le comportement de mise à l'échelle pour les valeurs sur la piste du curseur en utilisant soit une chaîne de valeur prédéfinie soit un ensemble de fonctions personnalisées.
show-inputbooleanfalseAffiche des entrées FormKit type="number" qui sont liées aux valeur(s) du curseur
snap-to-marksbooleanfalseLorsqu'activé, force la sélection de l'utilisateur à se fixer aux marques
stepnumber1La valeur minimale à laquelle la valeur du curseur peut s'incrémenter / se décrémenter.
suffixstringnoneCaractères qui apparaîtront toujours à la fin de l'entrée.
tooltipbooleannoneLorsqu'il est défini avec une valeur booléenne, force l'affichage de l'infobulle de la poignée du curseur.
tooltip-formatfunctionnoneUne fonction à laquelle est fournie la value et la handle pour chaque poignée du curseur qui doit retourner une string.
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.

Choisissez votre fourchette de prix
Sélectionnez les emplacements disponibles par prix
📊
...
Vous devez fournir une évaluation.
Section-keyDescription
chartUn conteneur pour les éléments de la barre de graphique.
chartBarUne barre individuelle pour l'élément de graphique.
fillLe remplissage pour la plage sélectionnée sur le curseur.
handleMaxLa poignée de sélection de la valeur maximale. C'est la poignée par défaut pour les curseurs à valeur unique.
handleMinLa poignée de sélection de la valeur minimale.
handlesUn conteneur pour les poignées de sélection de la piste.
linkedValuesUn enveloppe pour les entrées liées pour les valeurs minimale et maximale du curseur.
markUne marque individuelle sur la piste.
markLabelL'étiquette pour une marque individuelle sur la piste.
marksUn conteneur pour toutes les marques sur la piste.
maxValueL'entrée numérique FormKit liée pour la valeur maximale du curseur. Si le curseur n'a qu'une seule valeur, ceci est rendu en tant que descendant direct de la section sliderInner.
minValueL'entrée numérique FormKit liée pour la valeur minimale du curseur.
sliderInnerLa div intérieure qui contient le contenu de l'entrée du curseur.
trackUn enveloppe qui contient tout le balisage de la piste pour l'entrée du curseur.
trackInnerUn enveloppe intérieur pour des fins de style qui contient tout le balisage de la piste à l'exception du graphique.
trackWrapperUn enveloppe qui contient tout le balisage de la piste à l'exception du graphique.
tooltipMinL'infobulle pour la poignée de sélection de la valeur minimale.
tooltipMaxL'infobulle pour la poignée de sélection de la valeur maximale.
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
maxValuetabindex-1Priorise l'ordre de focus au clavier en le définissant à -1 lorsque l'entrée est désactivée.
minValuetabindex-1Priorise l'ordre de focus au clavier en le définissant à -1 lorsque l'entrée est désactivée.
handleMaxtabindex-1 or 0Priorise l'ordre de focus au clavier en le définissant à -1 lorsque l'entrée est désactivée et à 0 lorsqu'elle ne l'est pas.
handleMintabindex-1 or 0Priorise l'ordre de focus au clavier en le définissant à -1 lorsque l'entrée est désactivée et à 0 lorsqu'elle ne l'est pas.
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.