Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
// What the pages did in inline handlers, which the Content-Security-Policy
|
|
// does not run: a form sent when a choice changes, a confirmation before a
|
|
// removal, a field filled from the option chosen, and the live parts of the
|
|
// cluster and node pages refreshed only while the tab is in view.
|
|
(function () {
|
|
document.addEventListener('change', function (e) {
|
|
var t = e.target;
|
|
if (t.matches && t.matches('[data-autosubmit]') && t.form) {
|
|
t.form.submit();
|
|
}
|
|
if (t.matches && t.matches('[data-suggest-into]') && t.form) {
|
|
var f = t.form.elements[t.getAttribute('data-suggest-into')];
|
|
var o = t.selectedOptions[0];
|
|
if (f && o) { f.value = o.dataset.suggest || ''; }
|
|
}
|
|
});
|
|
document.addEventListener('submit', function (e) {
|
|
var msg = e.target.getAttribute && e.target.getAttribute('data-confirm');
|
|
if (msg && !window.confirm(msg)) { e.preventDefault(); }
|
|
});
|
|
// htmx's trigger filters are evaluated JavaScript; this is the same
|
|
// "only while visible" without them.
|
|
document.addEventListener('htmx:beforeRequest', function (e) {
|
|
if (document.visibilityState !== 'visible' && e.detail.elt.hasAttribute('data-visible-only')) {
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
})();
|