1
0
mirror of https://github.com/flarum/core.git synced 2025-07-28 20:20:34 +02:00
Files
php-flarum/js/forum/src/components/DiscussionsSearchSource.js
Toby Zerner a9ded36b57 Major CSS revamp
- Get rid of Bootstrap (except we still rely on some JS)
- Use BEM class names
- Rework variables/theme config
- Fix various bugs, including some on mobile

The CSS is still not ideal – it needs to be cleaned up some more. But
that can be a focus for after beta.
2015-07-17 14:47:49 +09:30

55 lines
1.6 KiB
JavaScript

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 [
<li className="Dropdown-header">Discussions</li>,
<li>
{LinkButton.component({
icon: 'search',
children: 'Search all discussions for "' + query + '"',
href: app.route('index', {q: query})
})}
</li>,
results.map(discussion => {
const relevantPosts = discussion.relevantPosts();
const post = relevantPosts && relevantPosts[0];
return (
<li className="DiscussionSearchResult" data-index={'discussions' + discussion.id()}>
<a href={app.route.discussion(discussion, post && post.number())} config={m.route}>
<div className="DiscussionSearchResult-title">{highlight(discussion.title(), query)}</div>
{post ? <div className="DiscussionSearchResult-excerpt">{highlight(post.contentPlain(), query, 100)}</div> : ''}
</a>
</li>
);
})
];
}
}