Rob Fellows created NIFI-16172:
----------------------------------

             Summary: Multiple nifiTooltip hover tooltips can remain open at 
once and can get stuck open indefinitely
                 Key: NIFI-16172
                 URL: https://issues.apache.org/jira/browse/NIFI-16172
             Project: Apache NiFi
          Issue Type: Improvement
          Components: Core UI
            Reporter: Rob Fellows
            Assignee: Rob Fellows


h3. Problem

The shared hover-tooltip directive 
(nifi-frontend/src/main/frontend/libs/shared/src/directives/nifi-tooltip.directive.ts)
 can leave multiple tooltips visible on screen at the same time, and in some 
cases a tooltip can remain open indefinitely after the pointer has moved away.

This is most visible on listing tables that render small icons with hover 
tooltips in a "more details"-style column — e.g. Controller Services, Reporting 
Tasks, Parameter Providers, Connectors, and the Controller Service references 
list — where the icons for comments, validation errors, and bulletins sit close 
together. Sweeping the pointer down or across a column of these icons can leave 
several tooltips stacked on top of one another, and occasionally one lingers 
until another tooltip is opened or the view is destroyed.

A related, secondary symptom: when a tooltip's content is long enough to scroll 
(validation errors, comments, and bulletins render inside a scrollable 
container capped by {{max-height}}), the interaction that is supposed to let a 
user move the pointer onto the tooltip to read/scroll it is fragile — the 
tooltip can disappear before the pointer reaches it, or (conversely) fail to 
close afterward.

h3. Steps to Reproduce

Open a listing with several components that have validation errors, comments, 
or bulletins (e.g. the Controller Services listing).
Hover the warning/comment/bulletin icons and move the pointer between adjacent 
rows/icons at a normal-to-fast pace.
Observe that more than one tooltip can be visible simultaneously, and that a 
tooltip can remain on screen after the pointer is no longer over its trigger.
h3. Impact

Purely a UI/UX defect (no data or security impact), but the stacked/overlapping 
tooltips obscure the table, look broken, and make long validation/error 
messages hard to read.

h3. Root cause (analysis)

The directive tracks "pointer is over the tooltip" with a cached boolean that 
is set/cleared by the overlay's own {{mouseenter}}/{{mouseleave}} listeners, 
and its close logic is gated on that flag. Because 
{{mouseenter}}/{{mouseleave}} are only reliably balanced when elements aren't 
being dynamically attached/detached or covered by other overlays, the cached 
flag can get "stuck", after which the close path is suppressed. There is also 
no notion of a single active tooltip, so independent directive instances don't 
coordinate and can each remain open.

h3. Possible direction (non-prescriptive)

Any robust fix should make open/close decisions resilient to dropped or 
coalesced pointer events rather than relying solely on a cached hover flag, and 
should ensure the UI doesn't accumulate multiple simultaneously-visible 
tooltips. Exact approach is open to the implementer. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to