yakamara / yform

YForm für REDAXO 5 – Formulare im Frontend und Backend mit Verwaltung von Datenbank-Tabellen.
MIT License
77 stars 55 forks source link

Update widget.js with rex:YForm_selectData #1484

Closed ynamite closed 7 months ago

ynamite commented 7 months ago

Fixes https://github.com/yakamara/yform/issues/1483

skerbis commented 7 months ago

@dergel - getestet und behebt das Problem.

ynamite commented 7 months ago

@skerbis bedingt Anpassungen bei mform (da neu native JS Implementierung erwünscht) https://github.com/FriendsOfREDAXO/mform/pull/307

dergel commented 7 months ago

@ynamite Danke für die Anpassungen. :)

Wie das die AddOns implementieren, ist mir egal. Das kann jeder für sich entscheiden.

ynamite commented 7 months ago

Damit wirst du aber Addon-Entwickler vor den Kopf stossen, da wie @skerbis schreibt, einige Addons davon abhängig sind und weiterhin auf jQuery setzen. Siehe:

Achtung es hat auch Auswirkung auf CKE5, mform, mblock, redactor, TinyMCE und Co. ... ich finde es nicht gut, dass wir jetzt sämtliche AddOns anpassen müssen. Bitte lasst das Jquery erstmal drin. Das bekommen wir so schnell nicht gefixt. @dergel Das muss vorbereitet sein. - Ich habe dafür zu wenig JS-Fähigkeiten und die Devs der betreffenden AddOns können das auch nicht adhoc anpassen. Gerade bei CKE5 müsste ein komplettes neues Build erzeugt werden.

https://github.com/yakamara/yform/issues/1483#issuecomment-1978721941

skerbis commented 7 months ago

Puh! Danke. :-) Beim Release darauf hinweisen. Vielleicht könnte man noch Tipps zur Umsetzung machen? (Ich habe Null Peil davon)

ynamite commented 7 months ago

Umsetzung ist fast identisch wie zuvor:

opener_id = 'unique-id';
window.addEventListener('rex:YForm_selectData_' + opener_id, (event) => {
        const id = event.detail.id;
        const value = event.detail.value;
        const multiple = event.detail.multiple;
        ...
})

zumindest im Falle von mform. Für andere Zwecke muss über lang oder kurz eine robustere Lösung her. Sinnvoll wäre eh eine Art event bus für Redaxo, damit Events registriert werden können, die Redaxo dann auch wieder aufräumt. Momentan wird bei jedem mblock bzw. jeder mform ein neuer Event auf das Fenster gelegt, das kann schon zu Konflikten führen, wenn die nicht removed werden.