Le composant GJS échoue avec une erreur "helper indéfini" lorsqu'il est affiché via le service modal (Discourse 3.5.0)

Bonjour,

Pour faire suite à ce problème : J’ai créé le plugin minimal-modal-test comme suggéré.

  • Succès : Lorsque le composant modal du plugin de test (minimal-modal.gjs) ne contenait que des éléments de base (comme <p>, <textarea>, le composant DModal et DButton de base, et même des helpers intégrés comme #if pour les blocs conditionnels ou if utilisé pour l’icône du bouton de soumission), il s’affichait correctement sans erreur lorsqu’il était ouvert via modal.show() déclenché par le composant bouton ajouté via le transformateur de valeur post-menu-buttons. Cela confirme que le service modal de base, le rendu des composants, le transformateur de valeur et les helpers intégrés semblent fonctionnels isolément dans mon environnement (Discourse v3.5.0.beta3-dev).

  • Échec : L’erreur (TypeError: userProvidedCallback is undefined / précédemment Attempted to use a value as a helper... undefined) se reproduit de manière constante dès que j’ajoute le composant enfant <StarRatingInput> dans le template du modal (minimal-modal.gjs ou feedback-form-modal.gjs).

J’ai veillé à ce que le composant StarRatingInput lui-même utilise les solutions de contournement identifiées précédemment (SVG en ligne au lieu du helper dIcon, fonctions fléchées pour les méthodes comme starClass afin de corriger le contexte this, Array.from standard de JS au lieu du helper range). Le code interne de StarRatingInput semble correct maintenant.

Cela suggère que l’erreur est déclenchée par le rendu du composant imbriqué <StarRatingInput> (qui contient une boucle #each, des liaisons de classes dynamiques et des gestionnaires d’événements) à l’intérieur du composant modal parent dans ce contexte de rendu spécifique.

Étapes pour reproduire

  1. Vous exécutez la dernière version de l’environnement de développement Discourse.

  2. Connectez-vous en tant que n’importe quel utilisateur.

  3. Naviguez vers n’importe quel sujet et visualisez le premier message.

  4. Cliquez sur le bouton “Test Failing Modal” ajouté au menu du message.

  5. Ouvrez la console du développeur du navigateur.

Résultat attendu

Une simple boîte de dialogue modale devrait apparaître, contenant un champ de saisie d’évaluation par étoiles.

Résultat actuel

Le modal ne parvient pas à se rendre complètement. La console du navigateur affiche une erreur.