LsxListView.jsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { PageNode } from '../PageNode';
  4. import { LsxContext } from '../lsx-context';
  5. import { LsxPage } from './LsxPage';
  6. import styles from './LsxListView.module.scss';
  7. export class LsxListView extends React.Component {
  8. render() {
  9. const listView = this.props.nodeTree.map((pageNode) => {
  10. return (
  11. <LsxPage
  12. key={pageNode.pagePath}
  13. depth={1}
  14. pageNode={pageNode}
  15. lsxContext={this.props.lsxContext}
  16. basisViewersCount={this.props.basisViewersCount}
  17. />
  18. );
  19. });
  20. // no contents
  21. if (this.props.nodeTree.length === 0) {
  22. return (
  23. <div className="text-muted">
  24. <small>
  25. <i className="fa fa-fw fa-info-circle" aria-hidden="true"></i>
  26. $lsx(<a href={this.props.lsxContext.pagePath}>{this.props.lsxContext.pagePath}</a>) has no contents
  27. </small>
  28. </div>
  29. );
  30. }
  31. return (
  32. <div className={`page-list ${styles['page-list']} lsx`}>
  33. <ul className="page-list-ul">
  34. {listView}
  35. </ul>
  36. </div>
  37. );
  38. }
  39. }
  40. LsxListView.propTypes = {
  41. nodeTree: PropTypes.arrayOf(PropTypes.instanceOf(PageNode)).isRequired,
  42. lsxContext: PropTypes.instanceOf(LsxContext).isRequired,
  43. basisViewersCount: PropTypes.number,
  44. };