3 * Provides some simple logic to create simple dropdown menus.
9 this.menu = elem.querySelector('ul');
10 this.toggle = elem.querySelector('[dropdown-toggle]');
11 this.setupListeners();
15 this.menu.style.display = 'block';
16 this.menu.classList.add('anim', 'menuIn');
17 this.container.addEventListener('mouseleave', this.hide.bind(this));
19 // Focus on first input if existing
20 let input = this.menu.querySelector('input');
21 if (input !== null) input.focus();
25 this.menu.style.display = 'none';
26 this.menu.classList.remove('anim', 'menuIn');
30 // Hide menu on option click
31 this.container.addEventListener('click', event => {
32 let possibleChildren = Array.from(this.menu.querySelectorAll('a'));
33 if (possibleChildren.indexOf(event.target) !== -1) this.hide();
35 // Show dropdown on toggle click
36 this.toggle.addEventListener('click', this.show.bind(this));
37 // Hide menu on enter press
38 this.container.addEventListener('keypress', event => {
39 if (event.keyCode !== 13) return true;
40 event.preventDefault();
48 module.exports = DropDown;