Skip to content

Vanilla / Web Components ​

sh
npm install @jalali-js/web

@jalali-js/web به فریم‌ورک نیاز ندارد. Web Components ساده (custom element) می‌فرستد، پس در HTML و JavaScript ساده کار می‌کند، و مثل هر عنصر HTML دیگر در React، Vue، Svelte، Angular یا هر فریم‌ورک دیگر می‌نشیند.

<jalali-calendar>: پریمیتیو بدون ظاهر ​

شبکه ماه با ویژگی‌های data-jalali-calendar-* و بدون CSS اجباری.

html
<jalali-calendar id="cal" system="jalali" locale="en"></jalali-calendar>
<script type="module">
  import '@jalali-js/web';

  const cal = document.getElementById('cal');
  cal.addEventListener('select', (event) => {
    console.log(event.detail.date);
  });
</script>

system، locale و quick-nav ویژگی‌های HTML ساده هستند. .value (انتخاب جاری، یا null) فقط property است، چون CalendarDate به‌صورت رشته ویژگی ساده قابل نمایش نیست.

<jalali-date-picker>: انتخابگر کارآمد با ظاهر پیش‌فرض ​

html
<jalali-date-picker id="picker" system="jalali" locale="fa"></jalali-date-picker>
<script type="module">
  import '@jalali-js/web/date-picker.css';
  import '@jalali-js/web';

  document.getElementById('picker').addEventListener('change', (event) => {
    // event.detail: { value, date }. value: مقدار ذخیره (پیش‌فرض ISO میلادی)؛ ببینید
    // «مقدار نمایشی در برابر مقدار ذخیره‌سازی». date: CalendarDate خام.
  });
</script>

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

html
<jalali-date-picker system="jalali" locale="en" variant="dropdown"></jalali-date-picker>

شخص می‌تواند ماه یا سال سربرگ پاپ‌آپ شبکه را کلیک کند تا مستقیم به شبکه ماه یا شبکه سال برود، به‌جای ورق زدن ماه به ماه. این به‌صورت پیش‌فرض روشن است؛ برای خاموش کردن quick-nav="false" بگذارید. برای بدون انتخاب اولیه .defaultDate = null بگذارید (یک property، نه attribute)، تا انتخابگر خالی باز شود و جایگاه‌نما را نشان دهد تا کسی تاریخ انتخاب کند؛ اگر نگذارید تاریخ امروز است.

فهرست کامل property و رویداد: JalaliDatePickerElement.

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

@jalali-js/ui-web عناصر <jalali-range-picker>، <jalali-event-calendar> و <jalali-inline-calendar> را روی همان پریمیتیوها اضافه می‌کند؛ ببینید پیکربندی و قالب ظاهری و تقویم رویداد.

sh
npm install @jalali-js/ui-web
html
<jalali-inline-calendar system="jalali" locale="en"></jalali-inline-calendar>
<jalali-range-picker system="jalali" locale="en"></jalali-range-picker>
<jalali-event-calendar system="jalali" locale="en"></jalali-event-calendar>
<script type="module">
  import '@jalali-js/ui-web';
</script>

جدول‌های attribute و property ​

ویژگی‌های بولی با حضور روشن می‌شوند. برای خاموش کردن "false" بگذارید. اشیاء (rules، defaultDate، events) فقط property جاوااسکریپت هستند.

<jalali-date-picker> ​

نامنوعپیش‌فرضمعنا
systemattrjalaliتقویم نمایش
localeattrenزبان UI
variantattrgridgrid یا dropdown
precisionattrdatedate یا datetime
minute-stepattr1گام دقیقه
disabled-hoursattr-ساعت‌های جداشده با ویرگول
value-formatattrgregorian-isoشکل ذخیره
placeholderattrبسته زبانمتن ورودی خالی
quick-navattrروشنشبکه‌های پرش ماه و سال
show-holidaysattrخاموشعلامت تعطیلات
block-holidaysattrخاموشمسدود کردن تعطیلات
holiday-regionattrIRبسته تعطیلات
defaultDatepropامروزانتخاب اولیه. null خالی است
rulesprop-حد انتخاب
valueprop-گرفتن یا گذاشتن انتخاب (set رویداد نمی‌فرستد)
changeevent-{ value, date }

<jalali-calendar> / <jalali-inline-calendar> ​

نامنوعپیش‌فرضمعنا
systemattrjalaliتقویم نمایش
localeattrenزبان UI
quick-navattrروشنشبکه‌های پرش ماه و سال
show-holidaysattrخاموشعلامت تعطیلات
block-holidaysattrخاموشمسدود کردن تعطیلات
holiday-regionattrIRبسته تعطیلات
valuepropnullروز انتخاب‌شده
rulesprop-حد انتخاب
initialDisplayedMonthprop-ماه باز شدن
selectevent-{ date }

<jalali-time-picker> ​

نامنوعپیش‌فرضمعنا
localeattrenزبان رقم‌ها
minute-stepattr1گام گزینه‌های دقیقه
disabled-hoursattr-ساعت‌های جداشده با ویرگول
valuepropنیمه‌شبزمان جاری
changeevent-{ time }

<jalali-range-picker> ​

نامنوعپیش‌فرضمعنا
system / locale / value-format / placeholderattrمثل انتخابگر تاریخویژگی‌های مشترک
show-holidays / block-holidays / holiday-regionattrخاموش / خاموش / IRپرچم‌های تعطیلات
defaultRangeprop-بازه اولیه
rulesprop-حد روز و بازه
changeevent-{ value, range }

<jalali-time-range-picker> ​

نامنوعپیش‌فرضمعنا
localeattrenزبان رقم‌ها
minute-stepattr1گام دقیقه
disabled-hoursattr-ساعت‌های جداشده با ویرگول
defaultRangeprop09:00 تا 17:00بازه اولیه
changeevent-{ range }

<jalali-event-calendar> ​

نامنوعپیش‌فرضمعنا
systemattrjalaliتقویم نمایش
localeattrenزبان UI
viewattrmonthmonth، week، day، یا timeline
timelineprop-گزینه‌های timeline (layout و مانند آن)
eventsprop[]رویدادها برای چیدمان
initialDisplayedMonthprop-لنگر ماه
initialDatepropامروزلنگر هفته یا روز
event-clickevent-{ event }
day-clickevent-{ date }

عمداً بدون shadow DOM ​

این عنصرها در light DOM رندر می‌شوند: بدون attachShadow()، بدون مرز encapsulation. همین باعث می‌شود @jalali-js/web/date-picker.css (و قالب‌های compact/dark از @jalali-js/ui-web/themes) دقیقاً همان stylesheetهایی باشند که بایندینگ‌های React و Vue به کار می‌برند، و همان ویژگی‌های [data-jalali-*] را از هر دو مسیر قالب دهند. تیمی که از قبل یکی از آن قالب‌ها را در React و Vue اجرا می‌کند می‌تواند یک <jalali-date-picker> را در صفحه HTML ساده، یا در فریم‌ورکی که این پروژه برایش بایندینگ اختصاصی ندارد، بگذارد و با صفر CSS تازه همان ظاهر را ببیند.