mirror of
https://github.com/Sea-Haven-Industries/seahaven-site.git
synced 2026-10-06 12:11:56 +00:00
2 lines
13 KiB
JavaScript
2 lines
13 KiB
JavaScript
|
|
/*! elementor-pro - v3.27.0 - 03-02-2025 */
|
||
|
|
"use strict";(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[187],{7112:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=s(6914);class SearchKeyboardHandler extends elementorModules.frontend.handlers.Base{focusableResultElements;currentResultFocusedIndex=-1;__construct(){super.__construct(...arguments),elementorFrontend.hooks.addAction("search:results-updated",this.loadResultElementsEvents.bind(this))}getDefaultSettings(){return{selectors:{searchWrapper:".e-search",searchField:".e-search-input",resultsContainer:".e-search-results-container",loopItem:".e-loop-item",clearIcon:".e-search-input-wrapper > svg, .e-search-input-wrapper > i"}}}getDefaultElements(){const e=this.getSettings("selectors");return{resultsContainer:this.$element[0].querySelector(e.resultsContainer),searchField:this.$element[0].querySelector(e.searchField),clearIcon:this.$element[0].querySelector(e.clearIcon)}}setFocusableElements(e){const t=(0,n.focusableElementSelectors)(),s=e.querySelectorAll(t);this.focusableResultElements=Array.from(s).filter((e=>!e.disabled&&!e.inert&&-1!==e.tabIndex))}isSearchInputFocused(){return this.elements.searchField===elementorFrontend.elements.window.document.activeElement}bindEvents(){this.boundHandleKeyboardNavigation=this.handleKeyboardNavigation.bind(this),this.boundHandleEscapeKey=this.handleEscapeKey.bind(this),this.elements.searchField.addEventListener("keydown",this.boundHandleKeyboardNavigation),elementorFrontend.elements.window.document.addEventListener("keydown",this.boundHandleEscapeKey),this.elements.searchField.addEventListener("focus",this.openResults.bind(this))}loadResultElementsEvents(){this.setFocusableElements(this.$element[0].querySelector(this.getSettings("selectors.resultsContainer"))),this.focusableResultElements?.forEach((e=>{e.addEventListener("keydown",this.handleKeyboardNavigation.bind(this))}))}unbindEvents(){this.boundHandleKeyboardNavigation&&this.elements.searchField.removeEventListener("keydown",this.boundHandleKeyboardNavigation),elementorFrontend.elements.window.document.removeEventListener("keydown",this.boundHandleEscapeKey),this.elements.searchField.removeEventListener("focus",this.openResults.bind(this))}handleKeyboardNavigation(e){switch(e.key){case"ArrowDown":this.focusNextElement();break;case"ArrowUp":this.focusPreviousElement();break;case"Enter":this.handleEnterKey()}}areResultsClosed(){return 0===this.elements.resultsContainer.querySelectorAll(this.getSettings("selectors.loopItem")).length||this.elements.resultsContainer.classList.contains("hidden")}openResults(){this.areResultsClosed()&&(this.elements.resultsContainer.classList.remove("hidden"),elementorFrontend.hooks.doAction("search:results-displayed",this.getID()))}handleEnterKey(){this.closeResults()}handleEscapeKey(e){if("Escape"!==e.key)return;const t=elementorFrontend.elements.window.document.activeElement;(this.elements.resultsContainer.contains(t)||!1)&&this.elements.searchField.focus(),this.closeResults()}focusNextElement(){this.isSearchInputFocused()?this.currentResultFocusedIndex=0:(this.currentResultFocusedIndex++,this.checkFocusIndexBounds()),this.updateFocus()}focusPreviousElement(){this.isSearchInputFocused()?this.currentResultFocusedIndex=this.focusableResultElements.length-1:(this.currentResultFocusedIndex--,this.checkFocusIndexBounds()),this.updateFocus()}checkFocusIndexBounds(){this.currentResultFocusedIndex>=this.focusableResultElements.length?this.currentResultFocusedIndex=-1:this.currentResultFocusedIndex<-1&&(this.currentResultFocusedIndex=this.focusableResultElements.length-1)}updateFocus(){-1===this.currentResultFocusedIndex?this.focusSearchAndMoveCursorToEnd():this.setFocusToElement(this.focusableResultElements[this.currentResultFocusedIndex])}closeResults(){this.elements.resultsContainer.classList.add("hidden"),this.updateAriaExpanded(!1)}updateAriaExpanded(e){this.elements.searchField.setAttribute("aria-expanded",e)}focusSearchAndMoveCursorToEnd(){const e=this.elements.searchField,t=e.value.length;this.setFocusToElement(this.elements.searc
|