TheShopCritics2/TSC2/wwwroot/js/modules/topsearch.js

60 lines
1.6 KiB
JavaScript

CNVS.TopSearch = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var searchForm = document.querySelector('.top-search-form');
if( !searchForm ) {
return true;
}
searchForm.closest('.header-row')?.classList.add( 'top-search-parent' );
var topSearchParent = document.querySelector('.top-search-parent'),
timeout;
selector[0].onclick = function(e) {
e.stopPropagation();
e.preventDefault();
clearTimeout( timeout );
__core.getVars.elBody.classList.toggle('top-search-open');
document.getElementById('top-cart')?.classList.remove('top-cart-open');
__core.getVars.recalls.menureset();
if( __core.getVars.elBody.classList.contains('top-search-open') ) {
topSearchParent?.classList.add('position-relative');
} else {
timeout = setTimeout( function() {
topSearchParent?.classList.remove('position-relative');
}, 500);
}
__core.getVars.elBody.classList.remove("primary-menu-open");
__core.getVars.elPageMenu && __core.getVars.elPageMenu.classList.remove('page-menu-open');
if (__core.getVars.elBody.classList.contains('top-search-open')){
searchForm.querySelector('input').focus();
}
};
document.addEventListener( 'click', function(e) {
if (!e.target.closest('.top-search-form')) {
__core.getVars.elBody.classList.remove('top-search-open');
timeout = setTimeout( function() {
topSearchParent?.classList.remove('position-relative');
}, 500);
}
}, false);
}
};
}();