Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import { HTMLChakraProps, ListItem, forwardRef } from "@chakra-ui/react";
import type { KeyboardEventHandler, ReactNode } from "react";
export interface SearchItemProps extends HTMLChakraProps<"li"> {
name: ReactNode;
onClick: () => void;
}
export const SearchItem = forwardRef<SearchItemProps, "li">(
({ name, onClick, ...props }, ref) => {
const onKeyDown: KeyboardEventHandler<HTMLLIElement> = (e) => {
if (["Enter", " "].includes(e.key)) {
e.preventDefault();
onClick();
}
};
return (
<ListItem
_hover={{
cursor: "pointer",
}}
alignItems="center"
display="flex"
fontSize="md"
lineHeight="base"
listStyleType="none"
minH={8}
onClick={onClick}
onKeyDown={onKeyDown}
px={4}
ref={ref}
role="option"
sx={{ ":hover, :focus": { bg: "hoverPrimary" } }}
tabIndex={0}
{...props}
>
{name}
</ListItem>
);
}
);
SearchItem.displayName = "SearchItem";
|