FIX: Lifts TemplateDialog to App.tsx

This commit is contained in:
Nicolás Hatcher
2025-10-12 13:41:03 +02:00
committed by Nicolás Hatcher Andrés
parent 7841abe2d2
commit dd29287c5a
2 changed files with 25 additions and 15 deletions

View File

@@ -20,10 +20,13 @@ import {
// From IronCalc // From IronCalc
import { IronCalc, IronCalcIcon, Model, init } from "@ironcalc/workbook"; import { IronCalc, IronCalcIcon, Model, init } from "@ironcalc/workbook";
import { Modal } from "@mui/material";
import TemplatesDialog from "./components/WelcomeDialog/TemplatesDialog";
function App() { function App() {
const [model, setModel] = useState<Model | null>(null); const [model, setModel] = useState<Model | null>(null);
const [showWelcomeDialog, setShowWelcomeDialog] = useState(false); const [showWelcomeDialog, setShowWelcomeDialog] = useState(false);
const [isTemplatesDialogOpen, setTemplatesDialogOpen] = useState(false);
useEffect(() => { useEffect(() => {
async function start() { async function start() {
@@ -106,7 +109,7 @@ function App() {
setModel(createdModel); setModel(createdModel);
}} }}
newModelFromTemplate={() => { newModelFromTemplate={() => {
setShowWelcomeDialog(true); setTemplatesDialogOpen(true);
}} }}
setModel={(uuid: string) => { setModel={(uuid: string) => {
const newModel = selectModelFromStorage(uuid); const newModel = selectModelFromStorage(uuid);
@@ -150,6 +153,25 @@ function App() {
}} }}
/> />
)} )}
<Modal
open={isTemplatesDialogOpen}
onClose={() => setTemplatesDialogOpen(false)}
aria-labelledby="templates-dialog-title"
aria-describedby="templates-dialog-description"
>
<TemplatesDialog
onClose={() => 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);
}
}
/>
</Modal>
</Wrapper> </Wrapper>
); );
} }

View File

@@ -4,7 +4,7 @@ import { Check, FileDown, FileUp, Plus, Table2, Trash2 } from "lucide-react";
import { useRef, useState } from "react"; import { useRef, useState } from "react";
import DeleteWorkbookDialog from "./DeleteWorkbookDialog"; import DeleteWorkbookDialog from "./DeleteWorkbookDialog";
import UploadFileDialog from "./UploadFileDialog"; import UploadFileDialog from "./UploadFileDialog";
import TemplatesDialog from "./WelcomeDialog/TemplatesDialog"; // import TemplatesDialog from "./WelcomeDialog/TemplatesDialog";
import { getModelsMetadata, getSelectedUuid } from "./storage"; import { getModelsMetadata, getSelectedUuid } from "./storage";
export function FileMenu(props: { export function FileMenu(props: {
@@ -22,7 +22,6 @@ export function FileMenu(props: {
const uuids = Object.keys(models); const uuids = Object.keys(models);
const selectedUuid = getSelectedUuid(); const selectedUuid = getSelectedUuid();
const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false); const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false);
const [isTemplatesDialogOpen, setTemplatesDialogOpen] = useState(false);
const elements = []; const elements = [];
for (const uuid of uuids) { for (const uuid of uuids) {
elements.push( elements.push(
@@ -98,7 +97,7 @@ export function FileMenu(props: {
</MenuItemWrapper> </MenuItemWrapper>
<MenuItemWrapper <MenuItemWrapper
onClick={() => { onClick={() => {
setTemplatesDialogOpen(true); props.newModelFromTemplate();
setMenuOpen(false); setMenuOpen(false);
}} }}
> >
@@ -166,17 +165,6 @@ export function FileMenu(props: {
workbookName={selectedUuid ? models[selectedUuid] : ""} workbookName={selectedUuid ? models[selectedUuid] : ""}
/> />
</Modal> </Modal>
<Modal
open={isTemplatesDialogOpen}
onClose={() => setTemplatesDialogOpen(false)}
aria-labelledby="templates-dialog-title"
aria-describedby="templates-dialog-description"
>
<TemplatesDialog
onClose={() => setTemplatesDialogOpen(false)}
onSelectTemplate={props.newModelFromTemplate}
/>
</Modal>
</> </>
); );
} }