fleet/frontend/components/forms/fields/Slider/Slider.jsx
Zachary Wasserman ccc8581229
Upgrade eslint and dependencies (#2255)
Updates configuration and fixes issues introduced
2020-07-06 19:31:48 -07:00

50 lines
1.3 KiB
JavaScript

import React from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { pick } from 'lodash';
import FormField from 'components/forms/FormField';
const Slider = (props) => {
const { onChange, value, inactiveText = 'Off', activeText = 'On' } = props;
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);
};
const formFieldProps = pick(props, ['hint', 'label', 'error', 'name']);
return (
<FormField {...formFieldProps} type="slider">
<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>
</FormField>
);
};
Slider.propTypes = {
value: PropTypes.bool,
onChange: PropTypes.func,
inactiveText: PropTypes.string,
activeText: PropTypes.string,
};
export default Slider;