BastionGuard/webui/assets/vendor/bootstrap/js/bootstrap.bundle.min.js
specialworld83 f0f913a209 Release 2.0
2026-07-15 10:52:22 +02:00

27 lines
2.4 KiB
JavaScript

/* Local lightweight Bootstrap-compatible bundle: Collapse + Tab only. */
(function(){
if(!window.CSS) window.CSS={};
if(!CSS.escape){CSS.escape=function(v){return String(v).replace(/[^a-zA-Z0-9_\-]/g,function(ch){return '\\'+ch;});};}
function qsa(sel,root){return Array.prototype.slice.call((root||document).querySelectorAll(sel));}
function event(name){try{return new Event(name,{bubbles:true});}catch(e){var ev=document.createEvent('Event');ev.initEvent(name,true,true);return ev;}}
class Collapse{
constructor(el,opts){this._el=el;this._opts=opts||{};}
show(){this._el.classList.add('show');this._el.dispatchEvent(event('shown.bs.collapse'));this._sync(true);}
hide(){this._el.classList.remove('show');this._el.dispatchEvent(event('hidden.bs.collapse'));this._sync(false);}
toggle(){this._el.classList.contains('show')?this.hide():this.show();}
_sync(open){qsa('[data-bs-target="#'+this._el.id+'"]',document).forEach(function(btn){btn.classList.toggle('collapsed',!open);btn.setAttribute('aria-expanded',open?'true':'false');});}
static getOrCreateInstance(el,opts){if(!el.__bgCollapse) el.__bgCollapse=new Collapse(el,opts);return el.__bgCollapse;}
}
class Tab{
constructor(el){this._el=el;}
show(){var target=this._el.getAttribute('data-bs-target')||this._el.getAttribute('href'); if(!target) return; var pane=document.querySelector(target); if(!pane) return; var nav=this._el.closest('.nav')||document; qsa('[data-bs-toggle="tab"]',nav).forEach(function(t){t.classList.remove('active');t.setAttribute('aria-selected','false');}); this._el.classList.add('active');this._el.setAttribute('aria-selected','true'); var content=pane.parentElement; qsa('.tab-pane',content).forEach(function(p){p.classList.remove('active','show');}); pane.classList.add('active','show'); this._el.dispatchEvent(event('shown.bs.tab'));}
static getOrCreateInstance(el){if(!el.__bgTab) el.__bgTab=new Tab(el);return el.__bgTab;}
}
document.addEventListener('click',function(e){
var c=e.target.closest('[data-bs-toggle="collapse"]');
if(c){var sel=c.getAttribute('data-bs-target')||c.getAttribute('href'); if(sel){var el=document.querySelector(sel); if(el){e.preventDefault(); Collapse.getOrCreateInstance(el).toggle();}}}
var t=e.target.closest('[data-bs-toggle="tab"]');
if(t){e.preventDefault(); Tab.getOrCreateInstance(t).show();}
});
window.bootstrap={Collapse:Collapse,Tab:Tab};
})();