ferro-json-ui 0.2.48

JSON-based server-driven UI schema types for Ferro
Documentation
pub(super) const SOURCE: &str = r#"
    // ── Modal dialog wiring ───────────────────────────────────────────────

    function setupModals() {
        var openers = document.querySelectorAll('[data-modal-open]');
        for (var i = 0; i < openers.length; i++) {
            (function(btn) {
                var id = btn.getAttribute('data-modal-open');
                var dialog = document.getElementById(id);
                if (!dialog) return;
                btn.addEventListener('click', function() {
                    dialog.showModal();
                });
                dialog.addEventListener('click', function(e) {
                    var rect = dialog.getBoundingClientRect();
                    var inDialog = (
                        e.clientX >= rect.left && e.clientX <= rect.right &&
                        e.clientY >= rect.top && e.clientY <= rect.bottom
                    );
                    if (!inDialog) { dialog.close(); }
                });
                var closeBtn = dialog.querySelector('[data-modal-close]');
                if (closeBtn) {
                    closeBtn.addEventListener('click', function() {
                        dialog.close();
                    });
                }
            })(openers[i]);
        }
    }
"#;