Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. import React, { useState, useEffect, useRef } from 'react'
  2. import Box from '../Box'
  3. import { Button } from '../Button'
  4. import { P1 } from '../Text'
  5. import Input from '../Forms/FormElements/Input'
  6. import styled from '@emotion/styled'
  7. import Scrollbar from '../Scrollbar/Scrollbar'
  8.  
  9. const Chat = ({ arr, handleChange }) => {
  10. const ScrollbarRef = useRef(null)
  11. useEffect(() => {
  12. if (!ScrollbarRef) return
  13. ScrollbarRef.current.scrollToBottom()
  14. }, [arr])
  15. useEffect(() => {
  16. if (!ScrollbarRef) return
  17. ScrollbarRef.current.scrollToBottom()
  18. }, [ScrollbarRef])
  19. return (
  20. <Box width={380}
  21. height={630} border='1px solid black;'>
  22. <Box backgroundColor='green' width={378}
  23. height={56}
  24. borderRadius={'12px 12px 0 0'} display='flex' justifyContent='center'
  25. alignItems='center'>
  26. <P1>Чат</P1>
  27. </Box>
  28. <Scrollbar innerRef={ScrollbarRef} autoHeightMax={518}>
  29. {arr.messages.map((messages, id) => {
  30. return renderMessage(messages)
  31. })}
  32. </Scrollbar>
  33. <Box backgroundColor='blue' display='flex' borderRadius={'0 0 12px 12px'}>
  34. <Input onChange={handleChange} /><Button onClick={() => { console.log('arr.messages', arr) }} />
  35. </Box>
  36. </Box>
  37. )
  38. }
  39.  
  40.  
  41. const renderMessage = (messages) => {
  42. const Message = MessageType[messages.from.type]
  43.  
  44. return <Message {...messages} />
  45. }
  46.  
  47. const Client = (messages) => <ClientWrapper>{messages.message.text}</ClientWrapper>
  48. const External = (messages) => <ExternalWrapper>
  49. <Box as='img' src=''></Box>
  50. {messages.message.text}
  51. </ExternalWrapper>
  52. const Agent = (messages) => <AgentWrapper>{messages.message.text}</AgentWrapper>
  53.  
  54.  
  55. const ClientWrapper = styled.div`
  56. margin: 8px;
  57. margin-left: auto;
  58. max-width: 265px;
  59. border-radius: 16px;
  60. border: 2px solid green;
  61. padding: 8px;
  62.  
  63. `
  64. const ExternalWrapper = styled.div`
  65. max-width: 265px;
  66. border-radius: 16px;
  67. border: 2px solid blue;
  68. padding: 8px;
  69.  
  70. margin: 8px;
  71. `
  72. const AgentWrapper = styled.div`
  73. max-width: 265px;
  74. border-radius: 16px;
  75. border: 2px solid pink;
  76. padding: 8px;
  77. margin: 8px;
  78. `
  79. const MessageType = {
  80. Client,
  81. External,
  82. Agent
  83. }
  84. const Wrapper = styled.div`
  85. background-color: pink;
  86. height: 518px;
  87. text-align: left;
  88. padding-left: 14px;
  89. padding-right: 14px;
  90. padding-bottom: 20px;
  91. overflow: auto;
  92. `
  93. export default Chat
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement