پرتوپرتو

تاشو (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

Prop

Type

حالت‌ها و انواع

کنترل‌شده

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

کامپوننت‌های مرتبط

  • Accordion — وقتی چندین بخش تاشو دارید که کاربر باید بین آن‌ها انتخاب کند
  • Tabs — وقتی کاربر باید بین view های موازی ناوبری کند، نه فقط محتوا را مخفی/نمایان کند