All files / react/components/SideNav/Links NavItemInline.jsx

25% Statements 2/8
0% Branches 0/14
0% Functions 0/1
25% Lines 2/8

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 46 47 48 49 50 51 52 53 54      2x                                                                           2x                        
import AnimationGroup from "../AnimationGroup/AnimationGroup";
import PropTypes from "prop-types";
 
const NavItemInline = (props) => {
  const {
    url,
    urlExpressionToMatch,
    className,
    icon,
    label,
    isActive,
    showLabel,
    disabled,
  } = props;
 
  const localUrl = urlExpressionToMatch || url;
  const urlRegExp = new RegExp(`${localUrl}/?$`);
  const path = window.location.href && window.location.href.split("?")[0];
  const currentPage = path && path.match(urlRegExp);
 
  return (
    <div
      className={`${className} ${isActive || currentPage ? "active" : ""} ${
        disabled ? "disabled" : ""
      }`}
      aria-label={label}
    >
      <svg
        className={`left-icon ${disabled ? "disabled" : ""}`}
        aria-hidden="true"
        focusable="false"
      >
        {icon}
      </svg>
      <AnimationGroup display={showLabel}>
        <span tabIndex="-1">{label}</span>
      </AnimationGroup>
    </div>
  );
};
 
NavItemInline.propTypes = {
  urlExpressionToMatch: PropTypes.string,
  url: PropTypes.string,
  className: PropTypes.string,
  icon: PropTypes.element,
  label: PropTypes.string,
  isActive: PropTypes.bool,
  showLabel: PropTypes.bool,
  disabled: PropTypes.bool,
};
 
export default NavItemInline;