45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
class Component {
|
|
/**
|
|
* Generic constructor for all components
|
|
* @constructor
|
|
* @param {Element} el
|
|
* @param {Object} options
|
|
*/
|
|
constructor(classDef, el, options) {
|
|
// Display error if el is valid HTML Element
|
|
if (!(el instanceof Element)) {
|
|
console.error(Error(el + ' is not an HTML Element'));
|
|
}
|
|
|
|
// If exists, destroy and reinitialize in child
|
|
let ins = classDef.getInstance(el);
|
|
if (!!ins) {
|
|
ins.destroy();
|
|
}
|
|
|
|
this.el = el;
|
|
this.$el = cash(el);
|
|
}
|
|
|
|
/**
|
|
* Initializes components
|
|
* @param {class} classDef
|
|
* @param {Element | NodeList | jQuery} els
|
|
* @param {Object} options
|
|
*/
|
|
static init(classDef, els, options) {
|
|
let instances = null;
|
|
if (els instanceof Element) {
|
|
instances = new classDef(els, options);
|
|
} else if (!!els && (els.jquery || els.cash || els instanceof NodeList)) {
|
|
let instancesArr = [];
|
|
for (let i = 0; i < els.length; i++) {
|
|
instancesArr.push(new classDef(els[i], options));
|
|
}
|
|
instances = instancesArr;
|
|
}
|
|
|
|
return instances;
|
|
}
|
|
}
|