scroll.ts 834 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import PerfectScrollbar from 'perfect-scrollbar';
  2. import coreModule from 'app/core/core_module';
  3. import appEvents from 'app/core/app_events';
  4. export function geminiScrollbar() {
  5. return {
  6. restrict: 'A',
  7. link: function(scope, elem, attrs) {
  8. let scrollbar = new PerfectScrollbar(elem[0]);
  9. appEvents.on(
  10. 'smooth-scroll-top',
  11. () => {
  12. elem.animate(
  13. {
  14. scrollTop: 0,
  15. },
  16. 500
  17. );
  18. },
  19. scope
  20. );
  21. scope.$on('$routeChangeSuccess', () => {
  22. elem[0].scrollTop = 0;
  23. });
  24. scope.$on('$routeUpdate', () => {
  25. elem[0].scrollTop = 0;
  26. });
  27. scope.$on('$destroy', () => {
  28. scrollbar.destroy();
  29. });
  30. },
  31. };
  32. }
  33. coreModule.directive('grafanaScrollbar', geminiScrollbar);