feat(ui): rinomina Misure→Attività, textarea descrizione task, tool Testo annotazioni

- Navbar e breadcrumb: label "Misure" rinominata "Attività" (IT) / "Activities" (EN)
- Descrizione task: input sostituito con textarea multilinea + display whitespace-pre-wrap
- Annotation editor: nuovo tool "Testo" con fabric.IText (inline editing, serializzazione, viewer)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-05-23 13:26:23 +00:00
parent 6772e3166a
commit b9c767fb0c
7 changed files with 123 additions and 17 deletions
@@ -247,6 +247,18 @@
<span class="hidden sm:inline">{{ _('Rettangolo') }}</span>
</button>
<!-- Text Tool -->
<button type="button"
class="anno-btn"
:class="{ 'active': annoTool === 'text' }"
@click="setAnnoTool('text')"
title="{{ _('Testo') }}">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 6v2m16-2v2M7 6v12m0 0h2m-2 0H5m12-12v12m0 0h2m-2 0h-2"/>
</svg>
<span class="hidden sm:inline">{{ _('Testo') }}</span>
</button>
<!-- Separator -->
<div class="w-px h-6 bg-[var(--border-color)] mx-1"></div>
@@ -269,12 +269,12 @@
placeholder="{{ _('Es. Seguire procedura ISO 2768') }}">
</div>
<!-- Descrizione -->
<div>
<div class="sm:col-span-2">
<label class="tmf-label">{{ _('Descrizione') }}</label>
<input type="text"
x-model="newTask.description"
class="tmf-input"
placeholder="{{ _('Descrizione opzionale...') }}">
<textarea x-model="newTask.description"
class="tmf-input text-sm"
rows="3"
placeholder="{{ _('Descrizione opzionale...') }}"></textarea>
</div>
</div>
</div>
@@ -497,7 +497,7 @@
<template x-if="task.description">
<div class="flex items-start gap-2">
<span class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wide shrink-0 mt-0.5">{{ _('Descrizione') }}:</span>
<span class="text-sm text-[var(--text-secondary)]" x-text="task.description"></span>
<span class="text-sm text-[var(--text-secondary)] whitespace-pre-wrap" x-text="task.description"></span>
</div>
</template>
</div>
@@ -513,12 +513,12 @@
class="tmf-input text-sm"
placeholder="{{ _('Direttiva opzionale...') }}">
</div>
<div>
<div class="sm:col-span-2">
<label class="tmf-label">{{ _('Descrizione') }}</label>
<input type="text"
x-model="editTaskData.description"
class="tmf-input text-sm"
placeholder="{{ _('Descrizione opzionale...') }}">
<textarea x-model="editTaskData.description"
class="tmf-input text-sm"
rows="3"
placeholder="{{ _('Descrizione opzionale...') }}"></textarea>
</div>
</div>
</template>
@@ -134,7 +134,7 @@
<!-- Directive -->
{% if task.directive or task.description %}
<p class="text-sm text-[var(--text-secondary)] leading-relaxed mb-3 line-clamp-2">
<p class="text-sm text-[var(--text-secondary)] leading-relaxed mb-3 line-clamp-2 whitespace-pre-wrap">
{{ task.directive or task.description }}
</p>
{% endif %}