page_scroll.ts 872 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import coreModule from 'app/core/core_module';
  2. import appEvents from 'app/core/app_events';
  3. export function pageScrollbar() {
  4. return {
  5. restrict: 'A',
  6. link: function(scope, elem, attrs) {
  7. let lastPos = 0;
  8. appEvents.on(
  9. 'dash-scroll',
  10. evt => {
  11. if (evt.restore) {
  12. elem[0].scrollTop = lastPos;
  13. return;
  14. }
  15. lastPos = elem[0].scrollTop;
  16. if (evt.animate) {
  17. elem.animate({ scrollTop: evt.pos }, 500);
  18. } else {
  19. elem[0].scrollTop = evt.pos;
  20. }
  21. },
  22. scope
  23. );
  24. scope.$on('$routeChangeSuccess', () => {
  25. lastPos = 0;
  26. elem[0].scrollTop = 0;
  27. elem[0].focus();
  28. });
  29. elem[0].tabIndex = -1;
  30. elem[0].focus();
  31. },
  32. };
  33. }
  34. coreModule.directive('pageScrollbar', pageScrollbar);