31 lines
945 B
JavaScript
31 lines
945 B
JavaScript
function syncToggle(toggle) {
|
|
const targetId = toggle.dataset.toggleTarget;
|
|
const content = document.querySelector(`[data-toggle-content="${targetId}"]`);
|
|
const input = document.getElementById(targetId);
|
|
if (!content || !input) {
|
|
return;
|
|
}
|
|
content.hidden = !toggle.checked;
|
|
input.disabled = !toggle.checked;
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
document.querySelectorAll('[data-toggle-target]').forEach(syncToggle);
|
|
});
|
|
|
|
document.addEventListener('change', function (event) {
|
|
if (event.target.matches('[data-toggle-target]')) {
|
|
syncToggle(event.target);
|
|
}
|
|
if (event.target.matches('[data-submit-on-change="true"]')) {
|
|
event.target.form.submit();
|
|
}
|
|
});
|
|
|
|
document.addEventListener('submit', function (event) {
|
|
const message = event.target.dataset.confirm;
|
|
if (message && !window.confirm(message)) {
|
|
event.preventDefault();
|
|
}
|
|
});
|