fix: pannello contenuti — PUT ritorna value salvato, data-q aggiornato, guard hash, aria-label
This commit is contained in:
@@ -43,7 +43,7 @@ const allStyles = STYLE_GROUPS as Record<string, readonly string[]>;
|
||||
<h1>Contenuti</h1>
|
||||
<a href="/?annotate=1" target="_blank">Vedi sito con tag ↗</a>
|
||||
</div>
|
||||
<input class="afield" id="csearch" type="search" placeholder="Cerca per tag o contenuto…" autocomplete="off" />
|
||||
<input class="afield" id="csearch" type="search" placeholder="Cerca per tag o contenuto…" aria-label="Cerca per tag o contenuto" autocomplete="off" />
|
||||
|
||||
<div id="cgroups">
|
||||
{GROUP_ORDER.map((g) => {
|
||||
@@ -66,7 +66,7 @@ const allStyles = STYLE_GROUPS as Record<string, readonly string[]>;
|
||||
: <em>Nessun override: il sito usa l'immagine originale.</em>}
|
||||
</p>
|
||||
<p class="cactions">
|
||||
<input type="file" accept="image/*" data-file />
|
||||
<input type="file" accept="image/*" aria-label={`Nuova immagine per ${it.tag}`} data-file />
|
||||
<button class="abtn" type="button" data-upload>Carica</button>
|
||||
<button class="abtn abtn--danger" type="button" data-restore>Ripristina originale</button>
|
||||
</p>
|
||||
@@ -74,8 +74,8 @@ const allStyles = STYLE_GROUPS as Record<string, readonly string[]>;
|
||||
) : (
|
||||
<>
|
||||
{isLong(it.value)
|
||||
? <textarea class="afield" rows="4" data-value>{it.value}</textarea>
|
||||
: <input class="afield" value={it.value} data-value />}
|
||||
? <textarea class="afield" rows="4" aria-label={`Contenuto ${it.tag}`} data-value>{it.value}</textarea>
|
||||
: <input class="afield" value={it.value} aria-label={`Contenuto ${it.tag}`} data-value />}
|
||||
{it.styleOptions.length > 0 && (
|
||||
<p class="cstyles">
|
||||
{it.styleOptions.map((sg) => (
|
||||
@@ -185,9 +185,13 @@ const allStyles = STYLE_GROUPS as Record<string, readonly string[]>;
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ value, styles }),
|
||||
}),
|
||||
() => {
|
||||
(data) => {
|
||||
const saved = typeof data.value === 'string' ? data.value : value;
|
||||
const field = row.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-value]')!;
|
||||
field.value = saved;
|
||||
row.dataset.q = `${row.dataset.tag} ${saved}`.toLowerCase();
|
||||
row.querySelector<HTMLElement>('.crow-snippet')!.textContent =
|
||||
value.length > 60 ? `${value.slice(0, 60)}…` : value;
|
||||
saved.length > 60 ? `${saved.slice(0, 60)}…` : saved;
|
||||
},
|
||||
'Salvato.', 'Salvataggio non riuscito.');
|
||||
} else if (btn.hasAttribute('data-upload')) {
|
||||
@@ -226,7 +230,8 @@ const allStyles = STYLE_GROUPS as Record<string, readonly string[]>;
|
||||
|
||||
// Ancore: #<tag> apre gruppo + riga, scrolla ed evidenzia.
|
||||
function openHash(): void {
|
||||
const tag = decodeURIComponent(location.hash.slice(1));
|
||||
let tag: string;
|
||||
try { tag = decodeURIComponent(location.hash.slice(1)); } catch { return; }
|
||||
if (!tag) return;
|
||||
const row = document.getElementById(tag);
|
||||
if (!row || !row.classList.contains('crow')) return;
|
||||
|
||||
Reference in New Issue
Block a user