Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for modules #49

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

kopecmi8
Copy link

@kopecmi8 kopecmi8 commented Nov 27, 2018

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:

import LiveFormValidation from 'live-form-validation-es6';

window.LiveForm = LiveFormValidation.LiveForm;
window.Nette = LiveFormValidation.Nette;

Or with NodeJs module syntax:

const liveFormValidation = require('live-form-validation-es6');

window.LiveForm = liveFormValidation.LiveForm;
window.Nette = liveFormValidation.Nette;

@f3l1x
Copy link
Member

f3l1x commented Nov 27, 2018

I like it. Have you test it?

@kopecmi8
Copy link
Author

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.

@kopecmi8
Copy link
Author

kopecmi8 commented Feb 5, 2019

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.

@f3l1x
Copy link
Member

f3l1x commented Feb 15, 2021

Ahoj @kopecmi8. Bezi ti to tedka na nejakem projektu?

@kopecmi8
Copy link
Author

@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...

@f3l1x
Copy link
Member

f3l1x commented Nov 24, 2021

Ahoj @kopecmi8. Nemohl by jsi to rebasnout?

@radimvaculik
Copy link
Member

@kopecmi8 Ping. Prosim o rebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants