پرتوپرتو

تقویم (Calendar)

کامپوننت پایه تقویم با پشتیبانی از تقویم شمسی و میلادی

معرفی

کامپوننت Calendar یک تقویم پایه است که از تقویم شمسی (جلالی) و میلادی پشتیبانی می‌کند. این کامپوننت به‌طور مستقل یا به‌عنوان بخشی از DatePicker استفاده می‌شود.

توجه: برای اکثر موارد استفاده در فرم‌ها، کامپوننت Date Picker که لایه‌ای بر روی Calendar است، پیشنهاد می‌شود.

چه زمانی استفاده نکنیم:

  • وقتی کاربر باید تاریخ تایپ کند — از DatePicker استفاده کنید
  • برای نمایش رویدادها — Calendar فقط انتخاب تاریخ است، نه تقویم رویداد
فروردین ۱۴۰۵

استفاده

import { Calendar } from '@parto-system-design/ui'
import { useState } from 'react'

export default function MyComponent() {
  const [selected, setSelected] = useState<Date>()

  return <Calendar mode="single" selected={selected} onSelect={setSelected} />
}

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

تقویم شمسی

فروردین ۱۴۰۵

تقویم میلادی

<Calendar mode="single" usePersianCalendar={false} />

انتخاب محدوده

<Calendar mode="range" usePersianCalendar />

راهنمای استفاده

بکنید

  • از Calendar زمانی استفاده کنید که نیاز به نمایش تقویم به‌صورت inline (بدون popover) دارید - برای تقویم شمسی، usePersianCalendar={true} را فعال کنید - از mode="range" برای انتخاب بازه تاریخی استفاده کنید

نکنید

  • برای انتخاب تاریخ در فرم‌ها از Calendar مستقیماً استفاده نکنید — از DatePicker که لایه‌ای بر روی Calendar است استفاده کنید - Calendar را برای نمایش رویدادها استفاده نکنید — این کامپوننت فقط برای انتخاب تاریخ طراحی شده است - بدون تعیین mode از Calendar استفاده نکنید

جدول ویژگی‌ها

Prop

Type

دسترسی‌پذیری

  • پیمایش کامل با کیبورد (Arrow keys، Enter، Escape)
  • aria-selected برای روز انتخاب‌شده
  • aria-disabled برای روزهای غیرفعال
  • ساختار شبکه روزها با role="gridcell"

مرتبط

  • Date Picker — کامپوننت کامل انتخاب بازه تاریخ (پیشنهادی)
  • Popover — برای قرار دادن Calendar داخل popup
  • Form — برای استفاده در فرم‌ها با اعتبارسنجی

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

  • DatePicker — اگر نیاز به انتخاب تاریخ در فرم با input field و popover دارید، از DatePicker استفاده کنید
  • DateRangePicker — اگر نیاز به انتخاب بازه تاریخی با label و امکانات بیشتر دارید، از DateRangePicker استفاده کنید
  • PeriodSelector — اگر فقط نیاز به دوره‌های از پیش تعریف‌شده دارید (۷ روز، ۳۰ روز)، PeriodSelector ساده‌تر است