SearchResultList.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import GrowiRenderer from '../../util/GrowiRenderer';
  4. import RevisionLoader from '../Page/RevisionLoader';
  5. export default class SearchResultList extends React.Component {
  6. constructor(props) {
  7. super(props);
  8. this.growiRenderer = new GrowiRenderer(this.props.crowi, this.props.crowiRenderer, { mode: 'searchresult' });
  9. }
  10. render() {
  11. const resultList = this.props.pages.map((page) => {
  12. return (
  13. <div id={page._id} key={page._id} className="search-result-page">
  14. <h2 className="inline"><a href={page.path}>{page.path}</a></h2>
  15. { page.tags.length > 0 && (
  16. <span><i className="tag-icon icon-tag"></i> {page.tags.join(', ')}</span>
  17. )}
  18. <RevisionLoader
  19. crowi={this.props.crowi}
  20. crowiRenderer={this.growiRenderer}
  21. pageId={page._id}
  22. pagePath={page.path}
  23. revisionId={page.revision}
  24. highlightKeywords={this.props.searchingKeyword}
  25. />
  26. </div>
  27. );
  28. });
  29. return (
  30. <div>
  31. {resultList}
  32. </div>
  33. );
  34. }
  35. }
  36. SearchResultList.propTypes = {
  37. crowi: PropTypes.object.isRequired,
  38. crowiRenderer: PropTypes.object.isRequired,
  39. pages: PropTypes.array.isRequired,
  40. searchingKeyword: PropTypes.string.isRequired,
  41. };
  42. SearchResultList.defaultProps = {
  43. };