'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