تاشو (Collapsible)
محتوای قابل باز و بسته شدن
معرفی
کامپوننت Collapsible برای محتوای قابل باز و بسته شدن استفاده میشود.
چه زمانی استفاده کنیم:
- وقتی فقط یک بخش تاشو دارید (مثلاً نمایش جزئیات یک آیتم)
- برای نمایش محتوای اختیاری که کاربر میتواند آن را باز یا بسته کند
- وقتی نیاز به toggle ساده بین حالت مخفی و نمایشی دارید
چه زمانی استفاده نکنیم:
- وقتی چند بخش تاشو دارید — از
Accordionاستفاده کنید - برای ناوبری بین بخشها — از
Tabsاستفاده کنید
استفاده
جزئیات بیشتر
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@parto-system-design/ui'
import { Button } from '@parto-system-design/ui'
export default function MyComponent() {
return (
<Collapsible>
<CollapsibleTrigger asChild>
<Button variant="ghost">باز کردن</Button>
</CollapsibleTrigger>
<CollapsibleContent>محتوای مخفی در اینجا قرار دارد</CollapsibleContent>
</Collapsible>
)
}Props
Collapsible
حالتها و انواع
کنترلشده
const [isOpen, setIsOpen] = React.useState(false)
<Collapsible open={isOpen} onOpenChange={setIsOpen}>
<CollapsibleTrigger asChild>
<Button variant="ghost">{isOpen ? 'بستن' : 'باز کردن'}</Button>
</CollapsibleTrigger>
<CollapsibleContent>
محتوای قابل کنترل
</CollapsibleContent>
</Collapsible>باز به صورت پیشفرض
<Collapsible defaultOpen>
<CollapsibleTrigger asChild>
<Button variant="ghost">بستن</Button>
</CollapsibleTrigger>
<CollapsibleContent>این محتوا از ابتدا نمایش داده میشود.</CollapsibleContent>
</Collapsible>راهنمای استفاده
بکنید
- از
asChildرویCollapsibleTriggerاستفاده کنید تا دکمه یا المان دلخواه خودتان را به عنوان trigger قرار دهید - برای محتوایی که پیشفرض باید نمایش داده شود، ازdefaultOpenاستفاده کنید - متن trigger را بر اساس وضعیت باز/بسته تغییر دهید تا کاربر وضعیت فعلی را بداند
نکنید
- وقتی چندین بخش تاشو دارید از Collapsible استفاده نکنید — از
Accordionاستفاده کنید - محتوای حیاتی را در Collapsible پنهان نکنید — کاربر ممکن است آن را نبیند
دسترسیپذیری
- با
EnterیاSpaceروی trigger، محتوا باز و بسته میشود - از
aria-expandedبرای اعلام وضعیت باز/بسته استفاده میشود - از
aria-controlsبرای ارتباط trigger با محتوا استفاده میشود - سازگار با screen reader ها و RTL