diff options
Diffstat (limited to 'packages/ui/src')
| -rw-r--r-- | packages/ui/src/components/select-dialog.tsx | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/packages/ui/src/components/select-dialog.tsx b/packages/ui/src/components/select-dialog.tsx index c54f4ec9d..4806a12dd 100644 --- a/packages/ui/src/components/select-dialog.tsx +++ b/packages/ui/src/components/select-dialog.tsx @@ -14,6 +14,7 @@ interface SelectDialogProps<T> emptyMessage?: string children: (item: T) => JSX.Element onSelect?: (value: T | undefined) => void + onKeyEvent?: (event: KeyboardEvent, item: T | undefined) => void } export function SelectDialog<T>(props: SelectDialogProps<T>) { @@ -65,9 +66,12 @@ export function SelectDialog<T>(props: SelectDialogProps<T>) { setStore("mouseActive", false) if (e.key === "Escape") return + const all = flat() + const selected = all.find((x) => others.key(x) === active()) + props.onKeyEvent?.(e, selected) + if (e.key === "Enter") { e.preventDefault() - const selected = flat().find((x) => others.key(x) === active()) if (selected) handleSelect(selected) } else { onKeyDown(e) |
