import './Range.css'; import React, { Component } from 'react'; import PropTypes from 'prop-types'; class Range extends Component { constructor(props) { super(props); this.state = { value: props.value || 0 }; } handleChange = event => { this.setState({ value: event.target.value }); if (this.props.onChange) this.props.onChange(event); }; render() { return ( <> {this.props.showPercentage && {`${this.state.value}%`}} {this.props.showValue && ( {this.props.valueRenderer ? this.props.valueRenderer(this.state.value) : this.state.value} )} ); } } Range.propTypes = { value: PropTypes.number, min: PropTypes.number.isRequired, max: PropTypes.number.isRequired, step: PropTypes.number, id: PropTypes.string, valueRenderer: PropTypes.func, onChange: PropTypes.func, showPercentage: PropTypes.bool, showValue: PropTypes.bool, }; Range.defaultProps = { showPercentage: false, showValue: false, }; export { Range };