87 lines
2.8 KiB
JavaScript
87 lines
2.8 KiB
JavaScript
|
|
(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();
|
|
});
|
|
}
|
|
});
|
|
})();
|