Files
Jorge Luis caudillo esparza 45ce71c7da BITACORA FEA
2026-08-14 05:43:41 -07:00

255 lines
6.6 KiB
JavaScript

(function (window, document) {
"use strict";
var api = window.SIGBitacora = window.SIGBitacora || {};
window.SIGBitacoraFeed = api;
function hasClass(element, className) {
return element &&
element.classList &&
element.classList.contains(className);
}
function findToggle(element, container) {
var current = element;
while (current && current !== container) {
if (hasClass(current, "js-sig-bitacora-toggle")) {
return current;
}
current = current.parentNode;
}
return null;
}
function getControlledPanel(toggle, container) {
var panelId = toggle.getAttribute("aria-controls");
var panel;
if (!panelId) {
return null;
}
panel = document.getElementById(panelId);
if (!panel ||
!hasClass(panel, "sig-bitacora-details") ||
!container.contains(panel)) {
return null;
}
return panel;
}
function setExpanded(toggle, panel, expanded) {
var label = toggle.querySelector(
".sig-bitacora-detail-toggle-label");
toggle.setAttribute(
"aria-expanded",
expanded ? "true" : "false");
toggle.setAttribute(
"title",
expanded
? "Ocultar el detalle del movimiento"
: "Mostrar el detalle del movimiento");
if (label) {
label.textContent = expanded
? "Ocultar detalle"
: "Ver detalle";
}
panel.hidden = !expanded;
panel.setAttribute(
"aria-hidden",
expanded ? "false" : "true");
}
function toggleDetails(toggle, container) {
var panel = getControlledPanel(toggle, container);
var expanded;
if (!panel) {
return;
}
expanded = toggle.getAttribute("aria-expanded") === "true";
setExpanded(toggle, panel, !expanded);
}
function isActivationKey(event) {
var key = event.key;
var keyCode = event.which || event.keyCode;
return key === "Enter" ||
key === " " ||
key === "Spacebar" ||
keyCode === 13 ||
keyCode === 32;
}
function hasNativeKeyboardActivation(element, event) {
var tagName = element.tagName;
var key = event.key;
var keyCode = event.which || event.keyCode;
if (tagName === "BUTTON" || tagName === "INPUT") {
return true;
}
return tagName === "A" &&
element.hasAttribute("href") &&
(key === "Enter" || keyCode === 13);
}
function synchronizeToggle(toggle, container) {
var panel = getControlledPanel(toggle, container);
var ariaExpanded;
var expanded;
if (!panel) {
toggle.setAttribute("aria-expanded", "false");
return;
}
ariaExpanded = toggle.getAttribute("aria-expanded");
if (ariaExpanded === "true") {
expanded = true;
} else if (ariaExpanded === "false") {
expanded = false;
} else {
expanded = !panel.hidden;
}
setExpanded(toggle, panel, expanded);
}
function initializeContainer(container) {
var toggles;
var index;
if (container.getAttribute(
"data-sig-bitacora-initialized") === "1") {
return;
}
toggles = container.querySelectorAll(
".js-sig-bitacora-toggle");
for (index = 0; index < toggles.length; index += 1) {
synchronizeToggle(toggles[index], container);
}
container.addEventListener("click", function (event) {
var toggle = findToggle(event.target, container);
if (!toggle) {
return;
}
toggleDetails(toggle, container);
});
container.addEventListener("keydown", function (event) {
var toggle = findToggle(event.target, container);
if (!toggle ||
!isActivationKey(event) ||
event.repeat ||
hasNativeKeyboardActivation(toggle, event)) {
return;
}
event.preventDefault();
toggleDetails(toggle, container);
});
container.setAttribute(
"data-sig-bitacora-initialized",
"1");
}
function collectContainers(root) {
var containers = [];
var descendants;
var index;
if (!root) {
return containers;
}
if (root.nodeType === 1 &&
hasClass(root, "js-sig-bitacora")) {
containers.push(root);
}
if (!root.querySelectorAll) {
return containers;
}
descendants = root.querySelectorAll(
".js-sig-bitacora:not([data-sig-bitacora-initialized=\"1\"])");
for (index = 0; index < descendants.length; index += 1) {
containers.push(descendants[index]);
}
return containers;
}
api.initialize = function (root) {
var containers = collectContainers(root || document);
var index;
for (index = 0; index < containers.length; index += 1) {
initializeContainer(containers[index]);
}
};
api.collapseAll = function (containerReference) {
var container = typeof containerReference === "string"
? document.querySelector(containerReference)
: containerReference;
var toggles;
var panel;
var index;
if (!container ||
!hasClass(container, "js-sig-bitacora")) {
return;
}
toggles = container.querySelectorAll(
".js-sig-bitacora-toggle");
for (index = 0; index < toggles.length; index += 1) {
panel = getControlledPanel(toggles[index], container);
if (panel) {
setExpanded(toggles[index], panel, false);
}
}
};
if (window.SIG_BITACORA_INITIALIZATION_BRIDGE_REGISTERED !== true) {
window.SIG_BITACORA_INITIALIZATION_BRIDGE_REGISTERED = true;
if (window.Sys && Sys.Application) {
Sys.Application.add_load(function () {
api.initialize(document);
});
} else if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", function () {
api.initialize(document);
});
} else {
api.initialize(document);
}
}
}(window, document));