Skip to content

@doranjs/wc

Web Componentهای مستقل از framework (custom elementها) — دوران را در HTML ساده، یا با Vue، Svelte، Angular یا هر frameworkی به‌کار ببرید.

نصب (bundler)

ts
import '@doranjs/wc'; // elementها را به‌صورت خودکار register می‌کند
import '@doranjs/wc/styles.css'; // tokenها + استایل کامپوننت‌ها در یک فایل

از CDN (بدون build step)

html
<link rel="stylesheet" href="https://unpkg.com/@doranjs/wc/dist/styles.css" />
<script src="https://unpkg.com/@doranjs/wc/dist/doran.global.js"></script>

Elementها

Tagتوضیح
<doran-calendar>تقویم کامل ماه با انتخابگر ماه/سال/ساعت
<doran-datepicker>ورودی همراه با تقویم pop-over
<doran-rangepicker>انتخاب بازهٔ تاریخ با دو کلیک
<doran-nlp-input>ورودیِ زبان طبیعی با autocomplete + راهنما
html
<doran-calendar show-holidays value="1405/03/12" header-mode="dropdown"></doran-calendar>
<doran-datepicker with-time placeholder="تاریخ و ساعت"></doran-datepicker>
<doran-rangepicker show-holidays></doran-rangepicker>
<doran-nlp-input value="جمعه ساعت ۷ شب"></doran-nlp-input>

Attributeها

AttributeElementهاتوضیح
valuecalendar، datepicker، nlp-inputYYYY/MM/DD (یا متن خام برای nlp-input)
min / maxcalendar، datepickerکران‌های قابل انتخاب
localeهمهfa (پیش‌فرض) یا en
header-modecalendar، rangepickerdropdown (پیش‌فرض) یا separate
with-timecalendar، datepickerفعال‌سازی انتخابگر ساعت
show-holidayscalendar، datepicker، rangepickerنشانه‌گذاری تعطیلات رسمی
weekendscalendar، rangepickerاندیس روزهای هفته با کاما (6 = جمعه)
placeholderdatepicker، nlp-inputمتن placeholder
formatdatepicker، nlp-inputالگوی format برای نمایش/پیش‌نمایش
footer-actionscalendar، datepicker، rangepickerاکشن‌های مرتب با کاما/فاصله؛ مقدار خالی فوتر را پنهان می‌کند
hide-footercalendar، datepicker، rangepickerمنسوخ؛ به‌جای آن footer-actions="" را استفاده کنید
icon-positiondatepickerleft (پیش‌فرض) یا right
text-aligndatepickerright (پیش‌فرض) یا left
input-widthdatepickerعرض CSS برای trigger، مثل 18rem
dropdown-widthdatepickerauto، trigger یا عرض CSS سفارشی
disableddatepickertrigger را غیرفعال می‌کند و popover باز را می‌بندد

footer-actions="today,clear" ترتیب دکمه‌ها را دقیقاً حفظ می‌کند. «امروز» تاریخ امروز را انتخاب و رویداد change را منتشر می‌کند؛ «پاک کردن» مقدار را خالی می‌کند و detail.date/detail.iso را null می‌فرستد. RangePicker فقط اکشن clear را می‌پذیرد و آن را به‌صورت پیش‌فرض در فوتر نشان می‌دهد. footer-actions="" کل فوتر (از جمله خلاصهٔ بازه) را پنهان می‌کند. متن دکمه‌ها از locale می‌آید: fa «امروز»/«پاک کردن» و en، Today/Clear را نشان می‌دهد.

عرض dropdown-width="auto" ذاتی است، trigger عرض popover را با trigger برابر می‌کند و هر مقدار دیگر مثل 24rem به‌عنوان عرض CSS سفارشی استفاده می‌شود. وقتی disabled حاضر باشد، trigger بومیِ datepicker غیرفعال است، با کلیک باز نمی‌شود و اگر popover باز باشد بسته می‌شود.

Eventها

همهٔ elementها یک change CustomEventِ bubbling منتشر می‌کنند:

js
document.querySelector('doran-calendar').addEventListener('change', (e) => {
  console.log(e.detail.date); // DoranDate یا null پس از Clear
  console.log(e.detail.value); // رشتهٔ format‌شده
});

document.querySelector('doran-rangepicker').addEventListener('change', (e) => {
  console.log(e.detail.start, e.detail.end);
});

document.querySelector('doran-nlp-input').addEventListener('resolve', (e) => {
  console.log(e.detail.result); // ParseResult | null
});

Theming

این elementها همان class nameها و CSS variableهای کامپوننت‌های React را به‌کار می‌برند، پس مجموعهٔ کامل tokenها اعمال می‌شود. هر instance را با inline style جداگانه override کنید:

html
<doran-calendar style="--doran-day-selected-bg: #e11d48; --doran-calendar-radius: 22px">
</doran-calendar>

Released under the MIT License.