Skip to content

Commit

Permalink
Implement right click-rail handler
Browse files Browse the repository at this point in the history
Resolve #568.
  • Loading branch information
Hyunje Jun committed Oct 18, 2016
1 parent 98fa151 commit a4808f6
Showing 1 changed file with 8 additions and 25 deletions.
33 changes: 8 additions & 25 deletions src/js/plugin/handler/click-rail.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'use strict';

var _ = require('../../lib/helper');
var instances = require('../instances');
var updateGeometry = require('../update-geometry');
var updateScroll = require('../update-scroll');
Expand All @@ -13,37 +12,21 @@ function bindClickRailHandler(element, i) {

i.event.bind(i.scrollbarY, 'click', stopPropagation);
i.event.bind(i.scrollbarYRail, 'click', function (e) {
var halfOfScrollbarLength = _.toInt(i.scrollbarYHeight / 2);
var positionTop = i.railYRatio * (e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top - halfOfScrollbarLength);
var maxPositionTop = i.railYRatio * (i.railYHeight - i.scrollbarYHeight);
var positionRatio = positionTop / maxPositionTop;

if (positionRatio < 0) {
positionRatio = 0;
} else if (positionRatio > 1) {
positionRatio = 1;
}

updateScroll(element, 'top', (i.contentHeight - i.containerHeight) * positionRatio);
var positionTop = e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top;
var direction = positionTop > i.scrollbarYTop ? 1 : -1;

updateScroll(element, 'top', element.scrollTop + direction * i.containerHeight);
updateGeometry(element);

e.stopPropagation();
});

i.event.bind(i.scrollbarX, 'click', stopPropagation);
i.event.bind(i.scrollbarXRail, 'click', function (e) {
var halfOfScrollbarLength = _.toInt(i.scrollbarXWidth / 2);
var positionLeft = i.railXRatio * (e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left - halfOfScrollbarLength);
var maxPositionLeft = i.railXRatio * (i.railXWidth - i.scrollbarXWidth);
var positionRatio = positionLeft / maxPositionLeft;

if (positionRatio < 0) {
positionRatio = 0;
} else if (positionRatio > 1) {
positionRatio = 1;
}

updateScroll(element, 'left', ((i.contentWidth - i.containerWidth) * positionRatio) - i.negativeScrollAdjustment);
var positionLeft = e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left;
var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;

updateScroll(element, 'left', element.scrollLeft + direction * i.containerWidth);
updateGeometry(element);

e.stopPropagation();
Expand Down

0 comments on commit a4808f6

Please sign in to comment.