chat-toggle-button.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import PropTypes from 'prop-types'
  2. import classNames from 'classnames'
  3. import { useTranslation } from 'react-i18next'
  4. import Icon from '../../../shared/components/icon'
  5. function ChatToggleButton({ chatIsOpen, unreadMessageCount, onClick }) {
  6. const { t } = useTranslation()
  7. const classes = classNames(
  8. 'btn',
  9. 'btn-full-height',
  10. 'btn-full-height-no-border',
  11. { active: chatIsOpen }
  12. )
  13. const hasUnreadMessages = unreadMessageCount > 0
  14. return (
  15. // eslint-disable-next-line jsx-a11y/anchor-is-valid
  16. <a role="button" className={classes} href="#" onClick={onClick}>
  17. <Icon
  18. type="fw"
  19. modifier="comment"
  20. classes={{ icon: hasUnreadMessages ? 'bounce' : undefined }}
  21. />
  22. {hasUnreadMessages ? (
  23. <span className="label label-info">{unreadMessageCount}</span>
  24. ) : null}
  25. <p className="toolbar-label">{t('chat')}</p>
  26. </a>
  27. )
  28. }
  29. ChatToggleButton.propTypes = {
  30. chatIsOpen: PropTypes.bool,
  31. unreadMessageCount: PropTypes.number.isRequired,
  32. onClick: PropTypes.func.isRequired,
  33. }
  34. export default ChatToggleButton