diff --git a/src/app/playground/chat/page.tsx b/src/app/playground/chat/page.tsx index f613a420..46dfd2ab 100644 --- a/src/app/playground/chat/page.tsx +++ b/src/app/playground/chat/page.tsx @@ -12,6 +12,7 @@ import { SelectOption, SelectList } from '@patternfly/react-core/dist/dynamic/co import { MenuToggle, MenuToggleElement } from '@patternfly/react-core/dist/dynamic/components/MenuToggle'; import { Spinner } from '@patternfly/react-core/dist/dynamic/components/Spinner'; import UserIcon from '@patternfly/react-icons/dist/dynamic/icons/user-icon'; +import { Alert } from '@patternfly/react-core/dist/dynamic/components/Alert'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faBroom } from '@fortawesome/free-solid-svg-icons'; import Image from 'next/image'; @@ -27,6 +28,8 @@ const ChatPage: React.FC = () => { const [messages, setMessages] = useState([]); const [isLoading, setIsLoading] = useState(false); const [isSelectOpen, setIsSelectOpen] = useState(false); + const [isModelSelectedOnSend, setIsModelSelectedOnSend] = useState(true); + const [isPromptOnSend, setIsPromptOnSend] = useState(true); const [selectedModel, setSelectedModel] = useState(null); const [customModels, setCustomModels] = useState([]); const [defaultModels, setDefaultModels] = useState([]); @@ -54,7 +57,6 @@ const ChatPage: React.FC = () => { setDefaultModels(defaultModels); setCustomModels(customModels); - setSelectedModel([...defaultModels, ...customModels][0] || null); }; fetchDefaultModels(); @@ -68,6 +70,7 @@ const ChatPage: React.FC = () => { const selected = [...defaultModels, ...customModels].find((model) => model.name === value) || null; setSelectedModel(selected); setIsSelectOpen(false); + setIsModelSelectedOnSend(true); }; const toggle = (toggleRef: React.Ref) => ( @@ -88,9 +91,20 @@ const ChatPage: React.FC = () => { setQuestion(value); }; + const handleQuestionFieldSelected = () => { + setIsPromptOnSend(true); + }; + const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); - if (!question.trim() || !selectedModel) return; + if (!selectedModel) { + setIsModelSelectedOnSend(false); + return; + } + if (!question.trim()) { + setIsPromptOnSend(false); + return; + } setMessages((messages) => [...messages, { text: question, isUser: true }]); setQuestion(''); @@ -271,12 +285,23 @@ const ChatPage: React.FC = () => { name="question-field" value={question} onChange={handleQuestionChange} + onSelect={handleQuestionFieldSelected} placeholder="Type your question here..." /> + {!isModelSelectedOnSend && ( +
+ +
+ )} + {!isPromptOnSend && ( +
+ +
+ )}