From b917aeaa5614d158164ed4368bc9583af3304379 Mon Sep 17 00:00:00 2001 From: Manus Date: Thu, 4 Jun 2026 14:53:25 +0000 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Correction=20du=20bug=20d'afficha?= =?UTF-8?q?ge=20de=20la=20modale=20:=20d=C3=A9placement=20du=20rendu=20hor?= =?UTF-8?q?s=20de=20la=20sidebar=20(overflow:hidden)=20via=20un=20ImportMo?= =?UTF-8?q?dalContext=20+=20rendu=20au=20niveau=20racine=20dans=20App.tsx.?= =?UTF-8?q?=20Mise=20=C3=A0=20jour=20du=20prompt=20par=20d=C3=A9faut=20ave?= =?UTF-8?q?c=20les=20r=C3=A8gles=20pr=C3=A9cises=20du=20format=20ISI-APP?= =?UTF-8?q?=20r=C3=A9el=20(code=20depuis=20libell=C3=A9=208=20car.,=20nom?= =?UTF-8?q?=20depuis=20entit=C3=A9,=20type=20fixe/portable=20depuis=20libe?= =?UTF-8?q?ll=C3=A9,=20v=C3=A9tust=C3=A9=20depuis=20date=20mise=20en=20ser?= =?UTF-8?q?vice=20ou=20date=20achat).=20Mise=20=C3=A0=20jour=20du=20parsin?= =?UTF-8?q?g=20handleInventaireFile=20pour=20utiliser=20ces=20r=C3=A8gles?= =?UTF-8?q?=20avec=20comptage=20fixes/portables=20dans=20le=20r=C3=A9sum?= =?UTF-8?q?=C3=A9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/App.tsx | 23 +++- client/src/components/AppSidebar.tsx | 8 +- client/src/components/ImportModal.tsx | 150 ++++++++++++++------- client/src/contexts/ImportModalContext.tsx | 30 +++++ 4 files changed, 152 insertions(+), 59 deletions(-) create mode 100644 client/src/contexts/ImportModalContext.tsx diff --git a/client/src/App.tsx b/client/src/App.tsx index 095879c..93550cc 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -6,6 +6,8 @@ import ErrorBoundary from "./components/ErrorBoundary"; import { ThemeProvider } from "./contexts/ThemeContext"; import { ParametresProvider } from "./contexts/ParametresContext"; import { AnneeProvider } from "./contexts/AnneeContext"; +import { ImportModalProvider, useImportModal } from "./contexts/ImportModalContext"; +import { ImportModal } from "./components/ImportModal"; import Home from "./pages/Home"; import Parametres from "./pages/Parametres"; import Budget2027 from "./pages/Budget2027"; @@ -32,17 +34,26 @@ function Router() { ); } +// Rendu de la modale au niveau racine (hors de tout overflow:hidden) +function GlobalModals() { + const { open, closeModal } = useImportModal(); + return ; +} + function App() { return ( - - - - - - + + + + + + + + + diff --git a/client/src/components/AppSidebar.tsx b/client/src/components/AppSidebar.tsx index 2072442..83b69a2 100644 --- a/client/src/components/AppSidebar.tsx +++ b/client/src/components/AppSidebar.tsx @@ -13,7 +13,7 @@ // └── Paramètres → /parametres import { useState } from 'react'; -import { ImportModal } from './ImportModal'; +import { useImportModal } from '../contexts/ImportModalContext'; import { useLocation } from 'wouter'; import { BarChart3, @@ -205,7 +205,7 @@ interface AppSidebarProps { export function AppSidebar({ collapsed = false, onToggle }: AppSidebarProps) { const [location, navigate] = useLocation(); const [openMenus, setOpenMenus] = useState>(() => getInitialOpenSections(location)); - const [showImport, setShowImport] = useState(false); + const { openModal: openImportModal } = useImportModal(); // Mode accordéon : ferme les autres sections du même niveau lors de l'ouverture const toggleSection = (id: string) => { @@ -392,7 +392,7 @@ export function AppSidebar({ collapsed = false, onToggle }: AppSidebarProps) {
{/* Bouton Imports & Données */} - {/* Modale d'import */} - setShowImport(false)} />