Skip to content

fix(visual): hide et masques appliqués aussi en style inline (règles !important en @layer) - #110

Merged
PrestaEdit merged 1 commit into
devfrom
fix/visual-hide-inline
Oct 2, 2026
Merged

PrestaEdit merged 1 commit into
devfrom
fix/visual-hide-inline

Conversation

@PrestaEdit

Copy link
Copy Markdown
Contributor

Symptôme (vérifié dans l'app sur la boutique Flashlight 9.2 Hummingbird) : un hide sur .header-top n'avait aucun effet, la capture restait identique (0 px changé).

Cause : visualCheckpoint() injectait seulement un <style> hors couche (display: none !important pour hide, visibility: hidden !important pour les masques). Hummingbird range les utilitaires Bootstrap dans @layer utilities (.d-md-block { display: block !important }). Pour les déclarations !important, une règle en couche l'emporte sur une règle hors couche : la règle de la lib perdait. Seul un style inline !important gagne toujours.

Correctif

  • PageScripts::APPLY_INLINE / RESTORE_INLINE : en plus du <style> (gardé, il couvre les éléments ajoutés ensuite), les éléments visés reçoivent la propriété en style inline !important (masques : descendants compris). Valeur et priorité d'origine mémorisées puis restaurées exactement, en ordre inverse, après la capture, y compris si elle échoue. Un sélecteur invalide n'empêche pas les autres.
  • Rendu inchangé quand rien ne s'oppose aux règles : les références existantes ne bougent pas.

Vérification

  • 5 nouveaux tests unitaires ; 504 tests verts sous PHP 8.1, 8.2, 8.3 et 8.4.
  • Chrome réel sur une page avec @layer utilities { .d-block { display:block !important } } : style seul → élément visible (bug reproduit) ; avec le correctif → caché ; après restauration → état d'origine (y compris un display: flex !important inline préexistant).

🤖 Generated with Claude Code

…!important en @layer)

Le <style> injecté perd face à un utilitaire !important déclaré en @layer
(Bootstrap de Hummingbird, ex. .d-md-block) : la zone restait visible.
Les éléments trouvés reçoivent désormais aussi display/visibility en
inline !important (descendants inclus pour les masques), valeurs
d'origine mémorisées puis restaurées après la capture, même en échec.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PrestaEdit
PrestaEdit merged commit 2536732 into dev Oct 2, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant