پرش به مطلب اصلی

Datetime Range Picker

کامپوننت x-datetime-range-picker برای انتخاب بازه تاریخ و زمان (از - تا) در فرم‌ها با امکانات پیشرفته و قابل شخصی‌سازی استفاده می‌شود. این کامپوننت دو ورودی (from و to) را با کنترل کامل روی مقدار، بازه مجاز، فرمت، غیرفعال‌سازی، پیام‌ها و ... ارائه می‌دهد.


ویژگی‌ها

  • پشتیبانی از لیبل جداگانه برای هر ورودی (fromLabel, toLabel)
  • امکان تعیین نام جداگانه برای هر ورودی (fromName, toName) یا استفاده از یک نام پایه
  • تعیین مقدار اولیه، حداقل و حداکثر تاریخ برای هر ورودی (fromValue, toValue, fromMinDate, toMinDate, ...)
  • پشتیبانی از روزها و تاریخ‌های غیرفعال برای هر ورودی (disabledDays, fromDisabledDates, toDisabledDates)
  • قابلیت فقط‌خواندنی و غیرفعال بودن هر ورودی به صورت مستقل (fromDisabled, toDisabled)
  • تعیین فرمت نمایش (dateFormat)
  • تعیین نوع انتخاب (type: تاریخ، زمان، تاریخ‌-زمان)
  • پشتیبانی از انتخابگر زمان با گزینه‌های قابل تنظیم (timePickerOptions)
  • نمایش آیکن تقویم و دکمه پاک‌کردن مقدار برای هر ورودی (showIcon, fromClearable, toClearable)
  • پشتیبانی از پیشوند و پسوند برای هر ورودی (fromPrefix, fromSuffix, toPrefix, toSuffix)
  • امکان تعیین placeholder جداگانه برای هر ورودی (fromPlaceholder, toPlaceholder)
  • پشتیبانی از تقویم میلادی (allowGregorian)
  • امکان انتخاب یکسان بودن روز شروع و پایان (allowSameDaySelection)
  • کنترل راست‌چین یا چپ‌چین بودن (dir, textAlign)
  • امکان تایپ دستی مقدار (allowTyping)
  • نمایش پیام راهنما و پیام خطا با استایل‌های مختلف برای هر ورودی (fromMessageStyle, toMessageStyle, ...)
  • پشتیبانی از پیام راهنما هنگام غیرفعال بودن هر ورودی (fromDisabledTooltip, toDisabledTooltip)
  • شخصی‌سازی کلاس‌های CSS برای کانتینر و ردیف (containerClass, rowClass)
  • تعیین فاصله بین دو اینپوت بر اساس اولین .row والد
  • پشتیبانی از پیام راهنما کلی (hint)

ورودی‌های کامپوننت

نام پراپنوع دادهمقدار پیش‌فرضتوضیحات
namestringنام پایه فیلد (در صورت عدم تعیین fromName و toName)
fromNamestringnullنام فیلد شروع بازه
toNamestringnullنام فیلد پایان بازه
fromLabelstringnullلیبل ورودی شروع بازه
toLabelstringnullلیبل ورودی پایان بازه
fromValueCarbonnullمقدار اولیه ورودی شروع بازه
toValueCarbonnullمقدار اولیه ورودی پایان بازه
fromMinDateCarbonnullحداقل تاریخ مجاز برای شروع
toMinDateCarbonnullحداقل تاریخ مجاز برای پایان
fromMaxDateCarbonnullحداکثر تاریخ مجاز برای شروع
toMaxDateCarbonnullحداکثر تاریخ مجاز برای پایان
fromDisabledDatesarraynullآرایه‌ای از تاریخ‌های غیرفعال برای شروع (آرایه‌ای از Carbon)
toDisabledDatesarraynullآرایه‌ای از تاریخ‌های غیرفعال برای پایان (آرایه‌ای از Carbon)
disabledDaysarraynullآرایه‌ای از شماره روزهای هفته (0 تا 6) که غیرفعال هستند
fromDisabledboolfalseغیرفعال بودن ورودی شروع
toDisabledboolfalseغیرفعال بودن ورودی پایان
fromMessageStylestring"message"استایل پیام برای شروع (message, tooltip, ...)
toMessageStylestring"message"استایل پیام برای پایان (message, tooltip, ...)
fromMessageTypestring"info"نوع پیام برای شروع (info, error, success, ...)
toMessageTypestring"info"نوع پیام برای پایان (info, error, success, ...)
fromDefaultMessagestringnullپیام پیش‌فرض برای شروع
toDefaultMessagestringnullپیام پیش‌فرض برای پایان
fromClearablebooltrueامکان پاک‌کردن مقدار شروع
toClearablebooltrueامکان پاک‌کردن مقدار پایان
fromPlaceholderstring" "placeholder شروع
toPlaceholderstring" "placeholder پایان
fromPrefixstringnullپیشوند شروع
fromSuffixstringnullپسوند شروع
toPrefixstringnullپیشوند پایان
toSuffixstringnullپسوند پایان
labelSpaceReservedboolfalseآیا فضای لیبل حتی بدون مقدار رزرو شود؟
containerClassstringnullکلاس CSS سفارشی برای کانتینر
rowClassstringnullکلاس CSS سفارشی برای ردیف
idstringnullشناسه یکتا برای ورودی
classstringnullکلاس CSS سفارشی برای خود ورودی
requiredboolfalseاجباری بودن فیلد
hintstringnullپیام راهنما یا توضیح کوتاه
typestring"date"نوع انتخاب: date, time, datetime
dateFormatstringnullفرمت نمایش تاریخ/زمان (مثلاً Y/m/d H:i)
autoClosebooltrueبستن خودکار انتخابگر پس از انتخاب
allowGregorianboolfalseاجازه انتخاب تقویم میلادی
allowSameDaySelectionbooltrueاجازه انتخاب یکسان بودن روز شروع و پایان
timePickerOptionsarray-گزینه‌های انتخابگر زمان ['hours'=>true,'minutes'=>true,'seconds'=>true]
dirstring"ltr"جهت نوشتار ورودی (ltr یا rtl)
textAlignstring"left"جهت متن ورودی
showIconbooltrueنمایش آیکن تقویم
allowTypingboolfalseاجازه تایپ دستی مقدار
fromDisabledTooltipstringnullپیام راهنما هنگام غیرفعال بودن ورودی شروع
toDisabledTooltipstringnullپیام راهنما هنگام غیرفعال بودن ورودی پایان
selectableRangestringnullتعیین بازه مجاز انتخاب برای فیلد مقابل بر اساس فاصله زمانی مشخص (مثلاً فقط هر 30 روز)
هشدار

توجه داشته باشید که هرگونه تغییر در مقدار dateFormat باعث غیرفعال شدن امکان تایپ دستی می‌شود، زیرا کنترل ماسک ورودی در این حالت ممکن نیست. همچنین، با تغییر گزینه‌های timePickerOptions، فرمت تاریخ، ماسک و placeholder به‌صورت خودکار تنظیم می‌شوند و نیازی به تعیین دستی مقدار dateFormat نخواهید داشت.


مقداردهی با جاوااسکریپت

برای مقداردهی یا تغییر مقدار هر یک از اینپوت‌های کامپوننت x-datetime-range-picker به صورت داینامیک با جاوااسکریپت، می‌توانید از متد زیر استفاده کنید:

$("#date-selector-create").setValue({from: ... , to: ...});
  • اگر مقدار ورودی رشته تاریخ باشد، به صورت خودکار به timestamp تبدیل می‌شود.
  • مقدار جدید در اینپوت قرار گرفته و مقدار پیش‌فرض (برای ریست) نیز به‌روزرسانی می‌شود.
  • اگر مقدار جدید خارج از بازه مجاز انتخاب باشد، مقدار اینپوت تغییر نخواهد کرد.
  • برای پاک کردن مقدار هر فیلد، کافی است آن را برابر با null قرار دهید (مثلاً {from: null} یا {to: null}).

تغییر بازه زمانی قابل انتخاب با جاوااسکریپت

برای تغییر بازه زمانی کامپوننت x-datetime-range-picker به صورت داینامیک با جاوااسکریپت، می‌توانید از متد زیر استفاده کنید:

$("#date-selector-create").setRange({fromMinDate:"1403/01/01",fromMaxDate:"1403/06/01",toMinDate:"1403/04/01",toMaxDate:"1403/09/01"});
// یا مقدار unix
$("#date-selector-create").setRange({fromMinDate:1700000000,fromMaxDate:1710000000,toMinDate:1715000000,toMaxDate:1752000000});

مثال‌ها

نمونه پایه

<x-datetime-range-picker
containerClass="mt-5"
id="date-selector-range"
from-name="created_at_from"
to-name="created_at_to"
name="created_at"
fromLabel="تاریخ ایجاد از"
toLabel="تاریخ ایجاد تا"
autoClose="true"
selectableRange="10"
:allowSameDaySelection="false"
>
</x-datetime-range-picker>