All files / javascripts/explorev2/components ControlHeader.jsx

70% Statements 7/10
0% Branches 0/6
0% Functions 0/1
70% Lines 7/10
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 491x 1x 1x   1x           1x                                                                       1x 1x  
import React, { PropTypes } from 'react';
import { ControlLabel, OverlayTrigger, Tooltip } from 'react-bootstrap';
import InfoTooltipWithTrigger from '../../components/InfoTooltipWithTrigger';
 
const propTypes = {
  label: PropTypes.string.isRequired,
  description: PropTypes.string,
  validationErrors: PropTypes.array,
};
 
const defaultProps = {
  description: null,
  validationErrors: [],
};
 
export default function ControlHeader({ label, description, validationErrors }) {
  const hasError = (validationErrors.length > 0);
  return (
    <ControlLabel>
      {hasError ?
        <strong className="text-danger">{label}</strong> :
        <span>{label}</span>
      }
      {' '}
      {(validationErrors.length > 0) &&
        <span>
          <OverlayTrigger
            placement="right"
            overlay={
              <Tooltip id={'error-tooltip'}>
                {validationErrors.join(' ')}
              </Tooltip>
            }
          >
            <i className="fa fa-exclamation-circle text-danger" />
          </OverlayTrigger>
          {' '}
        </span>
      }
      {description &&
        <InfoTooltipWithTrigger label={label} tooltip={description} />
      }
    </ControlLabel>
  );
}
 
ControlHeader.propTypes = propTypes;
ControlHeader.defaultProps = defaultProps;