hugin/scripts/csp/actions.js
2026-10-27 08:33:21 +01:00

22 lines
3.1 KiB
JavaScript

window.addEventListener('load', function () { setTimeout(function () {
var r = [];
function check(name, f) { try { r.push((f() ? 'OK ' : 'FEHLT') + ' ' + name); } catch (e) { r.push('FEHLER ' + name + ': ' + e); } }
function click(el) { el.dispatchEvent(new MouseEvent('click', { bubbles: true })); }
var q = function (s) { return document.querySelector(s); };
check('modal-open', function () { var b = q('[data-action="modal-open"]'); click(b); return q('#' + b.dataset.target).classList.contains('open') && document.body.classList.contains('modal-open'); });
check('modal-close', function () { var m = q('.modal-backdrop.open'); click(m.querySelector('[data-action="modal-close"]')); return !m.classList.contains('open') && !document.body.classList.contains('modal-open'); });
check('modal-backdrop', function () { var b = q('[data-action="modal-open"]'); click(b); var m = q('#' + b.dataset.target); click(m); return !m.classList.contains('open'); });
check('tab', function () { var t = document.querySelectorAll('[data-action="tab"]')[1]; click(t); return t.classList.contains('active') && q('#' + t.dataset.target).classList.contains('active'); });
check('dropdown', function () { var d = q('[data-action="dropdown"]'); click(d); return q('#' + d.dataset.target).classList.contains('open'); });
check('dropdown schließt bei Klick daneben', function () { click(document.body); return !q('.dropdown.open'); });
check('nav-dropdown', function () { var d = q('[data-action="nav-dropdown"]'); click(d); return d.closest('li').classList.contains('open'); });
check('toggle-class', function () { var e = q('[data-action="toggle-class"]'); var before = e.classList.contains(e.dataset.class); click(e); return e.classList.contains(e.dataset.class) !== before; });
check('sort', function () { var th = q('[data-action="sort"]'); click(th); return th.dataset.sort === 'asc'; });
check('toast + XSS-fest', function () { showToast('<img src=x>', 'success'); var t = q('.toast:last-child'); return t && t.querySelector('.toast-title').textContent === '<img src=x>' && !t.querySelector('img') && t.querySelector('.toast-icon-success'); });
check('demo-toast', function () { var n = document.querySelectorAll('.toast').length; click(q('[data-action="demo-toast"]')); return document.querySelectorAll('.toast').length === n + 1; });
check('toast-close', function () { var t = q('.toast'); click(t.querySelector('[data-action="toast-close"]')); return t.classList.contains('is-leaving'); });
check('theme-toggle', function () { var before = document.documentElement.dataset.theme; click(q('[data-action="theme-toggle"]')); return document.documentElement.dataset.theme !== before && getComputedStyle(q('#icon-sun')).display !== getComputedStyle(q('#icon-moon')).display; });
check('alert-dismiss', function () { var a = q('[data-action="alert-dismiss"]'); click(a); return a.closest('.alert').classList.contains('is-dismissing'); });
check('data-progress', function () { var b = q('[data-progress="80"]'); return b.style.width === '80%'; });
var m = document.createElement('pre'); m.id = 'actions'; m.textContent = r.join('\n'); document.body.appendChild(m);
}, 300); });