Skip to content

React

sh
npm install @jalali-js/react

useCalendar()

هوک سطح پایین: وضعیت date، format() بسته‌شده به زبان خود هوک، و isLeapYear() / daysInMonth() / today() سامانه تقویم. بقیه این بسته روی آن یا روی همان ابتدایی‌هایی که می‌پوشاند ساخته شده است.

tsx
import { useCalendar } from '@jalali-js/react';

function Summary() {
  const jalali = useCalendar({ system: 'jalali', locale: 'fa' });
  return <p>امروز: {jalali.format(jalali.today(), { style: 'long', weekday: true })}</p>;
}

ورودی { system?, locale?, initialDate? }، خروجی { date, setDate, format, today, isLeapYear, daysInMonth, locale }. امضای کامل: مرجع API.

Calendar: ابتدایی بدون ظاهر

شبکه ماه با ویژگی‌های data-jalali-calendar-* و بدون CSS اجباری. DatePicker (پایین) همین مؤلفه با stylesheet پیش‌فرض و popover دور آن است؛ برای شبکه همیشه دیده‌شده، یا برای ساختن popover یا dialog خودتان دور آن، مستقیم Calendar را به کار ببرید.

tsx
import { Calendar } from '@jalali-js/react';

<Calendar system="jalali" locale="en" value={selected} onSelect={setSelected} />;

یک render prop با نام day نشانه‌گذاری سلول را یکسره عوض می‌کند، اگر ویژگی‌های data به‌تنهایی کنترل کافی ندهند.

DatePicker: انتخابگر کارآمد با ظاهر پیش‌فرض

tsx
import '@jalali-js/react/date-picker.css';
import { DatePicker } from '@jalali-js/react';

<DatePicker
  system="jalali"
  locale="fa"
  valueFormat="gregorian-iso" // پیش‌فرض؛ «مقدار نمایش در برابر مقدار ذخیره» را ببینید
  onChange={(value, date) => {
    /* value: مقدار ذخیره؛ date: CalendarDate خام */
  }}
/>;

variant="dropdown" پاپ‌آپ شبکه تقویم را با سه <select> ساده سال/ماه/روز عوض می‌کند، برای ورود بازه شناخته‌شده باریک مثل تاریخ تولد:

tsx
<DatePicker system="jalali" locale="en" variant="dropdown" />

در پاپ‌آپ شبکه (و مستقیم در Calendar)، شخص می‌تواند ماه یا سال سربرگ را کلیک کند تا مستقیم به شبکه ماه یا شبکه سال برود، به‌جای ورق زدن ماه به ماه. این به‌صورت پیش‌فرض روشن است؛ برای خاموش کردن quickNav={false} بدهید. برای بدون انتخاب اولیه defaultDate={null} بدهید، تا انتخابگر خالی باز شود و جایگاه‌نما را نشان دهد تا کسی تاریخ بگزیند.

فهرست کامل prop: DatePickerProps.

useResolvedTimeZone()

با تقویم 'zoned-datetime' و timeZone: 'auto' زیر SSR جفت می‌شود. رندر سرور (و اولین رندر هیدراسیون کلاینت) همیشه 'UTC' می‌خواند، چون هنوز window نیست؛ این هوک پس از mount منطقه زمانی واقعی مرورگر را دوباره حل می‌کند، بدون هشدار هیدراسیون.

tsx
import { useResolvedTimeZone } from '@jalali-js/react';

function Clock() {
  const timeZone = useResolvedTimeZone('auto');
  return <p>{timeZone}</p>; // هنگام SSR برابر 'UTC'، پس از mount منطقه واقعی
}

انتخابگر بازه، تقویم رویداد، و تقویم درون‌خطی

@jalali-js/ui-react مقادیر RangePicker، EventCalendar و InlineCalendar را روی همان ابتدایی‌ها اضافه می‌کند؛ ببینید پیکربندی و قالب ظاهری و تقویم رویداد.

sh
npm install @jalali-js/ui-react
tsx
import { EventCalendar, InlineCalendar, RangePicker } from '@jalali-js/ui-react';

<InlineCalendar system="jalali" locale="en" value={selected} onSelect={setSelected} />
<RangePicker system="jalali" locale="en" onChange={(value, range) => { /* ... */ }} />
<EventCalendar system="jalali" locale="en" events={events} onEventClick={setActive} />

جدول‌های prop

با منبع هم‌خوانی شده. نوع‌ها کوتاه شده‌اند. امضاهای کامل در مرجع API هستند.

DatePicker

Propنوعپیش‌فرضمعنا
system'jalali' | 'gregorian''jalali'تقویم نمایش
locale'en' | 'fa' | 'ps''en'زبان UI
defaultDateCalendarDate | CalendarDateTime | nullامروزانتخاب اولیه. null خالی است
precision'date' | 'datetime''date'فقط روز، یا روز به‌همراه زمان
minuteStepnumber1گام دقیقه وقتی precision برابر datetime است
disabledHoursnumber[]-ساعت‌های پنهان ۰ تا ۲۳
quickNavbooleantrueشبکه‌های پرش ماه و سال
onChange(value, date) => void-مقدار ذخیره و تاریخ خام
valueFormatValueFormat'gregorian-iso'شکل value ذخیره
displayFormatFormatOptions-قالب متن ورودی
variant'grid' | 'dropdown''grid'popover شبکه یا selectهای Y/M/D
rulesSelectionRules-حداقل/حداکثر و روزهای مسدود
showHolidaysbooleanfalseعلامت تعطیلات (جلالی)
blockHolidaysbooleanfalseمسدود کردن تعطیلات (جلالی)
holidayRegion'IR' | 'AF' | 'TJ''IR'بسته تعطیلات
placeholderstringبسته زبانمتن ورودی خالی
classNamestring-کلاس ریشه

Calendar / InlineCalendar

Propنوعپیش‌فرضمعنا
systemCalendarSystem'jalali'تقویم نمایش
localeLocaleCode'en'زبان UI
valueCalendarDate | nullnullروز انتخاب‌شده
onSelect(date) => void-روز انتخاب شد
initialDisplayedMonth{ year, month }value یا امروزماه باز شدن
quickNavbooleantrueشبکه‌های پرش ماه و سال
rulesSelectionRules-حداقل/حداکثر و روزهای مسدود
showHolidaysbooleanfalseعلامت تعطیلات
blockHolidaysbooleanfalseمسدود کردن تعطیلات
holidayRegionHolidayRegion'IR'بسته تعطیلات
classNamestring-کلاس ریشه

TimePicker

Propنوعپیش‌فرضمعنا
valueTimeOfDay-زمان کنترل‌شده
defaultValueTimeOfDay{ hour: 0, minute: 0 }دانه بدون کنترل
minuteStepnumber1گام گزینه‌های دقیقه
disabledHoursnumber[]-ساعت‌های پنهان
localeLocaleCode'en'زبان رقم‌ها
onChange(time) => void-زمان عوض شد
classNamestring-کلاس ریشه

RangePicker (@jalali-js/ui-react)

Propنوعپیش‌فرضمعنا
systemCalendarSystem'jalali'تقویم نمایش
localeLocaleCode'en'زبان UI
defaultRange{ start, end }-بازه اولیه
onChange(value, range) => void-وقتی هر دو انتها گذاشته شوند
valueFormatValueFormat'gregorian-iso'شکل ذخیره برای انتهاها
displayFormatFormatOptions-قالب متن ورودی
rulesSelectionRules-حد روز و بازه
showHolidaysbooleanfalseعلامت تعطیلات
blockHolidaysbooleanfalseمسدود کردن تعطیلات
holidayRegionHolidayRegion'IR'بسته تعطیلات
placeholderstring-متن ورودی خالی
classNamestring-کلاس ریشه

TimeRangePicker (@jalali-js/ui-react)

Propنوعپیش‌فرضمعنا
localeLocaleCode'en'زبان رقم‌ها
defaultRange{ start, end }09:00 تا 17:00بازه اولیه
minuteStepnumber1گام دقیقه برای هر دو انتها
disabledHoursnumber[]-ساعت‌های پنهان
onChange(range) => void-بازه عوض شد
classNamestring-کلاس ریشه

EventCalendar (@jalali-js/ui-react)

برای مدل رویداد ببینید تقویم رویداد. Propها: system، locale، view (month | week | day | timeline، پیش‌فرض monthevents، initialDisplayedMonth، initialDate، displayFormat، timeline (شامل layout: single | alternating | roadmaponEventClick، onDayClick، className.