Don't remove event-listeners when disconnecting

Instead remove event-listeners when the target changes. We can not
remove them when disconnecting because then the hovercard won't show up
again after it was hidden the first time.

Change-Id: I1d6c25fa802276e7982addf41972c271016c89d7
diff --git a/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts b/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
index 82af365..3d8702b 100644
--- a/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
+++ b/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
@@ -129,12 +129,8 @@
       super.connectedCallback();
       if (!this._target) {
         this._target = this.target;
+        this.addTargetEventListeners();
       }
-      this._target.addEventListener('mouseenter', this.debounceShow);
-      this._target.addEventListener('focus', this.debounceShow);
-      this._target.addEventListener('mouseleave', this.debounceHide);
-      this._target.addEventListener('blur', this.debounceHide);
-      this._target.addEventListener('click', this.hide);
 
       // show the hovercard if mouse moves to hovercard
       // this will cancel pending hide as well
@@ -149,12 +145,23 @@
       this.cancelShowTask();
       this.cancelHideTask();
       this.unlock();
+      super.disconnectedCallback();
+    }
+
+    addTargetEventListeners() {
+      this._target?.addEventListener('mouseenter', this.debounceShow);
+      this._target?.addEventListener('focus', this.debounceShow);
+      this._target?.addEventListener('mouseleave', this.debounceHide);
+      this._target?.addEventListener('blur', this.debounceHide);
+      this._target?.addEventListener('click', this.hide);
+    }
+
+    removeTargetEventListeners() {
       this._target?.removeEventListener('mouseenter', this.debounceShow);
       this._target?.removeEventListener('focus', this.debounceShow);
       this._target?.removeEventListener('mouseleave', this.debounceHide);
       this._target?.removeEventListener('blur', this.debounceHide);
       this._target?.removeEventListener('click', this.hide);
-      super.disconnectedCallback();
     }
 
     override ready() {
@@ -457,7 +464,9 @@
      */
     @observe('for')
     _forChanged() {
+      this.removeTargetEventListeners();
       this._target = this.target;
+      this.addTargetEventListeners();
     }
   }