AddComment.jsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { Picker } from 'emoji-mart'
  2. import 'emoji-mart/css/emoji-mart.css'
  3. import React, { useState } from 'react'
  4. import { Input, Col, Button } from 'antd'
  5. import { SmileOutlined, SmileFilled, SendOutlined } from '@ant-design/icons'
  6. import styles from '../../index.css'
  7. const AddComment = ({ addComment, postId, style, className, width }) => {
  8. const [text, setComment] = useState('')
  9. const [showEmojiPicker, setShowEmojiPicker] = useState(false)
  10. const handleOK = () => setShowEmojiPicker(!showEmojiPicker)
  11. const addEmoji = ({ native }) => setComment((text + ' ' + native).trim())
  12. return (
  13. <>
  14. {showEmojiPicker && (
  15. <Picker
  16. style={style}
  17. theme={localStorage.theme}
  18. native={true}
  19. showPreview={false}
  20. showSkinTones={false}
  21. onSelect={(native) => addEmoji(native)}
  22. />
  23. )}
  24. <Col
  25. xl={{ span: 13, offset: 1 }}
  26. lg={{ span: 13, offset: 1 }}
  27. md={{ offset: 1, span: 16 }}
  28. sm={{ offset: 1, span: 13 }}
  29. xs={{ offset: 1, span: 14 }}
  30. >
  31. <Input
  32. style={{
  33. display: 'flex',
  34. }}
  35. xl={{ size: 'large' }}
  36. xs={{ size: 'small' }}
  37. placeholder="Add a comment..."
  38. value={text}
  39. onChange={(e) => {
  40. setComment(e.target.value)
  41. }}
  42. onPressEnter={(e) => setComment(e.target.value)}
  43. />
  44. </Col>
  45. <Col
  46. xl={{ offset: 1, span: 1 }}
  47. sm={{ offset: 1, span: 1 }}
  48. xs={{ offset: 1, span: 1 }}
  49. >
  50. {!showEmojiPicker ? (
  51. <span className="SmileBtn">
  52. <SmileOutlined onClick={handleOK} />
  53. </span>
  54. ) : (
  55. <span className="SmileBtnFilled">
  56. <SmileFilled onClick={handleOK} />
  57. </span>
  58. )}
  59. </Col>
  60. <Col
  61. xl={{ offset: 1, span: 1 }}
  62. sm={{ offset: 1, span: 1 }}
  63. xs={{ offset: 1, span: 1 }}
  64. >
  65. <Button
  66. type="text"
  67. className="Send"
  68. disabled={text.length < 1}
  69. onClick={(e) => {
  70. addComment(postId, text) && setComment((e.target.value = ''))
  71. }}
  72. >
  73. <SendOutlined className="Send" type="primary" />
  74. </Button>
  75. </Col>
  76. </>
  77. )
  78. }
  79. export default AddComment