123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- 'use strict';
- define(['jquery', '../../lib/@waca/core-client/js/core-client/ui/core/Class'], function ($, Class) {
- var ScrollBarUtil = null;
- ScrollBarUtil = Class.extend({
-
- init: function init(inner, outer, event) {
- ScrollBarUtil.inherited('init', this, arguments);
- this.inner = inner || null;
- this.outer = outer || null;
- this.event = event || null;
- },
-
- doesHaveVerticalScrollBar: function doesHaveVerticalScrollBar(inner, outer) {
- inner = inner || this.inner;
- outer = outer || this.outer;
- inner = inner instanceof $ ? inner.get(0) : inner;
- outer = outer instanceof $ ? outer : $(outer);
- return this._getScrollHeight(inner) > outer.height();
- },
-
- doesHaveHorizontalScrollBar: function doesHaveHorizontalScrollBar(inner, outer) {
- inner = inner || this.inner;
- outer = outer || this.outer;
- inner = inner instanceof $ ? inner.get(0) : inner;
- outer = outer instanceof $ ? outer : $(outer);
- return this._getScrollWidth(inner) > outer.width();
- },
-
- isEventOnVerticalScrollBar: function isEventOnVerticalScrollBar(event) {
- event = event || this.event;
- var target = $(event.target);
- var isInScrollRange = target.offset().left + this._getContextClientWidth(target) - event.pageX <= 0;
- return isInScrollRange;
- },
-
- isEventOnHorizontalScrollBar: function isEventOnHorizontalScrollBar(event) {
- event = event || this.event;
- var target = $(event.target);
- var isInScrollRange = target.offset().top + this._getContextClientHeight(target) - event.pageY <= 0;
- return isInScrollRange;
- },
-
- isOnScrollBar: function isOnScrollBar(inner, outer, event) {
-
- if (arguments.length === 1) {
- event = inner || this.event;
- inner = this.inner;
- outer = this.outer;
- } else {
- inner = inner || this.inner;
- outer = outer || this.outer;
- event = event || this.event;
- }
- return this.doesHaveVerticalScrollBar(inner, outer) && this.isEventOnVerticalScrollBar(event) || this.doesHaveHorizontalScrollBar(inner, outer) && this.isEventOnHorizontalScrollBar(event);
- },
-
- _getScrollHeight: function _getScrollHeight(element) {
- return element.scrollHeight;
- },
-
- _getScrollWidth: function _getScrollWidth(element) {
- return element.scrollWidth;
- },
-
- _getContextClientWidth: function _getContextClientWidth(element) {
- var clientWidth = element.context.clientWidth;
- if (clientWidth === element.width()) {
-
- clientWidth -= 30;
- }
- return clientWidth;
- },
-
- _getContextClientHeight: function _getContextClientHeight(element) {
- var clientHeight = element.context.clientHeight;
- if (clientHeight === element.height()) {
-
- clientHeight -= 30;
- }
- return clientHeight;
- }
- });
- return ScrollBarUtil;
- });
|