adamgruber/mochawesome-report-generator

View on GitHub
src/client/components/nav-menu/nav-menu-list.js

Summary

Maintainability
A
0 mins
Test Coverage
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import isEqual from 'lodash/isEqual';
import { NavMenuItem } from 'components/nav-menu';
import classNames from 'classnames/bind';
import styles from './nav-menu.css';

const cx = classNames.bind(styles);

class NavMenuList extends Component {
  static propTypes = {
    suites: PropTypes.array,
    showPassed: PropTypes.bool,
    showFailed: PropTypes.bool,
    showPending: PropTypes.bool,
    showSkipped: PropTypes.bool,
  };

  shouldComponentUpdate(nextProps) {
    return !isEqual(this.props, nextProps);
  }

  render() {
    const {
      suites,
      showPassed,
      showFailed,
      showPending,
      showSkipped,
    } = this.props;
    const navItemProps = { showPassed, showFailed, showPending, showSkipped };

    return (
      !!suites && (
        <div>
          {suites.map(subSuite => (
            <ul key={subSuite.uuid} className={cx('list', 'sub')}>
              <NavMenuItem suite={subSuite} {...navItemProps} />
            </ul>
          ))}
        </div>
      )
    );
  }
}

export default NavMenuList;