Ciao,
In seguito a questo problema: ho creato il plugin minimal-modal-test come suggerito.
-
Successo: Quando il componente modale del plugin di test (
minimal-modal.gjs) conteneva solo elementi di base (come<p>,<textarea>, il core<DModal>,<DButton>, e persino helper integrati come#ifper blocchi condizionali oifusato per l’icona del pulsante di invio), veniva renderizzato correttamente senza errori quando aperto tramitemodal.show()attivato dal componente pulsante aggiunto tramite il trasformatore di valorepost-menu-buttons. Questo conferma che il servizio modale di base, il rendering dei componenti, il trasformatore di valore e gli helper integrati sembrano funzionare in isolamento nel mio ambiente (Discourse v3.5.0.beta3-dev). -
Fallimento: L’errore (
TypeError: userProvidedCallback is undefined/ precedentementeAttempted to use a value as a helper... undefined) ricompare in modo coerente non appena aggiungo il componente figlio<StarRatingInput>nuovamente nel template della modale (minimal-modal.gjsofeedback-form-modal.gjs).
Ho assicurato che il componente StarRatingInput stesso utilizzi i workaround identificati in precedenza (SVG inline invece dell’helper dIcon, funzioni freccia per metodi come starClass per correggere il contesto this, Array.from standard di JS invece dell’helper range). Il codice interno di StarRatingInput sembra corretto ora.
Ciò indica che l’errore viene attivato dal rendering del componente annidato <StarRatingInput> (che contiene un ciclo #each, binding di classi dinamici e gestori di eventi) all’interno del componente modale padre in questo specifico contesto di rendering.
Passaggi per Riprodurre
-
Stai eseguendo l’ultima versione dell’ambiente di sviluppo di Discourse.
-
Accedi come qualsiasi utente.
-
Naviga in qualsiasi argomento e visualizza il primo post.
-
Fai clic sul pulsante “Test Failing Modal” aggiunto al menu del post.
-
Apri la console per sviluppatori del browser.
Risultato Atteso
Dovrebbe apparire una semplice finestra di dialogo modale contenente un input per la valutazione a stelle.
Risultato Effettivo
La modale non riesce a renderizzarsi completamente. La console del browser mostra un errore.