From 72bfafbedea4973b803abeefc97637f246b11c89 Mon Sep 17 00:00:00 2001 From: Alexander Schmitz Date: Wed, 15 Jul 2015 20:23:44 -0400 Subject: Core: Move scrollParent into its own module Ref #9647 --- ui/scroll-parent.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 ui/scroll-parent.js (limited to 'ui/scroll-parent.js') diff --git a/ui/scroll-parent.js b/ui/scroll-parent.js new file mode 100644 index 000000000..478b86ae3 --- /dev/null +++ b/ui/scroll-parent.js @@ -0,0 +1,42 @@ +/*! + * jQuery UI Scroll Parent @VERSION + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: scrollParent +//>>group: Core +//>>description: Get the closest ancestor element that is scrollable. +//>>docs: http://api.jqueryui.com/scrollParent/ + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery", "./version" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +} ( function( $ ) { + +return $.fn.scrollParent = function( includeHidden ) { + var position = this.css( "position" ), + excludeStaticParent = position === "absolute", + overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, + scrollParent = this.parents().filter( function() { + var parent = $( this ); + if ( excludeStaticParent && parent.css( "position" ) === "static" ) { + return false; + } + return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) ); + } ).eq( 0 ); + + return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent; +}; + +} ) ); -- cgit v1.2.3