You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

NewMessagesButton.tsx 2.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import React from 'react';
  2. import { WithTranslation } from 'react-i18next';
  3. import { makeStyles } from 'tss-react/mui';
  4. import { translate } from '../../../base/i18n/functions';
  5. import Icon from '../../../base/icons/components/Icon';
  6. import { IconArrowDown } from '../../../base/icons/svg';
  7. import { withPixelLineHeight } from '../../../base/styles/functions.web';
  8. import BaseTheme from '../../../base/ui/components/BaseTheme.web';
  9. export interface INewMessagesButtonProps extends WithTranslation {
  10. /**
  11. * Function to notify messageContainer when click on goToFirstUnreadMessage button.
  12. */
  13. onGoToFirstUnreadMessage: () => void;
  14. }
  15. const useStyles = makeStyles()(theme => {
  16. return {
  17. container: {
  18. position: 'absolute',
  19. left: 'calc(50% - 72px)',
  20. bottom: '15px'
  21. },
  22. newMessagesButton: {
  23. display: 'flex',
  24. alignItems: 'center',
  25. justifyContent: 'space-between',
  26. height: '32px',
  27. padding: '8px',
  28. border: 'none',
  29. borderRadius: theme.shape.borderRadius,
  30. backgroundColor: theme.palette.action02,
  31. boxShadow: '0px 3px 16px rgba(0, 0, 0, 0.6), 0px 0px 4px 1px rgba(0, 0, 0, 0.25)',
  32. '&:hover': {
  33. backgroundColor: theme.palette.action02Hover
  34. },
  35. '&:active': {
  36. backgroundColor: theme.palette.action02Active
  37. }
  38. },
  39. arrowDownIconContainer: {
  40. height: '20px',
  41. width: '20px',
  42. display: 'flex',
  43. alignItems: 'center',
  44. justifyContent: 'center'
  45. },
  46. textContainer: {
  47. ...withPixelLineHeight(theme.typography.bodyShortRegular),
  48. color: theme.palette.text04,
  49. paddingLeft: '8px'
  50. }
  51. };
  52. });
  53. /** NewMessagesButton.
  54. *
  55. * @param {Function} onGoToFirstUnreadMessage - Function for lifting up onClick event.
  56. * @returns {JSX.Element}
  57. */
  58. function NewMessagesButton({ onGoToFirstUnreadMessage, t }: INewMessagesButtonProps): JSX.Element {
  59. const { classes: styles } = useStyles();
  60. return (
  61. <div
  62. className = { styles.container }>
  63. <button
  64. aria-label = { t('chat.newMessages') }
  65. className = { styles.newMessagesButton }
  66. onClick = { onGoToFirstUnreadMessage }
  67. type = 'button'>
  68. <Icon
  69. className = { styles.arrowDownIconContainer }
  70. color = { BaseTheme.palette.icon04 }
  71. size = { 14 }
  72. src = { IconArrowDown } />
  73. <div className = { styles.textContainer }> { t('chat.newMessages') }</div>
  74. </button>
  75. </div>);
  76. }
  77. export default translate(NewMessagesButton);