Files
Falcon-PrestaShop-9/_dev/js/theme/utils/DynamicImportDOMEvents.js

43 lines
906 B
JavaScript

import $ from 'jquery';
class DynamicImportDOMEvents {
constructor({
importer,
events,
eventSelector,
preventDefault,
} = {}) {
this.eventSelector = eventSelector;
this.events = events;
this.eventsArray = events.split(' ');
this.preventDefault = preventDefault;
this.importer = importer;
this.fetchFiles = this.fetchFiles.bind(this);
this.bindEvents();
}
fetchFiles(e = false) {
if (e && this.preventDefault) {
e.preventDefault();
}
this.importer.loadFiles(() => {
if (e && this.eventsArray.includes(e.type)) {
$(e.target).trigger(e.type);
this.unbindEvents();
}
});
}
bindEvents() {
$(document).on(this.events, this.eventSelector, this.fetchFiles);
}
unbindEvents() {
$(document).off(this.events, this.eventSelector, this.fetchFiles);
}
}
export default DynamicImportDOMEvents;