chat-toggle-button.jsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. import BootstrapVersionSwitcher from '@/features/ui/components/bootstrap-5/bootstrap-version-switcher'
  6. import MaterialIcon from '@/shared/components/material-icon'
  7. import OLBadge from '@/features/ui/components/ol/ol-badge'
  8. function ChatToggleButton({ chatIsOpen, unreadMessageCount, onClick }) {
  9. const { t } = useTranslation()
  10. const classes = classNames('btn', 'btn-full-height', { active: chatIsOpen })
  11. const hasUnreadMessages = unreadMessageCount > 0
  12. return (
  13. <div className="toolbar-item">
  14. <button type="button" className={classes} onClick={onClick}>
  15. <BootstrapVersionSwitcher
  16. bs3={
  17. <Icon
  18. type="comment"
  19. fw
  20. className={classNames({ bounce: hasUnreadMessages })}
  21. />
  22. }
  23. bs5={
  24. <MaterialIcon
  25. type="chat"
  26. className={classNames('align-middle', {
  27. bounce: hasUnreadMessages,
  28. })}
  29. />
  30. }
  31. />
  32. {hasUnreadMessages && <OLBadge bg="info">{unreadMessageCount}</OLBadge>}
  33. <p className="toolbar-label">{t('chat')}</p>
  34. </button>
  35. </div>
  36. )
  37. }
  38. ChatToggleButton.propTypes = {
  39. chatIsOpen: PropTypes.bool,
  40. unreadMessageCount: PropTypes.number.isRequired,
  41. onClick: PropTypes.func.isRequired,
  42. }
  43. export default ChatToggleButton