/
werstak54
/
haval
Обзор
Документация
Войти
/
werstak54
/
haval
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/components/modalWindow.js
55 строк
2 KB
pawel83gt
first
19 май 2026, 15:39
19 май 2026, 15:39
d522f33
Код
Авторство
О чём код?
export function initModal(openBtnIds, closeBtnId, overlayId) { const closeBtn = document.getElementById(closeBtnId); const modalOverlay = document.getElementById(overlayId); if (!closeBtn || !modalOverlay) { console.warn('Модальное окно: не найдены элементы закрытия или оверлей'); return; } // Преобразуем в массив, если передана одна строка const openButtons = Array.isArray(openBtnIds) ? openBtnIds.map((id) => document.getElementById(id)).filter(Boolean) : [document.getElementById(openBtnIds)].filter(Boolean); if (openButtons.length === 0) { console.warn('Модальное окно: не найдены кнопки открытия'); return; } // Функция открытия function openModal() { modalOverlay.classList.add('active'); document.body.style.overflow = 'hidden'; } // Функция закрытия function closeModal() { modalOverlay.classList.remove('active'); document.body.style.overflow = ''; } // Навешиваем обработчики на все кнопки открытия openButtons.forEach((btn) => { btn.addEventListener('click', openModal); }); // Закрытие по крестику closeBtn.addEventListener('click', closeModal); // Закрытие по клику вне окна (на оверлей) modalOverlay.addEventListener('click', (e) => { if (e.target === modalOverlay) { closeModal(); } }); // Закрытие по клавише Escape document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && modalOverlay.classList.contains('active')) { closeModal(); } }); return { openModal, closeModal }; }