2017-12-20 05:33:33 -06:00
|
|
|
import PerfectScrollbar from 'perfect-scrollbar';
|
|
|
|
import coreModule from 'app/core/core_module';
|
2018-01-09 08:27:53 -06:00
|
|
|
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) {
|
2017-11-23 04:12:32 -06:00
|
|
|
let scrollbar = new PerfectScrollbar(elem[0]);
|
2017-08-17 05:06:51 -05:00
|
|
|
|
2018-01-09 08:27:53 -06:00
|
|
|
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', () => {
|
2017-11-30 08:59:53 -06:00
|
|
|
elem[0].scrollTop = 0;
|
|
|
|
});
|
|
|
|
|
2017-12-20 05:33:33 -06:00
|
|
|
scope.$on('$destroy', () => {
|
2017-11-23 04:12:32 -06:00
|
|
|
scrollbar.destroy();
|
2017-08-17 05:06:51 -05:00
|
|
|
});
|
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);
|