Skip to content

Title tooltip in dropdowns - #1663

Open
Arnei wants to merge 8 commits into
opencast:r/20.xfrom
Arnei:title-tooltip-in-dropdowns
Open

Title tooltip in dropdowns#1663
Arnei wants to merge 8 commits into
opencast:r/20.xfrom
Arnei:title-tooltip-in-dropdowns

Conversation

@Arnei

@Arnei Arnei commented Sep 1, 2026

Copy link
Copy Markdown
Member

Includes #1655, this adds only the last commit.

Adds wrappers around certain react-select components that add the title attribute to them. This results in tooltips when hovering certain dropdowns or their options.

The goal here is to allow users to still read labels that do not fit in the dropdown. This is supposed to help with an issue where two users had have the same name but different e-mail addresses, but the e-mail addresses were not readable so the users could not be distinguished. The tooltips are only supposed to help with edge cases. If a dropdown is too small in general, that is a different issue.

Bildschirmfoto vom 2026-09-01 11-29-28

How to test this

Can be tested as is. Go to the event details, open the ACL tab and type in a role dropdown. For better effect configure sanitize=false and prop.org.opencastproject.acl.additional.actions.annotate=Annotate in the Opencast config files.

AI Usage

Claude Sonnet was used to write the wrappers.

Arnei added 8 commits August 20, 2026 09:27
This was already false per default, but was set to
false explicitly to fix a tab navigation issue in the
metadata tab of events/series dialog.
So this sets openMenuOnFocus to false in RenderFields, so that it
may be true in other components again
Before we only made a copy if skipTranslate was true. This could
have cause errors with immutable arrays, so it is probably
better to copy everytime.
menuPlacement defaults to this anyway, no need to check
here again
By using useRef instead of createRef we can avoid
recreating the ref all the time.
Should result in a very, very minor performance boost.
Avoid potential rerenders for virtualized options
which can end up quite costly for larger lists.
Could also help with flickering and focus reset issues somewhat.
Previous code was just delaying the fetch by a second. It would still
fire all accumulated request anyway (e.g. requests for "C", "Co, "Cou",
"Cour", "Cours" and "Course", instead of just "Course".
Implements debouncing, which should make for less load
and cleaner rendering steps when searching in an async dropdown.
The 1s debounce delay predates the backend performance work on the ACL
role picker (see the opencast20-side fixes for /admin-ng/acl/roles.json):
when a search could take several seconds regardless, an extra second of
debounce was a small fraction of the total wait. Now that a real search
responds in roughly 100ms, the fixed 1s delay is the dominant, and now
clearly excessive, part of the perceived latency -- pull it down to 300ms,
in line with typical search-as-you-type debounce intervals, and give it a
name instead of a bare literal so it's easy to find and retune later.
Adds wrappers around certain react-select components
that add the title attribute to them. This results in tooltips
when hovering certain dropdowns or their options.

The goal here is to allow users to still read labels that do not fit in
the dropdown. This is supposed to help with an issue where two
users had have the same name but different e-mail addresses,
but the e-mail addresses were not readable so the users could
not be distinguished.
The tooltips are only supposed to help with edge cases. If a
dropdown is too small in general, that is a different issue.
@Arnei Arnei added the type:usability Improves the UX label Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:usability Improves the UX

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant