import highlight from 'flarum/helpers/highlight'; import LinkButton from 'flarum/components/LinkButton'; /** * The `DiscussionsSearchSource` finds and displays discussion search results in * the search dropdown. * * @implements SearchSource */ export default class DiscussionsSearchSource { constructor() { this.results = {}; } search(query) { this.results[query] = []; const params = { filter: {q: query}, page: {limit: 3}, include: 'relevantPosts,relevantPosts.discussion,relevantPosts.user' }; return app.store.find('discussions', params).then(results => this.results[query] = results); } view(query) { const results = this.results[query] || []; return [
  • Discussions
  • ,
  • {LinkButton.component({ icon: 'search', children: 'Search all discussions for "' + query + '"', href: app.route('index', {q: query}) })}
  • , results.map(discussion => { const relevantPosts = discussion.relevantPosts(); const post = relevantPosts && relevantPosts[0]; return (
  • {highlight(discussion.title(), query)}
    {post ?
    {highlight(post.contentPlain(), query, 100)}
    : ''}
  • ); }) ]; } }