'use strict'; const views = require('../util/views.js'); const template = views.getTemplate('top-navigation'); class TopNavigationView { constructor() { this._hostNode = document.getElementById('top-navigation-holder'); } get _mobileNavigationToggleNode() { return this._hostNode.querySelector('#mobile-navigation-toggle'); } get _navigationListNode() { return this._hostNode.querySelector('nav > ul'); } get _navigationLinkNodes() { return this._navigationListNode.querySelectorAll('li > a'); } render(ctx) { views.replaceContent(this._hostNode, template(ctx)); this._bindMobileNavigationEvents(); } activate(key) { for (let itemNode of this._hostNode.querySelectorAll('[data-name]')) { itemNode.classList.toggle( 'active', itemNode.getAttribute('data-name') === key); } } _bindMobileNavigationEvents() { this._mobileNavigationToggleNode.addEventListener( 'click', e => this._mobileNavigationToggleClick(e)); for (let navigationLinkNode of this._navigationLinkNodes) { navigationLinkNode.addEventListener( 'click', e => this._navigationLinkClick(e)); } } _mobileNavigationToggleClick(e) { this._navigationListNode.classList.toggle('opened'); } _navigationLinkClick(e) { this._navigationListNode.classList.remove('opened'); } } module.exports = TopNavigationView;