Skip to content

Progress

Le composant SuProgress affiche une barre de progression personnalisée et accessible, respectant les normes WCAG 2.1 AA et les bonnes pratiques du W3C.
Il permet de visualiser l’état d’avancement d’un processus ou d’une tâche, avec des variations de taille, de couleur et d’état (succès, erreur, avertissement…).

Ce composant est entièrement personnalisable, réactif, compatible avec les lecteurs d’écran et accessible au clavier.

Exemples d'utilisation

Utilisation de base

Affiche une barre de progression avec une étiquette de pourcentage par défaut (par exemple, 45 %).

vue
<template>
  <SuProgress :modelValue="45" />
  <SuProgress :modelValue="45" show-label />
</template>

Taille et valeur de progression

vue
<template>
  <SuProgress size="sm" :model-value="25" show-label />
  <SuProgress size="md" :model-value="50" show-label />
  <SuProgress size="lg" :model-value="75" show-label />
</template>

Personnalisation du format d’affichage (formatValue)

Vous pouvez personnaliser la manière dont la valeur est affichée en fournissant une fonction formatValue.

vue
<template>
  <div style="display: flex; flex-direction: column; gap: 1rem; width: 300px;">
    <SuProgress
      :model-value="25"
      :format-value="(v) => `Étape ${v}/100`"
      show-label
    />
    <SuProgress
      :model-value="75"
      :format-value="(v) => `${v} sur 100 points`"
      state="success"
      show-label
    />
    <SuProgress
      :model-value="90"
      :format-value="(v) => `Complété à ${v}% 🎯`"
      state="warning"
      show-label
    />
  </div>
</template>

Par défaut, le composant utilise un formateur intégré équivalent à :

ts
(val: number) => `${val}%`

États visuels

vue
<template>
  <SuProgress :model-value="40" state="default" show-label />
  <SuProgress :model-value="70" state="success" show-label />
  <SuProgress :model-value="50" state="warning" show-label />
  <SuProgress :model-value="30" state="error" show-label />
</template>

État indéterminé

Lorsque la valeur de progression est inconnue, vous pouvez définir le composant en mode indéterminé.

vue
<template>
  <SuProgress indeterminate size="md" />
  <SuProgress indeterminate size="lg" showLabel indeterminateLabel="Loading..." />
</template>

API

Props

PropTypeDefaultDescription
modelValuenumber0Valeur actuelle de la progression.
minnumber0Valeur minimale.
maxnumber100Valeur maximale.
size'sm' | 'md' | 'lg''md'Définit la hauteur de la barre de progression.
colorstring'#000'Couleur de la barre en mode default.
backgroundColorstring'#e0e0e0'Couleur d’arrière-plan de la piste.
state'default' | 'error' | 'success' | 'warning''default'Définit l’état visuel du composant.
showLabelbooleanfalseAffiche la valeur de progression sous forme de texte.
formatValue(value: number) => string(v) => ${v}%Fonction permettant de personnaliser le format du texte affiché et de la valeur ARIA.
indeterminatebooleanfalseDisplays an animated, indeterminate progress bar.
indeterminateLabelstring''La aleur de l'étiquette de l'état indéterminé.

Attributs d'accessibilité

AttributValeur dynamique / fixeDescription
role"progressbar"Indique aux lecteurs d’écran qu’il s’agit d’une barre de progression.
aria-valueminminSpécifie la valeur minimale possible.
aria-valuemaxmaxSpécifie la valeur maximale possible.
aria-valuenowmodelValue (clampée entre min et max)Représente la valeur actuelle.
aria-valuetextformatValue(modelValue)Fournit une version textuelle lisible de la valeur, utile pour les lecteurs d’écran.
tabindex0Permet la navigation clavier sur le composant.

Attributs de validation HTML

AttributSupportDescription
minDéfinit la valeur minimale acceptée pour la progression.
maxDéfinit la valeur maximale acceptée pour la progression.
value / modelValueDéfinit la valeur actuelle de la progression.

Accessibilité

Le composant SuProgress respecte les normes WCAG 2.1 niveau AA et les bonnes pratiques du W3C. Il est conçu pour être navigable au clavier, lisible par les lecteurs d’écran et visuellement contrasté, garantissant ainsi une expérience inclusive pour tous les utilisateurs.

Fonctionnalités d'accessibilité

Le composant intègre plusieurs attributs ARIA et comportements garantissant son accessibilité :

  • Le rôle progressbar permet aux technologies d’assistance de reconnaître le composant comme une barre de progression.

  • Les attributs aria-valuemin, aria-valuemax et aria-valuenow décrivent précisément la plage et la valeur courante de la progression.

  • L’attribut aria-valuetext fournit une version textuelle de la valeur, utile pour les utilisateurs de lecteurs d’écran.

  • L’ajout de tabindex="0" rend le composant accessible via la navigation clavier.

  • Les couleurs de fond et de progression respectent les contrastes recommandés pour une lecture claire.

  • Les transitions visuelles sont douces pour éviter toute gêne visuelle (aucune animation agressive ou clignotante).

Publié sous licence MIT.