modul-components icon indicating copy to clipboard operation
modul-components copied to clipboard

MODUL-500 - Améliorer la sémantique du composant Radio

Open Atiomi opened this issue 7 years ago • 12 comments

@ulaval/modul-components

PR Checklist

  • [x] Provide a small description of the changes introduced by this PR Add tag prop to use custom html element as radio component wrapper
  • [ ] Include links to issues https://jira.dti.ulaval.ca/browse/MODUL-500
  • [ ] Openshift deployment requested

Atiomi avatar Oct 05 '18 17:10 Atiomi

@Atiomi, je me demandais dans quel contexte on avait besoin d'un autre tag que le li standard, dans quels cas la liste ne convient pas sémantiquement ?

jipigi avatar Oct 10 '18 16:10 jipigi

Le li ne convient pas dans les cas ou le composant est utilisé seul. Oui, idéalement ça ne devrait pas arriver souvent avec un radio, mais dans la vrai vie avec la séparation des contenus en composants c'est possible. C'est déjà le cas dans Brio et ça force à avoir une structure bizarre du genre ul>li>ul>li.

Si on préfère que le composant n’apporte pas de sémantique, le root devrait être un span plutôt qu'un div.

Atiomi avatar Oct 11 '18 20:10 Atiomi

Exact, un <span> serait encore mieux . Par contre faudrait voir tout les impacts, a ce que je vois le radio peut être utilisé dans le radio-group ou un button-group et son affichage change selon le parent (par example la méthode isButton()) . Idéalement un composant devrait indépendant de son parent (ie ne jamais faire getParent()) les this.$parent c'est mal! 📣

https://github.com/pablohpsilva/vuejs-component-style-guide#avoid-thisparent

chuckmah avatar Oct 12 '18 13:10 chuckmah

Exact, un <span> serait encore mieux . Par contre faudrait voir tout les impacts, a ce que je vois le radio peut être utilisé dans le radio-group ou un button-group et son affichage change selon le parent (par example la méthode isButton()) . Idéalement un composant devrait indépendant de son parent (ie ne jamais faire getParent()) les this.$parent c'est mal! 📣

https://github.com/pablohpsilva/vuejs-component-style-guide#avoid-thisparent

Après avoir fait le tour de vos commentaires, j'aurais tendance à dire que le <span> me semble la meilleure approche point de vue sémantique et le plus flexibles pour les différents use cases.

fredduguay avatar Oct 12 '18 13:10 fredduguay

Ça fait 4 versions qu'on repousse ce PR, est-ce qu'on a un concensus avec le span ?

jipigi avatar Nov 05 '18 17:11 jipigi

J'ai changé la valeur par défaut pour un span et j'ai géré le cas du radio-group. Ensuite, en ce qui concerne le style guide auquel @chuckmah fait référence, ça semble très intéressant, mais il faudrait recommencer à zéro bcp de chose...

Atiomi avatar Nov 06 '18 17:11 Atiomi

@setur52 lorsque le radio est dans un radio-group, le tag est par défaut un li.

Atiomi avatar Nov 12 '18 21:11 Atiomi

@Atiomi, est-ce que tu pourrais nous donner les cas de la vraie vie où ton radio bouton doit être tout seul. Je n'arrive pas à comprendre comment tu peux justifier ça dans une interface. Normalement, on utilise la case à cocher pour les champs de type "J'accepte les modalités" ou "Recevoir les offres promotionnelles". Un bouton radio seul ne se désélectionne pas, alors c'est pas vraiment recommandé de l'utliser sans ses amis... Merci !

jipigi avatar Nov 22 '18 22:11 jipigi

Pourquoi c'est bloqué ça finalement? :)

setur52 avatar Jun 04 '19 15:06 setur52

@jipigi @raphpare Up?

setur52 avatar Jun 07 '19 19:06 setur52

Dans certains contextes comme dans les formulaires de Brio, il est impossible d'utiliser le composant m-radio-group. Il faut donc avoir un alternative à la balise racine <li> du composant m-radio.

Je crois comme @setur52 que le PR ne devrait plus être bloqué.

raphpare avatar Jun 07 '19 19:06 raphpare

@Atiomi est-ce que tu as eu le temps jeter un oeil là dessus ?

jipigi avatar Jun 14 '19 13:06 jipigi