blob: fb06d496bc711eea91273d6def5de6ebff081345 [file] [log] [blame]
Larbi Gharibe9af9732021-03-31 15:08:01 +01001import React from 'react'
Adrien Béraud8a438f82021-04-14 16:18:57 -04002import { makeStyles } from '@material-ui/core/styles'
3import { IconButton, InputBase, Paper, Popper } from '@material-ui/core'
Adrien Béraude74741b2021-04-19 13:22:54 -04004import { Send, EmojiEmotionsRounded } from '@material-ui/icons'
Adrien Béraud8a438f82021-04-14 16:18:57 -04005import EmojiPicker from 'emoji-picker-react'
Adrien Béraud5e9e19b2021-04-22 01:38:53 -04006import authManager from '../AuthManager'
Larbi Gharibe9af9732021-03-31 15:08:01 +01007
Adrien Béraud35e7d7c2021-04-13 03:28:39 -04008const useStyles = makeStyles((theme) => ({
Adrien Béraud8a438f82021-04-14 16:18:57 -04009 root: {
10 margin: 16,
11 padding: '2px 4px',
12 display: 'flex',
13 alignItems: 'center',
14 borderRadius: 8
15 },
16 input: {
17 marginLeft: theme.spacing(1),
18 flex: 1,
19 },
20 iconButton: {
21 padding: 10,
22 },
23 divider: {
24 height: 28,
25 margin: 4,
26 },
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040027}))
Larbi Gharibe9af9732021-03-31 15:08:01 +010028
Adrien Béraud8a438f82021-04-14 16:18:57 -040029export default function SendMessageForm(props) {
30 const classes = useStyles()
31 const [anchorEl, setAnchorEl] = React.useState(null)
32 const [currentMessage, setCurrentMessage] = React.useState("")
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040033
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040034 const handleOpenEmojiPicker = e => setAnchorEl(anchorEl ? null : e.currentTarget)
35 const handleClose = () => setAnchorEl(null)
36
Adrien Béraud8a438f82021-04-14 16:18:57 -040037 const handleSubmit = e => {
38 e.preventDefault()
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040039 props.onSend(currentMessage)
40 setCurrentMessage('')
Adrien Béraud8a438f82021-04-14 16:18:57 -040041 }
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040042 const handleInputChange = (event) => setCurrentMessage(event.target.value)
Adrien Béraud8a438f82021-04-14 16:18:57 -040043 const onEmojiClick = (e, emojiObject) => {
Adrien Béraud8a438f82021-04-14 16:18:57 -040044 setCurrentMessage(currentMessage + emojiObject.emoji)
45 handleClose()
46 }
47 const open = Boolean(anchorEl)
48 const id = open ? 'simple-popover' : undefined
Larbi Gharibe9af9732021-03-31 15:08:01 +010049
Adrien Béraud8a438f82021-04-14 16:18:57 -040050 return (
51 <div className="send-message-form">
52 <Paper component="form"
53 onSubmit={handleSubmit}
54 className="send-message-card"
55 className={classes.root}>
56 <IconButton aria-describedby={id} variant="contained" color="primary" onClick={handleOpenEmojiPicker}>
Adrien Béraude74741b2021-04-19 13:22:54 -040057 <EmojiEmotionsRounded />
Adrien Béraud8a438f82021-04-14 16:18:57 -040058 </IconButton>
59 <Popper
60 id={id}
61 open={open}
62 anchorEl={anchorEl}
63 onClose={handleClose}
64 >
Adrien Béraude74741b2021-04-19 13:22:54 -040065 <EmojiPicker.default
Adrien Béraud8a438f82021-04-14 16:18:57 -040066 onEmojiClick={onEmojiClick}
67 disableAutoFocus={true}
68 disableSkinTonePicker={true}
69 native
70 />
71 </Popper>
72
73 <InputBase
74 className={classes.input}
75 placeholder="Write something nice"
76 height="35"
77 value={currentMessage}
78 onChange={handleInputChange}
79 />
80 <IconButton type="submit" className={classes.iconButton} aria-label="search">
Adrien Béraude74741b2021-04-19 13:22:54 -040081 <Send />
Adrien Béraud8a438f82021-04-14 16:18:57 -040082 </IconButton>
83 </Paper>
84 </div>
85 )
Larbi Gharibe9af9732021-03-31 15:08:01 +010086}