bug fixes, new fonts, etc
This commit is contained in:
@@ -16,6 +16,7 @@ export interface TypeaheadProps<T> {
|
||||
debounceMs?: number;
|
||||
disabled?: boolean;
|
||||
initialValue?: string;
|
||||
maxHeight?: number | string;
|
||||
}
|
||||
|
||||
const Typeahead = <T,>({
|
||||
@@ -26,7 +27,8 @@ const Typeahead = <T,>({
|
||||
placeholder = "Search...",
|
||||
debounceMs = 300,
|
||||
disabled = false,
|
||||
initialValue = ""
|
||||
initialValue = "",
|
||||
maxHeight = 200,
|
||||
}: TypeaheadProps<T>) => {
|
||||
const [searchQuery, setSearchQuery] = useState(initialValue);
|
||||
const [searchResults, setSearchResults] = useState<TypeaheadOption<T>[]>([]);
|
||||
@@ -36,13 +38,7 @@ const Typeahead = <T,>({
|
||||
const containerRef = useRef<HTMLDivElement>(null);
|
||||
const inputRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
const debouncedSearch = useDebouncedCallback(async (query: string) => {
|
||||
if (!query.trim()) {
|
||||
setSearchResults([]);
|
||||
setIsOpen(false);
|
||||
return;
|
||||
}
|
||||
|
||||
const performSearch = async (query: string) => {
|
||||
setIsLoading(true);
|
||||
try {
|
||||
const results = await searchFn(query);
|
||||
@@ -56,7 +52,9 @@ const Typeahead = <T,>({
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
}, debounceMs);
|
||||
};
|
||||
|
||||
const debouncedSearch = useDebouncedCallback(performSearch, debounceMs);
|
||||
|
||||
const handleSearchChange = (value: string) => {
|
||||
setSearchQuery(value);
|
||||
@@ -114,8 +112,12 @@ const Typeahead = <T,>({
|
||||
value={searchQuery}
|
||||
onChange={(event) => handleSearchChange(event.currentTarget.value)}
|
||||
onKeyDown={handleKeyDown}
|
||||
onFocus={() => {
|
||||
if (searchResults.length > 0) setIsOpen(true);
|
||||
onFocus={async () => {
|
||||
if (searchResults.length > 0) {
|
||||
setIsOpen(true);
|
||||
return;
|
||||
}
|
||||
await performSearch(searchQuery);
|
||||
}}
|
||||
placeholder={placeholder}
|
||||
rightSection={isLoading ? <Loader size="xs" /> : null}
|
||||
@@ -133,7 +135,7 @@ const Typeahead = <T,>({
|
||||
left: 0,
|
||||
right: 0,
|
||||
zIndex: 9999,
|
||||
maxHeight: '160px',
|
||||
maxHeight,
|
||||
overflowY: 'auto',
|
||||
WebkitOverflowScrolling: 'touch',
|
||||
touchAction: 'pan-y',
|
||||
|
||||
Reference in New Issue
Block a user