feat(main): Add base theme: This is the falcon theme out of the box.
This commit is contained in:
42
_dev/js/theme/utils/DynamicImportDOMEvents.js
Normal file
42
_dev/js/theme/utils/DynamicImportDOMEvents.js
Normal file
@ -0,0 +1,42 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user