Fix multiple js-initialization issues
This commit is contained in:
parent
997403d6be
commit
910d7a90fe
@ -118,23 +118,27 @@ document.addEventListener('setup', function(e) {
|
||||
return;
|
||||
|
||||
// initialize checkboxes
|
||||
Array.from(e.detail.scope.querySelectorAll('input[type="checkbox"]')).forEach(function(inp) {
|
||||
Array.from(e.detail.scope.querySelectorAll('input[type="checkbox"]:not(.js-initialized)')).forEach(function(inp) {
|
||||
window.utils.initializeCheckboxRadio(inp, 'checkbox');
|
||||
inp.classList.add("js-initialized");
|
||||
});
|
||||
|
||||
// initialize radios
|
||||
Array.from(e.detail.scope.querySelectorAll('input[type="radio"]')).forEach(function(inp) {
|
||||
Array.from(e.detail.scope.querySelectorAll('input[type="radio"]:not(.js-initialized)')).forEach(function(inp) {
|
||||
window.utils.initializeCheckboxRadio(inp, 'radio');
|
||||
inp.classList.add("js-initialized");
|
||||
});
|
||||
|
||||
// initialize file-upload-fields
|
||||
Array.from(e.detail.scope.querySelectorAll('input[type="file"]')).forEach(function(inp) {
|
||||
Array.from(e.detail.scope.querySelectorAll('input[type="file"]:not(.js-initialized)')).forEach(function(inp) {
|
||||
window.utils.initializeFileUpload(inp);
|
||||
inp.classList.add("js-initialized");
|
||||
});
|
||||
|
||||
// initialize file-checkbox-fields
|
||||
Array.from(e.detail.scope.querySelectorAll('.js-file-checkbox')).forEach(function(inp) {
|
||||
Array.from(e.detail.scope.querySelectorAll('.js-file-checkbox:not(.js-initialized)')).forEach(function(inp) {
|
||||
window.utils.reactiveFileCheckbox(inp);
|
||||
inp.classList.add("js-initialized");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -3,6 +3,11 @@
|
||||
|
||||
document.addEventListener('setup', function DOMContentLoaded(e) {
|
||||
|
||||
console.log('dbtable', e);
|
||||
|
||||
if (e.detail.module && e.detail.module !== 'dbtable')
|
||||
return;
|
||||
|
||||
function setupAsync(wrapper) {
|
||||
|
||||
var table = wrapper.querySelector('#' + #{String $ dbtIdent});
|
||||
@ -66,16 +71,30 @@
|
||||
wrapper.innerHTML = data;
|
||||
|
||||
// set up async functionality again
|
||||
setupAsync(wrapper);
|
||||
table.querySelector('tbody').innerHTML = data;
|
||||
wrapper.classList.remove("js-initialized");
|
||||
document.dispatchEvent(new CustomEvent('setup', {
|
||||
detail: { scope: wrapper },
|
||||
bubbles: true,
|
||||
cancelable: true
|
||||
}));
|
||||
// table.querySelector('tbody').innerHTML = data;
|
||||
}).catch(function(err) {
|
||||
console.error(err);
|
||||
});
|
||||
}
|
||||
|
||||
wrapper.classList.add("js-initialized");
|
||||
}
|
||||
|
||||
var wrapperEl = e.detail.scope.querySelector('#' + #{String $ dbtIdent} + '-table-wrapper');
|
||||
var selector = '#' + #{String $ dbtIdent} + '-table-wrapper:not(.js-initialized)';
|
||||
var wrapperEl = e.detail.scope.querySelector(selector);
|
||||
if (wrapperEl)
|
||||
setupAsync(wrapperEl);
|
||||
else if (e.detail.scope.matches(selector))
|
||||
setupAsync(e.detail.scope);
|
||||
});
|
||||
})();
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new CustomEvent('setup', { detail: { scope: document.body, module: 'dbtable' }, bubbles: true, cancelable: true }));
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user