1
0
Fork 0
docsearch/docs/build/assets/javascripts/communityHeader.js
2018-08-21 11:50:00 +02:00

1 line
No EOL
7.4 KiB
JavaScript

"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),communityHeader=function(){function e(t,n){var i=this;_classCallCheck(this,e),this.docSearchCredentials=t,this.docSearch=n||null,this.menuState={isOpen:!1,isOpenMobile:!1},this.INIT_VAL={WIDTH:490,HEIGHT:360},this.disableTransitionTimeout,this.searchIcon=document.querySelector("#search"),this.cancelIcon=document.querySelector("#cancel"),this.searchInputContainer=document.querySelector(".algc-search__input"),this.searchContainer=this.searchInputContainer?this.searchInputContainer.parentNode:null,this.navRoot=document.querySelector(".algc-dropdownroot"),this.dropdownRoot=document.querySelector(".algc-navigation__dropdown-holder"),this.navItems=document.querySelectorAll('a[data-enabledropdown="true"]'),this.navContainer=document.querySelector(".algc-dropdownroot__dropdowncontainer"),this.menuContainer=document.querySelector(".algc-navigation__container"),this.navBg=document.querySelector(".algc-dropdownroot__dropdownbg"),this.navArrow=document.querySelector(".algc-dropdownroot__dropdownarrow"),this.dropDownContainer=document.querySelector(".algc-dropdownroot__dropdowncontainer"),this.menuTriggers=document.querySelectorAll('[data-enabledropdown="true"]'),this.mobileMenuButton=document.querySelector(".algc-openmobile "),this.mobileMenu=document.querySelector(".algc-mobilemenu"),this.subList=document.querySelectorAll(".algc-menu--sublistlink"),this.subListHolders=[].concat(_toConsumableArray(this.subList)).map(function(e){return e.parentNode}),this.menuDropdowns={},[].forEach.call(document.querySelectorAll("[data-dropdown-content]"),function(e){i.menuDropdowns[e.dataset.dropdownContent]={parent:e.parentNode,content:e}}),this.shouldInitDocSearch=this.shouldInitDocSearch.bind(this),this.docSearchInit=this.checkDocSearch(n),this.enableDocSearch=this.verifyDocSearchParams(t),this.hasDocSearchRendered=document.querySelector(".algc-navigation .algc-search__input--docsearch"),this.triggerMenu=this.triggerMenu.bind(this),this.shouldTriggerMenu=this.shouldTriggerMenu.bind(this),this.closeMenu=this.closeMenu.bind(this),this.toggleMobileMenu=this.toggleMobileMenu.bind(this),this.docSearchToggling=this.docSearchToggling.bind(this),this.initDocSearchStrategy=this.initDocSearchStrategy.bind(this),this.openSublist=this.openSublist.bind(this),this.closeSubLists=this.closeSubLists.bind(this),this.bindListeners=this.bindListeners.bind(this),this.calculatePosition=this.calculatePosition.bind(this),this.verifyDocSearchParams(),this.shouldInitDocSearch(),this.initDocSearchStrategy(),this.bindListeners()}return _createClass(e,[{key:"calculatePosition",value:function(e){var t=e.getBoundingClientRect(),n=e.offsetWidth,i=e.offsetHeight;return{left:t.left,top:t.top,width:t.width,height:t.height,realWidth:n,realHeight:i,center:t.left+t.width/2}}},{key:"shouldInitDocSearch",value:function(){if(!this.enableDocSearch&&this.hasDocSearchRendered)throw new Error("You need to pass docSearch: { apiKey, indexName, inputSelector } to communityHeader function in order to initialise docSearch")}},{key:"checkDocSearch",value:function(){var e=arguments.length>0&&arguments[0]!==undefined&&arguments[0];return e||("function"==typeof window.docsearch||"function"==typeof docsearch?docsearch:void 0)}},{key:"verifyDocSearchParams",value:function(e){return!!(e&&e.apiKey&&e.indexName&&e.inputSelector)}},{key:"triggerMenu",value:function(e){var t=this,n=e.target.dataset.dropdown,i=this.menuDropdowns[n].content,o=(this.menuDropdowns[n].parent,this.calculatePosition(e.target)),r=this.calculatePosition(i),s=this.calculatePosition(this.menuContainer),a=void 0,c={X:r.realWidth/this.INIT_VAL.WIDTH,Y:r.realHeight/this.INIT_VAL.HEIGHT};a=o.center-s.left+"px",s.left<20&&(a="calc(50% - 36px)"),this.navBg.style.cssText="\n transform: translateX("+a+") scale("+c.X+", "+c.Y+")",this.navArrow.style.cssText="\n transform: translateX("+a+") rotate(45deg)",this.dropDownContainer.style.cssText="\n transform: translateX("+a+");\n width: "+r.realWidth+"px;\n height: "+(r.realHeight+10)+"px;",this.dropdownRoot.style.pointerEvents="auto",Object.keys(this.menuDropdowns).forEach(function(e){e===n?t.menuDropdowns[e].parent.classList.add("active"):t.menuDropdowns[e].parent.classList.remove("active")}),this.menuState.isOpen||setTimeout(function(){t.navRoot.className="algc-dropdownroot activeDropdown"},50),window.clearTimeout(this.disableTransitionTimeout),this.menuState.isOpen=!0}},{key:"shouldTriggerMenu",value:function(e){var t=this;this.menuState.isOpen?this.triggerMenu(e):this.triggerMenuTimeout=setTimeout(function(){t.triggerMenu(e)},200)}},{key:"closeMenu",value:function(){var e=this;window.clearTimeout(this.triggerMenuTimeout),this.menuState.isOpen=!1,this.disableTransitionTimeout=setTimeout(function(){e.dropdownRoot.style.pointerEvents="none",e.navRoot.className="algc-dropdownroot notransition"},50)}},{key:"toggleMobileMenu",value:function(){this.mobileMenuButton.classList.toggle("algc-openmobile--open"),this.mobileMenu.classList.toggle("algc-mobilemenu--open")}},{key:"docSearchToggling",value:function(){var e=this;this.searchInput=document.querySelector(this.docSearchCredentials.inputSelector);var t=function(){e.searchContainer.classList.add("open"),e.searchInput.focus()},n=function(){e.searchInput.blur(),e.searchContainer.classList.remove("open")},i=function(){""!==e.searchInput.value?e.searchInput.value="":n()};this.searchInput.setAttribute("value",""),this.searchIcon.addEventListener("click",t),this.cancelIcon.addEventListener("click",i)}},{key:"initDocSearch",value:function(){this.docSearchToggling(),this.docSearchInit(this.docSearchCredentials)}},{key:"initDocSearchStrategy",value:function(){var e=this;if(this.enableDocSearch&&"function"==typeof this.docSearchInit)this.initDocSearch();else if("lazy"===this.docSearch){var t=document.createElement("script");t.type="text/javascript",t.async=!0,document.body.appendChild(t),t.onload=function(){e.docSearchInit=docsearch,e.initDocSearch()},t.src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"}}},{key:"openSublist",value:function(e){var t=e.parentNode;this.subListHolders.forEach(function(e){e!==t||t.classList.contains("open")?e.classList.remove("open"):e.classList.add("open")})}},{key:"closeSubLists",value:function(){this.subListHolders.forEach(function(e){return e.classList.remove("open")})}},{key:"bindListeners",value:function(){var e=this,t=this;this.subList.forEach(function(e){e.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),t.openSublist(this)})}),this.menuTriggers.forEach(function(t){t.addEventListener("mouseenter",e.shouldTriggerMenu),t.addEventListener("focus",e.triggerMenu)}),this.navItems.forEach(function(t){t.addEventListener("mouseleave",e.closeMenu)}),this.navContainer.addEventListener("mouseenter",function(){clearTimeout(e.disableTransitionTimeout)}),this.mobileMenuButton.addEventListener("click",this.toggleMobileMenu),document.addEventListener("click",this.closeSubLists),document.querySelector(".algc-dropdownroot__dropdowncontainer").addEventListener("mouseleave",this.closeMenu)}}]),e}();