Comment OpenUI façonne les composants web
Si vous avez déjà créé un menu déroulant, une infobulle ou un popover personnalisé à partir de zéro, vous connaissez le coût : des dizaines de lignes de JavaScript, des attributs ARIA manuels, une logique de navigation au clavier et des incohérences entre navigateurs à corriger. OpenUI existe pour éliminer ce travail au niveau de la plateforme.
OpenUI est un groupe communautaire du W3C, pas une bibliothèque de composants ou un framework. Son objectif est d’identifier les patterns d’interface utilisateur courants sur le web, d’étudier comment les design systems existants les implémentent, et de travailler directement avec les éditeurs de navigateurs pour standardiser des solutions interopérables et accessibles de manière native.
Points clés à retenir
- OpenUI est un groupe communautaire du W3C qui standardise les patterns d’interface utilisateur courants en tant que fonctionnalités natives des navigateurs, réduisant le besoin d’implémentations JavaScript personnalisées.
- L’API Popover, l’API Invoker Commands et l’élément
<select>personnalisable sont déjà disponibles dans les navigateurs comme résultats directs du travail d’OpenUI. - Des propositions comme Interest Invokers, Focusgroup et les améliorations de combobox indiquent la direction que prend la plateforme.
- Avant de recourir à un composant tiers, vérifiez ce que le navigateur gère désormais nativement — cette liste s’allonge chaque année.
Ce que font réellement les standards web OpenUI
Le principe de base est simple : si chaque équipe reconstruit le même menu select, popover ou combobox avec du JavaScript personnalisé, c’est qu’il y a un problème au niveau de la plateforme. OpenUI documente ces patterns, propose des spécifications et pousse pour des implémentations natives dans les navigateurs afin que les développeurs cessent de réinventer la roue.
Le groupe se concentre sur les contrôles qui sont soit absents du HTML, soit présents sous une forme trop limitée pour être stylisés ou étendus — des éléments comme <select>, les popovers, les menus, les combobox et les infobulles.
Fonctionnalités pratiques déjà disponibles
L’API Popover pour l’interface utilisateur web
L’API Popover est l’un des résultats les plus directs de l’influence d’OpenUI. Elle offre aux développeurs un attribut natif popover qui gère le comportement d’affichage/masquage, le rendu en couche supérieure et le masquage automatique — sans JavaScript requis pour les fonctionnalités de base.
<button popovertarget="menu">Open Menu</button>
<div id="menu" popover>Menu content here</div>
Cela remplace des patterns qui nécessitaient auparavant un piégeage de focus personnalisé, un empilement de z-index et une détection de clic à l’extérieur.
L’API Invoker Commands pour le contrôle déclaratif de l’interface utilisateur
L’API Invoker Commands va encore plus loin et a récemment atteint un support de base dans les principaux navigateurs. En utilisant les attributs command et commandfor, les boutons peuvent déclencher de manière déclarative des actions sur des éléments cibles — basculer des popovers, ouvrir des dialogues ou lire des médias — sans écouteurs d’événements.
<button commandfor="my-dialog" command="show-modal">Open Dialog</button>
<dialog id="my-dialog">Dialog content</dialog>
Cela déplace la logique de contrôle de l’interface utilisateur du JavaScript vers le HTML, rendant les interactions plus faciles à lire, à maintenir et accessibles par défaut.
Discover how at OpenReplay.com.
CSS pour l’élément Select personnalisable
L’élément <select> a été notoirement difficile à styliser. Le travail d’OpenUI sur l’élément select personnalisable change la donne. Avec appearance: base-select, les navigateurs exposent la structure interne du select pour le ciblage CSS. Le pseudo-élément ::picker(select) vous permet de styliser directement le conteneur déroulant.
select {
appearance: base-select;
}
select::picker(select) {
border: 1px solid #ccc;
border-radius: 8px;
padding: 4px;
}
Cette fonctionnalité est encore expérimentale et actuellement mieux utilisée comme amélioration progressive, mais elle représente un changement significatif : des selects stylisés sans composant personnalisé ni wrapper JavaScript.
Ce qui est encore en cours de développement
Tout ce qu’OpenUI explore n’a pas encore été déployé. Plusieurs propositions sont actives mais pas encore standardisées :
- Interest Invokers — déclencher des popovers au survol ou au focus sans JavaScript
- Focusgroup — navigation au clavier déclarative à travers un groupe d’éléments, remplaçant la logique manuelle de
tabindexrotatif - Améliorations de combobox — un pattern de combobox natif et stylisable pour remplacer la combinaison courante
<input>+ listbox personnalisée
Ces propositions méritent d’être suivies. Elles indiquent la direction que prend la plateforme, même si le support des navigateurs est limité aujourd’hui.
Conclusion
Les standards web OpenUI réduisent progressivement les cas où vous avez besoin d’un composant personnalisé ou d’une implémentation JavaScript lourde. L’API Popover, l’API Invoker Commands et le CSS pour l’élément select personnalisable sont déjà utilisables. Les propositions encore en cours — Interest Invokers, Focusgroup, combobox — montrent la direction.
Avant de recourir à un composant tiers ou d’écrire une logique d’interaction personnalisée, vérifiez ce que la plateforme gère désormais nativement. OpenUI allonge cette liste chaque année.
FAQ
Oui. L'API Popover est prise en charge par tous les principaux navigateurs, y compris Chrome, Edge, Safari et Firefox. Elle gère nativement le comportement d'affichage/masquage, le rendu en couche supérieure et le masquage automatique. Pour les navigateurs plus anciens qui ne la prennent pas en charge, vous pouvez utiliser un polyfill ou un simple fallback JavaScript, mais la couverture de base est suffisamment large pour la plupart des cas d'usage en production.
L'API Popover gère spécifiquement le comportement d'affichage/masquage des popovers. L'API Invoker Commands est plus polyvalente. Elle permet aux boutons de déclencher de manière déclarative des actions sur n'importe quel élément cible en utilisant les attributs command et commandfor. Cela inclut l'ouverture de dialogues, le basculement de popovers et le contrôle de la lecture de médias, le tout sans écrire d'écouteurs d'événements JavaScript.
Pas complètement. La valeur appearance base-select et le pseudo-élément picker sont actuellement implémentés dans les navigateurs basés sur Chromium, les autres moteurs étant encore en phase d'expérimentation ou de discussion. Le support de Safari et Firefox est encore en cours. Si vous avez besoin d'un style cohérent pour les éléments select sur tous les navigateurs aujourd'hui, une approche d'amélioration progressive fonctionne mieux : utilisez base-select là où c'est supporté et revenez au style par défaut ailleurs.
Pas entièrement, mais cela réduit l'écart. OpenUI cible les patterns les plus courants comme les popovers, les selects et les dialogues que chaque bibliothèque reconstruit. À mesure que le support natif des navigateurs s'étend, les cas où vous avez besoin d'une abstraction tierce diminueront. Pour les composants complexes et hautement personnalisés, les bibliothèques offrent toujours de la valeur, mais le niveau de base ne cesse de s'élever.
Gain control over your UX
See how users are using your site as if you were sitting next to them, learn and iterate faster with OpenReplay. — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.