Skip to content

useAnnouncer ​

Annonce un message aux lecteurs d'écran sans l'afficher : résultat d'une action, nombre de résultats, erreur. Les composants SurgeUI l'utilisent pour leurs annonces (sélection multiple, fichiers ajoutés, limite atteinte…).

Utilisation ​

vue
<script setup>
import { useAnnouncer } from '@surgeui/ds-vue'

const { announce } = useAnnouncer()

const save = async () => {
  await api.save()
  announce('Modifications enregistrées')
}

const upload = (file) => {
  if (file.size > MAX) {
    announce('Le fichier dépasse 5 Mo', { priority: 'assertive' })
  }
}
</script>

Hors composant (store, service), utilisez la fonction announce directement :

ts
import { announce } from '@surgeui/ds-vue'

announce('3 résultats')

Pourquoi un composable ? ​

Une région live (aria-live) n'est lue que si elle existe déjà quand son contenu change : une région insérée avec son texte est souvent ignorée. useAnnouncer :

  • crée deux régions persistantes (polie et assertive) au montage du premier composant, avant toute annonce ;
  • vide la région puis écrit le message après un court délai : un message identique au précédent est relu ;
  • efface le message après quelques secondes, pour qu'il ne soit pas relu au curseur virtuel ;
  • annonce dans le <dialog> modal ouvert s'il y en a un : le reste de la page y est inerte et ses régions se taisent.

Priorités ​

PrioritéUsage
polite (défaut)Information : action réussie, nombre de résultats, élément ajouté
assertiveInterrompt la lecture en cours : à réserver aux erreurs qui bloquent l'utilisateur

API ​

useAnnouncer() ​

RetourTypeDescription
announce(message: string, options?) => voidAnnonce un message
clear() => voidEfface les messages en attente ou affichés

Options d'announce ​

OptionTypeDéfautDescription
priority'polite' | 'assertive''polite'Priorité de l'annonce
clearAfternumber5000Délai avant d'effacer le message (ms) ; 0 pour le garder

Fonctions ​

FonctionDescription
announce(message, options?)Annonce hors composant (aucun effet côté serveur)
clearAnnouncements()Efface toutes les annonces

Migration

accessibility.announceToScreenReader() est obsolète : elle passe désormais par announce et sera retirée dans une prochaine version majeure.

Publié sous licence MIT.