Skip to content
Snippets Groups Projects
Select Git revision
  • 3.0 default protected
  • 2.0
  • mamarley-autocomplete
  • master protected
4 results

nav.js

Blame
  • nav.js 3.07 KiB
    const keyMapping = {
        13: 'Enter',
        27: 'Escape',
        38: 'ArrowUp',
        40: 'ArrowDown'
    };
    class Navigation extends Component {
        constructor() {
            super();
            this.render();
        }
        render() {
            return this.elem = function () {
                var $$a = document.createElement('div');
                $$a.setAttribute('class', 'nav');
                var $$b = document.createElement('div');
                $$b.setAttribute('class', 'bar');
                $$a.appendChild($$b);
                var $$c = document.createElement('div');
                $$c.setAttribute('class', 'container');
                $$b.appendChild($$c);
                var $$d = document.createElement('div');
                $$d.setAttribute('class', 'searchBar');
                $$c.appendChild($$d);
                var $$e = document.createElement('p');
                $$e.setAttribute('class', 'icon');
                $$d.appendChild($$e);
                var $$f = document.createTextNode('search');
                $$e.appendChild($$f);
                $$d.appendChildren(this.input = function () {
                    var $$h = document.createElement('input');
                    $$h.setAttribute('class', 'search');
                    $$h.setAttribute('placeholder', translation.search);
                    $$h.setAttribute('type', 'search');
                    $$h.setAttribute('autoComplete', 'off');
                    $$h.addEventListener('focus', () => this.elem.classList.add('focus'));
                    $$h.addEventListener('blur', () => {
                        this.elem.classList.remove('focus');
                        this.historyView.resetNavigation();
                    });
                    $$h.addEventListener('keydown', e => this.inputKeyDown(e));
                    $$h.setAttribute('tabIndex', '0');
                    return $$h;
                }.call(this));
                var $$i = document.createElement('div');
                $$i.setAttribute('class', 'actions');
                $$c.appendChild($$i);
                var $$j = document.createElement('a');
                $$j.setAttribute('href', 'login.php?action=logout');
                $$j.setAttribute('title', translation.logout);
                $$j.setAttribute('class', 'icon');
                $$i.appendChild($$j);
                var $$k = document.createTextNode('exit_to_app');
                $$j.appendChild($$k);
                $$a.appendChildren((this.historyView = new HistoryView()).elem);
                return $$a;
            }.call(this);
        }
        inputKeyDown(event) {
            switch (event.key || keyMapping[event.keyCode]) {
            case 'ArrowUp':
                this.historyView.navigateLater();
                event.preventDefault();
                break;
            case 'ArrowDown':
                this.historyView.navigateBefore();
                event.preventDefault();
                break;
            case 'Enter':
                statehandler.replace(this.historyView.index === -1 ? this.input.value : this.historyView.elements[this.historyView.index].query);
                event.preventDefault();
                break;
            case 'Escape':
                this.input.blur();
                this.historyView.resetNavigation();
                event.preventDefault();
                break;
            }
        }
    }