card.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // jshint ignore:start
  2. import React from 'react';
  3. import MakeOwner from './make-owner';
  4. import Remove from './remove';
  5. import Avatar from 'misago/components/avatar';
  6. export default function(props) {
  7. const participant = props.participant;
  8. let className = 'btn btn-default';
  9. if (participant.is_owner) {
  10. className = 'btn btn-primary';
  11. }
  12. className += ' btn-user btn-block';
  13. return (
  14. <div className="col-xs-12 col-sm-3 col-md-2 participant-card">
  15. <div className="dropdown">
  16. <button
  17. aria-haspopup="true"
  18. aria-expanded="false"
  19. className={className}
  20. data-toggle="dropdown"
  21. type="button"
  22. >
  23. <Avatar
  24. size="34"
  25. user={participant}
  26. />
  27. <span className="btn-text">
  28. {participant.username}
  29. </span>
  30. </button>
  31. <ul className="dropdown-menu stick-to-bottom">
  32. <UserStatus isOwner={participant.is_owner} />
  33. <li className="dropdown-header" />
  34. <li>
  35. <a
  36. href={participant.url}
  37. >
  38. {gettext("See profile")}
  39. </a>
  40. </li>
  41. <li role="separator" className="divider"></li>
  42. <MakeOwner {...props} />
  43. <Remove {...props} />
  44. </ul>
  45. </div>
  46. </div>
  47. );
  48. }
  49. export function UserStatus({ isOwner }) {
  50. if (!isOwner) return null;
  51. return (
  52. <li className="dropdown-header dropdown-header-owner">
  53. <span className="material-icon">
  54. start
  55. </span>
  56. <span className="icon-text">
  57. {gettext("Thread owner")}
  58. </span>
  59. </li>
  60. );
  61. }