Compare commits

...

2 Commits

Author SHA1 Message Date
Sevi 12b4867f75
Merge 7c09ac3c08 into 403141c96a 2025-10-15 00:15:52 -05:00
Adam Shiervani 403141c96a
refactor: safe Comboxbox onChange (#886) 2025-10-14 22:45:48 -05:00
1 changed files with 5 additions and 8 deletions

View File

@ -2,7 +2,7 @@ import { useMemo } from "react";
import { LuArrowUp, LuArrowDown, LuX, LuTrash2 } from "react-icons/lu"; import { LuArrowUp, LuArrowDown, LuX, LuTrash2 } from "react-icons/lu";
import { Button } from "@/components/Button"; import { Button } from "@/components/Button";
import { Combobox } from "@/components/Combobox"; import { Combobox, ComboboxOption } from "@/components/Combobox";
import { SelectMenuBasic } from "@/components/SelectMenuBasic"; import { SelectMenuBasic } from "@/components/SelectMenuBasic";
import Card from "@/components/Card"; import Card from "@/components/Card";
import FieldLabel from "@/components/FieldLabel"; import FieldLabel from "@/components/FieldLabel";
@ -94,11 +94,9 @@ export function MacroStepCard({
})), })),
[keyDisplayMap] [keyDisplayMap]
); );
const filteredKeys = useMemo(() => { const filteredKeys = useMemo(() => {
const selectedKeys = ensureArray(step.keys); const selectedKeys = ensureArray(step.keys);
const availableKeys = keyOptions.filter(option => !selectedKeys.includes(option.value)); const availableKeys = keyOptions.filter(option => !selectedKeys.includes(option.value));
if (keyQuery === '') { if (keyQuery === '') {
return availableKeys; return availableKeys;
} else { } else {
@ -176,7 +174,6 @@ export function MacroStepCard({
))} ))}
</div> </div>
</div> </div>
<div className="w-full flex flex-col gap-1"> <div className="w-full flex flex-col gap-1">
<div className="flex items-center gap-1"> <div className="flex items-center gap-1">
<FieldLabel label="Keys" description={`Maximum ${MAX_KEYS_PER_STEP} keys per step.`} /> <FieldLabel label="Keys" description={`Maximum ${MAX_KEYS_PER_STEP} keys per step.`} />
@ -207,8 +204,9 @@ export function MacroStepCard({
)} )}
<div className="relative w-full"> <div className="relative w-full">
<Combobox <Combobox
onChange={(value) => { onChange={(option) => {
onKeySelect({ value: value as string | null }); const selectedOption = option as ComboboxOption | null;
onKeySelect({ value: selectedOption?.value ?? null });
onKeyQueryChange(''); onKeyQueryChange('');
}} }}
displayValue={() => keyQuery} displayValue={() => keyQuery}
@ -223,7 +221,6 @@ export function MacroStepCard({
/> />
</div> </div>
</div> </div>
<div className="w-full flex flex-col gap-1"> <div className="w-full flex flex-col gap-1">
<div className="flex items-center gap-1"> <div className="flex items-center gap-1">
<FieldLabel label="Step Duration" description="Time to wait before executing the next step." /> <FieldLabel label="Step Duration" description="Time to wait before executing the next step." />
@ -241,4 +238,4 @@ export function MacroStepCard({
</div> </div>
</Card> </Card>
); );
} }