You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.9 KiB
78 lines
1.9 KiB
9 years ago
|
'use strict'
|
||
9 years ago
|
var style = require('./styles/sliderStyles')
|
||
7 years ago
|
var remixLib = require('remix-lib')
|
||
|
var EventManager = remixLib.EventManager
|
||
9 years ago
|
var yo = require('yo-yo')
|
||
7 years ago
|
var ui = remixLib.helpers.ui
|
||
9 years ago
|
|
||
8 years ago
|
class Slider {
|
||
8 years ago
|
constructor (_traceManager, _stepOverride) {
|
||
8 years ago
|
this.event = new EventManager()
|
||
|
this.traceManager = _traceManager
|
||
|
this.max
|
||
|
this.disabled = true
|
||
|
this.view
|
||
8 years ago
|
this.solidityMode = false
|
||
8 years ago
|
this.stepOverride = _stepOverride
|
||
9 years ago
|
|
||
8 years ago
|
this.previousValue = null
|
||
|
}
|
||
9 years ago
|
|
||
8 years ago
|
render () {
|
||
|
var self = this
|
||
|
var view = yo`<div>
|
||
9 years ago
|
<input
|
||
|
id='slider'
|
||
|
style=${ui.formatCss(style.rule)}
|
||
|
type='range'
|
||
|
min=0
|
||
|
max=${this.max}
|
||
9 years ago
|
value=0
|
||
9 years ago
|
onchange=${function () { self.onChange() }}
|
||
|
oninput=${function () { self.onChange() }}
|
||
9 years ago
|
disabled=${this.disabled} />
|
||
|
</div>`
|
||
8 years ago
|
if (!this.view) {
|
||
|
this.view = view
|
||
|
}
|
||
|
return view
|
||
9 years ago
|
}
|
||
|
|
||
8 years ago
|
init (length) {
|
||
8 years ago
|
var slider = this.view.querySelector('#slider')
|
||
8 years ago
|
slider.setAttribute('max', length - 1)
|
||
|
this.max = length - 1
|
||
|
this.updateDisabled(length === 0)
|
||
|
this.disabled = length === 0
|
||
|
this.setValue(0)
|
||
|
}
|
||
9 years ago
|
|
||
8 years ago
|
onChange (event) {
|
||
8 years ago
|
var value = parseInt(this.view.querySelector('#slider').value)
|
||
8 years ago
|
if (this.stepOverride) {
|
||
8 years ago
|
var correctedValue = this.stepOverride(value)
|
||
|
if (correctedValue !== value) {
|
||
|
this.setValue(correctedValue)
|
||
|
value = correctedValue
|
||
|
}
|
||
8 years ago
|
}
|
||
8 years ago
|
if (value === this.previousValue) return
|
||
|
this.previousValue = value
|
||
|
this.event.trigger('moved', [value])
|
||
|
}
|
||
9 years ago
|
|
||
8 years ago
|
setValue (value) {
|
||
8 years ago
|
this.view.querySelector('#slider').value = value
|
||
8 years ago
|
}
|
||
|
|
||
|
updateDisabled (disabled) {
|
||
|
if (disabled) {
|
||
8 years ago
|
this.view.querySelector('#slider').setAttribute('disabled', true)
|
||
8 years ago
|
} else {
|
||
8 years ago
|
this.view.querySelector('#slider').removeAttribute('disabled')
|
||
8 years ago
|
}
|
||
|
}
|
||
9 years ago
|
}
|
||
|
|
||
9 years ago
|
module.exports = Slider
|