折叠面板
查看源代码用于扩展和折叠其他内容。
演示
import { SpriteIcon } from "~/components/sprite-icon";
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from "@resolid/react-ui";
export default function App() {
return (
<Collapsible className={"w-80 rounded-md border border-bd-normal bg-bg-normal"}>
<CollapsibleTrigger className={"group flex w-full flex-row items-center justify-between p-3"}>
<h6 className={"font-medium"}>Resolid React UI 是什么?</h6>
<SpriteIcon
className={"transition-transform duration-(--dv) group-aria-expanded:rotate-180"}
size={"1.5em"}
name={"angle-down"}
/>
</CollapsibleTrigger>
<CollapsibleContent className={"border-t border-bd-normal p-3"}>
Resolid React UI 是 React 的开源设计系统。使用 React 和 Tailwind CSS
构建。它提供了一组即用型组件,用于构建具有一致外观的 Web 应用程序。
</CollapsibleContent>
</Collapsible>
);
}用法
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from "@resolid/react-ui";Collapsible: 折叠面板组件的包装器。CollapsibleTrigger: 切换可折叠的按钮。CollapsibleContent: 包含可折叠内容的组件。
折叠面板默认只有必需的样式,你可以通过 Collapsible、CollapsibleTrigger 和 CollapsibleContent 的 className 自定义。
<Collapsible>
<CollapsibleTrigger />
<CollapsibleContent />
</Collapsible>特点
- 遵循 WAI ARIA Disclosure 设计模式。
- 可以是受控的,也可以是不受控的。
举例
默认打开
import { SpriteIcon } from "~/components/sprite-icon";
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from "@resolid/react-ui";
export default function App() {
return (
<Collapsible defaultOpen className={"w-80 rounded-md border border-bd-normal bg-bg-normal"}>
<CollapsibleTrigger className={"group flex w-full flex-row items-center justify-between p-3"}>
<h6 className={"font-medium"}>Resolid React UI 是什么?</h6>
<SpriteIcon
className={"transition-transform duration-(--dv) group-aria-expanded:rotate-180"}
size={"1.5em"}
name={"angle-down"}
/>
</CollapsibleTrigger>
<CollapsibleContent className={"border-t border-bd-normal p-3"}>
Resolid React UI 是 React 的开源设计系统。使用 React 和 Tailwind CSS
构建。它提供了一组即用型组件,用于构建具有一致外观的 Web 应用程序。
</CollapsibleContent>
</Collapsible>
);
}自定义
import { SpriteIcon } from "~/components/sprite-icon";
import { Button, Collapsible, CollapsibleTrigger, CollapsibleContent } from "@resolid/react-ui";
export default function App() {
return (
<Collapsible className={"flex w-80 flex-col gap-2 bg-bg-normal"}>
<div className={"flex items-center justify-between"}>
<h6 className={"font-bold"}>Resolid 项目拥有 7 个子项目</h6>
<CollapsibleTrigger
render={(props) => {
return <Button size={"xs"} color={"neutral"} variant={"ghost"} iconOnly {...props} />;
}}
className={"group"}
>
<SpriteIcon
className={"transition-transform duration-(--dv) group-aria-expanded:rotate-180"}
size={"1.5em"}
name={"angle-down"}
/>
</CollapsibleTrigger>
</div>
<div className={"rounded-md border border-bd-normal px-3 py-2"}>@resolid/config</div>
<div className={"rounded-md border border-bd-normal px-3 py-2"}>@resolid/framework</div>
<CollapsibleContent className={"flex flex-col gap-2"}>
<div className={"rounded-md border border-bd-normal px-3 py-2"}>@resolid/react-ui</div>
<div className={"rounded-md border border-bd-normal px-3 py-2"}>
@resolid/react-router-hono
</div>
<div className={"rounded-md border border-bd-normal px-3 py-2"}>@resolid/flex-routes</div>
<div className={"rounded-md border border-bd-normal px-3 py-2"}>@resolid/utils</div>
</CollapsibleContent>
</Collapsible>
);
}禁用
import { SpriteIcon } from "~/components/sprite-icon";
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from "@resolid/react-ui";
export default function App() {
return (
<Collapsible disabled className={"w-80 rounded-md border border-bd-normal bg-bg-normal"}>
<CollapsibleTrigger className={"group flex w-full flex-row items-center justify-between p-3"}>
<h6 className={"font-medium"}>Resolid React UI 是什么?</h6>
<SpriteIcon
className={"transition-transform duration-(--dv) group-aria-expanded:rotate-180"}
size={"1.5em"}
name={"angle-down"}
/>
</CollapsibleTrigger>
<CollapsibleContent className={"border-t border-bd-normal p-3"}>
Resolid React UI 是 React 的开源设计系统。使用 React 和 Tailwind CSS
构建。它提供了一组即用型组件,用于构建具有一致外观的 Web 应用程序。
</CollapsibleContent>
</Collapsible>
);
}属性
| 属性 | 类型 | 默认值 | 必须 | |
|---|---|---|---|---|
属性 duration | 动画持续时间 | 类型number | 默认值250 | 必须false |
属性 open | 受控打开状态 | 类型boolean | 默认值- | 必须false |
属性 defaultOpen | 初始渲染时的默认打开状态 | 类型boolean | 默认值false | 必须false |
属性 onOpenChange | 打开状态改变时调用 | 类型(open: boolean) => void | 默认值- | 必须false |
属性 disabled | 是否禁用 | 类型boolean | 默认值false | 必须false |