/** * AKSRT Remote Modal compatibility bridge. * * The lifecycle implementation lives in AksrtModalRuntime. This file keeps * the legacy trigger contract and the AksrtRemoteModal public alias stable. * * @package AKSRT */ (function (window, document) { "use strict"; function runtime() { return window.AksrtModalRuntime || null; } function fromTrigger(element) { var modalRuntime = runtime(); if (!modalRuntime || !element) return Promise.reject(new Error("modal runtime unavailable")); var url = element.getAttribute("data-remote") || element.getAttribute("data-aksrt-remote") || element.getAttribute("href") || ""; if (!url || url === "#") return Promise.resolve(null); var ttl = parseInt(element.getAttribute("data-modal-cache-ttl") || "15000", 10); var tags = (element.getAttribute("data-modal-cache-tags") || "").split(",").map(function (tag) { return tag.trim(); }).filter(Boolean); return modalRuntime.openRemote({ url: url, method: element.getAttribute("data-method") || "GET", className: element.getAttribute("data-class") || element.getAttribute("data-aksrt-class") || "modal-mini full-sm", height: parseInt(element.getAttribute("data-height") || element.getAttribute("data-aksrt-height") || "0", 10) || 0, mobileBottom: element.getAttribute("mobile-bottom") !== "false", bottom: element.getAttribute("data-bottom") === "true", kind: element.getAttribute("data-modal-kind") || "generic", cacheKey: element.getAttribute("data-modal-cache-key") || "", cacheTtl: ttl > 0 ? ttl : 15000, cacheTags: tags, }); } function bind() { if (window.__aksrtRemoteModalBound) return; if (!runtime()) return; window.__aksrtRemoteModalBound = true; document.addEventListener("click", function (event) { var trigger = event.target.closest( '[data-toggle="AksrtRemoteModal"], [data-toggle="RefreshModal"], [data-aksrt-remote-modal], a.aksrt-remote-modal-link' ); if (!trigger || trigger.getAttribute("data-aksrt-remote-modal") === "off") return; event.preventDefault(); fromTrigger(trigger); }); } function expose() { var modalRuntime = runtime(); if (!modalRuntime) return; window.AksrtRemoteModal = { open: modalRuntime.open, openRemote: modalRuntime.openRemote, close: modalRuntime.close, refresh: modalRuntime.refresh, fromTrigger: fromTrigger, getActive: modalRuntime.getActive, }; bind(); } expose(); if (!window.AksrtModalRuntime) { document.addEventListener("aksrt:modal-runtime:ready", expose, { once: true }); } })(window, document);