Open kopecmi8 opened 6 years ago
I like it. Have you test it?
Yes, I tested and it should be compatible with usage in old way style, and it works as I wrote in examples. But I just tested It only on one project. Now I plan, release own NPM package for testing purpose on more projects.
But I would like if you will tested too and this can become part of official plugin, because I am not such a JavaScript expert ;-) I just want to use this amazing plugin with Webpack, and its nowadays not possible.
Zjistil jsem že je ještě potřeba vyčlenit tělo z metody initOnLoad. Toto je problém přímo toho jak je špatně udělané původní nette-forms. V továrně je tato podmínka:
if (init) {
global.Nette.initOnLoad();
}
K zavolání této metody ale dojde jen když je knihovna použita přímým vložením do DOM. Pokud ji chceme použít jako modul musíme jí zavolat manuálně. (Je zajímavé že v komentáři je označení @private) Pokud to neuděláme funguje validace pouze v ajaxovém módu.
Člověk by si řekl, že tedy zavolá metodu initOnLoad manuálně nehledě na private komentář. Jenže je problém, že metoda používá event DOMContentLoaded, který se firuje pouze při načtení stránky, a pokud použiji modul například asynchronně tato událost už mohla dávno nastat a její zavolání proto nic neudělá.
Vyčlenil jsem proto tělo funkce volané při eventu do vlastní metody ìnit
, kterou je potřeba zavolat v patřičnou chvíli. Sám programátor modulu má pak na starost aby ji zavolal v pravou chvíli, tedy pod DOM ready.
Ahoj @kopecmi8. Bezi ti to tedka na nejakem projektu?
@f3l1x Jo běží. Já jsem si to tenkrát vydal jako vlastní balíček https://www.npmjs.com/package/live-form-validation-es6 Ale řešil jsem to kvůli projektu ve staré práci, a teď už k němu nemám přístupy...
Ahoj @kopecmi8. Nemohl by jsi to rebasnout?
@kopecmi8 Ping. Prosim o rebase.
Because of integration of modified Nette Forms into your plugin is nowdays unusable as module in ES6 syntax. Nette Form contains module export factory and funcionality of your plugin is unreachable.
This commit add support for use this plugin as module. Focus on this example usage with ES6 module syntax:
Or with NodeJs module syntax: