[spip-dev] Interface Rôles cassé (depuis le début), inutilisable la moitié du temps

Help, si vous avez des idées qui vous viennent, de choses à tester…

Je mets ça là car ça concerne un plugin mais qui à terme devrait être dans le noyau (puisque l'API y est déjà).

La partie interface de l'API Rôles est donc pour l'instant à part en plugin. Ça utilise la lib dropdown de Bootstrap et depuis le début il y a un problème. Le menu est positionné en absolu, mais son "contexte" de calque est celui de la boite de liens. Et du coup le menu passe en fait SOUS toutes les autres boites qui seraient en dessous. Donc concrètement si on a une boite de liens avec rôles et dessous aucun contenu qui fasse de la place mais directement une autre boite (GIS par ex ou autre), et bien quand on ouvre le menu déroulant, il passe dessous.

Les rôles sont donc littéralement inutilisable (impossible d'accéder aux boutons d'ajouter/retrait) dans un très grand nombre de cas.

Au niveau technique, le problème est
- un mélange de styles du privé bourrés de position:relative à tous les niveaux
- et (de mon point de vue) de la librairie de Bootstrap qui est de la merde :slight_smile: et qui se base que sur CSS.

Alors que comme c'est en JS de toute façon, d'après moi, une lib "dropdown" qui fait bien les choses, devraient toujours s'arranger d'elle-même pour qu'un menu qu'on demande explicitement à ouvrir soit TOUJOURS au-dessus de tout. En effet, dans un contexte modulaire, quand tu ajoutes un dropdown dans une appli, tu n'es pas du tout en mesure forcément de changer l'ensemble des CSS qui te gênent pour bien que le calque soit au-dessus, donc on peut pas de mander aux devs utilisateurs de dropdown "ah oui mais en fait il faut que tous les parents soient comme ci comme ça pour que ça marche" : si c'est ça : c'est de la merde !

J'ai tenté de mettre à jour avec le JS de Bootstrap 4.4 tout dernier et… ça ne marche toujours pas, la lib fonctionne pareil qu'avant, que en CSS pour positionner.

Donc
- si vous avez un truc magique en CSS qui permettrait de repasser au-dessus (protip : à priori c'est rigoureusement impossible)
- ou bien il faut changer de lib JS complètement et en trouver une mieux faite ?

Avec la façon dont c'est conçu dans le dropdown de bootstrap, ça m'a l'air mission impossible aussi.
Et aucune réponse convaincante les quelques fois où le problème a été évoqué dans leurs tickets.

À mon avis, autant basculer vers une autre lib qui gère ce problème correctement, exactement comme tu disais : en copiant le dropdown à la fin du body pour être sûr qu'il soit au-dessus de tout le reste.
C'est la méthode employée par Select2, par exemple.