nifty-wallet/ui/app/components/range-slider.js

59 lines
1.4 KiB
JavaScript
Raw Normal View History

2016-10-06 13:03:01 -07:00
const Component = require('react').Component
const h = require('react-hyperscript')
const inherits = require('util').inherits
module.exports = RangeSlider
inherits(RangeSlider, Component)
function RangeSlider () {
Component.call(this)
}
RangeSlider.prototype.render = function () {
2016-10-12 19:35:09 -07:00
const state = this.state || {}
2016-10-06 13:03:01 -07:00
const props = this.props
2016-10-12 19:35:09 -07:00
const onInput = props.onInput || function () {}
2016-10-06 13:03:01 -07:00
const name = props.name
const {
min = 0,
max = 100,
increment = 1,
defaultValue = 50,
mirrorInput = false,
} = this.props.options
const {container, input, range} = props.style
return (
h('.flex-row', {
style: container,
}, [
h('input', {
type: 'range',
name: name,
min: min,
max: max,
step: increment,
style: range,
2016-10-12 19:35:09 -07:00
value: state.value || defaultValue,
onChange: mirrorInput ? this.mirrorInputs.bind(this, name) : onInput,
2016-10-06 13:03:01 -07:00
}),
// Mirrored input for range
mirrorInput ? h('input.large-input', {
type: 'number',
name: `${name}Mirror`,
min: min,
max: max,
2016-10-12 19:35:09 -07:00
value: state.value || defaultValue,
2016-10-06 13:03:01 -07:00
step: increment,
style: input,
onChange: this.mirrorInputs.bind(this, `${name}Mirror`),
}) : null,
])
)
}
2016-10-12 19:35:09 -07:00
RangeSlider.prototype.mirrorInputs = function (active, event) {
this.setState({value: event.target.value})
2016-10-06 13:03:01 -07:00
}