2016-12-16 15:54:49 +00:00
|
|
|
import React, { PropTypes } from 'react';
|
|
|
|
|
import classnames from 'classnames';
|
|
|
|
|
import { pick } from 'lodash';
|
|
|
|
|
|
|
|
|
|
import FormField from 'components/forms/FormField';
|
|
|
|
|
|
2016-12-23 18:40:16 +00:00
|
|
|
const Slider = (props) => {
|
|
|
|
|
const { onChange, value, inactiveText = 'Off', activeText = 'On' } = props;
|
2016-12-16 15:54:49 +00:00
|
|
|
const baseClass = 'kolide-slider';
|
|
|
|
|
|
|
|
|
|
const sliderBtnClass = classnames(
|
|
|
|
|
baseClass,
|
|
|
|
|
{ [`${baseClass}--active`]: value }
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const sliderDotClass = classnames(
|
|
|
|
|
`${baseClass}__dot`,
|
|
|
|
|
{ [`${baseClass}__dot--active`]: value }
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const handleClick = (evt) => {
|
|
|
|
|
evt.preventDefault();
|
|
|
|
|
|
|
|
|
|
return onChange(!value);
|
|
|
|
|
};
|
|
|
|
|
|
2016-12-23 18:40:16 +00:00
|
|
|
const formFieldProps = pick(props, ['hint', 'label', 'error', 'name']);
|
2016-12-16 15:54:49 +00:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<FormField {...formFieldProps} type="slider">
|
2016-12-27 15:32:30 +00:00
|
|
|
<div className={`${baseClass}__wrapper`}>
|
|
|
|
|
<span className={`${baseClass}__label ${baseClass}__label--inactive`}>{inactiveText}</span>
|
|
|
|
|
<button className={`button button--unstyled ${sliderBtnClass}`} onClick={handleClick}>
|
|
|
|
|
<div className={sliderDotClass} />
|
|
|
|
|
</button>
|
|
|
|
|
<span className={`${baseClass}__label ${baseClass}__label--active`}>{activeText}</span>
|
|
|
|
|
</div>
|
2016-12-16 15:54:49 +00:00
|
|
|
</FormField>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Slider.propTypes = {
|
|
|
|
|
value: PropTypes.bool,
|
|
|
|
|
onChange: PropTypes.func,
|
|
|
|
|
inactiveText: PropTypes.string,
|
|
|
|
|
activeText: PropTypes.string,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default Slider;
|