109 lines
3.2 KiB
JavaScript
109 lines
3.2 KiB
JavaScript
(function (window, document) {
|
|
"use strict";
|
|
|
|
function byId(id) {
|
|
return document.getElementById(id);
|
|
}
|
|
|
|
function open(drawerId) {
|
|
var drawer = byId(drawerId);
|
|
var backdrop = byId(drawerId + "_backdrop");
|
|
if (!drawer) { return; }
|
|
drawer.classList.add("is-open");
|
|
drawer.setAttribute("aria-hidden", "false");
|
|
if (backdrop) { backdrop.classList.add("is-open"); }
|
|
document.body.classList.add("sig-pdf-drawer-open");
|
|
}
|
|
|
|
function close(drawerId) {
|
|
var drawer = byId(drawerId);
|
|
var backdrop = byId(drawerId + "_backdrop");
|
|
if (!drawer) { return; }
|
|
drawer.classList.remove("is-open");
|
|
drawer.setAttribute("aria-hidden", "true");
|
|
if (backdrop) { backdrop.classList.remove("is-open"); }
|
|
document.body.classList.remove("sig-pdf-drawer-open");
|
|
}
|
|
|
|
document.addEventListener("click", function (event) {
|
|
var target = event.target;
|
|
while (target && target !== document) {
|
|
if (target.getAttribute && target.getAttribute("data-sig-pdf-drawer-close")) {
|
|
close(target.getAttribute("data-sig-pdf-drawer-close"));
|
|
return;
|
|
}
|
|
target = target.parentNode;
|
|
}
|
|
});
|
|
|
|
document.addEventListener("keydown", function (event) {
|
|
if (event.keyCode !== 27) { return; }
|
|
var drawer = document.querySelector(".sig-pdf-drawer.is-open");
|
|
if (drawer) { close(drawer.id); }
|
|
});
|
|
|
|
|
|
var drawersOpenBeforeRequest = [];
|
|
|
|
function captureOpenDrawers() {
|
|
drawersOpenBeforeRequest = [];
|
|
|
|
var drawers = document.querySelectorAll(
|
|
".sig-pdf-drawer.is-open"
|
|
);
|
|
|
|
for (var index = 0; index < drawers.length; index += 1) {
|
|
if (drawers[index].id) {
|
|
drawersOpenBeforeRequest.push(drawers[index].id);
|
|
}
|
|
}
|
|
}
|
|
|
|
function restoreOpenDrawers() {
|
|
for (var index = 0; index < drawersOpenBeforeRequest.length; index += 1) {
|
|
open(drawersOpenBeforeRequest[index]);
|
|
}
|
|
|
|
drawersOpenBeforeRequest = [];
|
|
}
|
|
|
|
function bindPartialPostbackPersistence() {
|
|
if (!window.Sys ||
|
|
!window.Sys.WebForms ||
|
|
!window.Sys.WebForms.PageRequestManager) {
|
|
return;
|
|
}
|
|
|
|
var manager =
|
|
window.Sys.WebForms.PageRequestManager.getInstance();
|
|
|
|
if (!manager || manager.__sigPdfDrawerBound) {
|
|
return;
|
|
}
|
|
|
|
manager.__sigPdfDrawerBound = true;
|
|
manager.add_beginRequest(captureOpenDrawers);
|
|
manager.add_endRequest(restoreOpenDrawers);
|
|
}
|
|
|
|
window.SIGPdfDrawer = {
|
|
open: open,
|
|
close: close
|
|
};
|
|
|
|
if (window.Sys &&
|
|
window.Sys.Application &&
|
|
typeof window.Sys.Application.add_load === "function") {
|
|
window.Sys.Application.add_load(
|
|
bindPartialPostbackPersistence
|
|
);
|
|
} else if (document.readyState === "loading") {
|
|
document.addEventListener(
|
|
"DOMContentLoaded",
|
|
bindPartialPostbackPersistence
|
|
);
|
|
} else {
|
|
bindPartialPostbackPersistence();
|
|
}
|
|
}(window, document));
|