ClusterMenu.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React, { CSSProperties } from 'react';
  2. import { Cluster } from 'redux/interfaces';
  3. import { NavLink } from 'react-router-dom';
  4. import { clusterBrokersPath, clusterTopicsPath } from 'lib/paths';
  5. interface Props extends Cluster {}
  6. const DefaultIcon: React.FC = () => {
  7. const style: CSSProperties = {
  8. width: '.6rem',
  9. left: '-8px',
  10. top: '-4px',
  11. position: 'relative',
  12. };
  13. return (
  14. <span title="Default Cluster" className="icon has-text-primary is-small">
  15. <i style={style} data-fa-transform="rotate-340" className="fas fa-thumbtack" />
  16. </span>
  17. )
  18. };
  19. const ClusterMenu: React.FC<Props> = ({
  20. name,
  21. defaultCluster,
  22. }) => (
  23. <ul className="menu-list">
  24. <li>
  25. <NavLink exact to={clusterBrokersPath(name)} title={name} className="has-text-overflow-ellipsis">
  26. {defaultCluster && <DefaultIcon />}
  27. {name}
  28. </NavLink>
  29. <ul>
  30. <NavLink to={clusterBrokersPath(name)} activeClassName="is-active" title="Brokers">
  31. Brokers
  32. </NavLink>
  33. <NavLink to={clusterTopicsPath(name)} activeClassName="is-active" title="Topics">
  34. Topics
  35. </NavLink>
  36. </ul>
  37. </li>
  38. </ul>
  39. );
  40. export default ClusterMenu;