Groupe de boutons
Assemble des boutons en un seul contrôle segmenté : bordures fusionnées, coins arrondis aux extrémités seulement. La rangée est un objet unique, donc c'est le groupe qui décide de son dessin, depuis le fait même d'assembler les boutons jusqu'à la variante, le ton, la taille et la densité que chacun d'eux reprend.
Utilisation
Exemples
Variantes et tons
variant et tone se posent une fois sur le groupe. La variante l'emporte sur celle donnée à un bouton ; le ton n'est qu'une valeur de repli.
Un segment, un autre ton
Un segment garde son propre tone face au groupe, ce qui permet à une rangée neutre de porter une seule action destructrice.
Orientation
vertical empile les segments en colonne plutôt qu'en rangée, la jonction suivant l'axe.
Séparés
detached laisse les boutons séparés, chacun gardant ses coins et ses bordures, le groupe continuant de transmettre ses props d'apparence.
Sans traits
seamless retire les traits dessinés à chaque jonction, ne laissant qu'un seul cadre aux bords extérieurs intacts.
Surélevé
elevated donne l'ombre à la rangée plutôt qu'à chaque segment. En mode détaché, chaque bouton porte de nouveau la sienne.
Tailles
size définit la hauteur de chaque segment : 24, 32, 40, 48 ou 56 pixels. Elle l'emporte sur celle donnée à un bouton.
Compact
compact retire 4px à la hauteur de chaque segment.
Pleine largeur
fullWidth étire la rangée sur son parent et donne à chaque segment une part égale de cette largeur.
Avec des icônes
Les segments portent iconStart et iconEnd comme n'importe quel bouton. Un VIconButton est aussi un segment, et demande toujours son label.
Lien
Un segment auquel on donne un href rend un <a>. Un lien désactivé voit son adresse retirée, ce qui le laisse ni focalisable ni suivable.
États
disabled posé sur le groupe s'ajoute à celui de chaque bouton : un segment ne peut pas se réactiver une fois la rangée coupée. loading reste propre au bouton.
API
Props
| Prop | Type | Défaut |
|---|---|---|
orientation | ButtonGroupOrientation'horizontal' | 'vertical' | 'horizontal' |
Le sens dans lequel les boutons sont assemblés : une rangée par défaut, ou une colonne avec vertical. | ||
detached | boolean | false |
| Laisse les boutons séparés, avec un écart entre eux et chacun gardant ses propres coins, au lieu de les assembler en contrôle segmenté. Tout ce que le groupe transmet circule toujours, et une rangée surélevée laisse alors chaque bouton porter sa propre ombre. | ||
seamless | boolean | false |
Retire les traits entre les boutons assemblés : aucune couture n'est dessinée, et les bordures des deux côtés de chaque arête partagée sont effacées, si bien que la rangée se lit comme un cadre unique plutôt que comme des segments. Les arêtes extérieures restent. Sans effet sous detached, où aucune arête n'est partagée. | ||
fullWidth | boolean | false |
Étire la rangée sur toute la largeur de son parent, chaque segment prenant une part égale de cette largeur quel que soit son libellé. Un segment ne descend jamais sous la largeur de son propre libellé : une rangée de libellés trop longs pour le parent le déborde au lieu d'être écrasée. Sous vertical, il ne reste que la largeur, une colonne étirant déjà chaque segment. | ||
variant | ButtonVariant'solid' | 'outline' | 'ghost' | 'soft' | aucune |
Le poids visuel que porte chaque segment, sur les valeurs de VButton : solid, outline, ghost ou soft. Il l'emporte sur la variante donnée à un bouton, un segment d'une autre silhouette ne se lisant plus comme un morceau de la rangée. Omis, chaque bouton garde la sienne. | ||
tone | ButtonTone'accent' | 'neutral' | 'danger' | aucune |
La couleur des segments, parmi accent, neutral et danger. Celui-ci est un repli et non un ordre : un bouton qui nomme son propre ton le garde, ce qui permet à une seule action destructrice de se signaler dans la rangée. | ||
size | ButtonSize'xs' | 'sm' | 'md' | 'lg' | 'xl' | aucune |
La hauteur des segments, tirée de l'échelle de tailles partagée par tous les contrôles : xs, sm, md, lg ou xl. Elle l'emporte sur la taille donnée à un bouton. Omise, chaque bouton garde la sienne. | ||
compact | boolean | aucune |
| Retire 4px à la hauteur de chaque segment. Il l'emporte sur la valeur donnée à un bouton. Omis, chaque bouton garde la sienne. | ||
elevated | boolean | aucune |
| Soulève la rangée avec l'échelle d'ombres, aux conditions de la prop de VButton. L'ombre est celle de la rangée et non celle de chaque segment, ce qui garde les joints nets : trois ombres qui se chevauchent y dessineraient une bande sombre. Il l'emporte sur la valeur donnée à un bouton. Omis, chaque bouton garde la sienne. | ||
disabled | boolean | aucune |
| Rend chaque segment inutilisable. Celui-ci s'ajoute au lieu de trancher : un bouton qui se désactive lui-même le reste dans une rangée qui ne dit rien, et un segment ne peut pas se réactiver une fois la rangée éteinte. | ||
label | string | aucune |
Ce que les lecteurs d'écran annoncent pour la rangée, qui est un role="group" : « Mise en forme », « Affichage ». Un groupe sans nom est annoncé comme un simple groupe. Un aria-label ou un aria-labelledby posé par le consommateur l'emporte. | ||
Slots
| Slot | Type |
|---|---|
default | {} |
| Les VButton et VIconButton à assembler. | |