Sha256: e40c9d6c8256840d79aba44497ee6a3a2bfe2f62c934435c5d42c1383e7d75fb

Contents?: true

Size: 1.34 KB

Versions: 5

Compression:

Stored size: 1.34 KB

Contents

class SidebarSticky {
  constructor() {
    this.dropdownMenu = $('#ld-dropdown');
    this._handleClickOutsideStickyDropdown();
    this._handleToggle();
    this._hideStikyDropdown();
  }

  handleUpdate(e) {
    switch(e) {
      case EVENTS.SCROLLING:
        this._hideStikyDropdown();
        break;
    }
  }

  _handleClickOutsideStickyDropdown() {
    $(document).on('click', (e) => {
      if (!$(e.target).closest('.c-sticky-header-menu').length) {
        this._hideStikyDropdown();
      }
    });
  }

  _handleToggle() {
    this.dropdownMenu.off('on.zf.toggler').on('on.zf.toggler', () => {
      const $targets = this.dropdownMenu.find('.o-ld-sidebar__item--active').closest('.o-ld-sidebar__menu.nested');
      this.dropdownMenu.find('> .o-ld-sidebar__menu').foundation('down', $targets);
    });
    $('#ld-sitemenu').off('on.zf.toggler').on('on.zf.toggler', () => {
      $('.c-sticky-header-toggle__overlay').addClass('c-sticky-header-toggle__overlay--active');
    });
    $('#ld-sitemenu').off('off.zf.toggler').on('off.zf.toggler', () => {
      $('.c-sticky-header-toggle__overlay').removeClass('c-sticky-header-toggle__overlay--active');
    });
  }

  _hideStikyDropdown() {
    let $openedDropdowns = $('.c-sticky-header-menu[aria-expanded=true]');
    if (!$openedDropdowns.length) return;
    $openedDropdowns.foundation('toggle');
  }
}

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lcms-engine-0.1.4 app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarSticky.js.jsx
lcms-engine-0.1.3 app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarSticky.js.jsx
lcms-engine-0.2.0 app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarSticky.js.jsx
lcms-engine-0.1.2 app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarSticky.js.jsx
lcms-engine-0.1.0 app/assets/javascripts/lcms/engine/initializers/sidebar/SidebarSticky.js.jsx