こんにちは。
この問題について、ご提案いただいた通り minimal-modal-test プラグインを作成しました。
-
成功: テストプラグインのモーダルコンポーネント(
minimal-modal.gjs)に基本的な要素(<p>、<textarea>、コアの<DModal>、<DButton>、条件付きブロックに使用される#ifのような組み込みヘルパー、送信ボタンのアイコンに使用されるifなど)のみが含まれていた場合、post-menu-buttons値トランスフォーマー経由で追加されたボタンコンポーネントからトリガーされるmodal.show()によって開かれたときに、エラーなく正しくレンダリングされました。これは、私の環境(Discourse v3.5.0.beta3-dev)で、基本的なモーダルサービス、コンポーネントレンダリング、値トランスフォーマー、および組み込みヘルパーが単独で機能していることを確認するものです。 -
失敗: モーダルのテンプレート(
minimal-modal.gjsまたはfeedback-form-modal.gjs)に子コンポーネント<StarRatingInput>を再度追加した瞬間に、エラー(TypeError: userProvidedCallback is undefined/ 以前はAttempted to use a value as a helper... undefined)が一貫して再発します。
StarRatingInput コンポーネント自体には、以前特定された回避策(dIcon ヘルパーの代わりにインライン SVG、this コンテキストを修正するための starClass のようなメソッドのアロー関数、range ヘルパーの代わりに標準の JavaScript Array.from)を使用していることを確認しました。StarRatingInput の内部コードは、現在正しいように見えます。
これは、この特定のレンダリングコンテキスト内で、親モーダルコンポーネント内にネストされた <StarRatingInput> コンポーネント(#each ループ、動的なクラスバインディング、イベントハンドラーが含まれています)をレンダリングすることによってエラーがトリガーされていることを示唆しています。
再現手順
-
最新の Discourse 開発環境バージョンを実行している。
-
任意のユーザーとしてログインする。
-
任意のトピックに移動し、最初の投稿を表示する。
-
投稿メニューに追加された 「Test Failing Modal」 ボタンをクリックする。
-
ブラウザの開発者コンソールを開く。
期待される結果
シンプルなモーダルダイアログに、スターレーティング入力が表示される。
実際の結果
モーダルが完全にレンダリングされず失敗する。ブラウザコンソールにエラーが表示される。