-
Notifications
You must be signed in to change notification settings - Fork 132
Expand file tree
/
Copy pathChatInput.tsx
More file actions
63 lines (54 loc) · 1.34 KB
/
ChatInput.tsx
File metadata and controls
63 lines (54 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import { useState } from 'react'
import { Chatbot } from 'supersimpledev';
import './ChatInput.css';
type ChatMessages = {
message: string;
sender: string;
id: string;
}[];
type ChatInputProps = {
chatMessages: ChatMessages;
setChatMessages: (chatMessages: ChatMessages) => void;
};
export function ChatInput({ chatMessages, setChatMessages }: ChatInputProps) {
const [inputText, setInputText] = useState('');
function saveInputText(event) {
setInputText(event.target.value);
}
function sendMessage() {
const newChatMessages = [
...chatMessages,
{
message: inputText,
sender: 'user',
id: crypto.randomUUID()
}
];
setChatMessages(newChatMessages);
const response = Chatbot.getResponse(inputText);
setChatMessages([
...newChatMessages,
{
message: response,
sender: 'robot',
id: crypto.randomUUID()
}
]);
setInputText('');
}
return (
<div className="chat-input-container">
<input
placeholder="Send a message to Chatbot"
size="30"
onChange={saveInputText}
value={inputText}
className="chat-input"
/>
<button
onClick={sendMessage}
className="send-button"
>Send</button>
</div>
);
}