From 6b26dd3fda874d8beb7f641444d260d9f1134361 Mon Sep 17 00:00:00 2001 From: Peter Alexander Date: Thu, 28 Aug 2025 16:09:04 -0700 Subject: [PATCH] Fix issue 766 --- client/src/components/PromptsTab.tsx | 15 ++++++++++++--- client/src/components/ui/combobox.tsx | 14 +++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/client/src/components/PromptsTab.tsx b/client/src/components/PromptsTab.tsx index fa5905580..0df36bb87 100644 --- a/client/src/components/PromptsTab.tsx +++ b/client/src/components/PromptsTab.tsx @@ -63,9 +63,7 @@ const PromptsTab = ({ clearCompletions(); }, [clearCompletions, selectedPrompt]); - const handleInputChange = async (argName: string, value: string) => { - setPromptArgs((prev) => ({ ...prev, [argName]: value })); - + const triggerCompletions = (argName: string, value: string) => { if (selectedPrompt) { requestCompletions( { @@ -79,6 +77,16 @@ const PromptsTab = ({ } }; + const handleInputChange = async (argName: string, value: string) => { + setPromptArgs((prev) => ({ ...prev, [argName]: value })); + triggerCompletions(argName, value); + }; + + const handleFocus = async (argName: string) => { + const currentValue = promptArgs[argName] || ""; + triggerCompletions(argName, currentValue); + }; + const handleGetPrompt = () => { if (selectedPrompt) { getPrompt(selectedPrompt.name, promptArgs); @@ -143,6 +151,7 @@ const PromptsTab = ({ onInputChange={(value) => handleInputChange(arg.name, value) } + onFocus={() => handleFocus(arg.name)} options={completions[arg.name] || []} /> diff --git a/client/src/components/ui/combobox.tsx b/client/src/components/ui/combobox.tsx index 026240869..9e6227b15 100644 --- a/client/src/components/ui/combobox.tsx +++ b/client/src/components/ui/combobox.tsx @@ -19,6 +19,7 @@ interface ComboboxProps { value: string; onChange: (value: string) => void; onInputChange: (value: string) => void; + onFocus?: () => void; options: string[]; placeholder?: string; emptyMessage?: string; @@ -29,6 +30,7 @@ export function Combobox({ value, onChange, onInputChange, + onFocus, options = [], placeholder = "Select...", emptyMessage = "No results found.", @@ -36,6 +38,16 @@ export function Combobox({ }: ComboboxProps) { const [open, setOpen] = React.useState(false); + const handleOpenChange = React.useCallback( + (newOpen: boolean) => { + setOpen(newOpen); + if (newOpen && onFocus) { + onFocus(); + } + }, + [onFocus], + ); + const handleSelect = React.useCallback( (option: string) => { onChange(option); @@ -52,7 +64,7 @@ export function Combobox({ ); return ( - +