| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /* global screenReaderText */
- /**
- * Theme functions file.
- *
- * Contains handlers for navigation and widget area.
- */
- ( function( $ ) {
- var $body, $window, $sidebar, adminbarOffset, top = false,
- bottom = false, windowWidth, windowHeight, lastWindowPos = 0,
- topOffset = 0, bodyHeight, sidebarHeight, resizeTimer,
- secondary, button;
- function initMainNavigation( container ) {
- // Add dropdown toggle that display child menu items.
- container.find( '.item.dropdown > a' ).after( '<button class="dropdown-toggle-button" aria-expanded="false">' + screenReaderText.expand + '</button>' );
- // Toggle buttons and submenu items with active children menu items.
- container.find( '.item.dropdown.active > button' ).addClass( 'toggle-on' );
- container.find( '.item.dropdown.active > .subnav' ).addClass( 'toggled-on' );
- container.find( '.dropdown-toggle-button' ).click( function( e ) {
- var _this = $( this );
- e.preventDefault();
- _this.toggleClass( 'toggle-on' );
- _this.next( '.children, .sub-menu, .subnav, .dropdown-menu' ).toggleClass( 'toggled-on' );
- _this.attr( 'aria-expanded', _this.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
- _this.html( _this.html() === screenReaderText.expand ? screenReaderText.collapse : screenReaderText.expand );
- } );
- }
- initMainNavigation( $( '.main-navigation' ) );
- // Re-initialize the main navigation when it is updated, persisting any existing submenu expanded states.
- $( document ).on( 'customize-preview-menu-refreshed', function( e, params ) {
- if ( 'primary' === params.wpNavMenuArgs.theme_location ) {
- initMainNavigation( params.newContainer );
- // Re-sync expanded states from oldContainer.
- params.oldContainer.find( '.dropdown-toggle-button.toggle-on' ).each(function() {
- var containerId = $( this ).parent().prop( 'id' );
- $( params.newContainer ).find( '#' + containerId + ' > .dropdown-toggle-button' ).triggerHandler( 'click' );
- });
- }
- });
- secondary = $( '#secondary' );
- button = $( '.site-branding' ).find( '.secondary-toggle' );
- // Enable menu toggle for small screens.
- ( function() {
- var menu, widgets, social;
- if ( ! secondary || ! button ) {
- return;
- }
- // Hide button if there are no widgets and the menus are missing or empty.
- menu = secondary.find( '.nav-menu' );
- widgets = secondary.find( '#widget-area' );
- social = secondary.find( '#social-navigation' );
- if ( ! widgets.length && ! social.length && ( ! menu || ! menu.children().length ) ) {
- button.hide();
- return;
- }
- button.on( 'click.twentyfifteen', function() {
- secondary.toggleClass( 'toggled-on' );
- secondary.trigger( 'resize' );
- $( this ).toggleClass( 'toggled-on' );
- if ( $( this, secondary ).hasClass( 'toggled-on' ) ) {
- $( this ).attr( 'aria-expanded', 'true' );
- secondary.attr( 'aria-expanded', 'true' );
- } else {
- $( this ).attr( 'aria-expanded', 'false' );
- secondary.attr( 'aria-expanded', 'false' );
- }
- } );
- } )();
-
- $('#sidebar, #content').theiaStickySidebar();
- } )( jQuery );
|