Sha256: e7f97188846eeb4655d38eb680eb3f51cedcf5af7d7be9b739d5cad1b40ae16d

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

const InputSelect = ({ id, label, labelHidden, name, options, value, defaultValue, helpMessage, onChange }) => {

  const optionElements = options.map((option) => {
    return <option key={option.value} value={option.value}>{option.label}</option>;
  });

  const labelClassName = classNames({
    'next-label': true,
    'helper--visually-hidden': labelHidden
  });

  const handleChange = (e) => {
    onChange(e.target.value);
  };

  let helpElement = null;
  if(helpMessage) {
    helpElement = <p className="next-input__help-text">{helpMessage}</p>;
  }

  return(
    <div className="next-input-wrapper">
      <label className={labelClassName} htmlFor={id}>{label}</label>
      <div className="next-select__wrapper next-input--has-content">
        <select className="next-select rule-field" id={id} name={name} value={value} defaultValue={defaultValue} onChange={handleChange}>
          {optionElements}
        </select>
        <NextIcon name="next-chevron-down" size={12} />
      </div>
      {helpElement}
    </div>
  )

};

InputSelect.propTypes = {
  label: React.PropTypes.string.isRequired,
  name: React.PropTypes.string,
  options: React.PropTypes.arrayOf(
    React.PropTypes.shape({
      label: React.PropTypes.string.isRequired,
      value: React.PropTypes.string.isRequired
    })
  ).isRequired
};

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
disco_app-0.10.4 app/assets/javascripts/disco_app/components/ui-kit/forms/input-select.es6.jsx
disco_app-0.10.5 app/assets/javascripts/disco_app/components/ui-kit/forms/input-select.es6.jsx