تقویم رویدادها

event-calendarکامپوننت تقویم

تقویم کامل با نمای ماه، هفته، روز و فهرست، نوار ابزار مشترک و تعطیلات رسمی ایران، مثل تقویم گوگل ولی راست‌چین و شمسی.

مهر ۱۴۰۵

ربیع‌الثانی – جمادی‌الاول ۱۴۴۸

۲۸۷
۲۹۸
۳۰۹
۳۱۱۰
۱۱۱
۲۱۲
۳۱۳
۴۱۴
۵۱۵
۶۱۶
۷۱۷
۸۱۸
۹۱۹
۱۰۲۰
۱۱۲۱
۱۲۲۲
۱۳۲۳
۱۴۲۴
۱۵۲۵
۱۶۲۶
۱۷۲۷
۱۸۲۸
۱۹۲۹
۲۰۱
۲۱۲
۲۲۳
۲۳۴
۲۴۵
۲۵۶
۲۶۷
۲۷۸
۲۸۹
۲۹۱۰
۳۰۱۱
۱۱۲
۲۱۳
۳۱۴
۴۱۵
۵۱۶
۶۱۷
۷۱۸
۸۱۹

روی زمان خالی در نمای هفته بکشید تا رویداد بسازید، یا رویدادی را جابه‌جا کنید.

نصب

  1. با CLI

    اگر هنوز init نکردید، اول از راهنمای نصب پروژه را آماده کنید. بعد این دستور کامپوننت و وابستگی‌هاش را می‌نویسه.

    $ npx vibefarsi add event-calendar
  2. نصب دستی

    محتوای تب «کد» را در components/calendar/event-calendar.tsx بگذارید. پیش‌نیاز: calendar-core، month-view، time-grid، agenda-view، segmented-control.

    $ npm i lucide-react
    کپی کل فایلregistry json

استفاده

usage.tsx
1import { EventCalendar } from "@/components/calendar/event-calendar"23const [events, setEvents] = useState<CalendarEvent[]>(initial)45<EventCalendar6  events={events}7  defaultView="week"8  onSlotSelect={(start, end) => openNewEventDialog(start, end)}9  onEventClick={(e) => openEvent(e.id)}10  onEventChange={(e, start, end) =>11    setEvents((list) => list.map((x) => (x.id === e.id ? { ...x, start, end } : x)))12  }13/>

پراپ‌ها

پراپنوعپیش‌فرضتوضیح
eventsCalendarEvent[]-هر رویداد id، title، start و end داره و allDay، color (۱ تا ۷ یا رنگ CSS) و location اختیاریه.
view / defaultView"month" | "week" | "day" | "agenda""month"نمای فعلی، کنترل‌شده یا آزاد.
viewsCalendarView[]-نماهایی که سوییچ نشون میده. اگه فقط یکی بدید، سوییچ پنهان میشه.
onSlotSelect(start, end) => void-بعد از کشیدن روی زمان خالی در نمای هفته یا روز صدا زده میشه.
onEventChange(event, start, end) => void-کشیدن و تغییر اندازه‌ی رویداد را روشن می‌کنه. state را خودتون به‌روز کنید.
startHour / endHour / slotMinutesnumber7 / 22 / 30ساعت‌های نمایش داده‌شده و گام چسبیدن.
occasions / secondary / weekend / timeZone…-مثل CalendarProvider.

نکته‌ها

  • کلیک روی یک روز در نمای ماه همون روز را در نمای روز باز می‌کنه، مگه این‌که onDayClick بدید.
  • هر نما جدا هم کامپوننت خودشه، پس اگه فقط نمای ماه لازم دارید MonthView را نصب کنید.