(function () { var SOURCES = window.TEXT_VARIABLES.sources; window.Lazyload.js(SOURCES.jquery, function() { // search panel var search = (window.search || (window.search = {})); var useDefaultSearchBox = window.useDefaultSearchBox === undefined ? true : window.useDefaultSearchBox ; var $searchModal = $('.js-page-search-modal'); var $searchToggle = $('.js-search-toggle'); var searchModal = $searchModal.modal({ onChange: handleModalChange, hideWhenWindowScroll: true }); var modalVisible = false; search.searchModal = searchModal; var $searchBox = null; var $searchInput = null; var $searchClear = null; function getModalVisible() { return modalVisible; } search.getModalVisible = getModalVisible; function handleModalChange(visible) { modalVisible = visible; if (visible) { search.onShow && search.onShow(); useDefaultSearchBox && $searchInput[0] && $searchInput[0].focus(); } else { search.onShow && search.onHide(); useDefaultSearchBox && $searchInput[0] && $searchInput[0].blur(); setTimeout(function() { useDefaultSearchBox && ($searchInput.val(''), $searchBox.removeClass('not-empty')); search.clear && search.clear(); window.pageAsideAffix && window.pageAsideAffix.refresh(); }, 400); } } $searchToggle.on('click', function() { modalVisible ? searchModal.hide() : searchModal.show(); }); // Char Code: 83 S, 191 / $(window).on('keyup', function(e) { if (!modalVisible && !window.isFormElement(e.target || e.srcElement) && (e.which === 83 || e.which === 191)) { modalVisible || searchModal.show(); } }); if (useDefaultSearchBox) { $searchBox = $('.js-search-box'); $searchInput = $searchBox.children('input'); $searchClear = $searchBox.children('.js-icon-clear'); search.getSearchInput = function() { return $searchInput.get(0); }; search.getVal = function() { return $searchInput.val(); }; search.setVal = function(val) { $searchInput.val(val); }; $searchInput.on('focus', function() { $(this).addClass('focus'); }); $searchInput.on('blur', function() { $(this).removeClass('focus'); }); $searchInput.on('input', window.throttle(function() { var val = $(this).val(); if (val === '' || typeof val !== 'string') { search.clear && search.clear(); } else { $searchBox.addClass('not-empty'); search.onInputNotEmpty && search.onInputNotEmpty(val); } }, 400)); $searchClear.on('click', function() { $searchInput.val(''); $searchBox.removeClass('not-empty'); search.clear && search.clear(); }); } }); })();