Skip to content

🐛 fix(analytics): crash de l'analytics si les composants ne sont pas tous importés - #1535

Open
keryanS wants to merge 1 commit into
mainfrom
fix/analytics-not-imported-component
Open

keryanS wants to merge 1 commit into
mainfrom
fix/analytics-not-imported-component

Conversation

@keryanS

@keryanS keryanS commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

@keryanS keryanS added this to the 1.15.4 milestone Sep 24, 2026
@keryanS
keryanS requested a lite review from Copilot September 24, 2026 14:57
@keryanS keryanS self-assigned this Sep 24, 2026
@keryanS keryanS added correctif Quelque chose ne fonctionne pas maj 1.15.0 labels Sep 24, 2026
@keryanS keryanS linked an issue Sep 24, 2026 that may be closed by this pull request

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

Les changements sont ciblés, cohérents avec les garde-fous existants (if (api.<component>)) et traitent directement la cause du crash (évaluation à l’import de sélecteurs dépendant de composants optionnels).

Review effort: Lite
Findings: None

What changed in this PR

Ce correctif vise à empêcher le chargement de l’intégration Analytics de planter lorsque certains composants DSFR ne sont pas importés (cas reproduit avec l’accordéon dans l’issue #1534). L’approche consiste à éviter toute évaluation “à l’import” de sélecteurs dépendant de namespaces de composants optionnels (ex: api.accordion.*), en les rendant paresseux via des getters.

Changes:

  • Remplacement de constantes de sélecteurs évaluées au chargement du module par des getters (get ...()) pour retarder l’accès à api.<component>.*.
  • Utilisation de joinSelector(...) pour appliquer correctement :not(...) même lorsque le sélecteur source contient plusieurs sélecteurs séparés par des virgules.
  • Harmonisation du pattern sur plusieurs composants (accordion, header, modal, navigation, sidemenu, tab, tooltip) exposant des sélecteurs basés sur api.<component>.<Selector>.*.
File Description
src/​dsfr/​analytics/​script/​integration/​component/​tooltip/​tooltip-selector.js Rend INPUT paresseux et compose le :not(...) via joinSelector pour éviter l’évaluation à l’import.
src/​dsfr/​analytics/​script/​integration/​component/​tab/​tab-selector.js Rend PANEL paresseux et applique :not(...) via joinSelector.
src/​dsfr/​analytics/​script/​integration/​component/​sidemenu/​sidemenu-selector.js Rend COLLAPSE paresseux pour ne pas toucher api.sidemenu.* tant que le composant n’est pas présent.
src/​dsfr/​analytics/​script/​integration/​component/​navigation/​navigation-selector.js Rend NAVIGATION et COLLAPSE paresseux et applique :not(...) via joinSelector.
src/​dsfr/​analytics/​script/​integration/​component/​modal/​modal-selector.js Rend MODAL paresseux et compose le sélecteur avec joinSelector.
src/​dsfr/​analytics/​script/​integration/​component/​header/​header-selector.js Rend HEADER et MODALS paresseux et applique :not(...) via joinSelector.
src/​dsfr/​analytics/​script/​integration/​component/​accordion/​accordion-selector.js Rend COLLAPSE paresseux, évitant le crash lors de l’import quand api.accordion est absent.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

correctif Quelque chose ne fonctionne pas maj 1.15.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Analytics] Bug bloquant analytics

2 participants