توابع کمکی JavaScript
این صفحه فقط helperهایی را پوشش میدهد که برای مصرفکنندهی Doravel در توسعهی صف حه، فرم، تعاملات UI و تجربهی کاربری مفید هستند. توابع داخلی که بیشتر برای توسعهی خود پکیج یا زیرساخت کامپوننتها استفاده میشوند، عمدا در اینجا مستند نشدهاند.
راهاندازی و ابزارهای عمومی
doravel.ready
کدی را بعد از آمادهشدن DOM اجرا میکند. اگر zone بدهید، callback فقط وقتی اجرا میشود که آن selector داخل context وجود داشته باشد.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
callback | function | تابعی که بعد از آمادهشدن DOM اجرا میشود |
zone | string | undefined | selector اختیاری برای محدودکردن محل اجرا |
نوع خروجی: void
نمونه خروجی: callback فقط بعد از آمادهشدن DOM و در صورت وجود .x-panel اجرا میشود.
doravel.ready((context) => {
$(".x-number-input-component .number-input", context).each((index, input) => {
new NumberInputController(input);
});
}, ".x-panel");
delay
یک Promise برمیگرداند تا بتوانید اجرای بخشی از کد را به تاخیر بیندازید.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
ms | number | مدت تاخیر بر حسب میلیثانیه |
نوع خروجی: Promise<void>
نمونه خروجی: ادامه اجرای کد پس از 500 میلیثانیه انجام میشود.
await delay(500);
showToast("success", "اطلاعات بروزرسانی شد");
debounce
برای جلوگیری از اجرای پشتسرهم یک تابع در رویدادهایی مثل input یا keyup.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
func | function | تابع اصلی |
wait | number | فاصلهی زمانی بین اجراها |
نوع خروجی: function
نمونه خروجی: تابع searchUsers فقط 400ms بعد از توقف تایپ اجرا میشود.
const searchUsers = debounce(() => {
console.log("search...");
}, 400);
$("#search").on("input", searchUsers);
generateUUID
یک شناسهی یکتا برای use-caseهای سمت کاربر مثل ساخت ردیف موقت یا کلید آیتمهای داینامیک تولید میکند.
پارامترها:
ندارد
نوع خروجی: string
نمونه خروجی: f65c57f6-a6aa-4b5d-9f4a-1c5b6e3f8a12
const rowId = generateUUID();
mergeRecursive
دو آبجکت یا آرایه را به صورت بازگشتی با هم ادغام میکند.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
target | object | array | مقدار پایه |
source | object | array | مقدار جدید برای ادغام |
نوع خروجی: object | array
نمونه خروجی: { modal: { size: "md", centered: true }, tags: ["base", "custom"] }
const defaults = { modal: { size: "md" }, tags: ["base"] };
const options = { modal: { centered: true }, tags: ["custom"] };
const result = mergeRecursive(defaults, options);
ترجمه و تبدیل داده
__
کلید ترجمه را از doravel.translations میخواند و placeholderها را جایگزین میکند.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
key | string | کلید ترجمه |
attributes | object | مقادیر placeholderها |
نوع خروجی: string
نمونه خروجی: "این فیلد الزامی است" و "12 کاراکتر"
__("validation.required");
__("text_area.character_count", { count: 12 });
replacePersianDigits
اعداد فارسی و عربی را به اعداد انگلیسی تبدیل میکند.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
value | string | متن ورودی |
نوع خروجی: string
نمونه خروجی: "12345"
replacePersianDigits("۱۲۳۴۵"); // "12345"
convertAmountToText
عدد را به متن فارسی تبدیل میکند. برای نمایش مبلغ کنار فیلدهای عددی مناسب است.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
amount | number | مبلغ عددی |
suffix | string | پسوند پولی مثل تومان |
نوع خروجی: string | false
نمونه خروجی: "یک میلیون و دوی ست و پنجاه هزار تومان"
convertAmountToText(1250000); // "یک میلیون و دویست و پنجاه هزار تومان"
getFormElementValueText
متن نمایشی یک مقدار را از روی input/select/radio/checkbox پیدا میکند؛ مثلا وقتی لازم دارید به جای value، label را نمایش دهید.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
name | string | نام فیلد |
value | string | number | مقدار فیلد |
form | string | jQuery | null | فرم هدف برای جستجوی محدود |
نوع خروجی: string
نمونه خروجی: "ایران"
getFormElementValueText("country", "ir", "#profile-form");
پیامها و بازخورد کاربر
showAlert
یک alert مبتنی بر SweetAlert2 نمایش میدهد.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
type | string | نوع پیام مثل success یا error |
message | string | متن پیام |
title | string | null | عنوان اختیاری |
options | object | تنظیمات اضافی SweetAlert2 |
نوع خروجی: Promise
نمونه خروجی: یک modal موفقیت با عنوان ثبت موفق و متن اطلاعات با موفقیت ذخیره شد نمایش داده میشود.
showAlert("success", "اطلاعات با موفقیت ذخیره شد", "ثبت موفق");
showToast
برای اعلانهای کوتاه و غیرمزاحم.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
type | string | نوع اعلان |
message | string | متن اعلان |
title | string | null | عنوان اختیاری |
options | object | تنظیمات toastr |
نوع خروجی: void
نمونه خروجی: یک toast هشدار با متن مقدار این فیلد تغییر کرد نمایش داده میشود.
showToast("warning", "مقدار این فیلد تغییر کرد");
showConfirmationMessage
یک دیالوگ تایید نمایش میدهد و callbackهای onConfirm و onCancel میگیرد.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
config | object | تنظیمات پنجره تایید شامل title، text، type و callbackها |
نوع خروجی: Promise
نمونه خروجی: یک دیالوگ تایید حذف باز میشود و در صورت تایید، فرم #delete-form submit میشود.
showConfirmationMessage({
title: "حذف رکورد",
text: "این عملیات قابل بازگشت نیست.",
type: "danger",
onConfirm: () => $("#delete-form").submit(),
});
showComponentMessage
برای نمایش پیام روی یک کامپوننت فرم. بسته به style میتواند پیام را به صورت inline، tooltip، toast یا alert نشان دهد.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
config | object | شامل type, style, targetElement, message, title, formValidation |
نوع خروجی: void
نمونه خروجی: پیام خطای شماره موبایل نامعتبر است. کنار فیلد mobile نمایش داده میشود.
showComponentMessage({
type: "error",
style: "message",
targetElement: "mobile",
message: "شماره موبایل نامعتبر است.",
formValidation: true,
});
clearComponentMessage
پیام قبلی یک فیلد را پاک میکند.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
targetElement | string | HTMLElement | jQuery | فیلد یا selector هدف |
formValidation | boolean | null | محدودکردن پاکسازی به پیامهای validation |
نوع خروجی: void
نمونه خروجی: پیام خطا یا راهنمای قبلی از فیلد #mobile حذف میشود.
clearComponentMessage("#mobile");
clearFormMessages
تمام پیامهای فرم را پاک میکند.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
form | string | HTMLElement | jQuery | فرم هدف |
نوع خروجی: void
نمونه خروجی: همه پیامهای نمایشدادهشده در فرم #profile-form پاک میشوند.
clearFormMessages("#profile-form");
لودینگ، وضعیت فرم و اع تبارسنجی
toggleButtonLoading
وضعیت loading دکمههای Doravel را روشن یا خاموش میکند.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
targetElement | string | HTMLElement | jQuery | دکمه هدف |
isLoading | boolean | null | روشن یا خاموشکردن loading |
text | string | متن نمایشدادهشده هنگام loading |
نوع خروجی: void
نمونه خروجی: دکمه #submit-button غیرفعال میشود، loader نمایش داده میشود و متن آن به حالت پردازش تغییر میکند.
toggleButtonLoading("#submit-button", true);
toggleFormElementLoading
روی یک فیلد فرم spinner میگذارد و آن را موقتا غیرفعال میکند.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
targetElement | string | HTMLElement | jQuery | فیلد هدف |
isLoading | boolean | null | روشن یا خاموشکردن loading |
نوع خروجی: void
نمونه خروجی: روی فیلد #city_id اسپینر نمایش داده میشود و فیلد موقتا غیرفعال میشود.
toggleFormElementLoading("#city_id", true);
toggleLoading
برای نمایش loading روی یک container یا section کامل.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
targetElement | string | HTMLElement | jQuery | ناحیه هدف |
isLoading | boolean | null | روشن یا خاموشکردن loading |
نوع خروجی: void
نمونه خروجی: روی ناحیه #users-table-wrapper overlay لودینگ نمایش داده میشود.
toggleLoading("#users-table-wrapper", true);
validateForm
اعتبارسنجی کل فرم با jQuery Validate.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
formSelector | string | jQuery | فرم هدف |
نوع خروجی: void
نمونه خروجی: فرم validate میشود و خطاهای فیلدهای نامعتبر نمایش داده میشوند.
validateForm("#create-user-form");
validateField
فقط یک فیلد را validate میکند.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
fieldSelector | string | jQuery | فیلد هدف |
نوع خروجی: void
نمونه خروجی: فقط فیلد #email بررسی میشود و در صورت خطا پیام آن نمایش داده میشود.
validateField("#email");
triggerOnChange
وقتی یک فیلد تغییر میکند، فیلدهای وابسته را دوباره trigger و در صورت نیاز validate میکند. برای فرمهای وابسته بسیار کاربردی است.
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
elementId | string | شناسه فیلد اصلی |
dependentElementIds | string | array | شناسه یا لیست شناسههای وابسته |
callback | function | undefined | callback اختیاری بعد از trigger |
نوع خروجی: void
نمونه خروجی: با تغییر province_id، فیلدهای city_id و district_id دوباره change میخورند و در صورت نیاز validate میشوند.
triggerOnChange("province_id", ["city_id", "district_id"]);