-
This commit is contained in:
43
CLAUDE.md
43
CLAUDE.md
@@ -52,6 +52,34 @@ XX. **Nome Problema (FIX/IMPLEMENTATO DATA):** - **Problema:** Descrizione breve
|
||||
|
||||
**Lavoro completato nell'ultima sessione:**
|
||||
|
||||
- **NUOVA FEATURE: Scorciatoie da Tastiera Complete per Report Designer** - COMPLETATO
|
||||
- **Problema:** Le scorciatoie da tastiera (Ctrl+X, Ctrl+C, etc.) venivano intercettate dal browser invece che dalla pagina
|
||||
- **Soluzione:** Riscritto completamente l'handler delle scorciatoie con:
|
||||
- Controllo se il focus è su campi input/textarea/contenteditable
|
||||
- Nuovo metodo `isTextEditing()` esposto da EditorCanvasRef per verificare editing testo nel canvas
|
||||
- `e.preventDefault()` per bloccare comportamento browser
|
||||
- **Scorciatoie implementate:**
|
||||
- `Ctrl+Z` - Annulla
|
||||
- `Ctrl+Y` - Ripeti
|
||||
- `Ctrl+S` - Salva
|
||||
- `Ctrl+X` - Taglia
|
||||
- `Ctrl+C` - Copia
|
||||
- `Ctrl+V` - Incolla
|
||||
- `Ctrl+D` - Duplica
|
||||
- `Ctrl+A` - Seleziona tutto
|
||||
- `Ctrl+L` - Blocca/Sblocca elemento
|
||||
- `Ctrl+G` - Raggruppa
|
||||
- `Ctrl+Shift+G` - Separa
|
||||
- `Ctrl+]` - Porta avanti
|
||||
- `Ctrl+Shift+]` - Porta in primo piano
|
||||
- `Ctrl+[` - Porta indietro
|
||||
- `Ctrl+Shift+[` - Porta in fondo
|
||||
- `Delete/Backspace` - Elimina elemento
|
||||
- `Escape` - Deseleziona
|
||||
- **File modificati:**
|
||||
- `EditorCanvas.tsx` - Aggiunto `isTextEditing()` a `EditorCanvasRef`
|
||||
- `ReportEditorPage.tsx` - Importato `EditorCanvasRef`, aggiunto `canvasRef`, riscritto `useEffect` delle scorciatoie
|
||||
|
||||
- **FIX: Rimossa Toolbar Contestuale che causava Layout Shift** - COMPLETATO
|
||||
- **Problema:** Quando si selezionava un oggetto nel canvas, appariva una toolbar aggiuntiva sotto quella principale che causava uno scroll della pagina
|
||||
- **Soluzione:** Rimossa completamente la toolbar contestuale - le proprietà degli oggetti vengono gestite solo dal `PropertiesPanel` sulla destra
|
||||
@@ -233,6 +261,11 @@ cd src/Apollinare.API && dotnet run
|
||||
cd frontend && npm run dev
|
||||
```
|
||||
|
||||
**IMPORTANTE:** Dopo modifiche al codice, i servizi backend e frontend vanno **sempre riavviati** per vedere le modifiche:
|
||||
|
||||
- Backend: fermare con `Ctrl+C` e rilanciare `dotnet run`
|
||||
- Frontend: in dev mode (`npm run dev`) il hot-reload è automatico per la maggior parte delle modifiche, ma per modifiche strutturali (nuovi file, cambi a tipi, etc.) potrebbe essere necessario riavviare
|
||||
|
||||
---
|
||||
|
||||
## Project Overview
|
||||
@@ -1202,6 +1235,16 @@ frontend/src/
|
||||
- Import inutilizzati: `TextField`, `ToggleButton`, `ToggleButtonGroup`, icone formattazione
|
||||
- **File:** `EditorToolbar.tsx`, `ReportEditorPage.tsx`
|
||||
|
||||
28. **Scorciatoie da Tastiera Intercettate dal Browser (FIX 29/11/2025):**
|
||||
- **Problema:** Le scorciatoie da tastiera (Ctrl+S, Ctrl+C, Ctrl+V, etc.) nel report designer venivano catturate dal browser invece che dalla pagina - ad esempio Ctrl+S apriva il dialog di salvataggio del browser invece di salvare il template
|
||||
- **Causa:** L'handler delle scorciatoie non chiamava `e.preventDefault()` in modo consistente e non verificava se l'utente stava modificando testo in un input field o nel canvas
|
||||
- **Soluzione:** Riscritto completamente l'handler delle scorciatoie:
|
||||
- Verifica se il target è un campo input (`INPUT`, `TEXTAREA`, `contentEditable`)
|
||||
- Nuovo metodo `isTextEditing()` esposto da `EditorCanvasRef` per verificare se un elemento testo è in editing nel canvas Fabric.js
|
||||
- `e.preventDefault()` chiamato subito dopo il riconoscimento della scorciatoia
|
||||
- Implementate tutte le scorciatoie dichiarate nel context menu (Ctrl+X/C/V/D/A/L/G, Ctrl+[/], Delete, Escape)
|
||||
- **File:** `EditorCanvas.tsx` (aggiunto `isTextEditing()` a `EditorCanvasRef`), `ReportEditorPage.tsx` (riscritto `useEffect` delle scorciatoie, aggiunto `canvasRef`)
|
||||
|
||||
### Schema Database Report System
|
||||
|
||||
Le tabelle sono già nel DbContext (`AppollinareDbContext.cs`):
|
||||
|
||||
Reference in New Issue
Block a user