diff --git a/public/_app-bi-demo.html b/public/_app-bi-demo.html index 2514c05..70c88b8 100644 --- a/public/_app-bi-demo.html +++ b/public/_app-bi-demo.html @@ -71,7 +71,7 @@ - + - + diff --git a/public/admin/organizations.html b/public/admin/organizations.html index 6bc28f9..07c1f0e 100644 --- a/public/admin/organizations.html +++ b/public/admin/organizations.html @@ -148,7 +148,7 @@ - + diff --git a/public/admin/users.html b/public/admin/users.html index 4499b20..e9dc3fd 100644 --- a/public/admin/users.html +++ b/public/admin/users.html @@ -170,7 +170,7 @@ - + diff --git a/public/architecture.html b/public/architecture.html index d45f7cd..85e326a 100644 --- a/public/architecture.html +++ b/public/architecture.html @@ -1091,7 +1091,7 @@ - + diff --git a/public/assessment.html b/public/assessment.html index ab9419d..d9ffbe2 100644 --- a/public/assessment.html +++ b/public/assessment.html @@ -155,7 +155,7 @@ - + diff --git a/public/assets.html b/public/assets.html index 6172d40..ce068b4 100644 --- a/public/assets.html +++ b/public/assets.html @@ -362,7 +362,7 @@ - + diff --git a/public/calendario.html b/public/calendario.html index ab8329a..3efad53 100644 --- a/public/calendario.html +++ b/public/calendario.html @@ -152,7 +152,7 @@ - + diff --git a/public/companies.html b/public/companies.html index cfceed6..7f1dfa2 100644 --- a/public/companies.html +++ b/public/companies.html @@ -350,7 +350,7 @@ - + diff --git a/public/competenze.html b/public/competenze.html index ee0c3bb..5360822 100644 --- a/public/competenze.html +++ b/public/competenze.html @@ -184,7 +184,7 @@ - + diff --git a/public/controlli-periodici.html b/public/controlli-periodici.html index b86e30e..40aeef0 100644 --- a/public/controlli-periodici.html +++ b/public/controlli-periodici.html @@ -137,7 +137,7 @@ - + diff --git a/public/cross-analysis.html b/public/cross-analysis.html index 6f98a92..51247c3 100644 --- a/public/cross-analysis.html +++ b/public/cross-analysis.html @@ -383,7 +383,7 @@ - + diff --git a/public/dashboard.html b/public/dashboard.html index 63bef5a..cdcd8a3 100644 --- a/public/dashboard.html +++ b/public/dashboard.html @@ -144,7 +144,7 @@ - + diff --git a/public/guida.html b/public/guida.html index 6b05738..beeff90 100644 --- a/public/guida.html +++ b/public/guida.html @@ -1143,7 +1143,7 @@ - + diff --git a/public/incidents.html b/public/incidents.html index 99aa730..54983a5 100644 --- a/public/incidents.html +++ b/public/incidents.html @@ -352,7 +352,7 @@ - + diff --git a/public/integrazioniext.html b/public/integrazioniext.html index c6f633f..20ba344 100644 --- a/public/integrazioniext.html +++ b/public/integrazioniext.html @@ -912,7 +912,7 @@ curl -H "X-API-Key: nis2_TUA_CHIAVE" \ - + - + diff --git a/public/isms.html b/public/isms.html index 0c0571b..65956fa 100644 --- a/public/isms.html +++ b/public/isms.html @@ -185,7 +185,7 @@ - + diff --git a/public/js/common.js b/public/js/common.js index b42ae37..7ccd9ed 100644 --- a/public/js/common.js +++ b/public/js/common.js @@ -996,8 +996,24 @@ function switchLang(lang) { var STORAGE_KEY = 'nis2_ai_chat'; var history = []; + var pending = false; // ARIA sta elaborando una risposta (mostra indicatore "sta scrivendo") try { history = JSON.parse(sessionStorage.getItem(STORAGE_KEY) || '[]'); } catch (e) {} + // Stile una-tantum per l'indicatore "ARIA sta scrivendo…" (puntini animati, + // rispetta prefers-reduced-motion per accessibilita AGID/WCAG). + if (!document.getElementById('nis2-aria-style')) { + var ariaStyle = document.createElement('style'); + ariaStyle.id = 'nis2-aria-style'; + ariaStyle.textContent = + '@keyframes nis2AriaBlink{0%,80%,100%{opacity:.2}40%{opacity:1}}' + + '.nis2-aria-dot{display:inline-block;width:6px;height:6px;margin:0 1px;' + + 'border-radius:50%;background:#7C3AED;animation:nis2AriaBlink 1.2s infinite both}' + + '.nis2-aria-dot:nth-child(2){animation-delay:.2s}' + + '.nis2-aria-dot:nth-child(3){animation-delay:.4s}' + + '@media (prefers-reduced-motion:reduce){.nis2-aria-dot{animation:none;opacity:.6}}'; + document.head.appendChild(ariaStyle); + } + function escHtml(s) { return String(s).replace(/[&<>"']/g, function (c) { return ({'&':'&','<':'<','>':'>','"':'"',"'":'''})[c]; @@ -1043,31 +1059,60 @@ function switchLang(lang) { + (list || '