|
@@ -5,6 +5,7 @@ import AttachFileIcon from '@mui/icons-material/AttachFile';
|
|
import SentimentSatisfiedAltIcon from '@mui/icons-material/SentimentSatisfiedAlt';
|
|
import SentimentSatisfiedAltIcon from '@mui/icons-material/SentimentSatisfiedAlt';
|
|
import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
|
|
import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
|
|
import Avatar from '@mui/material/Avatar';
|
|
import Avatar from '@mui/material/Avatar';
|
|
|
|
+import CloseIcon from '@mui/icons-material/Close';
|
|
import { useState } from "react";
|
|
import { useState } from "react";
|
|
import { useSelector } from "react-redux";
|
|
import { useSelector } from "react-redux";
|
|
import { getState } from '../../../../../redux/authorization/selector'
|
|
import { getState } from '../../../../../redux/authorization/selector'
|
|
@@ -12,7 +13,6 @@ import { getState } from '../../../../../redux/authorization/selector'
|
|
import FilesMenu from "../FilesMenu";
|
|
import FilesMenu from "../FilesMenu";
|
|
import NotDone from "../../../../reusableComponents/NotDone";
|
|
import NotDone from "../../../../reusableComponents/NotDone";
|
|
|
|
|
|
-
|
|
|
|
const useStyles = makeStyles({
|
|
const useStyles = makeStyles({
|
|
container: {
|
|
container: {
|
|
display: "flex",
|
|
display: "flex",
|
|
@@ -73,15 +73,12 @@ const useStyles = makeStyles({
|
|
height: 'auto',
|
|
height: 'auto',
|
|
},
|
|
},
|
|
attachIcon: {
|
|
attachIcon: {
|
|
- height:'auto',
|
|
|
|
- '&:hover': {
|
|
|
|
- color: 'rgb(41, 139, 231)',
|
|
|
|
- }
|
|
|
|
|
|
+ transform:'rotate(30deg)',
|
|
},
|
|
},
|
|
filesMenu: {
|
|
filesMenu: {
|
|
background: '#fdfdfd',
|
|
background: '#fdfdfd',
|
|
position: 'absolute',
|
|
position: 'absolute',
|
|
- width: 230,
|
|
|
|
|
|
+ width: 355,
|
|
maxWidth: '100%',
|
|
maxWidth: '100%',
|
|
left: 406,
|
|
left: 406,
|
|
bottom:64,
|
|
bottom:64,
|
|
@@ -115,7 +112,21 @@ const useStyles = makeStyles({
|
|
backgroundColor: 'rgb(41, 139, 231)',
|
|
backgroundColor: 'rgb(41, 139, 231)',
|
|
color: '#ffffff',
|
|
color: '#ffffff',
|
|
}
|
|
}
|
|
- },
|
|
|
|
|
|
+ },
|
|
|
|
+ iconCancel: {
|
|
|
|
+ position: 'absolute',
|
|
|
|
+ left:-45,
|
|
|
|
+ display:'flex',
|
|
|
|
+ backgroundColor: '#945353',
|
|
|
|
+ width: 56,
|
|
|
|
+ height: 56,
|
|
|
|
+ color: '#6b6b6b',
|
|
|
|
+ borderRadius: '50%',
|
|
|
|
+ '&:hover': {
|
|
|
|
+ backgroundColor: 'rgb(218, 18, 18)',
|
|
|
|
+ color: '#ffffff',
|
|
|
|
+ }
|
|
|
|
+ },
|
|
});
|
|
});
|
|
|
|
|
|
interface ISendMessage{
|
|
interface ISendMessage{
|
|
@@ -128,6 +139,7 @@ const SendMessage = ({setChat,isArrow,handleArrow}:ISendMessage) => {
|
|
const classes = useStyles();
|
|
const classes = useStyles();
|
|
const currentUser = useSelector(getState)
|
|
const currentUser = useSelector(getState)
|
|
const [value, setValue] = useState<string>('')
|
|
const [value, setValue] = useState<string>('')
|
|
|
|
+ const [file, setFile] = useState<any>(null)
|
|
const [isOpenMenu, setIsOpenMenu] = useState<boolean>(false)
|
|
const [isOpenMenu, setIsOpenMenu] = useState<boolean>(false)
|
|
const [isOpenEmoji, setIsOpenEmoji] = useState<boolean>(false)
|
|
const [isOpenEmoji, setIsOpenEmoji] = useState<boolean>(false)
|
|
const sentMessage = () => {
|
|
const sentMessage = () => {
|
|
@@ -136,60 +148,62 @@ const SendMessage = ({setChat,isArrow,handleArrow}:ISendMessage) => {
|
|
avatarUrl:`http://${avatarUrl}`,
|
|
avatarUrl:`http://${avatarUrl}`,
|
|
name,
|
|
name,
|
|
lastName,
|
|
lastName,
|
|
- message: value,
|
|
|
|
|
|
+ message: value?value:file.path,
|
|
}
|
|
}
|
|
setChat((prevState: any) => [...prevState, newMessage])
|
|
setChat((prevState: any) => [...prevState, newMessage])
|
|
setValue('')
|
|
setValue('')
|
|
- setIsOpenMenu(false)
|
|
|
|
- setIsOpenEmoji(false)
|
|
|
|
|
|
+ setFile(null)
|
|
|
|
+ isOpenMenu&&setIsOpenMenu(false)
|
|
|
|
+ isOpenEmoji&&setIsOpenEmoji(false)
|
|
}
|
|
}
|
|
const handleTextarea = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
|
const handleTextarea = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
|
- setIsOpenMenu(false)
|
|
|
|
- setIsOpenEmoji(false)
|
|
|
|
|
|
+ isOpenMenu&&setIsOpenMenu(false)
|
|
|
|
+ isOpenEmoji && setIsOpenEmoji(false)
|
|
setValue(e.target.value.trim())
|
|
setValue(e.target.value.trim())
|
|
}
|
|
}
|
|
const handleFocusTextarea = () => {
|
|
const handleFocusTextarea = () => {
|
|
- setIsOpenMenu(false)
|
|
|
|
- setIsOpenEmoji(false)
|
|
|
|
|
|
+ isOpenMenu&&setIsOpenMenu(false)
|
|
|
|
+ isOpenEmoji&&setIsOpenEmoji(false)
|
|
}
|
|
}
|
|
const handleLeaveInput = (e: any) => {
|
|
const handleLeaveInput = (e: any) => {
|
|
if (e.clientX > 1450 || e.clientX < 850) {
|
|
if (e.clientX > 1450 || e.clientX < 850) {
|
|
- setIsOpenMenu(false)
|
|
|
|
- setIsOpenEmoji(false)
|
|
|
|
|
|
+ isOpenMenu&&setIsOpenMenu(false)
|
|
|
|
+ isOpenEmoji&&setIsOpenEmoji(false)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const handleMoveInput = (e: any) => {
|
|
const handleMoveInput = (e: any) => {
|
|
if (e.clientX < 1250 && e.clientX > 1200) {
|
|
if (e.clientX < 1250 && e.clientX > 1200) {
|
|
- setIsOpenMenu(false)
|
|
|
|
- setIsOpenEmoji(false)
|
|
|
|
|
|
+ isOpenMenu&&setIsOpenMenu(false)
|
|
|
|
+ isOpenEmoji&&setIsOpenEmoji(false)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const handleKeyPres = (e: any) => {
|
|
const handleKeyPres = (e: any) => {
|
|
- console.log(value.length)
|
|
|
|
if(e.code === 'Enter'&& value) sentMessage()
|
|
if(e.code === 'Enter'&& value) sentMessage()
|
|
}
|
|
}
|
|
- const handleEnterFileMenu = () => setIsOpenMenu(true)
|
|
|
|
- const handleLeaveFileMenu = () => setIsOpenMenu(false)
|
|
|
|
- const handleEnterEmoji = () => setIsOpenEmoji(true)
|
|
|
|
- const handleLeaveEmoji = () => setIsOpenEmoji(false)
|
|
|
|
-
|
|
|
|
|
|
+ const handleEnterFileMenu = () => !isOpenMenu&&setIsOpenMenu(true)
|
|
|
|
+ const handleLeaveFileMenu = () => isOpenMenu&&setIsOpenMenu(false)
|
|
|
|
+ const handleEnterEmoji = () => !isOpenEmoji&&setIsOpenEmoji(true)
|
|
|
|
+ const handleLeaveEmoji = () => isOpenEmoji && setIsOpenEmoji(false)
|
|
|
|
+ const handleClearMessage = () => setFile(null)
|
|
|
|
|
|
|
|
+ console.log(value,file)
|
|
return (
|
|
return (
|
|
<div className={classes.container} >
|
|
<div className={classes.container} >
|
|
<div onMouseLeave={handleLeaveInput} onMouseMove={handleMoveInput}
|
|
<div onMouseLeave={handleLeaveInput} onMouseMove={handleMoveInput}
|
|
- onKeyPress={handleKeyPres} className={classes.inputContainer}>
|
|
|
|
|
|
+ onKeyPress={handleKeyPres} className={classes.inputContainer}>
|
|
|
|
+ <CloseIcon onClick={handleClearMessage} fontSize="small" className={classes.iconCancel}
|
|
|
|
+ sx={{backgroundColor:'#ffffff',width:36,height:36,color:'#949393',display:file?'inline-block':'none'}}/>
|
|
<SentimentSatisfiedAltIcon onMouseEnter={handleEnterEmoji}
|
|
<SentimentSatisfiedAltIcon onMouseEnter={handleEnterEmoji}
|
|
- fontSize='medium' sx={{ color: isOpenEmoji ? 'rgb(41, 139, 231)' : '#6b6b6b' }} />
|
|
|
|
|
|
+ fontSize='medium' sx={{ color: isOpenEmoji ? 'rgb(41, 139, 231)' : '#6b6b6b' }}/>
|
|
<div onMouseLeave={handleLeaveEmoji} style={{display:isOpenEmoji?'block':'none'}} className={classes.emoji}>
|
|
<div onMouseLeave={handleLeaveEmoji} style={{display:isOpenEmoji?'block':'none'}} className={classes.emoji}>
|
|
<NotDone name='Emoji Bar'/>
|
|
<NotDone name='Emoji Bar'/>
|
|
</div>
|
|
</div>
|
|
- <textarea value={value} onFocus={handleFocusTextarea} onChange={handleTextarea} className={classes.textarea}
|
|
|
|
- placeholder='Message' rows={1}></textarea>
|
|
|
|
- <AttachFileIcon onMouseEnter={handleEnterFileMenu}
|
|
|
|
- className={classes.attachIcon}
|
|
|
|
|
|
+ <textarea disabled={file?true:false} value={value} onFocus={handleFocusTextarea} onChange={handleTextarea}
|
|
|
|
+ className={classes.textarea} placeholder={file?'Press onto Plane to send or Cross to remove':'Message'} rows={1}></textarea>
|
|
|
|
+ <AttachFileIcon onMouseEnter={handleEnterFileMenu} className={classes.attachIcon}
|
|
fontSize='medium' sx={{color: isOpenMenu?'rgb(41, 139, 231)':'#6b6b6b'}}/>
|
|
fontSize='medium' sx={{color: isOpenMenu?'rgb(41, 139, 231)':'#6b6b6b'}}/>
|
|
<div onMouseLeave={handleLeaveFileMenu} style={{display:isOpenMenu?'block':'none'}} className={classes.filesMenu}>
|
|
<div onMouseLeave={handleLeaveFileMenu} style={{display:isOpenMenu?'block':'none'}} className={classes.filesMenu}>
|
|
- <FilesMenu setIsOpenMenu={setIsOpenMenu}/>
|
|
|
|
|
|
+ <FilesMenu setFile={setFile} setValue={setValue} setIsOpenMenu={setIsOpenMenu}/>
|
|
</div>
|
|
</div>
|
|
<Avatar onClick={handleArrow} className={classes.avatarArrow} sx={{
|
|
<Avatar onClick={handleArrow} className={classes.avatarArrow} sx={{
|
|
backgroundColor: '#ffffff',
|
|
backgroundColor: '#ffffff',
|
|
@@ -197,12 +211,12 @@ const SendMessage = ({setChat,isArrow,handleArrow}:ISendMessage) => {
|
|
<ArrowDownwardIcon fontSize="medium" />
|
|
<ArrowDownwardIcon fontSize="medium" />
|
|
</Avatar>
|
|
</Avatar>
|
|
</div>
|
|
</div>
|
|
- {value ?
|
|
|
|
|
|
+ {value || file ?
|
|
<Avatar onClick={sentMessage} className={classes.avatar} sx={{
|
|
<Avatar onClick={sentMessage} className={classes.avatar} sx={{
|
|
backgroundColor: '#ffffff',
|
|
backgroundColor: '#ffffff',
|
|
width: 56, height: 56 ,color: 'rgb(41, 139, 231)'}}>
|
|
width: 56, height: 56 ,color: 'rgb(41, 139, 231)'}}>
|
|
<SendIcon fontSize="medium" />
|
|
<SendIcon fontSize="medium" />
|
|
- </Avatar> :
|
|
|
|
|
|
+ </Avatar> :
|
|
<Avatar className={classes.avatar} sx={{
|
|
<Avatar className={classes.avatar} sx={{
|
|
backgroundColor: '#ffffff',
|
|
backgroundColor: '#ffffff',
|
|
width: 56, height: 56, color: '#6b6b6b'}}>
|
|
width: 56, height: 56, color: '#6b6b6b'}}>
|