codexly-ui 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2322,10 +2322,11 @@ class ClxTooltipDirective {
2322
2322
  host.addEventListener('focus', () => this._scheduleShow(), { signal });
2323
2323
  host.addEventListener('blur', () => this._scheduleHide(), { signal });
2324
2324
  // Touch devices fire 'mouseenter'/'focus' on tap but never a real
2325
- // 'mouseleave' — hide immediately once the tap completes instead of
2326
- // leaving the bubble stuck until the next unrelated touch.
2327
- host.addEventListener('touchend', () => this._hide(), { signal });
2328
- host.addEventListener('touchcancel', () => this._hide(), { signal });
2325
+ // 'mouseleave' — dismiss immediately (no fade) once the tap completes so
2326
+ // the bubble can't outlive the tap and float over whatever the tap
2327
+ // triggered (e.g. a modal opening on the same gesture).
2328
+ host.addEventListener('touchend', () => this._hideImmediate(), { signal });
2329
+ host.addEventListener('touchcancel', () => this._hideImmediate(), { signal });
2329
2330
  this._destroyRef.onDestroy(() => {
2330
2331
  this._destroyed = true;
2331
2332
  this._abort.abort();
@@ -2407,6 +2408,18 @@ class ClxTooltipDirective {
2407
2408
  ref.destroy();
2408
2409
  });
2409
2410
  }
2411
+ /** Synchronous teardown, no fade — used on touchend so the bubble can't linger over UI the tap opens. */
2412
+ _hideImmediate() {
2413
+ this._clearTimers();
2414
+ this._destroyBubble();
2415
+ if (this._pendingRef) {
2416
+ const el = this._pendingRef.location.nativeElement;
2417
+ this._animate.stop(el);
2418
+ this._appRef.detachView(this._pendingRef.hostView);
2419
+ this._pendingRef.destroy();
2420
+ this._pendingRef = null;
2421
+ }
2422
+ }
2410
2423
  // ── Positioning ──────────────────────────────────────────────────────────
2411
2424
  _resolvePosition(el) {
2412
2425
  const requested = this.clxTooltipPosition();