in src/link/link.tsx [37:91]
render() {
const {
active,
inherit,
pseudo,
hover,
className,
'data-test': dataTest,
href,
children,
onPlainLeftClick,
onClick,
...restProps
} = this.props;
const useButton = pseudo || (!isCustom && (href === null || href === undefined));
const classes = classNames(styles.link, className, {
[styles.active]: active,
[styles.inherit]: inherit,
[styles.hover]: hover,
[styles.pseudo]: useButton,
});
let props = restProps;
if (isCustom && !props.activeClassName) {
props = {...props, activeClassName: styles.active};
}
if (useButton) {
return (
<button
type='button'
{...(props as HTMLAttributes<HTMLElement>)}
className={classes}
onClick={(onClick || onPlainLeftClick) as MouseEventHandler}
data-test={dataTests('ring-link', dataTest)}
>
{children}
</button>
);
}
return (
<ComposedComponent
{...(props as P)}
href={href}
className={classes}
onClick={onClick}
{...(typeof ComposedComponent !== 'string' ? {onPlainLeftClick} : {})}
data-test={dataTests('ring-link', dataTest)}
>
{children}
</ComposedComponent>
);
}