Merge branch 'main' into add-dropdowns-for-enums

This commit is contained in:
Ola Hungerford 2025-10-07 23:15:37 -07:00 • committed by GitHub
commit 097e2dd722
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 25 additions and 4 deletions

View file

@ -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] || []}
/>

View file

@ -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 (
<Popover open={open} onOpenChange={setOpen}>
<Popover open={open} onOpenChange={handleOpenChange}>
<PopoverTrigger asChild>
<Button
variant="outline"