Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bindCatalog = function() {
- 'use strict';
- var $catalog, $catalogItem, $catalogOpener, $catalogSection, bind, bindCatalogShowing, bindOnClick, bindOnHover, catalogOpenerActiveClass, mobile, openItemClass, unbind;
- $catalog = $('.catalog');
- $catalogItem = $('.catalog__item');
- $catalogOpener = $('.catalog-opener');
- $catalogSection = $('.catalog-section');
- openItemClass = 'catalog__item_open';
- catalogOpenerActiveClass = 'catalog-opener_active';
- mobile = windowWidth <= 992;
- bindCatalogShowing = function() {
- var SPACE, pullLeftClass;
- pullLeftClass = 'catalog_pull-left';
- SPACE = 50;
- $catalogOpener.mouseenter(function() {
- var $container, $currentCatalog, $subcatalog, catalogFullWidth, itemOffset;
- $currentCatalog = $(this).find($catalog);
- $subcatalog = $currentCatalog.find('.subcatalog').first();
- $container = $(this).closest('.catalog-container');
- if ($currentCatalog.length) {
- $(this).addClass(catalogOpenerActiveClass);
- itemOffset = $(this).position().left - $container.position().left;
- catalogFullWidth = itemOffset + ($currentCatalog.width() + $subcatalog.width());
- if ($container.width() - catalogFullWidth - SPACE < 0) {
- return $currentCatalog.addClass(pullLeftClass);
- }
- }
- });
- return $catalogOpener.mouseleave(function() {
- $(this).removeClass(catalogOpenerActiveClass);
- return $catalog.removeClass(pullLeftClass);
- });
- };
- unbind = function() {
- $catalog.unbind();
- $catalogItem.unbind();
- $catalogOpener.unbind();
- $catalogSection.find('a').unbind();
- return $('.' + openItemClass).removeClass(openItemClass);
- };
- bindOnHover = function() {
- bindCatalogShowing();
- $($catalogSection).find('ul').css('display', '');
- return $catalog.menuAim({
- activate: function(item) {
- return $(item).addClass(openItemClass);
- },
- deactivate: function(item) {
- return $(item).removeClass(openItemClass);
- },
- exitMenu: function() {
- return $('.' + openItemClass).removeClass(openItemClass);
- }
- });
- };
- bindOnClick = function() {
- $('.catalog-button').click(function() {
- return $('.menu').slideToggle();
- });
- return $catalogSection.find('li').click(function(e) {
- var $targetMenu;
- if (!$(e.target).closest('.menu__link').length) {
- $targetMenu = $(this).find('> ul');
- if ($targetMenu.hasClass('subcatalog')) {
- e.stopPropagation();
- }
- if ($targetMenu.length) {
- return $targetMenu.slideToggle();
- }
- }
- });
- };
- bind = function() {
- unbind();
- if (mobile) {
- return bindOnClick();
- } else {
- return bindOnHover();
- }
- };
- bind();
- return $(window).resize(function() {
- if (mobile !== (windowWidth <= 992)) {
- mobile = windowWidth <= 992;
- return bind();
- }
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement