Files
web2.0-frontend/src/components/Link.tsx
T
Aarni Halinen 0638167ca4 Fix lint
2021-01-15 22:10:39 +02:00

40 lines
1.4 KiB
TypeScript

import React from "react";
import NextJSLink, { LinkProps } from "next/link";
interface Props extends Omit<LinkProps, "href" | "as"> {
to: string;
template?: string;
target?: string;
onClick?: (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;
onMouseEnter?: (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;
onMouseLeave?: (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;
}
const Link: React.FC<Props> = ({
to, template, passHref, onClick, onMouseEnter, onMouseLeave, ...props
}) => {
if (template) {
return (
<NextJSLink href={template} passHref={passHref} as={to} {...props}>
{/* eslint-disable-next-line jsx-a11y/anchor-has-content */}
<a onClick={onClick} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} {...props} />
</NextJSLink>
);
}
if (to.startsWith("/") || to.startsWith("#")) {
return (
<NextJSLink href={to} passHref={passHref} {...props}>
{/* eslint-disable-next-line jsx-a11y/anchor-has-content */}
<a onClick={onClick} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} {...props} />
</NextJSLink>
);
}
return (
// eslint-disable-next-line jsx-a11y/anchor-has-content
<a href={to} onClick={onClick} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} {...props} />
);
};
export default Link;