From 0b925a4d6aa87fb98360a88e25421afef5e2bc03 Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Albo Date: Mon, 6 Oct 2025 20:45:08 +0200 Subject: [PATCH] update: add a second New from template action to FileMenu --- webapp/app.ironcalc.com/frontend/src/App.tsx | 4 ++++ .../frontend/src/components/FileBar.tsx | 2 ++ .../frontend/src/components/FileMenu.tsx | 17 +++++++++++++++-- .../components/WelcomeDialog/WelcomeDialog.tsx | 8 ++++---- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/webapp/app.ironcalc.com/frontend/src/App.tsx b/webapp/app.ironcalc.com/frontend/src/App.tsx index a1b705d..eebc085 100644 --- a/webapp/app.ironcalc.com/frontend/src/App.tsx +++ b/webapp/app.ironcalc.com/frontend/src/App.tsx @@ -102,6 +102,10 @@ function App() { setModel(newModel); }} newModel={() => { + const createdModel = createNewModel(); + setModel(createdModel); + }} + newModelFromTemplate={() => { setShowWelcomeDialog(true); }} setModel={(uuid: string) => { diff --git a/webapp/app.ironcalc.com/frontend/src/components/FileBar.tsx b/webapp/app.ironcalc.com/frontend/src/components/FileBar.tsx index 2f5136b..15b8f9b 100644 --- a/webapp/app.ironcalc.com/frontend/src/components/FileBar.tsx +++ b/webapp/app.ironcalc.com/frontend/src/components/FileBar.tsx @@ -27,6 +27,7 @@ function useWindowWidth() { export function FileBar(properties: { model: Model; newModel: () => void; + newModelFromTemplate: () => void; setModel: (key: string) => void; onModelUpload: (blob: ArrayBuffer, fileName: string) => Promise; onDelete: () => void; @@ -52,6 +53,7 @@ export function FileBar(properties: { { diff --git a/webapp/app.ironcalc.com/frontend/src/components/FileMenu.tsx b/webapp/app.ironcalc.com/frontend/src/components/FileMenu.tsx index d292233..fa674dc 100644 --- a/webapp/app.ironcalc.com/frontend/src/components/FileMenu.tsx +++ b/webapp/app.ironcalc.com/frontend/src/components/FileMenu.tsx @@ -1,6 +1,6 @@ import styled from "@emotion/styled"; import { Menu, MenuItem, Modal } from "@mui/material"; -import { Check, FileDown, FileUp, Plus, Trash2 } from "lucide-react"; +import { Check, FileDown, FileUp, Plus, Table2, Trash2 } from "lucide-react"; import { useRef, useState } from "react"; import DeleteWorkbookDialog from "./DeleteWorkbookDialog"; import UploadFileDialog from "./UploadFileDialog"; @@ -8,6 +8,7 @@ import { getModelsMetadata, getSelectedUuid } from "./storage"; export function FileMenu(props: { newModel: () => void; + newModelFromTemplate: () => void; setModel: (key: string) => void; onDownload: () => void; onModelUpload: (blob: ArrayBuffer, fileName: string) => Promise; @@ -92,7 +93,18 @@ export function FileMenu(props: { - New + New blank workbook + + { + props.newModelFromTemplate(); + setMenuOpen(false); + }} + > + + + + New from template { @@ -105,6 +117,7 @@ export function FileMenu(props: { Import + diff --git a/webapp/app.ironcalc.com/frontend/src/components/WelcomeDialog/WelcomeDialog.tsx b/webapp/app.ironcalc.com/frontend/src/components/WelcomeDialog/WelcomeDialog.tsx index b7c6a27..31c39fe 100644 --- a/webapp/app.ironcalc.com/frontend/src/components/WelcomeDialog/WelcomeDialog.tsx +++ b/webapp/app.ironcalc.com/frontend/src/components/WelcomeDialog/WelcomeDialog.tsx @@ -8,9 +8,7 @@ function WelcomeDialog(properties: { onClose: () => void; onSelectTemplate: (templateId: string) => void; }) { - const [selectedTemplate, setSelectedTemplate] = useState( - "blank", - ); + const [selectedTemplate, setSelectedTemplate] = useState("blank"); const handleClose = () => { properties.onClose(); @@ -74,7 +72,9 @@ function WelcomeDialog(properties: { - properties.onSelectTemplate(selectedTemplate)}> + properties.onSelectTemplate(selectedTemplate)} + > Create workbook