@dzeio/form-manager
Version:
A powerfull Form Manager
82 lines (81 loc) • 3.39 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var AttributeListeners_1 = __importDefault(require("./attributes/AttributeListeners"));
var AttributesManager = (function () {
function AttributesManager(form) {
this.attributesArray = [];
this.eventsListenersItems = {};
this.form = form;
AttributesManager.instance = this;
}
AttributesManager.prototype.register = function () {
var attribute = [];
for (var _i = 0; _i < arguments.length; _i++) {
attribute[_i] = arguments[_i];
}
for (var _a = 0, attribute_1 = attribute; _a < attribute_1.length; _a++) {
var attr = attribute_1[_a];
this.attributesArray.push(attr.identity);
}
};
AttributesManager.prototype.trigger = function (event, data) {
if (!this.eventsListenersItems[event])
return true;
for (var _i = 0, _a = this.eventsListenersItems[event]; _i < _a.length; _i++) {
var el = _a[_i];
var res = el.trigger(event, data);
if (typeof res !== "undefined")
return res;
}
return true;
};
AttributesManager.prototype.triggerElement = function (event, input, data) {
if (!this.eventsListenersItems[event])
return true;
for (var _i = 0, _a = this.eventsListenersItems[event]; _i < _a.length; _i++) {
var el = _a[_i];
if (el.input === input) {
var res = el.trigger(event, data);
if (typeof res !== "undefined")
return res;
}
}
return true;
};
AttributesManager.prototype.onChange = function () {
var self = AttributesManager.instance;
self.trigger(AttributeListeners_1.default.CHANGE, self.form.inputs[this.name]);
};
AttributesManager.prototype.setup = function () {
for (var name_1 in this.form.inputs) {
if (!this.form.inputs.hasOwnProperty(name_1)) {
continue;
}
var el = this.form.inputs[name_1];
el.element.removeEventListener("keyup", this.onChange);
el.element.addEventListener("keyup", this.onChange);
el.element.removeEventListener("change", this.onChange);
el.element.addEventListener("change", this.onChange);
for (var key in this.attributesArray) {
if (!this.attributesArray.hasOwnProperty(key)) {
continue;
}
var element = this.attributesArray[key];
if (el.element.hasAttribute(element.dataElement)) {
var list = new element.attribute(el);
for (var _i = 0, _a = element.attribute.listeners; _i < _a.length; _i++) {
var listener = _a[_i];
if (this.eventsListenersItems[listener] == undefined)
this.eventsListenersItems[listener] = [];
this.eventsListenersItems[listener].push(list);
}
}
}
}
};
return AttributesManager;
}());
exports.default = AttributesManager;