UNPKG

arrow-admin

Version:
58 lines (50 loc) 1.81 kB
define(['jquery','lunr','jquery-highlight'], function($,lunr){ $('body').on('contentloaded',function(){ try { var content, searchResults; var highlightOpts = { element: 'span', className: 'search-highlight' }; var index = new lunr.Index(); index.ref('id'); index.field('title', { boost: 10 }); index.field('body'); index.pipeline.add(lunr.trimmer, lunr.stopWordFilter); $('.content h1, .content h2').each(function() { var title = $(this); var body = title.nextUntil('h1, h2'); index.add({ id: title.prop('id'), title: title.text(), body: body.text() }); }); content = $('.content'); searchResults = $('.search-results'); $('#input-search').on('keyup', function search(event){ content.unhighlight(highlightOpts); searchResults.addClass('visible'); // ESC clears the field if (event.keyCode === 27) { this.value = ''; } if (this.value) { var results = index.search(this.value).filter(function(r) { return r.score > 0.0001; }); if (results.length) { searchResults.empty(); $.each(results, function (index, result) { searchResults.append("<li><a href='#" + result.ref + "'>" + $('#'+result.ref).text() + "</a></li>"); }); content.highlight(this.value, highlightOpts); } else { searchResults.html('<li>No Results Found for "' + this.value + '"</li>'); } } else { content.unhighlight(highlightOpts); searchResults.removeClass('visible'); } }); } catch (E) { console.log('error',E); } }); });