All files / components/validation-selector validation-selector.jsx

100% Statements 14/14
50% Branches 2/4
0% Functions 0/1
100% Lines 14/14

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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 711x 1x 1x 1x   1x                                                   11x                     11x 11x   11x 27x 27x   27x       11x                               1x  
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { DropdownButton, MenuItem } from 'react-bootstrap';
import classnames from 'classnames';
 
import styles from './validation-selector.less';
 
/**
 * Validation selector component.
 */
class ValidationSelector extends Component {
  static displayName = 'ValidationSelector';
 
  static propTypes = {
    id: PropTypes.string.isRequired,
    bsSize: PropTypes.string,
    options: PropTypes.object.isRequired,
    label: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
    title: PropTypes.string,
    onSelect: PropTypes.func,
    disabled: PropTypes.bool
  };
 
  static defaultProps = {
    label: '',
    title: 'Select an option',
    onSelect: () => {},
    disabled: false
  };
 
  static renderLabel(label, id) {
    return label
      ? <label className={classnames(styles['option-selector-label'])} htmlFor={id}>{label}</label>
      : null;
  }
 
  /**
   * Renders the Option Selector component.
   *
   * @returns {React.Component} The component.
   */
  render() {
    const htmlLabel = this.constructor.renderLabel(this.props.label, this.props.id);
    const menuItems = [];
 
    for (const key in this.props.options) {
      Eif (this.props.options.hasOwnProperty(key)) {
        const label = this.props.options[key];
 
        menuItems.push(<MenuItem key={key} eventKey={key} href="#">{label}</MenuItem>);
      }
    }
 
    return (
      <div className={classnames(styles['option-selector'])}>
        {htmlLabel}
        <DropdownButton
          bsSize={this.props.bsSize}
          id={this.props.id}
          onSelect={this.props.onSelect}
          title={this.props.title}
          disabled={this.props.disabled}>
          {menuItems}
        </DropdownButton>
      </div>
    );
  }
}
 
export default ValidationSelector;