Open christophehenry opened 3 weeks ago
Bonjour,
Est-ce que l'événement natif "transitionend" pourrait faire l'affaire ?
dsfr(temp1).collapse.node.addEventListener("transitionend", () => {
alert('fin anim')
})
Keryan, pour l'équipe DSFR
Hmm… Je suis pas sûr… transitionend
est envoyé des qu'une transition se termine mais comment savoir si c'est bien celle qui cache la modale ?
Quoi qu'il en soit, ça pourrait être pratique de le wrap dans un évènement spécifique.
Car temp1 correspond à l'élément du DOM qui possède le collapse, il n'a qu'une transition sur cet élément.
En testant dans l'inspecteur : Sur la modal -> Click droit -> store as variable -> dans la console :
temp1.addEventListener("transitionend", () => {
alert('fin anim')
})
Cela semble fonctionner correctement.
Néanmoins, je suis d'accord qu'il pourrait être intéressant d'avoir l'événement directement dans l'api dsfr. Je le note pour les prochaines versions.
Si votre suggestion concerne un composant existant, merci de décrire le problème rencontré de façon claire et concise Les objets
Disclosure
(modale, accordéon, etc.) ont deux éènementsdsfr.conceal
etdsfr.disclose
qui indiquent que l'élément va apparaître ou disparaître mais le CSS a une transition qui empêche de savoir quand l'élément est entièrement visible ou invisible. Les objetsDisclosure
devraient lancer un évènementdsfr.concealed
etdsfr.disclosed
x secondes après l'envoi de l'évènementdsfr.conceal
oudsfr.disclose
pour synchroniser l'affichage.Cependant, la règle CSS peut être surchargée. Y a-t-il moyen de déterminer en JS le temps d'affichage ou de disparition ?