PageSourceSearch

https://www.sabanciuniv.edu/themes/custom/su/components/header/header.js?v=2.8

js sabanciuniv.edu collected 2026-09-24 08:36:01 UTC 10,925 bytes, 307 lines download raw bytes

1window.addEventListener("DOMContentLoaded", (event) => {
2	var menuItemsmenu = document.querySelectorAll('.first-menu');
3    var body = document.body;
4
5    for (var i = 0; i < menuItemsmenu.length; i++) {
6      menuItemsmenu[i].addEventListener('mouseenter', function() {
7        body.classList.add('screen');
8      });
9
10      menuItemsmenu[i].addEventListener('mouseleave', function() {
11        body.classList.remove('screen');
12      });
13    }
14	
15	window.addEventListener('scroll', function() {
16	  var body = document.querySelector('body');
17  
18	  if (window.pageYOffset > 10) {
19		body.classList.add('fixed');
20	  } else {
21		body.classList.remove('fixed');
22	  }
23	});
24	
25	var firstMenus = document.querySelectorAll(".first-menu");
26
27	firstMenus.forEach(function(menu) {
28	  menu.addEventListener("mouseover", function() {
29		menu.classList.add("active");
30	  });
31	
32	  menu.addEventListener("mouseout", function() {
33		menu.classList.remove("active");
34	  });
35	});
36	
37	var imgMenus = document.querySelectorAll(".img-menu");
38	imgMenus.forEach(function(menu) {
39		var liElement = menu.parentNode;
40		liElement.classList.add("menu-img");
41	});
42  
43	const dropdown = document.querySelector('div#header-top ul li.dropdown');
44	if (dropdown) {
45	  dropdown.addEventListener('click', function() {
46		this.classList.toggle('open');
47	  });
48	}
49	
50	document.addEventListener('DOMContentLoaded', function() {
51		const dropdowns = document.querySelectorAll('li.dropdown');
52		dropdowns.forEach(function(item) {
53		  item.addEventListener('click', function() {
54			const headerTopDropdown = document.querySelector('div#header-top ul li.dropdown');
55			headerTopDropdown.classList.toggle('open');
56		  });
57		});
58	});
59  
60	document.addEventListener('click', function(event) {
61		const trigger = document.querySelector('li.dropdown');
62		if (trigger && !trigger.contains(event.target) && !trigger.isSameNode(event.target)) {
63		  const headerTopDropdown = document.querySelector('div#header-top ul li.dropdown');
64		  headerTopDropdown.classList.remove('open');
65		}
66	});
67  
68	window.addEventListener('resize', function() {
69		if (window.innerWidth <= 992) {
70		  const menuItems = document.querySelectorAll('li.menu-level--2');
71		  menuItems.forEach(function(item) {
72			item.addEventListener('click', function() {
73			  const subMenu = this.querySelector('li.menu-level--2 > ul');
74			  subMenu.style.display = (subMenu.style.display === 'none') ? 'block' : 'none';
75			});
76		  });
77		}
78	});
79	
80	var mobileMenuButton = document.querySelector('.offcanvas-menu');
81	mobileMenuButton.setAttribute('aria-label', 'Menüyü aç');
82	mobileMenuButton.setAttribute('aria-expanded', 'false');
83	
84	mobileMenuButton.addEventListener('click', function() {
85		this.classList.toggle('active');
86		document.body.classList.toggle('overflow-hidden');
87		
88		const isExpanded = this.classList.contains('active');
89		this.setAttribute('aria-expanded', isExpanded);
90		this.setAttribute('aria-label', isExpanded ? 'Menüyü kapat' : 'Menüyü aç');
91		
92		const mobileMenuContainer = document.querySelector('.mobile-menu-container');
93		mobileMenuContainer.classList.toggle('show');
94		
95		const menus = document.querySelectorAll('.menu.sub-menu-show');
96		menus.forEach(function(item) {
97		  item.classList.remove('sub-menu-show');
98		});
99		
100		const hoveredItems = document.querySelectorAll('.hovered');
101		hoveredItems.forEach(function(item) {
102		  item.classList.remove('hovered');
103		});
104	});
105  
106	if (window.innerWidth >= 992) {
107		const expandedItems = document.querySelectorAll('.menu--main .menu > .menu-item--expanded');
108		expandedItems.forEach(function(item) {
109		  item.addEventListener('mouseenter', function() {
110			const subMenuItems = this.querySelectorAll('.sub-menu-item');
111			subMenuItems.forEach(function(subItem) {
112			  subItem.style.display = 'block';
113			});
114		  });
115		  item.addEventListener('mouseleave', function() {
116			const subMenuItems = this.querySelectorAll('.sub-menu-item');
117			subMenuItems.forEach(function(subItem) {
118			  subItem.style.display = 'none';
119			});
120		  });
121		});
122	}
123  
124	window.addEventListener('resize', function() {
125		if (window.innerWidth >= 992) {
126		  const mobileMenuContainer = document.querySelector('.mobile-menu-container');
127		  mobileMenuContainer.classList.remove('show');
128		  
129		  const subMenus = document.querySelectorAll('.sub-menu-show');
130		  subMenus.forEach(function(item) {
131			item.removeAttribute('style');
132		  });
133		  
134		  const menus = document.querySelectorAll('.menu.sub-menu-show');
135		  menus.forEach(function(item) {
136			item.classList.remove('sub-menu-show');
137		  });
138		  
139		  const backButton = document.querySelector('.back');
140		  if (backButton) {
141			backButton.remove();
142		  }
143		  
144		  const hoveredItems = document.querySelectorAll('.hovered');
145		  hoveredItems.forEach(function(item) {
146			item.classList.remove('hovered');
147		  });
148		  
149		  const expandedItems = document.querySelectorAll('.menu--main .menu > .menu-item--expanded');
150		  expandedItems.forEach(function(item) {
151			item.addEventListener('mouseenter', function() {
152			  const subMenuItems = this.querySelectorAll('.sub-menu-item');
153			  subMenuItems.forEach(function(subItem) {
154				subItem.style.display = 'block';
155			  });
156			});
157			item.addEventListener('mouseleave', function() {
158			  const subMenuItems = this.querySelectorAll('.sub-menu-item');
159			  subMenuItems.forEach(function(subItem) {
160				subItem.style.display = 'none';
161			  });
162			});
163		  });
164		}
165	});
166  
167	const menuLinks = document.querySelectorAll(".mobile-menu-container ul>li>a");
168	menuLinks.forEach(function(link) {
169		link.addEventListener('keyup', function(e) {
170		  if (e.which === 32) {
171			this.closest('li').classList.toggle('hovered');
172		  }
173		});
174	});
175	
176	const menuItems = document.querySelectorAll(".mobile-menu-container nav.menu--main > ul li.menu-item");
177	menuItems.forEach(function(item) {
178		const subMenuContainer = item.querySelector('.sub-menu-item .container-menu > ul');
179		if (subMenuContainer) {
180			const link = item.querySelector('a, span');
181			const linkText = link.textContent.trim();
182			const button = document.createElement('button');
183			button.className = 'sub-menu';
184			button.setAttribute('aria-label', linkText + ' alt menüsünü aç');
185			button.setAttribute('aria-expanded', 'false');
186			button.innerHTML = '<span class="icon-down-arrw" aria-hidden="true"></span>';
187			link.insertAdjacentElement('beforeend', button);
188		}
189		
190		const subMenuItems = item.querySelectorAll('.sub-menu-item .container-menu > ul li.menu-level--1 .menu-2');
191		if (subMenuItems.length > 0) {
192			const link = item.querySelector('a, span');
193			const linkText = link.textContent.trim();
194			const button = document.createElement('button');
195			button.className = 'sub-menu';
196			button.setAttribute('aria-label', linkText + ' alt menüsünü aç');
197			button.setAttribute('aria-expanded', 'false');
198			button.innerHTML = '<span class="icon-down-arrw" aria-hidden="true"></span>';
199			link.appendChild(button);
200		}
201	});
202	
203	const subMenuButtons = document.querySelectorAll('.sub-menu');
204	subMenuButtons.forEach(function(button) {
205		button.addEventListener('click', function(event) {
206		  event.preventDefault();
207		  
208		  const isExpanded = this.getAttribute('aria-expanded') === 'true';
209		  this.setAttribute('aria-expanded', !isExpanded);
210		  
211		  const navHeight = document.querySelector('.navigation').offsetHeight + 500;
212		  const subMenuContainer = this.closest('li').querySelector(".sub-menu-item .container-menu > ul");
213		  var geri_don = (document.querySelector('html').getAttribute('lang') == 'tr') ? 'Anasayfa' : 'Turn Back';
214		  
215		  if (subMenuContainer) {
216			subMenuContainer.classList.add("sub-menu-show");
217			subMenuContainer.style.minHeight = navHeight + 'px';
218			
219			const backItem = document.createElement('li');
220			backItem.className = 'menu-item back';
221			backItem.innerHTML = '<button class="sub-menu-close" aria-label="' + geri_don + '"><span class="icon-bold-left-arrw" aria-hidden="true"></span>' + geri_don + '</button>';
222
223			subMenuContainer.insertBefore(backItem, subMenuContainer.firstChild);
224
225			this.classList.add('show-menu');
226		  }
227		});
228	});
229	
230	const menuLevel2Buttons = document.querySelectorAll('.mobile-menu-container ul li.menu-level--1 button');
231	menuLevel2Buttons.forEach(function(button) {
232		button.addEventListener('click', function() {
233		  const ul = this.parentNode.parentNode.querySelector('.menu-2');
234		  ul.classList.toggle('dropmenu-open');
235		  
236		  const isExpanded = ul.classList.contains('dropmenu-open');
237		  this.setAttribute('aria-expanded', isExpanded);
238		});
239	});
240      
241	const dropmenuOpens = document.querySelectorAll('dropmenu-open');
242	dropmenuOpens.forEach(function(item) {
243		const menuWrap = document.querySelector('.menu-level--1.menu--wrap');
244		menuWrap.style.height = '100%';
245	});
246  
247	document.addEventListener('click', function(event) {
248		if (event.target.classList.contains('sub-menu-close')) {
249		  const subMenuContainer = event.target.closest('ul');
250		  subMenuContainer.classList.remove('sub-menu-show');
251		  const subMenuItemsContainer = event.target.closest('.sub-menu-item .container-menu > ul');
252		  subMenuItemsContainer.classList.remove('sub-menu-show');
253		  event.target.closest('li').remove();
254		}
255	});
256	
257	document.addEventListener('click', function(event) {
258		if (event.target.classList.contains('icon-bold-left-arrw')) {
259		  const subMenuContainer = event.target.closest('ul');
260		  subMenuContainer.classList.remove('sub-menu-show');
261		  const subMenuItemsContainer = event.target.closest('.sub-menu-item .container-menu > ul');
262		  subMenuItemsContainer.classList.remove('sub-menu-show');
263		  event.target.closest('li').remove();
264		}
265	});
266	
267	const mobileMenuContainer = document.querySelector('.mobile-menu-container');
268
269	function handleOffcanvas() {
270		const htmlElement = document.documentElement;
271		if (mobileMenuContainer.classList.contains('show')) {
272			htmlElement.classList.add('offcanvas-active');
273		} else {
274			htmlElement.classList.remove('offcanvas-active');
275		}
276	}
277	
278	const observer = new MutationObserver(handleOffcanvas);
279	observer.observe(mobileMenuContainer, { attributes: true });
280	handleOffcanvas();
281
282	const mobileMenuContainer2 = document.querySelector('.icon-search-container');
283
284	function handleOffcanvas2() {
285		const htmlElement = document.documentElement;
286		if (mobileMenuContainer2.classList.contains('active')) {
287			htmlElement.classList.add('offcanvas-active-form');
288		} else {
289			htmlElement.classList.remove('offcanvas-active-form');
290		}
291	}
292	
293	window.addEventListener('resize', function() {
294		if (window.innerWidth <= 992) {
295			const menuItems = document.querySelectorAll('.menu--main .menu > .menu-item--expanded');
296
297			menuItems.forEach(function(item) {
298				const anchor = item.querySelector('a, span');
299				const subMenu = item.querySelector('.sub-menu');
300				anchor.removeAttribute('href');
301				item.addEventListener('click', function() {
302					subMenu.classList.toggle('sub-menu-show');
303				});
304			});
305		}
306	});
307});

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.