{"version":3,"file":"subnav.js","names":["pxToRem","px","rootFontSize","parseFloat","getComputedStyle","document","documentElement","fontSize","$","Drupal","behaviors","subnav","attach","context","hover","closest","addClass","removeClass","subNavScroll","$window","window","$userNav","$groupMenu","scroll","alertHeight","height","mainNavHeight","offsetHeight","subNavPadding","css","screenSizeInEm","innerWidth","querySelector","drupalToolbarHeight","drupalToolbarHeightREM","scrollTop","scrollY","slideDown","length","removeAttr","jQuery","doc","w","prevScroll","curScroll","direction","prevDirection","header","getElementById","checkScroll","toggleHeader","classList","add","remove","addEventListener","el","cls","className","match","hasClass","delClass","replace","RegExp","tabCloseMenu","navActive","querySelectorAll","i","navUL","navA","prevLi","nextLi","parentNode","previousElementSibling","nextElementSibling"],"sources":["src/components/subnav/subnav.es6.js"],"sourcesContent":["/* eslint-disable max-len */\nfunction pxToRem(px) {\n const rootFontSize = parseFloat(\n getComputedStyle(document.documentElement).fontSize\n );\n return px / rootFontSize;\n}\n(function ($) {\n 'use strict';\n Drupal.behaviors.subnav = {\n attach: function(context) {\n $('.subnav__ul--third-level', context).hover(function() {\n $(this).closest('.subnav__li--second-level').addClass('hovered');\n }, function() {\n $(this).closest('.subnav__li--second-level').removeClass('hovered');\n });\n\t this.subNavScroll();\n },\n\tsubNavScroll: function() {\n\tconst $window = $(window);\n\t// Get if nav on live site or in Drupal admin.\n\tconst $userNav = $('body:not(.toolbar-fixed) .nav');\n\tconst $groupMenu = $('.group-menu__container');\n\t$window.scroll(function() {\n\t\t// If there is an alert, don't pin nav until past alert.\n\t\tconst alertHeight = $('#block-alerts').height() || 0;\n\t\t// Get height of main nav.\n\t\tconst mainNavHeight = $('.nav').height();\n\t\t// Combine two for total offset height.\n\t\tconst offsetHeight = alertHeight + mainNavHeight;\n\t\t//get subnav paddings\n\t\tconst subNavPadding = $groupMenu.css('padding-top');\n\t\t// set screen size in EMs\n\t\tconst screenSizeInEm = window.innerWidth / parseFloat(getComputedStyle(document.querySelector('body'))['font-size']);\n\t\t\n\t\t// Get offset height of any Drupal admin toolbars.\n\t\tconst drupalToolbarHeight = $('.toolbar-bar').height() + $('.toolbar-tab').height();\n\t\tconst drupalToolbarHeightREM = pxToRem(drupalToolbarHeight);\n\t\t// When scrolled enough, add the sticky class and account for whether there are Drupal menus to offset.\n\t\tif ($window.scrollTop() > offsetHeight) {\n\t\t\t$groupMenu.addClass('sticky');\n\t\t\t//$('#group-menu_ccny-head a').show();\n\t\t\t\n\t\t\t// fix to prevent logo from appearing\n\t\t\tif(window.scrollY > offsetHeight){\n\t\t\t\t//$('#group-menu_ccny-head').slideDown();\n\t\t\t\t$groupMenu.slideDown();\n\t\t\t}\n\t\t\t$('.group-menu__inner.inner-container').addClass('sticky');\n\t\t\tif(!$userNav.length) {\n\t\t\t\t// If logged in, pin below admin toolbar.\n\t\t\t\t$groupMenu.css({\"top\":\"`${drupalToolbarHeightREM}rem`\",\"padding-top\":\"0\"});\n\t\t\t}\n\t\t\telse{\n\t\t\t\t$groupMenu.css('top',0);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t\t// If scrolled back to top, remove class and reset top if needed.\n\t\t\t\t$groupMenu.removeClass('sticky');\n\t\t\t\t//$('#group-menu_ccny-head').hide();\n\t\t\t\t$('.group-menu__inner.inner-container').removeClass('sticky');\n\t\t\t\tif(!$userNav.length) {\n\t\t\t\t\t$groupMenu.removeAttr('style');\n\t\t\t\t}\n\t\t\t}\n\t});\n\t}\n };\n\n}(jQuery));\n\n(function(){\n\n var doc = document.documentElement;\n var w = window;\n\n var prevScroll = w.scrollY || doc.scrollTop;\n var curScroll;\n var direction = 0;\n var prevDirection = 0;\n\n var header = document.getElementById('subsite_menu');\n \n var checkScroll = function() {\n\n /*\n ** Find the direction of scroll\n ** 0 - initial, 1 - up, 2 - down\n */\n\n curScroll = w.scrollY || doc.scrollTop;\n if (curScroll > prevScroll) { \n //scrolled up\n direction = 2;\n }\n else if (curScroll < prevScroll) { \n //scrolled down\n direction = 1;\n }\n\n if (direction !== prevDirection) {\n toggleHeader(direction, curScroll);\n }\n\n prevScroll = curScroll;\n };\n\n var toggleHeader = function(direction, curScroll) {\n if (direction === 2 && curScroll > 300) { \n\n //replace 52 with the height of your header in px\n\theader.classList.add('hide');\n\t//jQuery(\"#subsite_menu\").addClass('hide', {duration:500});\n prevDirection = direction;\n }\n else if (direction === 1) {\n header.classList.remove('hide');\n\t//$(\"#subsite_menu\").removeClass('hide', {duration:500});\n prevDirection = direction;\n }\n };\n\n window.addEventListener('scroll', checkScroll);\n\n\n// code found at http://fofwebdesign.co.uk/template/_testing/keyboard-tabable-dropdown-menu.htm\nfunction addClass(el, cls){\n\tif (!el.className.match('(?:^|\\\\s)'+cls+'(?!\\\\S)')){ el.className += ' '+cls; } \n\t}\nfunction hasClass(el, cls){\n\tif (el.className.match('(?:^|\\\\s)'+cls+'(?!\\\\S)')) { return true; } \n\t}\nfunction delClass(el, cls){\n\tel.className = el.className.replace(new RegExp('(?:^|\\\\s)'+cls+'(?!\\\\S)'),'');\n\t}\nfunction tabCloseMenu(){ \n\tvar navActive = document.querySelectorAll('#subnav li.active');\n\tfor(var i = 0; i < navActive.length; i++){\n\t\tdelClass(navActive[i], 'active');\n\t\t}\n\t}\n\nvar navUL = document.querySelector('#subnav > div > ul');\nvar navA = document.querySelectorAll('#subnav li a');\nvar prevLi;\nvar nextLi;\nnavUL.addEventListener('blur', tabCloseMenu); // remember to put tabindex=\"0\" on main menu ul\nnavUL.addEventListener('mouseleave', tabCloseMenu); \nnavA[navA.length-1].addEventListener('blur', tabCloseMenu);\nfor (var i = 0; i < navA.length; i++){\n\tnavA[i].addEventListener('focus', function(){ \n\t\t\n\t\tif (this.parentNode.querySelector('#subnav ul ul')){\n\t\t\taddClass(this.parentNode, 'active');\n\t\t}\n\t\tprevLi = this.parentNode.previousElementSibling;\n\t\tif (prevLi && hasClass(prevLi, 'active')){\n\t\t\tdelClass(prevLi, 'active'); \n\t\t}\n\t\tnextLi = this.parentNode.nextElementSibling;\n\t\tif (nextLi && hasClass(nextLi, 'active')){\n\t\t\tdelClass(nextLi, 'active'); \n\t\t}\n\t\t});\n\t}\n})();\n"],"mappings":"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","ignoreList":[]}