PageSourceSearch

https://www.dach-pro.shop/cdn/shop/t/126/assets/header.js?v=35487976071447608271779689161

js dach-pro.shop collected 2026-10-08 08:08:21 UTC 16,077 bytes, 2 lines download raw bytes

1class BasicHeader extends HTMLElement{constructor(){super()}get headerSection(){return document.querySelector(".header-section")}get headerNavigation(){return this.querySelector(".header__bottom")}get navigationToggleButton(){return this.querySelector(".toggle-navigation-button")}get enableTransparent(){return this.dataset.enableTransparent==="true"}connectedCallback(){if(this.init(),window.ResizeObserver&&new ResizeObserver(this.setHeight.bind(this)).observe(this),Shopify.designMode){const section=this.closest(".shopify-section");section.addEventListener("shopify:section:load",this.init.bind(this)),section.addEventListener("shopify:section:unload",this.init.bind(this)),section.addEventListener("shopify:section:reorder",this.init.bind(this))}}init(){new FoxTheme.delayUntilInteraction(this.setHeight.bind(this)),this.enableTransparent&&this.headerSection.classList.add("header-transparent")}calculateHeaderGroupHeight(){const headerGroups=document.querySelectorAll(".shopify-section-group-header-group");let totalHeight=0;return headerGroups.forEach(section=>{totalHeight+=section.offsetHeight}),document.documentElement.style.setProperty("--header-group-height",`${totalHeight}px`),totalHeight}setHeight(){requestAnimationFrame(()=>{const offsetHeight=Math.round(this.offsetHeight),offsetTop=Math.round(this.parentElement.offsetTop),offsetNavigationHeight=Math.round(this.headerNavigation.offsetHeight);document.documentElement.style.setProperty("--header-height",`${offsetHeight}px`),document.documentElement.style.setProperty("--header-offset-top",`${offsetTop}px`),document.documentElement.style.setProperty("--header-navigation-height",`${offsetNavigationHeight-1}px`),this.calculateHeaderGroupHeight()})}}customElements.define("basic-header",BasicHeader,{extends:"header"});class StickyHeader extends BasicHeader{constructor(){super(),this.classes={pinned:"header-pinned",headerScrolled:"header-scrolled",show:"is-show",hide:"is-hide",headerSticky:"header-sticky",isHideNav:"is-hide-nav"},this.navigationManuallyToggled=!1,this.currentScrollTop=0,this.lastScrollPos=0,this.scrollThreshold=200,this.scrollDirection="none",this.scrollDistance=0}get isAlwaysSticky(){return this.dataset.stickyType==="always"}get collapseOnScroll(){return this.dataset.collapseOnScroll==="true"}connectedCallback(){super.connectedCallback(),this.firstScrollTop=window.scrollY,this.headerBounds=this.headerSection.getBoundingClientRect(),this.initStickyHeader(),this.collapseOnScroll&&this.navigationToggleButton&&this.navigationToggleButton.addEventListener("click",this.handleNavigationToggle.bind(this))}initStickyHeader(){this.headerSection.classList.add(this.classes.headerSticky),this.headerSection.dataset.stickyType=this.dataset.stickyType,window.addEventListener("scroll",this.handleScroll.bind(this),{passive:!0})}handleNavigationToggle(event){event.preventDefault(),this.navigationManuallyToggled=!0;const isHidden=this.headerNavigation.classList.contains(this.classes.hide);setTimeout(()=>{document.body.classList.toggle(this.classes.isHideNav,!isHidden)},isHidden?0:250),this.headerNavigation.classList.toggle(this.classes.hide,!isHidden),this.headerNavigation.classList.toggle(this.classes.show,isHidden),this.navigationToggleButton.setAttribute("aria-expanded",isHidden),setTimeout(()=>{this.navigationManuallyToggled=!1},1e3)}handleScroll(){const scrollTop=window.scrollY,headerSection=this.headerSection,headerBoundsTop=this.headerBounds.top+this.firstScrollTop,headerBoundsBottom=this.headerBounds.bottom+this.firstScrollTop;this.updateScrollMetrics(scrollTop),requestAnimationFrame(()=>{scrollTop>headerBoundsTop?this.handleScrolledPastHeader(scrollTop,headerBoundsBottom):this.handleScrolledBeforeHeader(),this.currentScrollTop=scrollTop})}updateScrollMetrics(scrollTop){const newDirection=scrollTop>this.currentScrollTop?"down":"up";newDirection!==this.scrollDirection?(this.scrollDistance=0,this.scrollDirection=newDirection):this.scrollDistance+=Math.abs(scrollTop-this.currentScrollTop)}handleScrolledPastHeader(scrollTop,headerBoundsBottom){if(this.headerSection.classList.add(this.classes.headerScrolled),this.collapseOnScroll&&(this.navigationToggleButton.classList.add(this.classes.show),!this.navigationManuallyToggled&&!this.headerNavigation.classList.contains(this.classes.show)&&(this.headerNavigation.classList.add(this.classes.hide),document.body.classList.add(this.classes.isHideNav))),this.isAlwaysSticky)document.body.classList.add(this.classes.pinned);else{const isScrollingUp=this.scrollDirection==="up",isNearHeader=scrollTop<headerBoundsBottom+100,hasScrolledEnough=this.scrollDistance>=this.scrollThreshold;isScrollingUp||isNearHeader?document.body.classList.add(this.classes.pinned):!this.navigationManuallyToggled&&hasScrolledEnough&&document.body.classList.remove(this.classes.pinned)}}handleScrolledBeforeHeader(){this.headerSection.classList.remove(this.classes.headerScrolled),this.collapseOnScroll&&(this.navigationManuallyToggled||(document.body.classList.remove(this.classes.isHideNav),this.headerNavigation.classList.remove(this.classes.hide),this.headerNavigation.classList.remove(this.classes.show),this.navigationToggleButton.setAttribute("aria-expanded",!1)),this.navigationToggleButton.classList.remove(this.classes.show)),this.isAlwaysSticky&&document.body.classList.remove(this.classes.pinned)}}customElements.define("sticky-header",StickyHeader,{extends:"header"});const clearDropdownCount=new WeakMap;class DetailsDropdown extends HTMLDetailsElement{constructor(){super(),this.classes={bodyClass:"has-dropdown-menu"},this.events={handleAfterHide:"menu:handleAfterHide",handleAfterShow:"menu:handleAfterShow"},this.summaryElement=this.firstElementChild,this.contentElement=this.lastElementChild,this._open=this.hasAttribute("open"),this.summaryElement.addEventListener("click",this.handleSummaryClick.bind(this)),this.trigger==="hover"&&(this.summaryElement.addEventListener("focusin",event=>{event.target===this.summaryElement&&(this.open=!0)}),this.summaryElement.addEventListener("focusout",event=>{this.contentElement.contains(event.relatedTarget)||(this.open=!1)})),this.handleOutsideClick=this.handleOutsideClick.bind(this),this.handleEscKeyPress=this.handleEscKeyPress.bind(this),this.handleFocusOut=this.handleFocusOut.bind(this),this.hoverEnterTimer=null,this.hoverLeaveTimer=null,this.detectHoverListener=this.detectHover.bind(this),this.addEventListener("mouseenter",event=>{this.hoverLeaveTimer&&(clearTimeout(this.hoverLeaveTimer),this.hoverLeaveTimer=null),this.hoverEnterTimer=setTimeout(()=>{this.detectHover({type:"mouseenter"})},100)}),this.addEventListener("mouseleave",event=>{this.hoverEnterTimer&&(clearTimeout(this.hoverEnterTimer),this.hoverEnterTimer=null),this.hoverLeaveTimer=setTimeout(()=>{this.detectHover({type:"mouseleave"})},150)})}set open(value){value!==this._open&&(this._open=value,this.isConnected?this.transition(value):value?this.setAttribute("open",""):this.removeAttribute("open"))}get open(){return this._open}get trigger(){return FoxTheme.config.isTouch?"click":this.getAttribute("trigger")||"click"}get level(){return this.hasAttribute("level")?this.getAttribute("level"):"top"}handleSummaryClick(event){event.preventDefault(),!FoxTheme.config.isTouch&&this.trigger==="hover"&&this.summaryElement.hasAttribute("data-link")?window.location.href=this.summaryElement.getAttribute("data-link"):this.open=!this.open}async transition(value){if(value){clearDropdownCount.set(DetailsDropdown,clearDropdownCount.get(DetailsDropdown)+1),document.body.classList.add(this.classes.bodyClass),this.setAttribute("open",""),this.summaryElement.setAttribute("open",""),setTimeout(()=>{this.contentElement.setAttribute("open","")},100),document.addEventListener("click",this.handleOutsideClick),document.addEventListener("keydown",this.handleEscKeyPress),document.addEventListener("focusout",this.handleFocusOut),await this.showWithTransition();const MenuProductList2=this.querySelector("menu-product-list");
1return MenuProductList2&&typeof MenuProductList2=="object"&&MenuProductList2.calcNavButtonsPosition(),this.needsReverse(),FoxTheme.utils.waitForEvent(this,this.events.handleAfterShow)}else return clearDropdownCount.set(DetailsDropdown,clearDropdownCount.get(DetailsDropdown)-1),document.body.classList.toggle(this.classes.bodyClass,clearDropdownCount.get(DetailsDropdown)>0),this.summaryElement.removeAttribute("open"),this.contentElement.removeAttribute("open"),document.removeEventListener("click",this.handleOutsideClick),document.removeEventListener("keydown",this.handleEscKeyPress),document.removeEventListener("focusout",this.handleFocusOut),await this.hideWithTransition(),this.open||this.removeAttribute("open"),FoxTheme.utils.waitForEvent(this,this.events.handleAfterHide)}async showWithTransition(){FoxTheme.Motion.animate(this.contentElement,{opacity:[0,1],visibility:"visible"},{duration:FoxTheme.config.motionReduced?0:.6,easing:[.7,0,.2,1],delay:FoxTheme.config.motionReduced?0:.1});const translateY=this.level==="top"?"-105%":"2rem";return FoxTheme.Motion.animate(this.contentElement.firstElementChild,{transform:[`translateY(${translateY})`,"translateY(0)"]},{duration:FoxTheme.config.motionReduced?0:.6,easing:[.7,0,.2,1]}).finished}async hideWithTransition(){FoxTheme.Motion.animate(this.contentElement,{opacity:0,visibility:"hidden"},{duration:FoxTheme.config.motionReduced?0:.3,easing:[.7,0,.2,1]});const translateY=this.level==="top"?"-105%":"2rem";return FoxTheme.Motion.animate(this.contentElement.firstElementChild,{transform:`translateY(${translateY})`},{duration:FoxTheme.config.motionReduced?0:.6,easing:[.7,0,.2,1]}).finished}handleOutsideClick(event){const isClickInside=this.contains(event.target),isClickOnDetailsDropdown=event.target.closest("details")instanceof DetailsDropdown;!isClickInside&&!isClickOnDetailsDropdown&&(this.open=!1)}handleEscKeyPress(event){if(event.code==="Escape"){const targetMenu=event.target.closest("details[open]");targetMenu&&(targetMenu.open=!1)}}handleFocusOut(event){event.relatedTarget&&!this.contains(event.relatedTarget)&&(this.open=!1)}detectHover(event){this.trigger==="hover"&&(this.open=event.type==="mouseenter")}needsReverse(){this.contentElement.offsetLeft+this.contentElement.clientWidth*2>window.innerWidth&&this.contentElement.classList.add("needs-reverse")}}customElements.define("details-dropdown",DetailsDropdown,{extends:"details"}),clearDropdownCount.set(DetailsDropdown,0);class DetailsMega extends DetailsDropdown{constructor(){super(),Shopify.designMode&&(this.addEventListener("shopify:block:select",()=>{this.open=!0}),this.addEventListener("shopify:block:deselect",()=>{this.open=!1}))}async showWithTransition(){return FoxTheme.Motion.animate(this.contentElement.firstElementChild,{visibility:"visible",transform:["translateY(-100%)","translateY(0)"]},{duration:FoxTheme.config.motionReduced?0:.5,easing:[.39,.575,.565,1]}).finished}async hideWithTransition(){return FoxTheme.Motion.animate(this.contentElement.firstElementChild,{visibility:"hidden",transform:"translateY(-100%)"},{duration:FoxTheme.config.motionReduced?0:.5,easing:[.39,.575,.565,1]}).finished}}customElements.define("details-mega",DetailsMega,{extends:"details"});class MenuDrawerDetails extends HTMLDetailsElement{constructor(){super(),this.summary.addEventListener("click",this.onSummaryClick.bind(this)),this.closeButton.addEventListener("click",this.onCloseButtonClick.bind(this))}get parent(){return this.closest("[data-parent]")}get summary(){return this.querySelector("summary")}get closeButton(){return this.querySelector("button")}onSummaryClick(){setTimeout(()=>{this.parent.classList.add("active"),this.classList.add("active"),this.summary.setAttribute("aria-expanded",!0)},100)}onCloseButtonClick(){this.parent.classList.remove("active"),this.classList.remove("active"),this.summary.setAttribute("aria-expanded",!1),this.closeAnimation()}closeAnimation(){let animationStart;const handleAnimation=time=>{animationStart===void 0&&(animationStart=time),time-animationStart<400?window.requestAnimationFrame(handleAnimation):this.removeAttribute("open")};window.requestAnimationFrame(handleAnimation)}}customElements.define("menu-drawer-details",MenuDrawerDetails,{extends:"details"});class MenuDrawer extends DrawerComponent{constructor(){super()}get header(){return this.closest("header")}
1get requiresBodyAppended(){return!1}prepareToShow(){super.prepareToShow(),setTimeout(()=>{},300),document.documentElement.style.setProperty("--viewport-height",`${window.innerHeight}px`),document.documentElement.style.setProperty("--header-bottom-position",`${parseInt(this.header.getBoundingClientRect().bottom)}px`),document.dispatchEvent(new CustomEvent("menu-drawer:open",{bubbles:!0}))}handleAfterHide(){super.handleAfterHide(),setTimeout(()=>{this.querySelectorAll("details[is=menu-drawer-details]").forEach(menu=>{menu.onCloseButtonClick()})})}}customElements.define("menu-drawer",MenuDrawer);class MenuProductList extends HTMLElement{constructor(){super(),this.initSlide(),this.elementToFocus=this.querySelector("button")}get container(){return this.querySelector(".swiper")}get sliderPagination(){return this.querySelector(".swiper-pagination")}get sliderNext(){return this.querySelector(".swiper-button-next")}get sliderPrev(){return this.querySelector(".swiper-button-prev")}get numberOfColumns(){return parseInt(this.dataset.columns)}initSlide(){const slider=new FoxTheme.Carousel(this.container,{spaceBetween:10,slidesPerView:this.numberOfColumns,loop:!1,navigation:{nextEl:this.sliderNext,prevEl:this.sliderPrev},focusableElements:"input, select, option, textarea, button, video, label, a"});slider.init(),FoxTheme.a11y.getFocusableElements(this).forEach(element=>{element.addEventListener("focusin",function(){const slide=element.closest(".swiper-slide");slide&&slider.slider.slideTo(slider.slider.slides.indexOf(slide))})})}calcNavButtonsPosition(){if(!this.dataset.calcButtonPosition==="true")return;const firstMedia=this.querySelector(".product-card__image-wrapper");firstMedia&&firstMedia.clientHeight>0&&this.style.setProperty("--swiper-navigation-top-offset",parseInt(firstMedia.clientHeight)/2+"px")}}customElements.define("menu-product-list",MenuProductList);class MenuSidebar extends HTMLElement{constructor(){super(),this.handleSidenavMenuToggle=this.handleSidenavMenuToggle.bind(this),this.updateHeight=this.updateHeight.bind(this)}get summarys(){return this.querySelectorAll("summary")}connectedCallback(){this.setInitialMinHeight();const firstSummary=this.summarys[0];firstSummary&&this.setActiveItem(firstSummary,!1),this.summarys.forEach(summary=>{summary.addEventListener("mouseenter",this.handleSidenavMenuToggle),summary.addEventListener("click",e=>e.preventDefault())}),this.setupIntersectionObserver()}setInitialMinHeight(){const container=this.closest(".mega-menu__wrapper");if(container){const parentHeight=container.parentElement.offsetHeight;container.style.setProperty("--menu-sidebar-height",`${parentHeight}px`)}}setupIntersectionObserver(){new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.isIntersecting&&this.updateHeight()})}).observe(this)}updateHeight(){const activeSummary=this.querySelector(".is-visible");if(activeSummary){const container=this.closest(".mega-menu__wrapper"),content=activeSummary.nextElementSibling;container&&content&&container.style.setProperty("--sidebar-height",`${content.scrollHeight}px`)}}setActiveItem(summaryElem,updateHeight=!0){const lastSidenavElem=this.querySelector(".is-visible");lastSidenavElem&&lastSidenavElem.classList.remove("is-visible"),summaryElem.classList.add("is-visible"),updateHeight&&this.updateHeight()}handleSidenavMenuToggle(evt){const summaryElem=evt.target;this.setActiveItem(summaryElem)}disconnectedCallback(){this.summarys.forEach(summary=>{summary.removeEventListener("mouseenter",this.handleSidenavMenuToggle),summary.removeEventListener("click",this.handleClick)})}}customElements.define("menu-sidebar",MenuSidebar);
2//# sourceMappingURL=/cdn/shop/t/126/assets/header.js.map?v=35487976071447608271779689161

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.