پرش به محتوا
بناBana UI

حالت نمایش

پالت رنگی

با ↑ ↓ جابه‌جا شوید و Enter را بزنید. Esc برای بستن.

Date Picker شمسی

یک <input> معمولی با data-datepicker تقویم شمسی می‌گیرد. کاربر تاریخ شمسی می‌بیند و می‌نویسد؛ اگر name داشته باشد، سرور تاریخ میلادی ISO را در همان نام دریافت می‌کند. به هر سال بین ۱ تا ۳۱۷۶ می‌شود رفت (فهرست اسکرولی سال، بدون نیاز به تایپ)، ماه و سال انتخاب‌شدنی‌اند و سه حالت (تاریخ، تاریخ و ساعت، بازه) دارد. ماژول datepicker لازم است.

انتخاب تاریخ
کد
<form data-validate ui="stack" style="max-inline-size:22rem">
  <label ui="field"><span>تاریخ تحویل</span><input name="delivery" data-datepicker required data-min="1405/01/01" data-max="1406/12/29"><small>بین ۱۴۰۵/۰۱/۰۱ و ۱۴۰۶/۱۲/۲۹</small></label>
  <label ui="field"><span>تاریخ تولد (اختیاری)</span><input name="birth" data-datepicker data-nav="dropdowns" value="1375/04/15"></label>
  <label ui="field"><span>تاریخ و ساعت</span><input name="meeting" data-datepicker data-mode="datetime"></label>
  <label ui="field"><span>بازهٔ رزرو</span><input name="stay" data-datepicker data-mode="range"></label>
  <button ui="primary" type="submit">ثبت</button>
</form>
گزینه‌های پیشرفته
کد
<form ui="stack" style="max-inline-size:22rem">
  <label ui="field"><span>تاریخ تولد</span><input name="b2" data-datepicker data-start-view="years" data-year-shortcuts="18,25,40,60"></label>
  <label ui="field"><span>چند تاریخ (حداکثر ۴)</span><input name="m2" data-datepicker data-mode="multiple" data-max-count="4"></label>
  <label ui="field"><span>بازه با میان‌بُر</span><input name="r2" data-datepicker data-mode="range"></label>
  <label ui="field"><span>رویداد و تعطیل</span><input name="e2" data-datepicker data-week-numbers data-gregorian data-marks="1405/08/10:جلسه" data-holidays="1405/08/05:تعطیل نمونه"></label>
</form>

تاریخ را تایپ کنید (ارقام فارسی، عربی یا انگلیسی؛ جداکننده / یا -) یا تقویم را باز کنید. روی عنوان بالای تقویم بزنید تا به نمای ماه‌ها و بعد سال‌ها (۱۲ سال در هر صفحه) بروید؛ با data-nav="dropdowns" به‌جای آن یک فهرست ماه و یک فیلد سال می‌گیرید که هر سالی را می‌توان در آن نوشت. کلیدها: ←→ روز، ↑↓ هفته، PageUp/PageDown ماه (با Shift سال)، Enter انتخاب و Esc بستن.

صفت / APIکار
data-modedate (پیش‌فرض)، datetime (تاریخ + ساعت؛ مقدار YYYY-MM-DDTHH:mm) یا range (دو فیلد name_start و name_end).
data-min / data-maxحدود مجاز؛ شمسی (1405/01/01) یا میلادی (2026-03-21).
data-start-viewdays، months یا years: نمای اولِ بازشدن.
data-navdrill (پیش‌فرض) یا dropdowns.
data-week-start، data-weekendروز شروع هفته (sat، sun، mon…) و روزهای تعطیل هفتگی.
data-disable-days، data-disable-datesغیرفعال‌کردن روزهای هفته یا تاریخ‌های مشخص.
data-seconds، data-format="12"، data-minute-stepدر حالت datetime همان گزینه‌های Time Picker.
data-inlineتقویم به‌جای پاپ‌اور، همیشه در صفحه دیده شود.
data-digits="en"نمایش مقدار با ارقام انگلیسی.
data-mode="multiple"، data-max-countانتخاب چند تاریخ (مقدار ارسالی: ISOها با ویرگول).
data-year-shortcuts="18,30,60"دکمه‌های «۱۸ سال پیش» و … در نمای سال (مناسب تاریخ تولد). نمای سال یک فهرست اسکرولی است و دکمه‌های ±۱۰ و ±۱۰۰ سال دارد.
data-presetsدر حالت بازه: today,yesterday,last7,last30,thisMonth,lastMonth,thisYear,lastYear (پیش‌فرض: شش مورد اول).
data-marks، data-holidays1405/08/10:برچسب, 1405/08/13 — نقطهٔ رویداد و رنگ تعطیل.
data-week-numbers، data-gregorianستون شمارهٔ هفته و روز میلادی کوچک در هر خانه.
data-input="jalali"سال چهاررقمیِ ۱۷۰۰ به بالا هم شمسی خوانده شود (وگرنه میلادی فرض می‌شود).
data-today-button، data-clear-button، data-close-on-selectدکمه‌های «امروز» و «پاک‌کردن» و بسته‌شدن پس از انتخاب.
bana:date-changeرویداد با e.detail.iso، jalali و در حالت بازه start و end.
Bana.datepickeropen، close، get، set، refresh و configure / defaults برای پیش‌فرض‌های سراسری.
Bana.date.toJalali(date)تبدیل Date به {jy, jm, jd}؛ همراه با fromJalali، parse، format، monthLength و isLeap.

تغییر ظاهر و تم

ظاهر با توکن‌های CSS روی خود input یا هر والدی تنظیم می‌شود: --bana-dp-accent، -on-accent، -bg، -fg، -muted، -border، -hover، -weekend، -range، -radius، -cell-radius، -cell، -font و -shadow. برای حالت‌های آماده: data-variant (default، soft، solid، outline، minimal)، data-size (sm، md، lg)، data-shape (rounded، square، circle)، data-accent (فقط #hex، var(--x) یا oklch()) و data-class برای افزودن کلاس خودتان. نمونهٔ زنده با تغییر همهٔ این‌ها در صفحهٔ «تاریخ و ساعت» کیت ادمین است.

دقت تبدیل تاریخ.تبدیل شمسی↔میلادی در همهٔ سال‌های ۱ تا ۳۱۷۶ رفت‌وبرگشت‌پذیر است و برای ۱۱۷۸ تا ۲۱۰۰ (به‌جز ۱۵۰۳ و ۱۶۰۲ که ۲۴ ساعت با Intl فرق دارند) با Intl مقایسه می‌شود. بیرون از این بازه و در برخی سال‌های بسیار دور، الگوریتم ما و ICU یک روز اختلاف دارند؛ برای تقویم رسمی ایران پیش از ۱۱۷۸ منبع رسمی لازم است. تست مرورگر فقط در Chromium انجام شده است.

ویرایش این صفحه در GitHub