# ExtendInfoPanel 组件 ## 组件说明 扩展信息面板组件,用于展示多个可折叠的信息区块。支持横向和纵向两种布局模式,每个区块独立管理展开/收起状态,支持自定义图标和内容。适合在页面的扩展信息区(右侧或顶部)使用。 > **注意**:该组件由 SideInfoPanel 重命名而来,功能完全兼容。 ## 组件位置 ``` src/components/ExtendInfoPanel/ExtendInfoPanel.jsx src/components/ExtendInfoPanel/ExtendInfoPanel.css ``` ## 参数说明 | 参数名 | 类型 | 必填 | 默认值 | 说明 | |--------|------|------|--------|------| | sections | Array | 否 | [] | 信息区块配置数组 | | layout | string | 否 | 'vertical' | 布局方式:'vertical'(垂直堆叠)\| 'horizontal'(水平排列) | | className | string | 否 | '' | 自定义类名 | ### SectionConfig 配置项 | 属性名 | 类型 | 必填 | 说明 | |--------|------|------|------| | key | string | 是 | 区块唯一标识 | | title | string | 是 | 区块标题 | | icon | ReactNode | 否 | 标题图标 | | content | ReactNode | 是 | 区块内容 | | defaultCollapsed | boolean | 否 | 是否默认折叠,默认 false | | hideTitleBar | boolean | 否 | 是否隐藏标题栏,默认 false(隐藏后区块内容始终显示) | ## 布局模式 ### 垂直布局(Vertical) 区块垂直堆叠排列,适合在右侧信息面板中使用。 ``` ┌────────────────┐ │ Section 1 │ ├────────────────┤ │ Section 2 │ ├────────────────┤ │ Section 3 │ └────────────────┘ ``` ### 水平布局(Horizontal) 区块水平排列,适合在顶部扩展面板中使用。 ``` ┌──────┬──────┬──────┐ │ Sec1 │ Sec2 │ Sec3 │ └──────┴──────┴──────┘ ``` ## 使用示例 ### 基础用法 - 垂直布局 ```jsx import ExtendInfoPanel from '../components/ExtendInfoPanel/ExtendInfoPanel' import { DashboardOutlined } from '@ant-design/icons' function MyPage() { return ( , content:
概览内容
, }, ]} /> ) } ``` ### 水平布局 - 用于顶部扩展区(隐藏标题栏) ```jsx ), }, ]} /> ``` ### 水平布局 - 多个区块 ```jsx ), }, ]} /> ``` ### 多个区块 ```jsx , content:
基本信息内容
, }, { key: 'stats', title: '统计数据', icon: , content:
统计数据内容
, }, { key: 'logs', title: '操作日志', icon: , defaultCollapsed: true, // 默认折叠 content:
日志内容
, }, ]} /> ``` ### 配合 StatCard 使用 ```jsx import StatCard from '../components/StatCard/StatCard' , content: (
} color="blue" gridColumn="1 / -1" />
), }, ]} /> ``` ### 配合 ChartPanel 使用 ```jsx import ChartPanel from '../components/ChartPanel/ChartPanel' , content: ( <> ), }, ]} /> ``` ### 完整示例 - 配合 SplitLayout #### 横向布局(右侧扩展区) ```jsx import SplitLayout from '../components/SplitLayout/SplitLayout' import ExtendInfoPanel from '../components/ExtendInfoPanel/ExtendInfoPanel' } extendContent={ , content: }, { key: 'monitor', title: '性能监控', icon: , content: } ]} /> } /> ``` #### 纵向布局(顶部扩展区) ```jsx import { useState } from 'react' import PageTitleBar from '../components/PageTitleBar/PageTitleBar' import SplitLayout from '../components/SplitLayout/SplitLayout' import ExtendInfoPanel from '../components/ExtendInfoPanel/ExtendInfoPanel' function UserListPage() { const [showStats, setShowStats] = useState(false) return ( <> } extendContent={ ) } ]} /> } showExtend={showStats} /> ) } ``` ## 布局结构 ### DOM 结构层级 #### 垂直布局 ```html
{icon} {title}
{!isCollapsed && (
{content}
)}
``` #### 水平布局 ```html
...
...
...
``` ## 样式定制 组件提供以下 CSS 类名供自定义样式: - `.extend-info-panel` - 面板容器 - `.extend-info-panel-vertical` - 垂直布局模式 - `.extend-info-panel-horizontal` - 水平布局模式 - `.extend-info-section` - 单个信息区块 - `.extend-info-section-header` - 区块头部 - `.extend-info-section-title` - 区块标题 - `.extend-info-section-icon` - 标题图标 - `.extend-info-section-toggle` - 折叠按钮 - `.extend-info-section-content` - 区块内容 ### 自定义样式示例 ```css /* 修改区块间距 */ .extend-info-panel-vertical { gap: 20px; } /* 自定义区块头部背景 */ .extend-info-section-header { background: linear-gradient(135deg, #f0f7ff 0%, #e8f4ff 100%); } /* 修改水平布局的区块宽度 */ .extend-info-panel-horizontal .extend-info-section { flex: 1; min-width: 300px; } ``` ## 使用场景 ### 1. 右侧信息面板(垂直布局) - **系统监控面板**:展示系统状态、性能指标、告警信息 - **数据分析侧边栏**:展示统计数据、图表、筛选器 - **详情页辅助信息**:展示相关数据、操作历史、关联信息 ### 2. 顶部扩展面板(水平布局) - **统计数据面板**:展示多个统计卡片 - **快捷操作区**:展示常用操作和快捷入口 - **筛选条件区**:展示可展开的筛选条件 ## 注意事项 ### 1. 布局选择 ```jsx // ✅ 右侧扩展区使用垂直布局 // ✅ 顶部扩展区使用水平布局 // ❌ 避免:右侧扩展区使用水平布局(宽度不够) ``` ### 2. 区块数量 - **垂直布局**:建议 2-4 个区块,过多影响用户体验 - **水平布局**:建议 1-4 个区块,根据容器宽度调整 ### 3. 折叠状态 - 区块的折叠状态由组件内部管理,外部无法直接控制 - 可通过 `defaultCollapsed` 设置初始状态 - 建议将不常用的区块设为默认折叠 ### 4. 内容高度 - **垂直布局**:区块内容高度不限,但建议单个区块不要过长(建议 < 500px) - **水平布局**:建议控制区块内容高度一致,保持视觉整齐 ### 5. 图标使用 - 建议为每个区块添加图标,提升视觉识别度 - 图标应与区块内容相关 - 使用 Ant Design 图标库保持风格统一 ### 6. 宽度适配 - **垂直布局**:组件自适应父容器宽度,建议在 320-400px 容器中使用 - **水平布局**:组件占满父容器宽度,区块平均分配或根据内容自适应 ## 迁移指南 ### 从 SideInfoPanel 迁移 组件功能完全兼容,只需更改导入路径和组件名: **旧代码**: ```jsx import SideInfoPanel from '../components/SideInfoPanel/SideInfoPanel' ``` **新代码**: ```jsx import ExtendInfoPanel from '../components/ExtendInfoPanel/ExtendInfoPanel' ``` **新增参数**: - `layout` - 布局模式(新增),默认 'vertical' ## 配合使用的组件 - **SplitLayout** - 布局容器(必需) - **StatCard** - 统计卡片(推荐) - **ChartPanel** - 图表面板(推荐) - **InfoPanel** - 信息展示面板 - **PageTitleBar** - 页面标题栏(配合纵向布局) ## 相关文档 - [主内容区布局](../layouts/content-area-layout.md) - 详细的布局使用指南 - [SplitLayout](./SplitLayout.md) - 布局容器组件 - [StatCard](./StatCard.md) - 统计卡片组件 - [ChartPanel](./ChartPanel.md) - 图表面板组件