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 تازه همان ظاهر را ببیند.