scroll-into-view
Advanced tools
Comparing version 1.1.1 to 1.2.0
{ | ||
"name": "scroll-into-view", | ||
"version": "1.1.1", | ||
"version": "1.2.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "scrollIntoView.js", |
@@ -15,2 +15,20 @@ # scroll-into-view | ||
scrollIntoView(someElement); | ||
scrollIntoView(someElement); | ||
You can pass settings to control the time, easing, and whether or not a parent is a valid element to scroll: | ||
scrollIntoView(someElement, { | ||
time: 500, // half a second | ||
ease: function(value){ | ||
return Math.pow(value,2) - value); // Do something weird. | ||
}, | ||
validTarget: function(target, parentsScrolled){ | ||
return parentsScrolled < 2 && !target.matches('.dontScroll'); | ||
} | ||
}); | ||
You can pass a callback that will be called when all scrolling has been completed or canceled. | ||
scrollIntoView(someElement [, settings], function(){ | ||
// Scrolling done. | ||
}) |
@@ -133,4 +133,6 @@ function setElementScroll(element, x, y){ | ||
while(parent && parent.tagName !== 'BODY'){ | ||
while(parent){ | ||
if( | ||
settings.validTarget ? settings.validTarget(parent, parents) : true && | ||
parent === window || | ||
( | ||
@@ -147,6 +149,11 @@ parent.scrollHeight !== parent.clientHeight || | ||
parent = parent.parentElement; | ||
if(!parent){ | ||
return; | ||
} | ||
if(parent.tagName === 'BODY'){ | ||
parent = window; | ||
} | ||
} | ||
parents++; | ||
transitionScrollTo(target, window, settings, done); | ||
}; |
@@ -134,2 +134,34 @@ var test = require('tape'), | ||
}); | ||
}); | ||
test('invalid target', function(t) { | ||
var target; | ||
t.plan(1); | ||
queue(function(next){ | ||
crel(document.body, | ||
crel('div', {'style':'position:relative; height:5000px; overflow: scroll;'}, | ||
crel('div', {'style':'position:relative; font-size:20em; overflow: scroll;display:inline-block'}, | ||
target = crel('span', {'style':'position:absolute; top:75%; left: 75%; box-shadow: 0 0 10px 10px red;'}), | ||
crel('div', {style: 'white-space:nowrap;'}, 'TEXT-AND-THAT-TO-MAKE-STUFF-HELA-WIDE'), | ||
crel('div', {style: 'white-space:nowrap;'}, 'TEXT-AND-THAT-TO-MAKE-STUFF-HELA-WIDE'), | ||
crel('div', {style: 'white-space:nowrap;'}, 'TEXT-AND-THAT-TO-MAKE-STUFF-HELA-WIDE') | ||
) | ||
) | ||
); | ||
scrollIntoView( | ||
target, | ||
{ | ||
validTarget: function(target){ | ||
return target !== window; | ||
} | ||
}, | ||
function(){ | ||
t.pass(); | ||
} | ||
); | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
13018
269
33