PageSourceSearch

https://iisc.ac.in/wp-content/plugins/sitepress-multilingual-cms/t…/legacy-dropdown/script.js

js iisc.ac.in collected 2026-09-24 08:35:50 UTC 2,168 bytes, 87 lines download raw bytes

1/*jshint browser:true, devel:true */
2/*global document */
3
4var WPMLLanguageSwitcherDropdown = (function() {
5	"use strict";
6
7	var toggleSelector = '.js-wpml-ls-legacy-dropdown a.js-wpml-ls-item-toggle';
8	var parentSelector = '.wpml-ls-item-legacy-dropdown';
9
10	var preventDefault = function(e) {
11		var evt = e ? e : window.event;
12
13		if (evt.preventDefault) {
14			evt.preventDefault();
15		}
16
17		evt.returnValue = false;
18	};
19
20	var toggleSubmenu = function(toggle, show) {
21		var parent = toggle.closest(parentSelector);
22		if (!parent) return;
23
24		var submenu = parent.querySelector('.wpml-ls-sub-menu');
25		if (!submenu) return;
26
27		var isExpanded = show !== undefined ? show : toggle.getAttribute('aria-expanded') === 'true';
28		
29		if (isExpanded) {
30			toggle.setAttribute('aria-expanded', 'false');
31			parent.classList.remove('wpml-ls-keyboard-open');
32		} else {
33			toggle.setAttribute('aria-expanded', 'true');
34			parent.classList.add('wpml-ls-keyboard-open');
35		}
36	};
37
38	var handleKeydown = function(e) {
39		var key = e.key || e.keyCode;
40		
41		if (key === 'Enter' || key === ' ' || key === 13 || key === 32) {
42			preventDefault(e);
43			toggleSubmenu(this);
44		}
45		else if (key === 'Escape' || key === 'Esc' || key === 27) {
46			if (this.getAttribute('aria-expanded') === 'true') {
47				preventDefault(e);
48				toggleSubmenu(this, false);
49				this.focus();
50			}
51		}
52	};
53
54	var handleBlur = function(e) {
55		var toggle = this;
56		var parent = toggle.closest(parentSelector);
57		if (!parent) return;
58
59		setTimeout(function() {
60			var focusedElement = document.activeElement;
61			var submenu = parent.querySelector('.wpml-ls-sub-menu');
62			
63			if (submenu && !parent.contains(focusedElement)) {
64				toggleSubmenu(toggle, false);
65			}
66		}, 100);
67	};
68
69	var init = function() {
70		var links = document.querySelectorAll(toggleSelector);
71		for(var i=0; i < links.length; i++) {
72			links[i].addEventListener('click', preventDefault);
73			links[i].addEventListener('keydown', handleKeydown);
74			links[i].addEventListener('blur', handleBlur);
75		}
76	};
77
78	return {
79		'init': init
80	};
81
82})();
83
84document.addEventListener('DOMContentLoaded', function(){
85	"use strict";
86	WPMLLanguageSwitcherDropdown.init();
87});

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.