|
1 | 1 | 'use client'; |
2 | | -import {Fragment, Ref, useEffect, useMemo, useRef, useState} from 'react'; |
| 2 | +import {Fragment, Ref, useCallback, useEffect, useMemo, useRef, useState} from 'react'; |
3 | 3 | import {Combobox, ComboboxItem, ComboboxList, ComboboxProvider} from '@ariakit/react'; |
4 | 4 | import {CaretRightIcon, CaretSortIcon, MagnifyingGlassIcon} from '@radix-ui/react-icons'; |
5 | 5 | import * as RadixSelect from '@radix-ui/react-select'; |
@@ -63,6 +63,11 @@ export function PlatformSelector({ |
63 | 63 | const currentPlatformKey = currentPlatform?.key; |
64 | 64 | const [open, setOpen] = useState(false); |
65 | 65 | const [searchValue, setSearchValue] = useState(''); |
| 66 | + |
| 67 | + // Stabilize search value updates to prevent focus issues |
| 68 | + const handleSearchValueChange = useCallback((value: string) => { |
| 69 | + setSearchValue(value); |
| 70 | + }, []); |
66 | 71 |
|
67 | 72 | const matches = useMemo(() => { |
68 | 73 | if (!searchValue) { |
@@ -143,7 +148,7 @@ export function PlatformSelector({ |
143 | 148 | open={open} |
144 | 149 | setOpen={setOpen} |
145 | 150 | includesBaseElement={false} |
146 | | - setValue={setSearchValue} |
| 151 | + setValue={handleSearchValueChange} |
147 | 152 | > |
148 | 153 | <RadixSelect.Trigger aria-label="Platform" className={styles.select}> |
149 | 154 | <RadixSelect.Value placeholder="Choose your SDK" /> |
|
0 commit comments