`
+ );
+ replaceSource(
+ "src/lib/routeLoaders.ts",
+ " if (await webHomeRouteEnabled(app)) {\n",
+ " if (true) {\n"
+ );
+ replaceSource(
+ "src/lib/routeLoaders.ts",
+ " if (!window.electron && !(await webHomeRouteEnabled(app))) {\n",
+ " if (false) {\n"
+ );
+ replaceSource(
+ "src/lib/app.ts",
+ ` const enableProjectDirectoryCommands =
+ typeof window !== 'undefined' &&
+ (Boolean(window.electron) ||
+ userFeaturesContextHas(
+ this.userFeatures.actor.getSnapshot().context,
+ OPFS_CLOUD_FEATURE_FLAG,
+ false
+ ))
+`,
+ ` const enableProjectDirectoryCommands =
+ typeof window !== 'undefined'
+`
);
replaceSource(
"src/components/AppHeader.tsx",
diff --git a/tests/routes/hicad-project-experience.test.ts b/tests/routes/hicad-project-experience.test.ts
index 892a279b2..4ff0b27bc 100644
--- a/tests/routes/hicad-project-experience.test.ts
+++ b/tests/routes/hicad-project-experience.test.ts
@@ -28,6 +28,19 @@ test.describe('HiCAD project management experience', () => {
expect(experience).toContain('自动保存已开启')
expect(experience).toContain('data-testid="hicad-create-project"')
expect(experience).toContain('data-testid="hicad-create-from-sample"')
+ expect(experience).toContain('data-testid="hicad-open-project-list"')
+ expect(experience).toContain('data-testid="hicad-create-blank-project"')
+ expect(experience).toContain('?create=blank')
+ expect(experience).toContain('[data-testid="home-new-file"]')
+ expect(script).toContain('
{
diff --git a/vendor/zoo-modeling-app/HicadProjectExperience.tsx.template b/vendor/zoo-modeling-app/HicadProjectExperience.tsx.template
index 368ec661c..b7bccba3d 100644
--- a/vendor/zoo-modeling-app/HicadProjectExperience.tsx.template
+++ b/vendor/zoo-modeling-app/HicadProjectExperience.tsx.template
@@ -1,10 +1,15 @@
import { CustomIcon } from '@src/components/CustomIcon'
+import { PATHS } from '@src/lib/paths'
+import { useEffect } from 'react'
+import { useLocation, useNavigate } from 'react-router-dom'
export function HicadProjectDashboardHeading({
projectCount,
}: {
projectCount: number
}) {
+ const location = useLocation()
+ const navigate = useNavigate()
const startCreatingProject = () => {
document
.querySelector('[data-testid="home-new-file"]')
@@ -18,6 +23,19 @@ export function HicadProjectDashboardHeading({
?.click()
}
+ useEffect(() => {
+ const shouldCreateBlankProject =
+ new URLSearchParams(location.search).get('create') === 'blank'
+ if (!shouldCreateBlankProject) return
+
+ const timer = window.setTimeout(() => {
+ startCreatingProject()
+ void navigate(PATHS.HOME, { replace: true })
+ }, 250)
+
+ return () => window.clearTimeout(timer)
+ }, [location.search, navigate])
+
return (
)
}
+
+export function HicadEditorProjectActions({
+ onOpenProjectList,
+ onCreateBlankProject,
+}: {
+ onOpenProjectList: () => void
+ onCreateBlankProject: () => void
+}) {
+ const buttonClassName =
+ 'inline-flex h-7 items-center justify-center gap-1.5 rounded-md border border-chalkboard-30 bg-chalkboard-10/80 px-2 text-xs font-medium text-chalkboard-80 transition-colors hover:border-primary/50 hover:bg-primary/5 hover:text-primary focus-visible:outline-appForeground dark:border-chalkboard-70 dark:bg-chalkboard-100/50 dark:text-chalkboard-30 dark:hover:border-primary/50 dark:hover:text-primary'
+
+ return (
+
+ )
+}