Skip to content

Commit e022867

Browse files
authored
Add client handler for suggested prompt click (#764)
1 parent b382908 commit e022867

File tree

7 files changed

+31
-4
lines changed

7 files changed

+31
-4
lines changed

packages/mongodb-chatbot-ui/src/App.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ function App() {
7979
onClose={() => {
8080
console.log("Docs Chatbot closed");
8181
}}
82+
onSuggestedPromptClick={(prompt) => {
83+
console.log("Suggested prompt clicked", prompt);
84+
}}
8285
maxInputCharacters={3000}
8386
>
8487
<DocsChatbot suggestedPrompts={SUGGESTED_PROMPTS} />
@@ -101,6 +104,9 @@ function App() {
101104
onClose={() => {
102105
console.log("Dev Center Chatbot closed");
103106
}}
107+
onSuggestedPromptClick={(prompt) => {
108+
console.log("Suggested prompt clicked", prompt);
109+
}}
104110
sortMessageReferences={makePrioritizeReferenceDomain([
105111
"https://mongodb.com/developer",
106112
"https://www.mongodb.com/developer",

packages/mongodb-chatbot-ui/src/ChatMessageFeed.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,13 @@ export function ChatMessageFeed(props: ChatMessageFeedProps) {
3838
const { darkMode } = useDarkMode(props.darkMode);
3939
const { className, disclaimer, disclaimerHeading, initialMessage } = props;
4040

41-
const { awaitingReply, canSubmit, conversation, handleSubmit } =
42-
useChatbotContext();
41+
const {
42+
awaitingReply,
43+
canSubmit,
44+
conversation,
45+
handleSubmit,
46+
onSuggestedPromptClick,
47+
} = useChatbotContext();
4348

4449
const messages = initialMessage
4550
? [initialMessage, ...conversation.messages]
@@ -87,7 +92,10 @@ export function ChatMessageFeed(props: ChatMessageFeedProps) {
8792
// For now we'll only show suggested prompts for the initial message and hide them once the user submits anything
8893
isInitialMessage && conversation.messages.length === 0
8994
}
90-
onSuggestedPromptClick={handleSubmit}
95+
onSuggestedPromptClick={(prompt) => {
96+
onSuggestedPromptClick?.(prompt);
97+
handleSubmit(prompt);
98+
}}
9199
canSubmitSuggestedPrompt={canSubmit}
92100
/>
93101
);

packages/mongodb-chatbot-ui/src/Chatbot.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export function Chatbot({
2828
isExperimental,
2929
onOpen,
3030
onClose,
31+
onSuggestedPromptClick,
3132
sortMessageReferences,
3233
getClientContext,
3334
...props
@@ -61,6 +62,7 @@ export function Chatbot({
6162
serverBaseUrl={serverBaseUrl}
6263
shouldStream={shouldStream}
6364
sortMessageReferences={sortMessageReferences}
65+
onSuggestedPromptClick={onSuggestedPromptClick}
6466
>
6567
{children}
6668
</InnerChatbot>
@@ -82,6 +84,7 @@ type InnerChatbotProps = Pick<
8284
| "name"
8385
| "onOpen"
8486
| "onClose"
87+
| "onSuggestedPromptClick"
8588
| "serverBaseUrl"
8689
| "shouldStream"
8790
| "sortMessageReferences"

packages/mongodb-chatbot-ui/src/InputBarTrigger.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export function InputBarTrigger({
7070
handleSubmit,
7171
hasError,
7272
showError,
73+
onSuggestedPromptClick,
7374
} = useTextInputTrigger({
7475
fatalErrorMessage,
7576
placeholder,
@@ -139,6 +140,7 @@ export function InputBarTrigger({
139140
<SuggestedPrompt
140141
key={suggestedPrompt}
141142
onClick={async () => {
143+
onSuggestedPromptClick?.(suggestedPrompt);
142144
await handleSubmit(suggestedPrompt);
143145
}}
144146
>

packages/mongodb-chatbot-ui/src/Message.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,9 @@ export const Message = ({
170170
{showSuggestedPrompts && (
171171
<MessagePrompts
172172
prompts={suggestedPrompts}
173-
onPromptClick={(prompt) => onSuggestedPromptClick?.(prompt)}
173+
onPromptClick={(prompt) => {
174+
onSuggestedPromptClick?.(prompt);
175+
}}
174176
canSubmit={canSubmitSuggestedPrompt}
175177
/>
176178
)}

packages/mongodb-chatbot-ui/src/useChatbot.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export type UseChatbotProps = OpenCloseHandlers &
1212
isExperimental?: boolean;
1313
maxInputCharacters?: number;
1414
maxCommentCharacters?: number;
15+
onSuggestedPromptClick?: (prompt: string) => void;
1516
};
1617

1718
export type ChatbotData = {
@@ -30,6 +31,7 @@ export type ChatbotData = {
3031
open: boolean;
3132
openChat: () => void;
3233
setInputText: (text: string) => void;
34+
onSuggestedPromptClick?: (prompt: string) => void;
3335
};
3436

3537
export function useChatbot({
@@ -39,6 +41,7 @@ export function useChatbot({
3941
isExperimental = true,
4042
maxInputCharacters,
4143
maxCommentCharacters,
44+
onSuggestedPromptClick,
4245
...useConversationArgs
4346
}: UseChatbotProps): ChatbotData {
4447
const conversation = useConversation(useConversationArgs);
@@ -132,5 +135,6 @@ export function useChatbot({
132135
open,
133136
openChat,
134137
setInputText,
138+
onSuggestedPromptClick,
135139
};
136140
}

packages/mongodb-chatbot-ui/src/useTextInputTrigger.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export function useTextInputTrigger({
4646
handleSubmit,
4747
conversation,
4848
isExperimental,
49+
onSuggestedPromptClick,
4950
} = useChatbotContext();
5051

5152
const [focused, setFocused] = useState(false);
@@ -73,5 +74,6 @@ export function useTextInputTrigger({
7374
handleSubmit,
7475
hasError,
7576
showError,
77+
onSuggestedPromptClick,
7678
};
7779
}

0 commit comments

Comments
 (0)