/
merulaalba
/
RestoApp
Обзор
Документация
Войти
/
merulaalba
/
RestoApp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
scripts/main.js
53 строки
2 KB
merulaalba
Add modal
19 июл 2026, 16:07
19 июл 2026, 16:07
e01b80c
Код
Авторство
О чём код?
import { closeBanner } from './banner.js'; import { apiFetch } from './utils/api.js'; import { renderCatalog } from './catalogRenderer.js'; import { CardsDimensions } from './variables.js'; import { createProductCard } from './components/productCard.js'; import { openModal, closeDialog } from './modal.js'; import { modalCard, addModalInteractivity } from './components/modalCard.js'; closeBanner(); const dialog = document.getElementById('the-modal'); let menuData = null; const cardTemplate = document.getElementById('card-template'); async function initApp() { menuData = await apiFetch('./data.json'); if (!menuData) return; renderCatalog( menuData.products, cardTemplate, menuData.badges, menuData.currency, menuData ); } initApp(); // Обработчик клика по карточкам document.addEventListener('click', async (evt) => { const invoker = evt.target.closest('.modal-invoker'); if (!invoker) return; evt.preventDefault(); const productId = invoker.dataset.productId; if (productId && menuData) { const productFromData = menuData.products.find(item => item.id === productId); if (productFromData) { const scrollBarWidth = window.innerWidth - document.documentElement.clientWidth; const contentForModal = modalCard(productFromData, menuData); openModal(contentForModal); if (scrollBarWidth > 0) { document.documentElement.style.setProperty('--scrollbar-compensation', `${scrollBarWidth}px`); } addModalInteractivity(dialog, productFromData); } } });