Fournit un moyen discret de répondre à des questions sur l'interface utilisateur ou d'ajouter quelques informations ou instructions à une interface. Elles offrent une aide ponctuelle et contextuelle et peuvent communiquer la valeur des fonctionnalités. Les infobulles apparaissent lorsque les utilisateurs cliquent, survolent ou activent un élément.
Les infobulles ne conviennent pas pour transmettre des informations ou des instructions qui sont essentielles à la réalisation d'une tâche.
Les infobulles doivent être utilisées de manière stratégique. Résistez à la tentation d'encombrer votre interface utilisateur avec des infobulles qui ne répondent pas à un besoin clair de l'utilisateur.
Do
Utilisez des infobulles pour fournir des informations supplémentaires, comme la raison pour laquelle un champ est répertorié.
Don't
Ne placez pas d'informations essentielles dans une infobulle.
Les infobulles ont un arrière-plan foncé sur lequel se superpose un texte blanc qui affiche clairement l'information. Un caret indique la provenance de l'infobulle.
On distingue trois variantes d'infobulles qui répondent à différents besoins de conception :
Infobulle de base : l'infobulle de base est utilisée pour donner des informations générales. Le texte est descriptif et lié au champ. L'infobulle de base peut également contenir des éléments interactifs tels que des boutons ou des liens.
Infobulle d'icône : l'infobulle d'icône permet de clarifier le nom du bouton de l'icône interactive et de décrire sa fonction.
Infobulle de définition : l'infobulle de définition définit une partie de texte prédéfinie.
Mettez une majuscule en début de phrase pour tous les aspects relatifs à la conception des interfaces de produit Guidewire. Ne mettez pas la 1re lettre du 1er mot du titre en majuscule.
Utilisez autant que possible des verbes au présent et la voix active.
Utilisez des contractions courantes pour donner à votre texte un ton plus naturel et informel.
Utilisez un langage simple. Évitez tout jargon inutile et les formulations complexes.
Le composant Infobulle Jutro affiche des informations supplémentaires lors d'un clic, du survol ou de l'activation. Bien qu'il existe trois options pour déclencher une infobulle, nous vous conseillons d'utiliser un clic ou l'activation du point de vue de l'accessibilité. En effet, permettre l'affichage d'une infobulle au survol uniquement signifie que les informations qu'elle contient ne seront pas disponibles pour les utilisateurs utilisant uniquement un clavier et un lecteur d'écran.
Interaction avec le lecteur d'écran : le composant Infobulle a le rôle WAI-ARIA de « tooltip » et hérite automatiquement de l'attribut aria-live. En tant que tel, le contenu de l'infobulle est lu par les lecteurs d'écran.
Interaction avec le clavier : l'infobulle devient visible lorsqu'elle est configurée pour s'afficher au moment de l'activation. Elle devient également visible lorsque l'infobulle est configurée pour s'afficher lors d'un clic, car l'événement clavier est lié au clic par un programme.
Ce composant a été validé pour répondre aux directives d’accessibilité WCAG 2.2 AA dans sa configuration de base par défaut. Il s’agit notamment de s’assurer que :
Le rapport de contraste des éléments textuels par rapport à leur arrière-plan est supérieur à 4.5:1.
Le contenu non textuel qui doit transmettre le sens (comme les icônes et les indicateurs de focus) a un rapport de contraste d’au moins 3:1 avec ses couleurs adjacentes.
Cet élément peut être utilisé à l’aide d’un clavier et d’une souris.
Le contenu est accessible à l’aide de lecteurs d’écran, tels que JAWS et VoiceOver.
La conformité de l’accessibilité dépend en définitive de la façon dont ce composant est implémenté et personnalisé. Les modifications apportées par l’auteur du contenu peuvent affecter l’accessibilité. Pour en savoir plus sur notre modèle de responsabilité partagée, consultez notre Déclaration d’accessibilité Jutro complète.
Lorsque l'info-bulle est rejetée/fermée, assurez-vous que le focus est conservé sur l'élément qui l'a appelé.
Vérifiez les seuils de contraste des couleurs entre le texte et l'arrière-plan si vous appliquez des couleurs personnalisées à l'élément.
Note: Certaines configurations du composant Infobulle ne sont pas compatibles avec l'accessibilité.
Le déclencheur « Mouseenter » n'est disponible que pour les utilisateurs de souris. Le fait d'accéder au composant par tabulation, puis d'essayer de le déclencher n'affiche pas l'infobulle. Cela signifie que l'infobulle est inaccessible pour les utilisateurs qui utilisent un clavier.
Définir le paramètre « Masquer lors d'un clic » sur false ne répondrait pas à l'exigence WCAG 2.1 « Contenu lors du survol ou de l'activation », car il n'est pas possible de supprimer l'infobulle. L'infobulle peut masquer le contenu qu'un utilisateur doit lire.
Il existe deux composants différents qui implémentent les spécifications « Infobulle ». Bien que le composant Tooltip soit capable de prendre en charge tous les scénarios, le composant TooltipIcon n'est pris en compte que lorsque l'infobulle est associée à une icône. Reportez-vous à la section Exemples pour connaître les cas d'utilisation.
Infobulle
importReactfrom'react'; import{Tooltip,Button}from'@jutro/components'; exportconstBasicTooltip=()=>{ return( <Tooltipcontent="This is a tooltip"> <Buttonlabel="Move the cursor here"/> </Tooltip> ); };
TooltipIcon
import{TooltipIcon}from'@jutro/components'; importReactfrom'react'; exportconstTooltipIconBasic=()=>{ return<TooltipIcontext="This is a tooltip"/>; };
Assurez-vous de comprendre la surface de l'API des composants du système de conception, ainsi que les implications et les compromis. Pour en savoir plus, reportez-vous à notre introduction à l'API des composants.
Warning: Toute propriété Tooltip qui n'est pas incluse dans la liste ci-dessous est considérée comme un détail d'implémentation interne et n'est pas soumise à la politique de modifications majeures.
If set to true, the tooltip disappears if a mousedown event is fired outside of it. If set to false, it is not possible to close the tooltip. If 'toggle' option is used, the tooltip will be closed when clicking on the element again. In all cases, trigger property needs to be set to 'click'.
Note: Il est nécessaire qu'une icône portant le même nom que celle transmise dans la propriété icon, mais avec le suffixe « -outlined », existe pour définir une icône spécifique. Si elle n'existe pas, l'icône par défaut sera toujours affichée.
Information from Field Component to link tooltip with related field. This property is not to be used out of the context of the @legacy input components.
Information from Field Component to the Tooltip Icon about the position of the label. This property is not to be used out of the context of the @legacy input components.
Information from Field Component. If set to true, the label is displayed inline. This property is not to be used out of the context of the @legacy input components.
Problème connu : le composant enfant nécessite une forwardRef
Si votre Tooltip ne fonctionne pas, il se peut que vous rencontriez un problème connu : le composant enfant nécessite une forwardRef pour que l'infobulle fonctionne.
La solution pour les composants qui n'ont pas de forwardRef consiste à les encapsuler dans un <span>.
import{Badge,Tooltip}from'@jutro/components'; importReactfrom'react'; exportconstTooltipNoRef=()=>{ return( <Tooltip content="This badge does not have a forward ref but it really needs a tooltip" showOnInit > <span> <Badge value={7} type="primary" /> </span> </Tooltip> ); };
Si vous placez un élément non focalisable dans un Tooltip, l'élément recevra l'étiquette aria-expanded="true". Il s'agit d'un code HTML incorrect. Pour éviter ce problème, veillez à placer uniquement des éléments activables dans Tooltip.
Infobulle de base ajoutée à un composant Button. L'infobulle s'affiche lorsque le curseur est déplacé sur le bouton.
importReactfrom'react'; import{Tooltip,Button}from'@jutro/components'; exportconstBasicTooltip=()=>{ return( <Tooltipcontent="This is a tooltip"> <Buttonlabel="Move the cursor here"/> </Tooltip> ); };
Utilisation de différents déclencheurs et positions
Vous pouvez déclencher l'infobulle lors d'un clic, d'un focus ou à l'entrée de la souris. L'infobulle est affichée à un emplacement différent en fonction de la propriété placement.
import{Button,Tooltip}from'@jutro/components'; importReactfrom'react'; exportconstTooltipPlacementAndTriggers=()=>{ return( <> <Tooltip content="Tooltip displayed on the left" placement="left" trigger="click" > <Button label="Click trigger" style={{margin:'0 1rem 0 0'}} /> </Tooltip> <Tooltip content="Tooltip displayed on the top" placement="top" trigger="click focus" > <Button label="Focus trigger" style={{margin:'0 1rem 0 0'}} /> </Tooltip> <Tooltip content="Tooltip displayed on the right" placement="right" trigger="mouseenter" > <Buttonlabel="Mouse enter trigger"/> </Tooltip> </> ); };
Il est possible de décider quand l'infobulle se ferme après avoir été déclenchée par un clic :
lorsqu'il y a un clic sur d'autres parties de l'écran
lorsque l'utilisateur clique à nouveau sur le composant
jamais
import{Button,Tooltip}from'@jutro/components'; importReactfrom'react'; exportconstTooltipHideOnClickOptions=()=>{ return( <divstyle={{display:'flex',gap:'1rem',flexWrap:'wrap'}}> <Tooltip content="Click outside to close" placement="top" trigger="click" > <Buttonlabel="hideOnClick = true"/> </Tooltip> <Tooltip content="Click again on the button to hide" placement="top" hideOnClick="toggle" trigger="click" > <Buttonlabel="hideOnClick = toggle"/> </Tooltip> <Tooltip content="Cannot be closed" placement="top" hideOnClick={false} trigger="click" > <Buttonlabel="hideOnClick = false"/> </Tooltip> </div> ); };
Ajouter une nouvelle ligne dans un message d'infobulle
Il est possible d'avoir plusieurs lignes dans une infobulle de 2 manières différentes :
Option 1 : en interpolant le message avec un caractère de nouvelle ligne.
import{Button,Tooltip}from'@jutro/components'; importReactfrom'react'; exportconstTooltipNewlineInterpolate=()=>{ return( <Tooltip content={{ defaultMessage:'This is a tooltip {br} this is a new line', args:{br:<br/>}, }} placement="top" trigger="click" > <Buttonlabel="Click to open"/> </Tooltip> ); };
Option 2 : en transmettant un élément JSX comme contenu.
import{Button,Tooltip}from'@jutro/components'; importReactfrom'react'; exportconstTooltipNewlineJsx=()=>{ return( <Tooltip content={ <p> This is a tooltip <br/> this is a new line </p> } placement="top" trigger="click" > <Buttonlabel="Click to open"/> </Tooltip> ); };