PageSourceSearch

https://www.bludenz.at/typo3temp/assets/t3sbootstrap_59f1005f5e.js?1709745662

js bludenz.at collected 2026-10-02 16:43:33 UTC 7,923 bytes, 253 lines download raw bytes

1// *** T3SB identifier: bootstrap5-dropdown-ml-hack
2
3
4(function($bs) {
5	const CLASS_NAME = 'has-child-dropdown-show';
6	$bs.Dropdown.prototype.toggle = function(_orginal) {
7		return function() {
8			document.querySelectorAll('.' + CLASS_NAME).forEach(function(e) {
9				e.classList.remove(CLASS_NAME);
10			});
11			if (this._element.closest('.dropdown') != null) {
12				let dd = this._element.closest('.dropdown').parentNode.closest('.dropdown');
13				for (; dd && dd !== document; dd = dd.parentNode.closest('.dropdown')) {
14					dd.classList.add(CLASS_NAME);
15				}
16			}
17
18			return _orginal.call(this);
19		};
20	}($bs.Dropdown.prototype.toggle);
21
22	document.querySelectorAll('.dropdown').forEach(function(dd) {
23		dd.addEventListener('hide.bs.dropdown', function(e) {
24			if(this.classList.contains(CLASS_NAME)) {
25				this.classList.remove(CLASS_NAME);
26				e.preventDefault();
27			}
28			e.stopPropagation();
29		});
30	});
31
32	document.querySelectorAll('.dropdown [data-bs-toggle="dropdown"]').forEach(function(dd) {
33		dd.addEventListener('click', function(e) {
34			var navbar = document.getElementById('main-navbar'),
35				clickableparent = navbar.classList.contains('clickableparent') ? 1 : 0,
36				isHover = navbar.classList.contains('navbarHover') ? 1 : 0,
37				href = e.currentTarget.getAttribute('href');
38			if ( clickableparent && !e.currentTarget.classList.contains('show') ) {
39				if (isHover) {
40					e.preventDefault();	
41				}
42				if(href != '#') {
43					location.href = href;
44				}
45			}
46		});
47	});
48
49	function getDropdown(element) {
50		return $bs.Dropdown.getInstance(element) || new $bs.Dropdown(element);
51	}
52
53	document.querySelectorAll('.dropdown-hover, .dropdown-hover-all .dropdown').forEach(function(dd) {
54		dd.addEventListener('mouseenter', function(e) {
55			let toggle = e.target.querySelector(':scope>[data-bs-toggle="dropdown"]');
56			if (!toggle.classList.contains('show')) {
57				getDropdown(toggle).toggle();
58			}
59		});
60		dd.addEventListener('mouseleave', function(e) {
61			let toggle = e.target.querySelector(':scope>[data-bs-toggle="dropdown"]');
62			if (toggle.classList.contains('show')) {
63				getDropdown(toggle).toggle();
64			}
65		});
66	});
67
68})(bootstrap);
69
70
71// *** T3SB identifier: t3sbootstrapjs
72
73
74// Scroll anchor - Main.html
75function t3sbScrollToAnchor(sectionmenuAnchorOffset, fixedNavbar, navbarHeight, sectionhash=false) {
76	var hash = window.location.hash;
77	if (sectionhash) {
78		hash = sectionhash;
79	}
80	if (hash.length) {
81		var idArr = hash.split('#');
82		var targetElement = document.getElementById(idArr[1]);
83		if ( targetElement === null ) {
84			idArr = hash.split('#c');
85			targetElement = document.getElementById('tab-'+idArr[1]);
86		}
87		if ( targetElement != null ) {
88			var	offsetSize = sectionmenuAnchorOffset;
89			if ( fixedNavbar ) {
90				offsetSize += navbarHeight;
91			}
92			var scrollTo = Math.round(t3sbOffsetTop(targetElement)-offsetSize);
93			window.scroll({ top: scrollTo, behavior: 'smooth' });
94		}
95	}
96}
97
98function t3sbOffsetTop(el) {
99	var rect = el.getBoundingClientRect(),
100		scrollTop = window.pageYOffset || document.documentElement.scrollTop;
101		return rect.top + scrollTop;
102}
103
104
105
106// Offcanvas - Navbar/Assets.html
107function t3sbOffcanvas(vw, bp, utilColorArr) {
108	var navbarToggler = document.getElementById('navbarToggler');
109	if ( vw > bp ) {
110		navbarToggler.classList.remove(utilColorArr[0]);
111		navbarToggler.classList.remove(utilColorArr[1]);
112	} else {
113		navbarToggler.classList.add(utilColorArr[0]);
114		navbarToggler.classList.add(utilColorArr[1]);
115	}
116	let extraRow = document.querySelector('.navbar .extra-row');
117	if (extraRow) {
118		if ( vw < bp ) {
119			extraRow.classList.add('ms-3');
120		} else {
121			extraRow.classList.remove('ms-3');
122		}
123	}
124}
125	
126
127
128// Dropdown animate - Navbar/Assets.html
129function t3sbDropdownAnimate(vw, bp, dropdownAnimateValue) {
130	if ( vw < bp ) {
131		document.querySelectorAll('.dd-animate-'+dropdownAnimateValue).forEach(function(dda) {
132			dda.classList.remove('dd-animate-'+dropdownAnimateValue);
133			dda.classList.add('removed-animate-'+dropdownAnimateValue);
134		});
135	} else {
136		document.querySelectorAll('.removed-animate-'+dropdownAnimateValue).forEach(function(dda) {
137			dda.classList.add('dd-animate-'+dropdownAnimateValue);
138			dda.classList.remove('removed-animate-'+dropdownAnimateValue);
139		});
140	}
141}	
142	
143
144
145// Collapsible - Templates/Container/CollapsibleContainer.html
146function t3sbCollapsible(fixedNavbar, navbarHeight) {
147	if ( window.location.hash ) {
148		var idArr = window.location.hash.split('#c'),
149			accordionButton = document.getElementById('c'+idArr[1]);
150		if (accordionButton !== null && accordionButton !== '') {
151			var targetElement = document.getElementById('collapse-'+idArr[1]),
152				collapseTrigger = new bootstrap.Collapse(targetElement),
153				offsetSize = accordionButton.clientHeight;
154			collapseTrigger.show();
155			if ( fixedNavbar ) {
156				offsetSize += navbarHeight;
157			}
158			var scrollTo = Math.round(t3sbOffsetTop(accordionButton)-offsetSize);
159			window.scroll({ top: scrollTo, behavior: 'smooth' });
160		}
161	} else {
162		document.querySelectorAll('.accordion').forEach( acc => {
163			var collapse = document.getElementById(acc.id);
164			collapse.addEventListener('shown.bs.collapse', function (e) {
165				if ( e.target) {
166					var offsetSize = e.target.parentNode.querySelector('.accordion-button').clientHeight;
167					if ( fixedNavbar ) {
168						offsetSize += navbarHeight;
169					}
170					var scrollTo = Math.round(t3sbOffsetTop(e.target.parentNode)-offsetSize);
171					window.scroll({ top: scrollTo, behavior: 'smooth' });
172				}
173			});
174		});
175	}
176}
177	
178
179
180function ready(fn) {
181	if (document.readyState != 'loading'){
182fn();
183	} else {
184document.addEventListener('DOMContentLoaded', fn);
185	}
186}
187ready(() => {
188	// Default - Main.html
189	const navbar = document.getElementById('main-navbar'),
190			navbarHeight = navbar.clientHeight,
191			navbarBreakpointWidth = document.body.getAttribute('data-navbar-breakpointwidth'),
192			viewportWidth = parseFloat(getComputedStyle(document.querySelector('html'), null).width.replace("px", "")),
193			onePageLayout = navbar.classList.contains('sectionMenu');
194
195	var fixedNavbar = false;
196	if ( navbar.classList.contains('fixed-top') || navbar.classList.contains('sticky-top') ) {
197		fixedNavbar = true;
198	}
199
200	// Scroll anchor - Main.html
201	if (window.location.hash) {
202		t3sbScrollToAnchor(198, fixedNavbar, navbarHeight);
203	}
204				
205
206	// Dropdown animate - Navbar/Assets.html
207	t3sbDropdownAnimate(viewportWidth, navbarBreakpointWidth, 1);
208	window.addEventListener('resize', function(event) {	
209		resizedViewportWidth = parseFloat(getComputedStyle(document.querySelector('html'), null).width.replace("px", ""));
210		t3sbDropdownAnimate(resizedViewportWidth, navbarBreakpointWidth, 1);
211	}, true);	
212
213
214	// Offcanvas - Navbar/Assets.html
215	var navbarBreakpoint = document.body.getAttribute('data-navbar-breakpoint');
216	var navbarBPWidth = navbarBreakpointWidth,
217		utilColor = 'bg-white',
218		utilColorArr = utilColor.split(' ');
219	if (navbarBreakpoint == 'no') {
220		navbarBPWidth = 99999;
221	}
222	t3sbOffcanvas(viewportWidth, navbarBPWidth, utilColorArr);
223	window.addEventListener('resize', function(event) {	
224		resizedViewportWidth = parseFloat(getComputedStyle(document.querySelector('html'), null).width.replace("px", ""));
225		t3sbOffcanvas(resizedViewportWidth, navbarBPWidth, utilColorArr);
226	}, true);
227
228
229	// Navbar mega-menu - Navbar/Assets.html
230	var megaDropdown = document.querySelectorAll('.mega-dropdown'),
231		navbarBreakpointToggler = '';
232	if ( viewportWidth < navbarBreakpointWidth ) {
233		navbarBreakpointToggler = document.querySelectorAll('.remove-no');	
234		navbarBreakpointToggler.forEach( nbt => {
235			nbt.remove();
236		});
237	} else {
238		navbarBreakpointToggler = document.querySelectorAll('.show-no');	
239		navbarBreakpointToggler.forEach( nbt => {
240			nbt.remove();
241		});	
242	}
243
244
245	// Collapsible - CollapsibleContainer.html
246	var collapse = document.querySelectorAll('.accordion .collapse');
247	if ( collapse.length ) {
248		t3sbCollapsible(fixedNavbar, navbarHeight);
249	}
250	
251});
252
253

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.