culinary.kemonine.info/themes/hugo-theme-techdoc/layouts/partials/search.html

58 lines
1.8 KiB
HTML

<script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.0.0/dist/algoliasearch-lite.umd.js" integrity="sha256-MfeKq2Aw9VAkaE9Caes2NOxQf6vUa8Av0JqcUXUGkd0=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4.0.0/dist/instantsearch.production.min.js" integrity="sha256-6S7q0JJs/Kx4kb/fv0oMjS855QTz5Rc2hh9AkIUjUsk=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1.11.3/dayjs.min.js" integrity="sha256-iu/zLUB+QgISXBLCW/mcDi/rnf4m4uEDO0wauy76x7U=" crossorigin="anonymous"></script>
<div id="searchbox"></div>
<div id="stats"></div>
<div id="hits"></div>
<div id="pagination"></div>
<script>
var search = instantsearch({
indexName: '{{ .Site.Params.algolia_indexName }}',
searchClient: algoliasearch(
'{{ .Site.Params.algolia_appId }}',
'{{ .Site.Params.algolia_apiKey }}'
),
routing: true,
});
const renderHits = (renderOptions, isFirstRender) => {
const { hits } = renderOptions;
document.querySelector('#hits').innerHTML = `
${hits
.map(
item =>
`<div class="ais-Hits-item"><h3><a href="${ item.permalink }">${ item.title }</a></h3><p><span class="lastmod">${ dayjs(item.lastmod).format("YYYY/MM/DD") }</span> - ${ item.description ? item.description : item.content.length > 200 ? item.content.substring( 0, 200 ) + '...' : item.content }</p></div>`
)
.join('')}
`;
};
const customHits = instantsearch.connectors.connectHits( renderHits );
search.addWidgets([
instantsearch.widgets.searchBox({
container: '#searchbox',
showReset: false,
}),
instantsearch.widgets.stats({
container: '#stats',
}),
customHits({
container: document.querySelector('#hits'),
}),
instantsearch.widgets.pagination({
container: '#pagination',
maxPages: 20,
})
]);
search.start();
</script>