You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
925 B

  1. import ImmutablePropTypes from 'react-immutable-proptypes';
  2. import Toggle from 'react-toggle';
  3. const labelStyle = {
  4. display: 'block',
  5. lineHeight: '24px',
  6. verticalAlign: 'middle'
  7. };
  8. const labelSpanStyle = {
  9. display: 'inline-block',
  10. verticalAlign: 'middle',
  11. marginBottom: '14px',
  12. marginLeft: '8px'
  13. };
  14. const SettingToggle = ({ settings, settingKey, label, onChange, htmlFor = '' }) => (
  15. <label htmlFor={htmlFor} style={labelStyle}>
  16. <Toggle checked={settings.getIn(settingKey)} onChange={(e) => onChange(settingKey, e.target.checked)} />
  17. <span className='setting-toggle' style={labelSpanStyle}>{label}</span>
  18. </label>
  19. );
  20. SettingToggle.propTypes = {
  21. settings: ImmutablePropTypes.map.isRequired,
  22. settingKey: React.PropTypes.array.isRequired,
  23. label: React.PropTypes.node.isRequired,
  24. onChange: React.PropTypes.func.isRequired,
  25. htmlFor: React.PropTypes.string
  26. };
  27. export default SettingToggle;