update: add a second New from template action to FileMenu

This commit is contained in:
Daniel Gonzalez Albo
2025-10-06 20:45:08 +02:00
committed by Nicolás Hatcher Andrés
parent 6a3e37f4c1
commit 0b925a4d6a
4 changed files with 25 additions and 6 deletions

View File

@@ -102,6 +102,10 @@ function App() {
setModel(newModel);
}}
newModel={() => {
const createdModel = createNewModel();
setModel(createdModel);
}}
newModelFromTemplate={() => {
setShowWelcomeDialog(true);
}}
setModel={(uuid: string) => {

View File

@@ -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<void>;
onDelete: () => void;
@@ -52,6 +53,7 @@ export function FileBar(properties: {
<Divider />
<FileMenu
newModel={properties.newModel}
newModelFromTemplate={properties.newModelFromTemplate}
setModel={properties.setModel}
onModelUpload={properties.onModelUpload}
onDownload={async () => {

View File

@@ -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<void>;
@@ -92,7 +93,18 @@ export function FileMenu(props: {
<StyledIcon>
<Plus />
</StyledIcon>
<MenuItemText>New</MenuItemText>
<MenuItemText>New blank workbook</MenuItemText>
</MenuItemWrapper>
<MenuItemWrapper
onClick={() => {
props.newModelFromTemplate();
setMenuOpen(false);
}}
>
<StyledIcon>
<Table2 />
</StyledIcon>
<MenuItemText>New from template</MenuItemText>
</MenuItemWrapper>
<MenuItemWrapper
onClick={() => {
@@ -105,6 +117,7 @@ export function FileMenu(props: {
</StyledIcon>
<MenuItemText>Import</MenuItemText>
</MenuItemWrapper>
<MenuDivider />
<MenuItemWrapper onClick={props.onDownload}>
<StyledIcon>
<FileDown />

View File

@@ -8,9 +8,7 @@ function WelcomeDialog(properties: {
onClose: () => void;
onSelectTemplate: (templateId: string) => void;
}) {
const [selectedTemplate, setSelectedTemplate] = useState<string>(
"blank",
);
const [selectedTemplate, setSelectedTemplate] = useState<string>("blank");
const handleClose = () => {
properties.onClose();
@@ -74,7 +72,9 @@ function WelcomeDialog(properties: {
</TemplatesListWrapper>
</DialogContent>
<DialogFooter>
<DialogFooterButton onClick={() => properties.onSelectTemplate(selectedTemplate)}>
<DialogFooterButton
onClick={() => properties.onSelectTemplate(selectedTemplate)}
>
Create workbook
</DialogFooterButton>
</DialogFooter>