AddComment.jsx 2.3 KB

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