blob: 1a3b11c984138b331041cbacedee7dd0d05f9e38 [file] [log] [blame]
simond47ef9e2022-09-28 22:24:28 -04001import { Divider, InputBase } from '@mui/material';
simon07b4eb02022-09-29 17:50:26 -04002import { Stack } from '@mui/system';
simon6b9ddfb2022-10-03 00:04:50 -04003import { ChangeEvent, FormEvent, useCallback, useState } from 'react';
simon07b4eb02022-09-29 17:50:26 -04004
simond47ef9e2022-09-28 22:24:28 -04005import {
6 RecordVideoMessageButton,
7 RecordVoiceMessageButton,
8 SelectEmojiButton,
9 SendMessageButton,
10 UploadFileButton,
simon6b9ddfb2022-10-03 00:04:50 -040011} from './Button';
Larbi Gharibe9af9732021-03-31 15:08:01 +010012
simon6b9ddfb2022-10-03 00:04:50 -040013type SendMessageFormProps = {
14 onSend: (message: string) => void;
15};
16
17export default function SendMessageForm(props: SendMessageFormProps) {
simond47ef9e2022-09-28 22:24:28 -040018 const [currentMessage, setCurrentMessage] = useState('');
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040019
simon6b9ddfb2022-10-03 00:04:50 -040020 const handleSubmit = (e: FormEvent<HTMLFormElement>) => {
simond47ef9e2022-09-28 22:24:28 -040021 e.preventDefault();
Adrien Béraud88a52442021-04-26 12:11:41 -040022 if (currentMessage) {
simond47ef9e2022-09-28 22:24:28 -040023 props.onSend(currentMessage);
24 setCurrentMessage('');
Adrien Béraud88a52442021-04-26 12:11:41 -040025 }
simond47ef9e2022-09-28 22:24:28 -040026 };
simon6b9ddfb2022-10-03 00:04:50 -040027 const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => setCurrentMessage(event.target.value);
idillonaedab942022-09-01 14:29:43 -040028
Adrien Béraud023f7cf2022-09-18 14:57:53 -040029 const onEmojiSelected = useCallback(
simon6b9ddfb2022-10-03 00:04:50 -040030 (emoji: string) => setCurrentMessage((currentMessage) => currentMessage + emoji),
simond47ef9e2022-09-28 22:24:28 -040031 [setCurrentMessage]
32 );
Larbi Gharibe9af9732021-03-31 15:08:01 +010033
Adrien Béraud8a438f82021-04-14 16:18:57 -040034 return (
simond47ef9e2022-09-28 22:24:28 -040035 <Stack padding="30px 16px 0px 16px">
idillonaedab942022-09-01 14:29:43 -040036 <Divider
37 sx={{
simond47ef9e2022-09-28 22:24:28 -040038 bordeTop: '1px solid #E5E5E5',
idillonaedab942022-09-01 14:29:43 -040039 }}
40 />
41 <Stack
42 component="form"
Adrien Béraud8a438f82021-04-14 16:18:57 -040043 onSubmit={handleSubmit}
idillonaedab942022-09-01 14:29:43 -040044 direction="row"
45 alignItems="center"
46 flexGrow={1}
47 spacing="20px"
48 padding="16px 0px"
49 >
simond47ef9e2022-09-28 22:24:28 -040050 <UploadFileButton />
51 <RecordVoiceMessageButton />
52 <RecordVideoMessageButton />
Adrien Béraud8a438f82021-04-14 16:18:57 -040053
simond47ef9e2022-09-28 22:24:28 -040054 <Stack flexGrow={1}>
idillonaedab942022-09-01 14:29:43 -040055 <InputBase
56 placeholder="Write something nice"
57 value={currentMessage}
58 onChange={handleInputChange}
59 sx={{
simond47ef9e2022-09-28 22:24:28 -040060 fontSize: '15px',
61 color: 'black',
62 '& ::placeholder': {
63 color: '#7E7E7E',
idillonaedab942022-09-01 14:29:43 -040064 opacity: 1,
65 },
66 }}
67 />
68 </Stack>
simond47ef9e2022-09-28 22:24:28 -040069 <SelectEmojiButton onEmojiSelected={onEmojiSelected} />
70 {currentMessage && <SendMessageButton type="submit" />}
idillonaedab942022-09-01 14:29:43 -040071 </Stack>
72 </Stack>
Adrien Béraudab519ff2022-05-03 15:34:48 -040073 );
Larbi Gharibe9af9732021-03-31 15:08:01 +010074}