/
webru
/
prisma-ui
Обзор
Документация
Войти
/
webru
/
prisma-ui
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ops-data.js
68 строк
2 KB
webru
Add Ops narrative patterns, node detail demo, and UI conventions.
14 июн 2026, 14:28
14 июн 2026, 14:28
47b1546
Код
Авторство
О чём код?
/** * Prisma UI — Data UI helpers: drawer quick-view */ (function () { var openBackdrop = null; function openDrawer(backdrop) { if (!backdrop) return; if (openBackdrop && openBackdrop !== backdrop) closeDrawer(openBackdrop); backdrop.classList.add("is-open"); backdrop.setAttribute("aria-hidden", "false"); openBackdrop = backdrop; var closeBtn = backdrop.querySelector("[data-drawer-close]"); if (closeBtn) closeBtn.focus(); } function closeDrawer(backdrop) { if (!backdrop) return; backdrop.classList.remove("is-open"); backdrop.setAttribute("aria-hidden", "true"); if (openBackdrop === backdrop) openBackdrop = null; } function initDrawers(root) { (root || document).querySelectorAll("[data-ops-drawer-open]").forEach(function (trigger) { if (trigger.dataset.opsDrawerInit) return; trigger.dataset.opsDrawerInit = "true"; trigger.addEventListener("click", function (e) { var sel = trigger.getAttribute("data-ops-drawer-open"); if (!sel) return; var backdrop = document.querySelector(sel); if (!backdrop) return; if (trigger.tagName === "A") e.preventDefault(); openDrawer(backdrop); }); }); (root || document).querySelectorAll(".ops-drawer-backdrop").forEach(function (backdrop) { if (backdrop.dataset.opsDrawerBackdropInit) return; backdrop.dataset.opsDrawerBackdropInit = "true"; backdrop.setAttribute("aria-hidden", "true"); backdrop.querySelectorAll("[data-drawer-close]").forEach(function (btn) { btn.addEventListener("click", function () { closeDrawer(backdrop); }); }); backdrop.addEventListener("click", function (e) { if (e.target === backdrop) closeDrawer(backdrop); }); }); } document.addEventListener("keydown", function (e) { if (e.key === "Escape" && openBackdrop) closeDrawer(openBackdrop); }); document.addEventListener("DOMContentLoaded", function () { initDrawers(); }); window.OpsData = { openDrawer: openDrawer, closeDrawer: closeDrawer, initDrawers: initDrawers }; })();