123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- 'use strict';
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2015, 2017
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(['jquery', '../../lib/@waca/core-client/js/core-client/ui/core/Class'], function ($, Class) {
- var ScrollBarUtil = null;
- ScrollBarUtil = Class.extend({
- /**
- * Initialize the utility with the specified models
- *
- * @param {JQuery|HTMLElement} inner - Inner DOM element
- * @param {JQuery|HTMLElement} outer - Outer DOM element
- * @param event
- */
- init: function init(inner, outer, event) {
- ScrollBarUtil.inherited('init', this, arguments);
- this.inner = inner || null;
- this.outer = outer || null;
- this.event = event || null;
- },
- /**
- * Check if the DOM element has a vertical scroll bar
- *
- * @param {JQuery|HTMLElement} inner - Inner DOM element
- * @param {JQuery|HTMLElement} outer - Outer DOM element
- */
- 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();
- },
- /**
- * Check if the DOM element has a horizontal scroll bar
- *
- * @param {JQuery|HTMLElement} inner - Inner DOM element
- * @param {JQuery|HTMLElement} outer - Outer DOM element
- */
- 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();
- },
- /**
- * Check if the event fired on the vertical scroll bar
- *
- * @param event
- */
- 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;
- },
- /**
- * Check if the event fired on the vertical scroll bar
- *
- * @param event
- */
- 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;
- },
- /**
- * Check if element has a scroll bar and the event was fired on the scroll bar
- *
- * @param {JQuery|HTMLElement|Event} inner
- * @param {JQuery|HTMLElement} outer
- * @param event
- */
- isOnScrollBar: function isOnScrollBar(inner, outer, event) {
- // Useful when the inner and outer DOM objects were sent into the constructor
- 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);
- },
- /**
- * Return the scroll height for element
- *
- * @param {HTMLElement} element
- */
- _getScrollHeight: function _getScrollHeight(element) {
- return element.scrollHeight;
- },
- /**
- * Return the scroll width for element
- *
- * @param {HTMLElement} element
- */
- _getScrollWidth: function _getScrollWidth(element) {
- return element.scrollWidth;
- },
- /**
- * @param {JQuery} element - DOM element
- */
- _getContextClientWidth: function _getContextClientWidth(element) {
- var clientWidth = element.context.clientWidth;
- if (clientWidth === element.width()) {
- // On mac, the client width does not exclude the scrollbar.. remove 30px to approximate the the scrollbar value
- clientWidth -= 30;
- }
- return clientWidth;
- },
- /**
- * @param {JQuery} element - DOM element
- */
- _getContextClientHeight: function _getContextClientHeight(element) {
- var clientHeight = element.context.clientHeight;
- if (clientHeight === element.height()) {
- // On mac, the client width does not exclude the scrollbar.. remove 30px to approximate the the scrollbar value
- clientHeight -= 30;
- }
- return clientHeight;
- }
- });
- return ScrollBarUtil;
- });
- //# sourceMappingURL=ScrollBarUtil.js.map
|