Summary Table
| Categories |
Total Count |
| PII |
0 |
| URL |
0 |
| DNS |
0 |
| EKL |
0 |
| IP |
0 |
| PORT |
0 |
| VsID |
0 |
| CF |
0 |
| AI |
0 |
| VPD |
0 |
| PL |
0 |
| Other |
0 |
File Content
/*global angular*/
angular.module('allure.core.scrollfix', []).directive('uiScrollfix', ['$window', function ($window) {
"use strict";
return {
require: '^?uiScrollfixTarget',
link: function (scope, elm, attrs, uiScrollfixTarget) {
var $target = uiScrollfixTarget && uiScrollfixTarget.$element || angular.element($window),
top;
function getTop() {
var top = elm[0].offsetTop;
if (attrs.uiScrollfix && typeof attrs.uiScrollfix === 'string') {
var direction = attrs.uiScrollfix.charAt(0) === '-' ? -1 : 1;
top += direction*parseFloat(attrs.uiScrollfix.substr(1));
}
return top;
}
function onScroll() {
var offset = $target.scrollTop(),
scrollfix = elm.hasClass('ui-scrollfix');
if (!scrollfix) {
top = getTop();
}
if (!elm.hasClass('ui-scrollfix') && offset > top) {
elm.addClass('ui-scrollfix');
} else if (elm.hasClass('ui-scrollfix') && offset < top) {
elm.removeClass('ui-scrollfix');
}
}
$target.on('scroll', onScroll);
scope.$on('$destroy', function () {
$target.off('scroll', onScroll);
});
}
};
}]).directive('uiScrollfixTarget', [function () {
"use strict";
return {
controller: [
'$element',
function ($element) {
this.$element = $element;
}
]
};
}]);