appirio-tech-react-components-test10
Version:
Topcoder UI Kit library of components for our React apps.
60 lines (53 loc) • 1.49 kB
JSX
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import Slider from 'rc-slider'
import 'rc-slider/assets/index.css'
import cn from 'classnames'
import { HOC as hoc } from 'formsy-react'
import './SliderStandard.scss'
class SliderStandard extends Component {
constructor(props) {
super(props)
this.onChange = this.onChange.bind(this)
}
onChange(value) {
const {name} = this.props
this.props.setValue(value.toString())
this.props.onChange(name, value)
}
noOp() {}
render() {
const { minLabel, maxLabel, min, max, step} = this.props
const value = this.props.getValue()
const marks = {}
marks[min] = minLabel
marks[max] = maxLabel
return (
<div>
<Slider
className={ cn('SliderStandard', { 'null-value' : value < 0}) }
min={min}
max={max}
step={step}
value={parseInt(value)}
marks={marks}
onChange={ this.onChange }
// handles onAfterChange to fix issue when user clicks on first value/step of untouched slider
onAfterChange={ this.onChange }
/>
</div>
)
}
}
SliderStandard.propTypes = {
minLabel: PropTypes.string.isRequired,
maxLabel: PropTypes.string.isRequired,
min: PropTypes.number.isRequired,
max: PropTypes.number.isRequired,
step: PropTypes.number.isRequired
}
SliderStandard.defaultProps = {
onChange: () => {}
}
export default hoc(SliderStandard)