nukeop/nuclear

View on GitHub
packages/app/app/components/PlaylistsSubMenu/index.js

Summary

Maintainability
A
35 mins
Test Coverage
import React from 'react';
import PropTypes from 'prop-types';
import FontAwesome from 'react-fontawesome';
import { NavLink } from 'react-router-dom';
import _ from 'lodash';

import appStyles from '../../styles.scss';
import styles from './styles.scss';

const PlaylistsSubMenu = props => {
  return (
    !props.compact && <div className={styles.playlists_submenu}>
      {
        _.map(props.playlists, (playlist, i) => {
          return (
            <NavLink
              to={'/playlist/' + i}
              activeClassName={appStyles.active_nav_link}
              key={playlist.name}
            >
              <div className={styles.playlists_submenu_entry}>
                <FontAwesome name='music'/> { playlist.name }
              </div>
            </NavLink>
          );
        })
      }
    </div>
  );
};

PlaylistsSubMenu.propTypes = {
  playlists: PropTypes.arrayOf(
    PropTypes.shape({
      name: PropTypes.string,
      tracks: PropTypes.arrayOf(
        PropTypes.shape({
          uuid: PropTypes.string,
          artist: PropTypes.string,
          name: PropTypes.string,
          thumbnail: PropTypes.string
        })
      )
    })
  ),
  compact: PropTypes.bool
};

export default PlaylistsSubMenu;