window.addEventListener('load', () => { const openSearch = () => { document.body.style.cssText = 'width: 100%;overflow: hidden' document.querySelector('#algolia-search .search-dialog').style.display = 'block' document.querySelector('#algolia-search .ais-search-box--input').focus() btf.fadeIn(document.getElementById('search-mask'), 0.5) // shortcut: ESC document.addEventListener('keydown', function f (event) { if (event.code === 'Escape') { closeSearch() document.removeEventListener('keydown', f) } }) } const closeSearch = () => { document.body.style.cssText = "width: '';overflow: ''" const $searchDialog = document.querySelector('#algolia-search .search-dialog') $searchDialog.style.animation = 'search_close .5s' setTimeout(() => { $searchDialog.style.cssText = "display: none; animation: ''" }, 500) btf.fadeOut(document.getElementById('search-mask'), 0.5) } const searchClickFn = () => { document.querySelector('#search-button > .search').addEventListener('click', openSearch) document.getElementById('search-mask').addEventListener('click', closeSearch) document.querySelector('#algolia-search .search-close-button').addEventListener('click', closeSearch) } searchClickFn() window.addEventListener('pjax:complete', function () { getComputedStyle(document.querySelector('#algolia-search .search-dialog')).display === 'block' && closeSearch() searchClickFn() }) const algolia = GLOBAL_CONFIG.algolia const isAlgoliaValid = algolia.appId && algolia.apiKey && algolia.indexName if (!isAlgoliaValid) { return console.error('Algolia setting is invalid!') } const search = instantsearch({ appId: algolia.appId, apiKey: algolia.apiKey, indexName: algolia.indexName, searchParameters: { hitsPerPage: algolia.hits.per_page || 10 }, searchFunction: function (helper) { const searchInput = document.querySelector('#algolia-search-input input') if (searchInput.value) { helper.search() } } }) search.addWidget( instantsearch.widgets.searchBox({ container: '#algolia-search-input', reset: false, magnifier: false, placeholder: GLOBAL_CONFIG.algolia.languages.input_placeholder }) ) search.addWidget( instantsearch.widgets.hits({ container: '#algolia-hits', templates: { item: function (data) { const link = data.permalink ? data.permalink : (GLOBAL_CONFIG.root + data.path) return ( '' + data._highlightResult.title.value + '' ) }, empty: function (data) { return ( '