diff options
author | Alexander Moisseev <moiseev@mezonplus.ru> | 2024-11-29 19:21:58 +0300 |
---|---|---|
committer | Alexander Moisseev <moiseev@mezonplus.ru> | 2024-11-29 19:21:58 +0300 |
commit | b7da3792b8abd47bf262f9fdc3bb89f6b424ac77 (patch) | |
tree | b466a2947d9204fbb1071d2e76a4624701be7de6 | |
parent | 6c0223b32b8fcb6621fa64197214abb400a09f52 (diff) | |
download | rspamd-b7da3792b8abd47bf262f9fdc3bb89f6b424ac77.tar.gz rspamd-b7da3792b8abd47bf262f9fdc3bb89f6b424ac77.zip |
[WebUI] Rework symbol description display on hover
- Replaced 'abbr title' with dynamic description display on hover or focus
- Added tabindex for keyboard accessibility
- Improved symbol rendering using template literals for readability
-rw-r--r-- | interface/css/rspamd.css | 13 | ||||
-rw-r--r-- | interface/js/app/libft.js | 16 |
2 files changed, 20 insertions, 9 deletions
diff --git a/interface/css/rspamd.css b/interface/css/rspamd.css index e7c1e91b8..896f92008 100644 --- a/interface/css/rspamd.css +++ b/interface/css/rspamd.css @@ -265,6 +265,19 @@ table#symbolsTable input[type="number"] { background-color: #cddbff; } +/* For symbol description display on hover/focus */ +.symbol-default.has-description:not(:focus) strong { + text-decoration: underline dotted; +} +.symbol-description { + display: none; + color: #484848; +} +.symbol-default:hover .symbol-description, +.symbol-default:focus .symbol-description { + display: unset; +} + .map-link { display: block; color: #0088cc; diff --git a/interface/js/app/libft.js b/interface/js/app/libft.js index 84ee2667e..7106516a2 100644 --- a/interface/js/app/libft.js +++ b/interface/js/app/libft.js @@ -573,17 +573,15 @@ define(["jquery", "app/common", "footable"], ui.preprocess_item(item); Object.values(item.symbols).forEach((sym) => { - sym.str = '<span class="symbol-default ' + get_symbol_class(sym.name, sym.score) + '"><strong>'; - - if (sym.description) { - sym.str += '<abbr title="' + sym.description + '">' + sym.name + "</abbr>"; - } else { - sym.str += sym.name; - } - sym.str += "</strong> (" + sym.score + ")</span>"; + sym.str = ` +<span class="symbol-default ${get_symbol_class(sym.name, sym.score)} ${sym.description ? "has-description" : ""}" tabindex="0"> + <strong>${sym.name}</strong> + ${sym.description ? `<span class="symbol-description"> • ${sym.description}</span>` : ""} + (${sym.score}) +</span>`; if (sym.options) { - sym.str += " [" + sym.options.join(",") + "]"; + sym.str += ` [${sym.options.join(",")}]`; } }); unsorted_symbols.push(item.symbols); |