Skip to content

NumberInput ​

Champ numérique : saisie au format de la langue (« 1 234,5 » en français), boutons − / +, bornes, pas et format d'affichage (devise, unité, pourcentage).

Exemples d'utilisation ​

Utilisation de base ​

Valeur : 1

vue
<script setup>
import { ref } from 'vue'

const quantity = ref(1)
</script>

<template>
  <SuNumberInput v-model="quantity" :min="0" :max="99" aria-label="Quantité" />
</template>

Format d'affichage ​

formatOptions reçoit les options d'Intl.NumberFormat. Le format s'applique à la sortie du champ ; pendant la saisie, le nombre est affiché sans symbole.

vue
<SuNumberInput v-model="price" :min="0" :step="0.5" :format-options="{ style: 'currency', currency: 'EUR' }" aria-label="Prix" />
<SuNumberInput v-model="weight" :step="0.1" :format-options="{ style: 'unit', unit: 'kilogram' }" aria-label="Poids" />

Sans boutons ​

vue
<SuNumberInput v-model="year" :controls="false" :min="1900" :max="2100" placeholder="Année" aria-label="Année" />

Avec label : NumberInputField ​

SuNumberInputField ajoute le label, le message et l'état de validation (motif FormField). Un SuNumberInput placé dans un SuFormField s'y relie aussi tout seul.

vue
<SuNumberInputField v-model="guests" label="Voyageurs" message="Entre 1 et 9 personnes" :min="1" :max="9" required />

API ​

Props ​

PropTypeDéfautDescription
modelValuenumber | nullnullValeur (v-model), null si le champ est vide
min / maxnumber-Bornes
stepnumber1Pas des flèches et des boutons
largeStepnumber10 × stepPas de Page précédente / suivante
precisionnumberdécimales du pas et du formatDécimales conservées
formatOptionsIntl.NumberFormatOptions-Format d'affichage (devise, unité, pourcentage…)
localestringlocale des composantsLangue du format
controlsbooleantrueBoutons − / +
size'sm' | 'md' | 'lg''md'Taille
state'default' | 'error' | 'success' | 'warning''default'État de validation
disabled / readonly / requiredbooleanfalseÉtats du champ
name / placeholderstring-Attributs du champ
incrementLabel / decrementLabelstring'Augmenter' / 'Diminuer'Noms des boutons

SuNumberInputField accepte en plus label, message et requiredText.

Événements ​

ÉvénementPayloadDescription
update:modelValuenumber | nullNouvelle valeur (validée)
changenumber | nullValeur modifiée par l'utilisateur
focus / blurFocusEventFocus du champ

Méthodes exposées ​

MéthodeDescription
focus()Donne le focus au champ
increment() / decrement()Ajoute ou retire un pas

Accessibilité ​

  • role="spinbutton" avec aria-valuenow, aria-valuemin, aria-valuemax et aria-valuetext (valeur formatée, ex. « 12,50 € »).
  • Clavier : ↑ / ↓ ± pas, Page préc. / Page suiv. ± grand pas, Début / Fin = min / max, Entrée valide.
  • La saisie est validée à la sortie du champ ou avec Entrée : bornée, arrondie ; un texte illisible rend la valeur précédente.
  • Les boutons − / + sont hors de l'ordre de tabulation (le clavier suffit) mais restent utilisables par les lecteurs d'écran ; ils sont marqués aria-disabled aux bornes.
  • Sur mobile, le clavier numérique s'ouvre (inputmode) quand les valeurs sont positives.

Publié sous licence MIT.