From dd29287c5a6f3a900f3e6bdbe76c0babd9908654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Hatcher?= Date: Sun, 12 Oct 2025 13:41:03 +0200 Subject: [PATCH] FIX: Lifts TemplateDialog to App.tsx --- webapp/app.ironcalc.com/frontend/src/App.tsx | 24 ++++++++++++++++++- .../frontend/src/components/FileMenu.tsx | 16 ++----------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/webapp/app.ironcalc.com/frontend/src/App.tsx b/webapp/app.ironcalc.com/frontend/src/App.tsx index 03419b3..d718128 100644 --- a/webapp/app.ironcalc.com/frontend/src/App.tsx +++ b/webapp/app.ironcalc.com/frontend/src/App.tsx @@ -20,10 +20,13 @@ import { // From IronCalc import { IronCalc, IronCalcIcon, Model, init } from "@ironcalc/workbook"; +import { Modal } from "@mui/material"; +import TemplatesDialog from "./components/WelcomeDialog/TemplatesDialog"; function App() { const [model, setModel] = useState(null); const [showWelcomeDialog, setShowWelcomeDialog] = useState(false); + const [isTemplatesDialogOpen, setTemplatesDialogOpen] = useState(false); useEffect(() => { async function start() { @@ -106,7 +109,7 @@ function App() { setModel(createdModel); }} newModelFromTemplate={() => { - setShowWelcomeDialog(true); + setTemplatesDialogOpen(true); }} setModel={(uuid: string) => { const newModel = selectModelFromStorage(uuid); @@ -150,6 +153,25 @@ function App() { }} /> )} + setTemplatesDialogOpen(false)} + aria-labelledby="templates-dialog-title" + aria-describedby="templates-dialog-description" + > + setTemplatesDialogOpen(false)} + onSelectTemplate={ + async (fileName) => { + const model_bytes = await get_documentation_model(fileName); + const importedModel = Model.from_bytes(model_bytes); + saveModelToStorage(importedModel); + setModel(importedModel); + setTemplatesDialogOpen(false); + } + } + /> + ); } diff --git a/webapp/app.ironcalc.com/frontend/src/components/FileMenu.tsx b/webapp/app.ironcalc.com/frontend/src/components/FileMenu.tsx index ea8ad24..19399d4 100644 --- a/webapp/app.ironcalc.com/frontend/src/components/FileMenu.tsx +++ b/webapp/app.ironcalc.com/frontend/src/components/FileMenu.tsx @@ -4,7 +4,7 @@ import { Check, FileDown, FileUp, Plus, Table2, Trash2 } from "lucide-react"; import { useRef, useState } from "react"; import DeleteWorkbookDialog from "./DeleteWorkbookDialog"; import UploadFileDialog from "./UploadFileDialog"; -import TemplatesDialog from "./WelcomeDialog/TemplatesDialog"; +// import TemplatesDialog from "./WelcomeDialog/TemplatesDialog"; import { getModelsMetadata, getSelectedUuid } from "./storage"; export function FileMenu(props: { @@ -22,7 +22,6 @@ export function FileMenu(props: { const uuids = Object.keys(models); const selectedUuid = getSelectedUuid(); const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false); - const [isTemplatesDialogOpen, setTemplatesDialogOpen] = useState(false); const elements = []; for (const uuid of uuids) { elements.push( @@ -98,7 +97,7 @@ export function FileMenu(props: { { - setTemplatesDialogOpen(true); + props.newModelFromTemplate(); setMenuOpen(false); }} > @@ -166,17 +165,6 @@ export function FileMenu(props: { workbookName={selectedUuid ? models[selectedUuid] : ""} /> - setTemplatesDialogOpen(false)} - aria-labelledby="templates-dialog-title" - aria-describedby="templates-dialog-description" - > - setTemplatesDialogOpen(false)} - onSelectTemplate={props.newModelFromTemplate} - /> - ); }