grafana/public/app/core/components/scroll/scroll.ts

40 lines
834 B
TypeScript
Raw Normal View History

2017-12-20 05:33:33 -06:00
import PerfectScrollbar from 'perfect-scrollbar';
import coreModule from 'app/core/core_module';
import appEvents from 'app/core/app_events';
2017-08-15 04:51:47 -05:00
export function geminiScrollbar() {
return {
2017-12-20 05:33:33 -06:00
restrict: 'A',
2017-08-15 04:51:47 -05:00
link: function(scope, elem, attrs) {
let scrollbar = new PerfectScrollbar(elem[0]);
appEvents.on(
'smooth-scroll-top',
() => {
elem.animate(
{
scrollTop: 0,
},
500
);
},
scope
);
2017-12-20 05:33:33 -06:00
scope.$on('$routeChangeSuccess', () => {
2017-11-30 03:50:10 -06:00
elem[0].scrollTop = 0;
});
2017-12-20 05:33:33 -06:00
scope.$on('$routeUpdate', () => {
elem[0].scrollTop = 0;
});
2017-12-20 05:33:33 -06:00
scope.$on('$destroy', () => {
scrollbar.destroy();
});
2017-12-20 05:33:33 -06:00
},
2017-08-15 04:51:47 -05:00
};
}
2017-12-20 05:33:33 -06:00
coreModule.directive('grafanaScrollbar', geminiScrollbar);