All files / src/components/SearchItem SearchItem.tsx

0% Statements 0/7
0% Branches 0/2
0% Functions 0/2
0% Lines 0/7

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";