Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. @HostListener('window:resize', ['$event'])
  2. onResize(event) {
  3. this.recalculateHelpersPosition(this.helpers);
  4. }
  5.  
  6. ngOnChanges(changes) {
  7. if (changes.helperTags && Array.isArray(changes.helperTags.currentValue)) {
  8. this.recalculateHelpersPosition(changes.helperTags.currentValue);
  9. }
  10. }
  11.  
  12. private recalculateHelpersPosition(input: HelperTag[]) {
  13. this.helpers = input.map(t => {
  14. const tagElement = document.getElementById(t.id);
  15. const rect = tagElement.getBoundingClientRect();
  16. const width = tagElement.clientWidth;
  17. const height = tagElement.clientHeight;
  18. const middleX = rect.left + (width / 2);
  19. const middleY = rect.top + (height / 2);
  20.  
  21. switch (t.pos) {
  22. case HelperPosition.TOP:
  23. return {
  24. ...t,
  25. posX: middleX,
  26. posY: rect.top - height - PADDING
  27. } as HelperTagView;
  28. break;
  29.  
  30. case HelperPosition.BOTTOM:
  31. return {
  32. ...t,
  33. posX: middleX,
  34. posY: rect.top + height + PADDING
  35. } as HelperTagView;
  36. break;
  37.  
  38. case HelperPosition.LEFT:
  39. return {
  40. ...t,
  41. posX: rect.left - PADDING,
  42. posY: middleY
  43. } as HelperTagView;
  44. break;
  45.  
  46. case HelperPosition.RIGHT:
  47. return {
  48. ...t,
  49. posX: rect.left + PADDING,
  50. posY: middleY
  51. } as HelperTagView;
  52. break;
  53.  
  54. default:
  55. case HelperPosition.BOTTOM:
  56. return {
  57. ...t,
  58. posX: middleX,
  59. posY: rect.top + height + PADDING
  60. } as HelperTagView;
  61. break;
  62. }
  63.  
  64. });
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement