diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..208d3ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +### Node template +node_modules/ +npm-debug.log* + +### JetBrains template +*.iml +.idea/ +/out/ +.idea_modules/ \ No newline at end of file diff --git a/README.md b/README.md index 44d1b8f..bc90347 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,7 @@ slimScroll is a small jQuery plugin that transforms any div into a scrollable area with a nice scrollbar - similar to the one Facebook and Google started using in their products recently. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over. User can drag the scrollbar or use mouse-wheel to change the scroll value. -Demo and more: http://rocha.la/jQuery-slimScroll +Demo and deocumentation available here: [jQuery slimScroll docs](http://rocha.la/jQuery-slimScroll) Copyright (c) 2011 Piotr Rochala (http://rocha.la) -Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - +Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. \ No newline at end of file diff --git a/bower.json b/bower.json new file mode 100644 index 0000000..831eb32 --- /dev/null +++ b/bower.json @@ -0,0 +1,46 @@ +{ + "name": "jquery-slimscroll", + "version": "1.3.8", + "description": "slimScroll is a small jQuery plugin that transforms any div into a scrollable area. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over.", + "keywords": [ + "scrollbar", + "scroll", + "slimscroll", + "scrollable", + "scrolling", + "scroller", + "ui", + "jquery-plugin", + "ecosystem:jquery" + ], + "homepage": "http://rocha.la/jQuery-slimScroll/", + "authors": [ + { "name": "Piotr Rochala", "homepage": "http://rocha.la/" } + ], + "repository": { + "type": "git", + "url": "https://github.com/rochal/jQuery-slimScroll.git" + }, + "main": [ + "jquery.slimscroll.js", + "jquery.slimscroll.min.js" + ], + "licenses" : [ + { + "type": "MIT", + "url": "http://www.opensource.org/licenses/mit-license.php" + }, + { + "type": "GPL", + "url": "http://www.opensource.org/licenses/gpl-license.php" + } + ], + "moduleType": [], + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/examples/allow-page-scroll.html b/examples/allow-page-scroll.html index 2c584b2..b594de3 100644 --- a/examples/allow-page-scroll.html +++ b/examples/allow-page-scroll.html @@ -4,7 +4,6 @@ jquery.slimscroll - allow page scroll - diff --git a/examples/chaining.html b/examples/chaining.html index ef54fa6..fead426 100644 --- a/examples/chaining.html +++ b/examples/chaining.html @@ -4,7 +4,6 @@ jquery.slimscroll - chaining - diff --git a/examples/disable-fade-out.html b/examples/disable-fade-out.html index 1420e88..7c8e6fa 100644 --- a/examples/disable-fade-out.html +++ b/examples/disable-fade-out.html @@ -4,7 +4,7 @@ jquery.slimscroll - disable fade out - + diff --git a/examples/dynamic-content.html b/examples/dynamic-content.html index 0d667c8..1ac5e56 100644 --- a/examples/dynamic-content.html +++ b/examples/dynamic-content.html @@ -4,7 +4,7 @@ jquery.slimscroll - dynamic content - + diff --git a/examples/height-width.html b/examples/height-width.html index 17fa9ba..4b006b0 100644 --- a/examples/height-width.html +++ b/examples/height-width.html @@ -4,7 +4,7 @@ jquery.slimscroll - height / width - + diff --git a/examples/mouse-wheel.html b/examples/mouse-wheel.html index f6c0dcf..434c80c 100644 --- a/examples/mouse-wheel.html +++ b/examples/mouse-wheel.html @@ -4,7 +4,7 @@ jquery.slimscroll - mouse wheel - + diff --git a/examples/multiple-elements.html b/examples/multiple-elements.html index 92099c7..8923825 100644 --- a/examples/multiple-elements.html +++ b/examples/multiple-elements.html @@ -4,7 +4,7 @@ jquery.slimscroll - multiple elements - + @@ -14,6 +14,7 @@ Fork me on GitHub
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

@@ -31,6 +32,8 @@

Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

@@ -48,6 +51,8 @@

Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

@@ -65,11 +70,12 @@

Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

+
   $('.area').slimscroll({
-    width: '200px'
+    width: '200px',
   }).parent().css({
     'float': 'left',
     'margin-right': '30px'
@@ -83,7 +89,8 @@
     $(function(){
 
       $('.area').slimscroll({
-        width: '200px'
+        width: '200px',
+        height: 'auto'
       }).parent().css({
         'float': 'left',
         'margin-right': '30px'
diff --git a/examples/nested.html b/examples/nested.html
index adc465d..92bd599 100644
--- a/examples/nested.html
+++ b/examples/nested.html
@@ -4,7 +4,7 @@
 jquery.slimscroll - nested elements
 
 
-
+
 
 
 
diff --git a/examples/programmatic-scrolling.html b/examples/programmatic-scrolling.html
index 67d0a68..163e753 100644
--- a/examples/programmatic-scrolling.html
+++ b/examples/programmatic-scrolling.html
@@ -4,7 +4,7 @@
 jquery.slimscroll - programmatic scrolling
 
 
-
+
 
 
 
diff --git a/examples/rail.html b/examples/rail.html
index c6350f5..4f77f34 100644
--- a/examples/rail.html
+++ b/examples/rail.html
@@ -4,7 +4,7 @@
 jquery.slimscroll - rail options
 
 
-
+
 
 
 
@@ -109,7 +109,8 @@
 
 
   $('#testDiv4').slimscroll({
-    railVisible: true
+    railVisible: true,
+    railBorderRadius: 0
   });
 
@@ -132,7 +133,6 @@
-  // This also removes dependency on jQuery UI
   $('#testDiv5').slimscroll({
     railDraggable: false
   });
@@ -159,7 +159,8 @@
       });
 
       $('#testDiv4').slimscroll({
-        railVisible: true
+        railVisible: true,
+        railBorderRadius: 0
       });
 
       $('#testDiv5').slimscroll({
diff --git a/examples/scroll-events.html b/examples/scroll-events.html
index 9ab9521..9eabbdc 100644
--- a/examples/scroll-events.html
+++ b/examples/scroll-events.html
@@ -4,7 +4,7 @@
 jquery.slimscroll - top/bottom events
 
 
-
+
 
 
 
diff --git a/examples/scrollbar.html b/examples/scrollbar.html
index f2c401d..9f13b03 100644
--- a/examples/scrollbar.html
+++ b/examples/scrollbar.html
@@ -4,7 +4,7 @@
 jquery.slimscroll - scrollbar options
 
 
-
+
 
 
 
diff --git a/examples/start-position.html b/examples/start-position.html
index 5e2e8dc..8afdda6 100644
--- a/examples/start-position.html
+++ b/examples/start-position.html
@@ -4,7 +4,7 @@
 jquery.slimscroll - start position
 
 
-
+
 
 
 
diff --git a/examples/style.css b/examples/style.css
index f12104a..b676c81 100644
--- a/examples/style.css
+++ b/examples/style.css
@@ -6,7 +6,7 @@ pre.prettyprint { padding:15px; border:1px solid #eee; border-radius:5px; backgr
 .examples { border-radius:20px; background:#fff; padding:15px;
   margin:0 150px 0 0; border-collapse: collapse; border:1px solid #000; }
 .slimScrollDiv { border:1px solid #eee; }
-#nav { position:fixed; top:0 left:0; background:#fff; padding:15px; border-radius:20px; width:200px; }
+#nav { position:fixed; top:0; left:0; background:#fff; padding:15px; border-radius:20px; width:200px; }
 #nav ul { list-style-type:square; list-style-position:inside; margin:20px 0 0 0; padding:0; }
 #nav a { text-decoration:none; color:#000; }
 #nav a:hover { text-decoration: underline }
diff --git a/jquery.slimscroll.js b/jquery.slimscroll.js
index b30c7c1..1c6a53b 100644
--- a/jquery.slimscroll.js
+++ b/jquery.slimscroll.js
@@ -2,12 +2,12 @@
  * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
  * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
  *
- * Version: 1.2.0
+ * Version: 1.3.8
  *
  */
 (function($) {
 
-  jQuery.fn.extend({
+  $.fn.extend({
     slimScroll: function(options) {
 
       var defaults = {
@@ -40,7 +40,7 @@
         alwaysVisible : false,
 
         // check if we should hide the scrollbar when user is hovering over
-        disableFadeOut: false,
+        disableFadeOut : false,
 
         // sets visibility of the rail
         railVisible : false,
@@ -71,12 +71,12 @@
 
         // scroll amount applied when user is using gestures
         touchScrollStep : 200,
-        
+
         // sets border radius
         borderRadius: '7px',
-        
+
         // sets border radius of the rail
-        railBorderRadius: '7px'
+        railBorderRadius : '7px'
       };
 
       var o = $.extend(defaults, options);
@@ -100,8 +100,8 @@
             var offset = me.scrollTop();
 
             // find bar and rail
-            bar = me.parent().find('.' + o.barClass);
-            rail = me.parent().find('.' + o.railClass);
+            bar = me.siblings('.' + o.barClass);
+            rail = me.siblings('.' + o.railClass);
 
             getBarHeight();
 
@@ -115,6 +115,10 @@
                 var height = me.parent().parent().height();
                 me.parent().css('height', height);
                 me.css('height', height);
+              } else if ('height' in options) {
+                var h = options.height;
+                me.parent().css('height', h);
+                me.css('height', h);
               }
 
               if ('scrollTo' in options)
@@ -142,6 +146,13 @@
 
             return;
         }
+        else if ($.isPlainObject(options))
+        {
+            if ('destroy' in options)
+            {
+            	return;
+            }
+        }
 
         // optionally set height to the parent's height
         o.height = (o.height == 'auto') ? me.parent().height() : o.height;
@@ -207,19 +218,29 @@
         me.parent().append(bar);
         me.parent().append(rail);
 
-        // make it draggable
-        if (o.railDraggable && $.ui && typeof($.ui.draggable) == 'function')
-        {
-          bar.draggable({
-            axis: 'y',
-            containment: 'parent',
-            start: function() { isDragg = true; },
-            stop: function() { isDragg = false; hideBar(); },
-            drag: function(e)
-            {
-              // scroll content
-              scrollContent(0, $(this).position().top, false);
-            }
+        // make it draggable and no longer dependent on the jqueryUI
+        if (o.railDraggable){
+          bar.bind("mousedown", function(e) {
+            var $doc = $(document);
+            isDragg = true;
+            t = parseFloat(bar.css('top'));
+            pageY = e.pageY;
+
+            $doc.bind("mousemove.slimscroll", function(e){
+              currTop = t + e.pageY - pageY;
+              bar.css('top', currTop);
+              scrollContent(0, bar.position().top, false);// scroll content
+            });
+
+            $doc.bind("mouseup.slimscroll", function(e) {
+              isDragg = false;hideBar();
+              $doc.unbind('.slimscroll');
+            });
+            return false;
+          }).bind("selectstart.slimscroll", function(e){
+            e.stopPropagation();
+            e.preventDefault();
+            return false;
           });
         }
 
@@ -258,7 +279,7 @@
 
         me.bind('touchmove', function(e){
           // prevent scrolling the page if necessary
-          if(!releaseScroll) 
+          if(!releaseScroll)
           {
   		      e.originalEvent.preventDefault();
 		      }
@@ -272,6 +293,9 @@
           }
         });
 
+        // set up initial height
+        getBarHeight();
+
         // check start position
         if (o.start === 'bottom')
         {
@@ -289,10 +313,7 @@
         }
 
         // attach scroll events
-        attachWheel();
-
-        // set up initial height
-        getBarHeight();
+        attachWheel(this);
 
         function _onWheel(e)
         {
@@ -365,12 +386,13 @@
           hideBar();
         }
 
-        function attachWheel()
+        function attachWheel(target)
         {
           if (window.addEventListener)
           {
-            this.addEventListener('DOMMouseScroll', _onWheel, false );
-            this.addEventListener('mousewheel', _onWheel, false );
+            target.addEventListener('DOMMouseScroll', _onWheel, false );
+            target.addEventListener('mousewheel', _onWheel, false );
+            target.addEventListener('wheel', _onWheel, false);
           }
           else
           {
@@ -446,8 +468,8 @@
     }
   });
 
-  jQuery.fn.extend({
-    slimscroll: jQuery.fn.slimScroll
+  $.fn.extend({
+    slimscroll: $.fn.slimScroll
   });
 
 })(jQuery);
diff --git a/jquery.slimscroll.min.js b/jquery.slimscroll.min.js
index dd63f62..7531ab3 100644
--- a/jquery.slimscroll.min.js
+++ b/jquery.slimscroll.min.js
@@ -2,14 +2,15 @@
  * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
  * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
  *
- * Version: 1.2.0
+ * Version: 1.3.8
  *
  */
-(function(e){jQuery.fn.extend({slimScroll:function(h){var a=e.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:0.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:0.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200},h);this.each(function(){function s(d){if(q){d=d||window.event;var c=0;d.wheelDelta&&(c=-d.wheelDelta/
-120);d.detail&&(c=d.detail/3);e(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&k(c,!0);d.preventDefault&&!m&&d.preventDefault();m||(d.returnValue=!1)}}function k(d,e,h){var f=d,g=b.outerHeight()-c.outerHeight();e&&(f=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),f=Math.min(Math.max(f,0),g),f=0=b.outerHeight()?m=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&g.stop(!0,!0).fadeIn("fast"))}function n(){a.alwaysVisible||(x=setTimeout(function(){if((!a.disableFadeOut||!q)&&!v&&!w)c.fadeOut("slow"),g.fadeOut("slow")},1E3))}var q,v,w,x,z,r,j,y,B=30,m=!1,b=e(this);if(b.parent().hasClass(a.wrapperClass)){var l=b.scrollTop(),c=b.parent().find("."+a.barClass),g=b.parent().find("."+a.railClass);u();if(e.isPlainObject(h)){if("height"in
-h&&"auto"==h.height){b.parent().css("height","auto");b.css("height","auto");var p=b.parent().parent().height();b.parent().css("height",p);b.css("height",p)}if("scrollTo"in h)l=parseInt(a.scrollTo);else if("scrollBy"in h)l+=parseInt(a.scrollBy);else if("destroy"in h){c.remove();g.remove();b.unwrap();return}k(l,!1,!0)}}else{a.height="auto"==a.height?b.parent().height():a.height;l=e("
").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden", -width:a.width,height:a.height});var g=e("
").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.size,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=e("
").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.size,BorderRadius:a.size,MozBorderRadius:a.size,WebkitBorderRadius:a.size, -zIndex:99}),p="right"==a.position?{right:a.distance}:{left:a.distance};g.css(p);c.css(p);b.wrap(l);b.parent().append(c);b.parent().append(g);a.railDraggable&&(e.ui&&"function"==typeof e.ui.draggable)&&c.draggable({axis:"y",containment:"parent",start:function(){w=!0},stop:function(){w=!1;n()},drag:function(){k(0,e(this).position().top,!1)}});g.hover(function(){t()},function(){n()});c.hover(function(){v=!0},function(){v=!1});b.hover(function(){q=!0;t();n()},function(){q=!1;n()});b.bind("touchstart", -function(a){a.originalEvent.touches.length&&(z=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){b.originalEvent.preventDefault();b.originalEvent.touches.length&&k((z-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0)});"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),k(0,!0)):"top"!==a.start&&(k(e(a.start).position().top,null,!0),a.alwaysVisible||c.hide());A();u()}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery); \ No newline at end of file +(function(e){e.fn.extend({slimScroll:function(f){var a=e.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},f);this.each(function(){function v(d){if(r){d=d||window.event; +var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);e(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&n(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function n(d,g,e){k=!1;var f=b.outerHeight()-c.outerHeight();g&&(g=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),g=Math.min(Math.max(g,0),f),g=0=b.outerHeight()?k=!0:(c.stop(!0, +!0).fadeIn("fast"),a.railVisible&&m.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(B=setTimeout(function(){a.disableFadeOut&&r||y||z||(c.fadeOut("slow"),m.fadeOut("slow"))},1E3))}var r,y,z,B,A,u,l,C,k=!1,b=e(this);if(b.parent().hasClass(a.wrapperClass)){var q=b.scrollTop(),c=b.siblings("."+a.barClass),m=b.siblings("."+a.railClass);x();if(e.isPlainObject(f)){if("height"in f&&"auto"==f.height){b.parent().css("height","auto");b.css("height","auto");var h=b.parent().parent().height();b.parent().css("height", +h);b.css("height",h)}else"height"in f&&(h=f.height,b.parent().css("height",h),b.css("height",h));if("scrollTo"in f)q=parseInt(a.scrollTo);else if("scrollBy"in f)q+=parseInt(a.scrollBy);else if("destroy"in f){c.remove();m.remove();b.unwrap();return}n(q,!1,!0)}}else if(!(e.isPlainObject(f)&&"destroy"in f)){a.height="auto"==a.height?b.parent().height():a.height;q=e("
").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden", +width:a.width,height:a.height});var m=e("
").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=e("
").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius, +WebkitBorderRadius:a.borderRadius,zIndex:99}),h="right"==a.position?{right:a.distance}:{left:a.distance};m.css(h);c.css(h);b.wrap(q);b.parent().append(c);b.parent().append(m);a.railDraggable&&c.bind("mousedown",function(a){var b=e(document);z=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);n(0,c.position().top,!1)});b.bind("mouseup.slimscroll",function(a){z=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll", +function(a){a.stopPropagation();a.preventDefault();return!1});m.hover(function(){w()},function(){p()});c.hover(function(){y=!0},function(){y=!1});b.hover(function(){r=!0;w();p()},function(){r=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(A=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&&(n((A-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),A=b.originalEvent.touches[0].pageY)}); +x();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),n(0,!0)):"top"!==a.start&&(n(e(a.start).position().top,null,!0),a.alwaysVisible||c.hide());window.addEventListener?(this.addEventListener("DOMMouseScroll",v,!1),this.addEventListener("mousewheel",v,!1)):document.attachEvent("onmousewheel",v)}});return this}});e.fn.extend({slimscroll:e.fn.slimScroll})})(jQuery); \ No newline at end of file diff --git a/slimScroll.jquery.json b/package.json similarity index 71% rename from slimScroll.jquery.json rename to package.json index 41174e6..147e92d 100644 --- a/slimScroll.jquery.json +++ b/package.json @@ -1,13 +1,15 @@ { - "name" : "slimScroll", - "version" : "1.2.0", + "name" : "jquery-slimscroll", + "main" : "jquery.slimscroll.js", + "version" : "1.3.8", "title" : "jQuery slimScroll scrollbar", "description" : "slimScroll is a small jQuery plugin that transforms any div into a scrollable area. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over.", - "keywords" : ["scrollbar", "scroll", "slimscroll", "scrollable", "scrolling", "scroller", "ui"], - "demo" : "http://rocha.la/jQuery-slimScroll/", + "keywords" : ["scrollbar", "scroll", "slimscroll", "scrollable", "scrolling", "scroller", "ui", "jquery-plugin", "ecosystem:jquery"], "homepage" : "http://rocha.la/jQuery-slimScroll/", - "download" : "http://rocha.la/jQuery-slimScroll/", - + "repository": { + "type": "git", + "url": "https://github.com/rochal/jQuery-slimScroll.git" + }, "author" : { "name" : "Piotr Rochala", "url" : "http://rocha.la/"