[FIX] V3 polish: spotlight ARIA su top-nav + CSP font segnala-anonimo
- aria-guide "Mostrami dov'è": ora aggancia le voci del menu IN ALTO V3 (data-nav aggiunto in topnav-v3.js su voci dirette + mega-link). Se la voce è in un mega-menu, lo apre (.aria-guide-open) e ci punta lo spotlight; coach "menu in alto". Fallback navigazione invariato. (Prima cercava .sidebar-nav V2.) - segnala-anonimo.html: CSP font-src 'self' → 'self' data: (sbloccato il font data: embeddato, niente più violazione CSP). - Cache-buster: topnav-v3.js/common.js ?v=20260627t, aria-guide.js ?v=20260627t. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
95e77a668a
commit
a71d1a096d
@@ -110,6 +110,8 @@
|
||||
'Monitoraggio': 'nav.grp_monitoring', 'Lex e ISO': 'nav.grp_lexiso', 'AI': 'nav.grp_ai', 'Guida': 'nav.grp_guide'
|
||||
};
|
||||
function i18nAttr(key) { return key ? ' data-i18n="' + key + '"' : ''; }
|
||||
// data-nav = href senza .html → aggancio per il puntatore guida ARIA (aria-guide.js).
|
||||
function navAttr(href) { return ' data-nav="' + esc(String(href).replace(/\.html$/, '')) + '"'; }
|
||||
|
||||
function esc(s) {
|
||||
return String(s == null ? '' : s).replace(/[&<>"']/g, function (c) {
|
||||
@@ -136,7 +138,7 @@
|
||||
function renderMega(g) {
|
||||
var colsHtml = g.cols.map(function (col) {
|
||||
var links = col.links.map(function (l) {
|
||||
return '<a class="mega-link" href="' + esc(l.href) + '">' +
|
||||
return '<a class="mega-link"' + navAttr(l.href) + ' href="' + esc(l.href) + '">' +
|
||||
'<span class="mega-ic"><i data-lucide="' + esc(l.ic) + '" class="ic"></i></span>' +
|
||||
'<span><b' + i18nAttr(I18N_BY_HREF[l.href]) + '>' + esc(l.b) + '</b><span>' + esc(l.s) + '</span></span></a>';
|
||||
}).join('');
|
||||
@@ -154,14 +156,14 @@
|
||||
if (g.href && !g.cols) {
|
||||
// Voce diretta (Dashboard, Calendario)
|
||||
return '<div class="nav-item">' +
|
||||
'<a class="' + cls + '"' + aria + ' href="' + esc(g.href) + '">' +
|
||||
'<a class="' + cls + '"' + aria + navAttr(g.href) + ' href="' + esc(g.href) + '">' +
|
||||
'<i data-lucide="' + esc(g.icon) + '" class="ic"></i>' +
|
||||
'<span' + i18n + '>' + esc(g.label) + '</span></a></div>';
|
||||
}
|
||||
// Gruppo con mega-menu. Il link "testa" punta alla prima voce del gruppo.
|
||||
var firstHref = g.cols[0].links[0].href;
|
||||
return '<div class="nav-item">' +
|
||||
'<a class="' + cls + '"' + aria + ' href="' + esc(firstHref) + '">' +
|
||||
'<a class="' + cls + '"' + aria + navAttr(firstHref) + ' href="' + esc(firstHref) + '">' +
|
||||
'<i data-lucide="' + esc(g.icon) + '" class="ic"></i>' +
|
||||
'<span' + i18n + '>' + esc(g.label) + '</span>' +
|
||||
'<i data-lucide="chevron-down" class="caret"></i></a>' +
|
||||
|
||||
Reference in New Issue
Block a user