render()

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>
      );
    }