PageHeader.tsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import React from 'react';
  2. import { NavModel } from '../nav_model_srv';
  3. import classNames from 'classnames';
  4. export interface IProps {
  5. model: NavModel;
  6. }
  7. export default class PageHeader extends React.Component<IProps, any> {
  8. constructor(props) {
  9. super(props);
  10. }
  11. renderBreadcrumb(breadcrumb) {
  12. return (
  13. <a className="breadcrumb-item" href={breadcrumb.url} key={breadcrumb.id}>
  14. {breadcrumb.text}
  15. </a>
  16. );
  17. }
  18. renderTab(tab) {
  19. let tabClasses = classNames({
  20. 'gf-tabs-link': true,
  21. 'active': tab.active,
  22. });
  23. console.log(tab.active);
  24. return (
  25. <li className="gf-tabs-item" key={tab.url}>
  26. <a className={tabClasses} href={tab.url}>
  27. <i className={tab.icon} />
  28. {tab.text}
  29. </a>
  30. </li>
  31. );
  32. }
  33. renderHeaderTitle(main) {
  34. return (
  35. <div className="page-header__inner">
  36. <span className="page-header__logo">
  37. {main.icon && <i className={`page-header__icon ${main.icon}`} />}
  38. {main.img && <img className="page-header__img" src={main.img} />}
  39. </span>
  40. <div className="page-header__info-block">
  41. <h1 className="page-header__title">{main.text}</h1>
  42. {main.subTitle && <div className="page-header__sub-title">{main.subTitle}</div>}
  43. {main.subType && (
  44. <div className="page-header__stamps">
  45. <i className={main.subType.icon}></i>
  46. {main.subType.text}
  47. </div>
  48. )}
  49. </div>
  50. </div>
  51. );
  52. }
  53. render() {
  54. return (
  55. <div className="page-header-canvas">
  56. <div className="page-container">
  57. <div className="page-nav">
  58. <div className="page-breadcrumbs">
  59. <a className="breadcrumb-item active" href="/">
  60. <i className="fa fa-home" />
  61. </a>
  62. {this.props.model.breadcrumbs.map(this.renderBreadcrumb)}
  63. </div>
  64. </div>
  65. <div className="page-header">
  66. {this.renderHeaderTitle(this.props.model.main)}
  67. {this.props.model.main.children && (
  68. <ul className="gf-tabs">
  69. {this.props.model.main.children.map(this.renderTab)}
  70. </ul>
  71. )}
  72. </div>
  73. </div>
  74. </div>
  75. );
  76. }
  77. }