From 604fbb4d1f12b841abff18e752001b9c227325b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E9=9C=96=E9=93=83?= Date: Thu, 21 May 2026 00:38:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(pageHeader):=20popup=20=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=E9=9A=90=E8=97=8F=20PageHeader=20=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/PageHeader.tsx | 8 +++++++- components/__tests__/PageHeader.test.tsx | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/components/PageHeader.tsx b/components/PageHeader.tsx index 13481a1..b08050d 100644 --- a/components/PageHeader.tsx +++ b/components/PageHeader.tsx @@ -1,5 +1,6 @@ import { alpha, Box, Stack, SxProps, Theme, Typography, useTheme } from '@mui/material'; -import { ReactNode } from 'react'; +import { ReactNode, useMemo } from 'react'; +import { getEntryPointType } from '@/config/features'; /** * PageHeader 组件属性接口 @@ -64,6 +65,11 @@ export default function PageHeader({ }: PageHeaderProps) { const theme = useTheme(); const resolvedIconColor = iconColor ?? theme.palette.primary.main; + const entryPointType = useMemo(() => getEntryPointType(), []); + + if (entryPointType === 'popup') { + return null; + } return ( diff --git a/components/__tests__/PageHeader.test.tsx b/components/__tests__/PageHeader.test.tsx index e567199..00908df 100644 --- a/components/__tests__/PageHeader.test.tsx +++ b/components/__tests__/PageHeader.test.tsx @@ -5,6 +5,10 @@ import { render, screen } from '@testing-library/react'; import { ThemeProvider, createTheme } from '@mui/material/styles'; import PageHeader, { type PageHeaderProps } from '@/components/PageHeader'; +vi.mock('@/config/features', () => ({ + getEntryPointType: vi.fn(() => 'sidepanel'), +})); + const theme = createTheme(); function renderWithTheme(ui: React.ReactElement) { @@ -117,4 +121,14 @@ describe('PageHeader 组件系统', () => { expect(outerElement).toBeTruthy(); }); }); + + describe('PageHeader 入口点隐藏', () => { + it('popup 模式下应返回 null', async () => { + const { getEntryPointType } = await import('@/config/features'); + vi.mocked(getEntryPointType).mockReturnValue('popup'); + + const { container } = renderWithTheme(); + expect(container.innerHTML).toBe(''); + }); + }); });