SearchResult.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React from 'react';
  2. import Page from '../PageList/Page';
  3. import SearchResultList from './SearchResultList';
  4. // Search.SearchResult
  5. export default class SearchResult extends React.Component {
  6. render() {
  7. const listView = this.props.pages.map((page) => {
  8. const pageId = "#" + page._id;
  9. return (
  10. <Page page={page} linkTo={pageId} key={page._id}>
  11. <div className="page-list-option">
  12. <a href={page.path}><i className="fa fa-arrow-circle-right" /></a>
  13. </div>
  14. </Page>
  15. );
  16. });
  17. /*
  18. UI あとで考える
  19. <span className="search-result-meta">Found: {this.props.searchResultMeta.total} pages with "{this.props.searchingKeyword}"</span>
  20. */
  21. return (
  22. <div className="content-main" id="content-main">
  23. <div className="search-result row" id="search-result">
  24. <div className="col-md-4 page-list search-result-list" id="search-result-list">
  25. <nav data-spy="affix" data-offset-top="120">
  26. <ul className="page-list-ul nav">
  27. {listView}
  28. </ul>
  29. </nav>
  30. </div>
  31. <div className="col-md-8 search-result-content" id="search-result-content">
  32. <div className="search-result-meta"><i className="fa fa-lightbulb-o" /> Found {this.props.searchResultMeta.total} pages with "{this.props.searchingKeyword}"</div>
  33. <SearchResultList
  34. pages={this.props.pages}
  35. searchingKeyword={this.props.searchingKeyword}
  36. />
  37. </div>
  38. </div>
  39. </div>
  40. );
  41. }
  42. }
  43. SearchResult.propTypes = {
  44. searchedPages: React.PropTypes.array.isRequired,
  45. searchingKeyword: React.PropTypes.string.isRequired,
  46. };
  47. SearchResult.defaultProps = {
  48. searchedPages: [],
  49. searchingKeyword: '',
  50. searchResultMeta: {},
  51. };