45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
/**
|
|
* Declarative modal triggers.
|
|
*
|
|
* The only modal entry point is AksrtModalRuntime. Triggers carry an
|
|
* explicit URL and never create a second modal implementation.
|
|
*
|
|
* @package AKSRT
|
|
*/
|
|
(function (window, document) {
|
|
"use strict";
|
|
|
|
function openFromTrigger(element) {
|
|
var runtime = window.AksrtModalRuntime;
|
|
var url = element.getAttribute("data-aksrt-modal-url") || "";
|
|
if (!url || url === "#") return;
|
|
|
|
var ttl = parseInt(element.getAttribute("data-aksrt-modal-cache-ttl") || "15000", 10);
|
|
var cache = element.getAttribute("data-aksrt-modal-cache") !== "false";
|
|
var tags = (element.getAttribute("data-aksrt-modal-cache-tags") || "").split(",").map(function (tag) {
|
|
return tag.trim();
|
|
}).filter(Boolean);
|
|
|
|
runtime.openRemote({
|
|
url: url,
|
|
method: element.getAttribute("data-aksrt-modal-method") || "GET",
|
|
className: element.getAttribute("data-aksrt-modal-class") || "modal-mini full-sm",
|
|
height: parseInt(element.getAttribute("data-aksrt-modal-height") || "0", 10) || 0,
|
|
mobileBottom: element.getAttribute("data-aksrt-modal-mobile-bottom") === "true",
|
|
bottom: element.getAttribute("data-aksrt-modal-bottom") === "true",
|
|
kind: element.getAttribute("data-aksrt-modal-kind") || "generic",
|
|
cacheKey: element.getAttribute("data-aksrt-modal-cache-key") || "",
|
|
cache: cache,
|
|
cacheTtl: ttl > 0 ? ttl : 15000,
|
|
cacheTags: tags,
|
|
});
|
|
}
|
|
|
|
document.addEventListener("click", function (event) {
|
|
var trigger = event.target.closest('[data-aksrt-modal="remote"]');
|
|
if (!trigger) return;
|
|
event.preventDefault();
|
|
openFromTrigger(trigger);
|
|
});
|
|
})(window, document);
|