AuthorInfo.jsx 936 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { userPageRoot } from '@commons/util/path-utils';
  4. import UserPicture from '../User/UserPicture';
  5. const AuthorInfo = (props) => {
  6. const { mode, user, date } = props;
  7. const infoLabel = mode === 'create'
  8. ? 'Created by'
  9. : 'Updated by';
  10. const userLabel = user != null
  11. ? <a href={userPageRoot(user)}>{user.name}</a>
  12. : <i>Unknown</i>;
  13. return (
  14. <div className="d-flex align-items-center">
  15. <div className="mr-2">
  16. <UserPicture user={user} size="sm" />
  17. </div>
  18. <div>
  19. <div>{infoLabel} {userLabel}</div>
  20. <div className="text-muted text-date">{date}</div>
  21. </div>
  22. </div>
  23. );
  24. };
  25. AuthorInfo.propTypes = {
  26. date: PropTypes.string.isRequired,
  27. user: PropTypes.object,
  28. mode: PropTypes.oneOf(['create', 'update']),
  29. };
  30. AuthorInfo.defaultProps = {
  31. mode: 'create',
  32. };
  33. export default AuthorInfo;