diff --git a/src/app/components/generator/ProjectPanel.tsx b/src/app/components/generator/ProjectPanel.tsx
index 390e00a4..317a6637 100644
--- a/src/app/components/generator/ProjectPanel.tsx
+++ b/src/app/components/generator/ProjectPanel.tsx
@@ -124,8 +124,9 @@ export function ProjectPanel({ onRename, onCreate, onDeleteProject }: Props) {
evt.preventDefault()
setFocus()
}
-
- return
selectFile(entry)} onContextMenu={onContextMenu} >
+ const file = disectEntry(entry)
+
+ return
selectFile(entry)} onContextMenu={onContextMenu} >
{Octicon.file}
{entry.split('/').at(-1)}
{focused && )}
}
- }, [actions])
+ }, [actions, disectEntry])
return <>
diff --git a/src/app/components/generator/SchemaGenerator.tsx b/src/app/components/generator/SchemaGenerator.tsx
index 4f52902d..9fe4b4fe 100644
--- a/src/app/components/generator/SchemaGenerator.tsx
+++ b/src/app/components/generator/SchemaGenerator.tsx
@@ -22,7 +22,7 @@ interface Props {
export function SchemaGenerator({ gen, allowedVersions }: Props) {
const { locale } = useLocale()
const { version, changeVersion, changeTargetVersion } = useVersion()
- const { projects, project, file, updateProject, updateFile } = useProject()
+ const { projects, project, file, updateProject, updateFile, closeFile } = useProject()
const [error, setError] = useState(null)
const [errorBoundary, errorRetry] = useErrorBoundary()
if (errorBoundary) {
@@ -298,6 +298,20 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) {
const [projectDeleting, setprojectDeleting] = useState(false)
const [fileSaving, setFileSaving] = useState(undefined)
const [fileRenaming, setFileRenaming] = useState<{ type: string, id: string } | undefined>(undefined)
+ const [newFileQueued, setNewFileQueued] = useState(false)
+
+ const onNewFile = useCallback(() => {
+ closeFile()
+ // Need to queue reset because otherwise the useModel hook will update the old file
+ setNewFileQueued(true)
+ }, [closeFile])
+
+ useEffect(() => {
+ if (file === undefined && newFileQueued) {
+ model?.reset(DataModel.wrapLists(model.schema.default()), true)
+ setNewFileQueued(false)
+ }
+ }, [model, newFileQueued, file])
return <>
@@ -316,6 +330,7 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) {
{backup !== undefined && }
+
setFileSaving('menu')} />
diff --git a/src/locales/en.json b/src/locales/en.json
index 493eeae7..a7530ff9 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -189,11 +189,11 @@
"project.delete_file": "Delete file",
"project.download": "Download data pack",
"project.go_to": "Go to project",
- "project.new_file": "New file",
+ "project.new_file": "New empty file",
"project.no_files": "No files",
"project.rename": "Rename",
"project.rename_file": "Rename file",
- "project.save": "Save",
+ "project.save": "Save as",
"project.save_current_file": "Save file to project",
"project.search": "Search project",
"project.search_drafts": "Search drafts",