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)