GJS-Komponente schlägt bei Anzeige über den Modal-Service mit "undefined helper"-Fehler fehl (Discourse 3.5.0)

Hallo,

Nachverfolgung dieses Problems: Ich habe, wie vorgeschlagen, das Plugin minimal-modal-test erstellt.

  • Erfolg: Wenn die Modal-Komponente (minimal-modal.gjs) des Test-Plugins nur grundlegende Elemente enthielt (wie <p>, <textarea>, die Kernkomponenten <DModal>, <DButton> und sogar integrierte Helfer wie #if für bedingte Blöcke oder if für das Symbol der Submit-Schaltfläche), wurde sie korrekt und ohne Fehler gerendert, wenn sie über modal.show() geöffnet wurde, was von der Schaltflächenkomponente ausgelöst wurde, die über den post-menu-buttons-Werttransformator hinzugefügt wurde. Dies bestätigt, dass der grundlegende Modal-Dienst, das Rendern von Komponenten, der Werttransformator und die integrierten Helfer in meiner Umgebung (Discourse v3.5.0.beta3-dev) isoliert zu funktionieren scheinen.

  • Fehler: Der Fehler (TypeError: userProvidedCallback is undefined / zuvor Attempted to use a value as a helper... undefined) tritt konsistent wieder auf, sobald ich die Kindkomponente <StarRatingInput> wieder in die Vorlage des Modals (minimal-modal.gjs oder feedback-form-modal.gjs) einfüge.

Ich habe sichergestellt, dass die StarRatingInput-Komponente selbst die zuvor identifizierten Workarounds verwendet (Inline-SVG anstelle des dIcon-Helfer, Pfeilfunktionen für Methoden wie starClass, um den this-Kontext zu beheben, Standard-JS Array.from anstelle des range-Helfers). Der interne Code von StarRatingInput scheint jetzt korrekt zu sein.

Dies deutet darauf hin, dass der Fehler durch das Rendern der verschachtelten <StarRatingInput>-Komponente (die eine #each-Schleife, dynamische Klassenbindungen und Ereignisbehandler enthält) innerhalb der übergeordneten Modal-Komponente in diesem spezifischen Rendering-Kontext ausgelöst wird.

Schritte zur Reproduktion

  1. Sie führen die neueste Discourse-Entwicklungsumgebung aus.

  2. Melden Sie sich als beliebiger Benutzer an.

  3. Navigieren Sie zu einem beliebigen Thema und zeigen Sie den ersten Beitrag an.

  4. Klicken Sie auf die Schaltfläche „Test Failing Modal“, die dem Beitragsmenü hinzugefügt wurde.

  5. Öffnen Sie die Entwicklerkonsole des Browsers.

Erwartetes Ergebnis

Ein einfaches modales Dialogfeld sollte erscheinen, das eine Sternbewertungseingabe enthält.

Tatsächliches Ergebnis

Das Modal wird nicht vollständig gerendert. Die Browserkonsole zeigt einen Fehler an.