%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/templates/landing24/assets/js/helpers/ |
Current File : /home/bitrix/www/bitrix/templates/landing24/assets/js/helpers/header_menu_init.js |
;(function () { "use strict"; /** * @todo Refactoring */ BX.addCustomEvent(window, "BX.Landing.Block:init", function (event) { var headerSelector = event.makeRelativeSelector('.u-header'); if (event.block.querySelectorAll(headerSelector).length > 0) { // in edit mode menu must be like a usual block if (BX.Landing.getMode() == "view") { $.HSCore.components.HSHeader.init($(headerSelector)); } } var scrollNavSelector = event.makeRelativeSelector('.js-scroll-nav'); if (event.block.querySelectorAll(scrollNavSelector).length > 0) { checkActive(scrollNavSelector); $.HSCore.components.HSScrollNav.init($('.js-scroll-nav'), { duration: 400, easing: 'easeOutExpo' }); } }); // remove all ".active" function removeAllActive(selector) { removeActive($(selector).find('.nav-item.active')); } /** * @param node - may be Node or selector */ function removeActive(node) { $(node) .removeClass('active') .find('span.sr-only').remove(); } /** * @param node - may be Node or selector */ function addActive(node) { $(node) .addClass('active') .find('a.nav-link').after('<span class="sr-only">(current)</span>'); } // unset not actual @active@ class, set true function checkActive(selector) { removeAllActive(selector); // in editor - set first element as active, for example if (BX.Landing.getMode() == "edit") { addActive($(selector).find('a').parent('.nav-item').eq(0)); } // in viewer - set active by curr URL else { var currUrl = document.location.pathname; if (currUrl[currUrl.length - 1] !== '/') { currUrl += '/'; } $(selector).find('a').each(function (i) { if ($(this).attr('href') == currUrl) { addActive($(this).parent('.nav-item')); } }); } } //unset ACTIVE on menu link BX.addCustomEvent("BX.Landing.Block:Card:beforeAdd", function (event) { var scrollNavSelector = event.makeRelativeSelector('.js-scroll-nav'); if (event.block.querySelectorAll(scrollNavSelector).length > 0) { if (event.card && BX.hasClass(event.card, 'active')) { removeActive(event.card); BX.addCustomEvent("BX.Landing.Block:Card:add", returnActiveClass); } } }); // run only after clone active card - return active class for parent card function returnActiveClass(event) { var scrollNavSelector = event.makeRelativeSelector('.js-scroll-nav'); if (event.block.querySelectorAll(scrollNavSelector).length > 0) { if (event.card) { var prevCard = BX.findPreviousSibling(event.card); if (prevCard) { addActive(prevCard); } } BX.removeCustomEvent("BX.Landing.Block:Card:add", returnActiveClass) } } })();