Accordion 手风琴

通过单项展开和折叠渐进披露相关内容。

Beta

示例

直接操作示例,查看组件在具体任务中的状态与反馈。

当前契约一次展开一个条目;宿主保存活动值,并允许再次选择时折叠。
本地说明分区
组件负责单项展开、折叠和键盘焦点移动。
当前展开:scope
允许折叠时可以关闭当前项,否则始终保留一个展开项。
允许全部折叠
覆盖公开组件与本地示例。
保持一项展开
覆盖公开组件与本地示例。
禁用条目保持在信息结构中,但不能被展开。
功能说明
方向键在标题间移动焦点,Enter 或 Space 切换内容。
键盘可访问说明

使用建议

用于渐进披露而非主导航

把相关但非同时必读的内容分组展开;跨页面导航、步骤流程或需要并排比较的内容应选择其他结构。

让标题概括展开内容

每个 title 应单独可理解,并与 panel 内容形成明确问答或主题关系,不使用“更多”之类含糊文案。

谨慎使用折叠与嵌套

根据阅读任务决定 allowCollapse;当前是单项展开合同,避免深层嵌套导致焦点和层级难以理解。

引入方式

从已验证的公开子路径导入组件;全局样式接入方式见安装指南。

import { BaseAccordion } from '@inf-monkeys-tech/monkeys-design/components/base';

当前限制

  • 当前 value 是单个 string,只支持一次展开一个条目,不提供多项同时展开模式。
  • T17 尚缺 nested-content、RTL、mobile、manual keyboard/screen-reader、deterministic visual、packed React 18/19 与 hydration 证据。
  • Manual keyboard, screen-reader, nested-content, RTL, and mobile review remains pending.
  • Deterministic visual evidence and final T17/T23 packed React 18/19 and hydration checks remain pending.
export interface BaseAccordionProps
  extends Omit<
    HTMLAttributes<HTMLDivElement>,
    'children' | 'className' | 'defaultValue' | 'onChange' | 'style'
  > {
  items?: BaseAccordionItem[];
  value?: string;
  defaultValue?: string;
  allowCollapse?: boolean;
  keyboardNavigation?: boolean;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseAccordionClassNames;
  style?: CSSProperties;
  onValueChange?: (value: string | undefined) => void;
}
属性说明类型默认值
items用于生成组件条目的一组结构化数据。BaseAccordionItem[][]
value手风琴当前展开项的受控 id。string
defaultValue非受控模式下使用的初始值。string
allowCollapse是否允许再次操作当前项后收起全部内容。booleantrue
keyboardNavigation是否启用方向键在手风琴标题之间移动焦点。booleantrue
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseAccordionClassNames
style追加到组件根元素的内联样式。CSSProperties
onValueChange值变化时调用的回调;参数结构以当前组件的 Props 类型为准。(value: string | undefined) => void