Newer
Older
EnvoyControlPlane / static / js / components / modals.js
// static/js/components/modals.js
import { switchTab } from '../global_legacy.js'; // Temporary link to legacy switchTab if needed, or refactor it

export function showModal(modalId) {
    const modal = document.getElementById(modalId);
    if (modal) {
        modal.style.display = 'block';
    }
}

export function hideModal(modalId) {
    const modal = document.getElementById(modalId);
    if (modal) {
        modal.style.display = 'none';
    }
}

export function setupConfigModal(title, jsonData, yamlData, defaultTab = 'yaml') {
    document.getElementById('modal-title').textContent = title;
    document.getElementById('modal-json-content').textContent = JSON.stringify(jsonData, null, 2);
    document.getElementById('modal-yaml-content').textContent = yamlData;

    const modalContent = document.getElementById('configModal')?.querySelector('.modal-content');
    if (modalContent && window.switchTab) {
        window.switchTab(modalContent, defaultTab);
    }
    showModal('configModal');
}

export function setupEscKeyHandler(closeFunctions) {
    window.addEventListener('keydown', (event) => {
        if (event.key === 'Escape') {
            closeFunctions.forEach(fn => fn());
        }
    });
}

export function setupBackdropClickHandler(modalIdMap) {
    window.addEventListener('click', (event) => {
        if (event.target.classList.contains('modal')) {
            const closeFn = modalIdMap[event.target.id];
            if (closeFn) closeFn();
        }
    });
}