aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Moisseev <moiseev@mezonplus.ru>2024-11-29 19:21:58 +0300
committerAlexander Moisseev <moiseev@mezonplus.ru>2024-11-29 19:21:58 +0300
commitb7da3792b8abd47bf262f9fdc3bb89f6b424ac77 (patch)
treeb466a2947d9204fbb1071d2e76a4624701be7de6
parent6c0223b32b8fcb6621fa64197214abb400a09f52 (diff)
downloadrspamd-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.css13
-rw-r--r--interface/js/app/libft.js16
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);