diff --git a/package.json b/package.json index 42113e6f..81fe5c98 100644 --- a/package.json +++ b/package.json @@ -1321,6 +1321,11 @@ "string" ], "description": "Defines a prefix for the file name." + }, + "defaultFileName": { + "type": "string", + "default": "index", + "description": "Default file name to use when creating new content." } }, "additionalProperties": false, diff --git a/src/helpers/ArticleHelper.ts b/src/helpers/ArticleHelper.ts index bacbf6fa..11d045a3 100644 --- a/src/helpers/ArticleHelper.ts +++ b/src/helpers/ArticleHelper.ts @@ -403,7 +403,12 @@ export class ArticleHelper { return; } else { await mkdirAsync(newFolder, { recursive: true }); - newFilePath = join(newFolder, `index.${fileExtension || contentType.fileType || fileType}`); + newFilePath = join( + newFolder, + `${sanitize(contentType.defaultFileName ?? `index`)}.${ + fileExtension || contentType.fileType || fileType + }` + ); } } else { let newFileName = `${sanitizedName}.${fileExtension || contentType?.fileType || fileType}`; diff --git a/src/models/PanelSettings.ts b/src/models/PanelSettings.ts index ede3fce6..576b7d36 100644 --- a/src/models/PanelSettings.ts +++ b/src/models/PanelSettings.ts @@ -47,6 +47,7 @@ export interface ContentType { fileType?: 'md' | 'mdx' | string; previewPath?: string | null; pageBundle?: boolean; + defaultFileName?: string; template?: string; postScript?: string; filePrefix?: string; diff --git a/src/panelWebView/components/FileItem.tsx b/src/panelWebView/components/FileItem.tsx index 571599f2..2a557996 100644 --- a/src/panelWebView/components/FileItem.tsx +++ b/src/panelWebView/components/FileItem.tsx @@ -2,6 +2,7 @@ import { Messenger } from '@estruyf/vscode/dist/client'; import * as React from 'react'; import { useMemo } from 'react'; import { DEFAULT_FILE_TYPES } from '../../constants/DefaultFileTypes'; +import { ContentType } from '../../helpers'; import { CommandToCode } from '../CommandToCode'; import { FileIcon } from './Icons/FileIcon'; import { MarkdownIcon } from './Icons/MarkdownIcon'; @@ -21,8 +22,14 @@ const FileItem: React.FunctionComponent = ({ Messenger.send(CommandToCode.openInEditor, path); }; + let vagueFileNamesList = ['index', '+page']; + const contentTypes = ContentType.getAll() || []; + const defaultNames = contentTypes.map(contentType => contentType.defaultFileName || "index"); + vagueFileNamesList = [...vagueFileNamesList, ...defaultNames]; + vagueFileNamesList = [...new Set(vagueFileNamesList)]; + const itemName = useMemo(() => { - if (folderName && name.includes('index.')) { + if (folderName && vagueFileNamesList.some(vagueFileName => name.includes(vagueFileName + '.'))) { return folderName; }