message-input.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import PropTypes from 'prop-types'
  2. import { useTranslation } from 'react-i18next'
  3. function MessageInput({ resetUnreadMessages, sendMessage }) {
  4. const { t } = useTranslation()
  5. function handleKeyDown(event) {
  6. if (event.key === 'Enter') {
  7. event.preventDefault()
  8. sendMessage(event.target.value)
  9. // wrap the form reset in setTimeout so input sources have time to finish
  10. // https://github.com/overleaf/internal/pull/9206
  11. window.setTimeout(() => {
  12. event.target.blur()
  13. event.target.closest('form').reset()
  14. event.target.focus()
  15. }, 0)
  16. }
  17. }
  18. return (
  19. <form className="new-message">
  20. <label htmlFor="chat-input" className="sr-only">
  21. {t('your_message')}
  22. </label>
  23. <textarea
  24. id="chat-input"
  25. placeholder={`${t('your_message')}…`}
  26. onKeyDown={handleKeyDown}
  27. onClick={resetUnreadMessages}
  28. />
  29. </form>
  30. )
  31. }
  32. MessageInput.propTypes = {
  33. resetUnreadMessages: PropTypes.func.isRequired,
  34. sendMessage: PropTypes.func.isRequired,
  35. }
  36. export default MessageInput