67 lines
1.5 KiB
JavaScript
67 lines
1.5 KiB
JavaScript
/**
|
|
* @private
|
|
*/
|
|
Ext.define('Ext.scroll.indicator.ScrollPosition', {
|
|
extend: 'Ext.scroll.indicator.Abstract',
|
|
|
|
config: {
|
|
cls: 'scrollposition'
|
|
},
|
|
|
|
getElementConfig: function() {
|
|
var config = this.callParent(arguments);
|
|
|
|
config.children.unshift({
|
|
className: 'x-scroll-bar-stretcher'
|
|
});
|
|
|
|
return config;
|
|
},
|
|
|
|
updateValue: function(value) {
|
|
if (this.gapLength === 0) {
|
|
if (value > 1) {
|
|
value = value - 1;
|
|
}
|
|
|
|
this.setOffset(this.barLength * value);
|
|
}
|
|
else {
|
|
this.setOffset(this.gapLength * value);
|
|
}
|
|
},
|
|
|
|
updateLength: function() {
|
|
var scrollOffset = this.barLength,
|
|
barDom = this.barElement.dom,
|
|
element = this.element;
|
|
|
|
this.callParent(arguments);
|
|
|
|
if (this.getAxis() === 'x') {
|
|
barDom.scrollLeft = scrollOffset;
|
|
element.setLeft(scrollOffset);
|
|
}
|
|
else {
|
|
barDom.scrollTop = scrollOffset;
|
|
element.setTop(scrollOffset);
|
|
}
|
|
},
|
|
|
|
setOffset: function(offset) {
|
|
var barLength = this.barLength,
|
|
minLength = this.getMinLength(),
|
|
barDom = this.barElement.dom;
|
|
|
|
offset = Math.min(barLength - minLength, Math.max(offset, minLength - this.getLength()));
|
|
offset = barLength - offset;
|
|
|
|
if (this.getAxis() === 'x') {
|
|
barDom.scrollLeft = offset;
|
|
}
|
|
else {
|
|
barDom.scrollTop = offset;
|
|
}
|
|
}
|
|
});
|