felixarntz/theme-boilerplate

View on GitHub
assets/src/js/theme/navbar.js

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * File navbar.js.
 *
 * Handles toggling the navbar.
 */

class Navbar {
    constructor( containerId, options ) {
        this.container = document.querySelector( '#' + containerId );
        this.options   = options || {};
    }

    initialize() {
        if ( ! this.container ) {
            return;
        }

        const button = this.container.querySelector( 'button.site-navbar-toggle' );

        this.initializeNavbarToggle( button );
    }

    initializeNavbarToggle( button ) {
        const container = this.container;

        if ( ! button ) {
            container.classList.add( 'toggled' );
            return;
        }

        button.onclick = function() {
            const result = container.classList.toggle( 'toggled' );

            if ( result ) {
                button.setAttribute( 'aria-expanded', 'true' );
            } else {
                button.setAttribute( 'aria-expanded', 'false' );
            }
        };
    }
}

export default Navbar;