All files / components/Dropdown index.js

71.43% Statements 5/7
37.5% Branches 3/8
50% Functions 1/2
71.43% Lines 5/7

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      1x     2x 2x                                   2x     1x                            
import React from 'react';
import PropTypes from 'proptypes';
 
const Dropdown = (props) => {
  const {
    products, keywordMapping, inFocus, showThumbPreview,
  } = props;
  Iif (products && products.length > 0) {
    return (
      <ul className="ub-suggest-list">
        { products.map((product, i) => (
          <li tabIndex={-1} className={`${(i + 1 === inFocus) ? 'focused ' : ''}ub-suggest-item`} key={product[keywordMapping.id]}>
            { showThumbPreview ?
              <a href={product[keywordMapping.url]} className="ub-suggest-link">
                <img className="ub-suggest-thumb" src={product[keywordMapping.image][0]} alt={product[keywordMapping.name]} /> {product[keywordMapping.name]}
              </a>
              :
              (<a href={product[keywordMapping.url]} className="ub-suggest-link">{product[keywordMapping.name]})</a>)
            }
          </li>
          ))
        }
      </ul>
    );
  }
  return null;
};
 
Dropdown.propTypes = {
  products: PropTypes.array.isRequired, // eslint-disable-line
  keywordMapping: PropTypes.shape({
    name: PropTypes.string,
    image: PropTypes.string,
    price: PropTypes.string,
    url: PropTypes.string,
    id: PropTypes.string,
  }).isRequired,
  showThumbPreview: PropTypes.bool.isRequired,
  inFocus: PropTypes.number.isRequired,
};
 
export default Dropdown;