مرجع جاوااسکریپت
گزینههای تنظیمات، API عمومی و رویدادهای کیت.
تنظیمات#
همهٔ گزینهها در assets/js/config.js روی شیء window.MN_CONFIG نوشته میشوند. گزینهای که ننویسید مقدار پیشفرض را میگیرد.
| گزینه | پیشفرض | توضیح |
|---|---|---|
demo | true | حالت نمایشی بدون سرور؛ در انتشار false شود |
demoPassword | "Mehman123" | رمز ورود در حالت نمایشی |
demoCode | "123456" | کد تأیید در حالت نمایشی |
api | شیء | نشانی سرویسها؛ کلیدها در [اتصال به بکاند](backend.html#setup) |
social.google / social.apple | "" | نشانی شروع ورود اجتماعی |
csrf.meta / csrf.header | csrf-token / X-CSRF-Token | نام تگ meta و هدر درخواست |
credentials | "same-origin" | مقدار credentials در fetch |
otpResendSeconds | 60 | مدت انتظار برای ارسال دوبارهٔ کد (ثانیه) |
maxDemoAttempts | 3 | تعداد تلاش ناموفق ورود در حالت نمایشی پیش از قفل |
lockedUrl | "locked.html" | صفحهٔ مقصد هنگام پاسخ 423 یا قفل نمایشی |
شیء Mehmannavaz#
پس از بارگذاری mehmannavaz.js، شیء سراسری Mehmannavaz در دسترس است:
| عضو | توضیح |
|---|---|
Mehmannavaz.version | نسخهٔ کیت |
Mehmannavaz.config | تنظیمات نهایی پس از ادغام با مقدارهای پیشفرض |
Mehmannavaz.toast(message, type) | نمایش تاست؛ type برابر "ok" (پیشفرض) یا "err" |
Mehmannavaz.request(key, payload) | ارسال POST JSON به یکی از کلیدهای api (یا نشانی کامل) با همان هدرها و CSRF؛ Promise<{ ok, status, data }> برمیگرداند |
Mehmannavaz.addRule(name, fn) | تعریف یا جایگزینی قاعدهٔ اعتبارسنجی |
تابع toast بهصورت window.toast هم در دسترس است تا در صفتهایی مثل onclick قابل استفاده باشد.
const res = await Mehmannavaz.request("login", { email, password });
if (res.ok) location.href = res.data.next || "/dashboard";
else Mehmannavaz.toast(res.data.message || "خطا", "err");رویدادها#
رویدادها روی document منتشر میشوند و نام آنها با mn: شروع میشود:
| رویداد | زمان | `event.detail` |
|---|---|---|
mn:success | پس از پاسخ موفق یا تأیید موفق کد، پیش از رفتن به صفحهٔ بعد | { form, endpoint, data } |
mn:error | پس از پاسخ خطا از سرور | { form, endpoint, status, data } |
form برای فرمها خود <form> و برای کد یکبارمصرف عنصر .otp است؛ endpoint برای کد یکبارمصرف "verifyOtp" است. در حالت نمایشی هم رویدادها منتشر میشوند.
document.addEventListener("mn:error", e => {
console.warn(e.detail.endpoint, e.detail.status, e.detail.data);
});ذخیرهسازی#
کیت فقط یک کلید در localStorage مینویسد: mn-theme با مقدار light یا dark. اگر مرورگر ذخیرهسازی را مسدود کرده باشد (مثلاً حالت خصوصی)، همهٔ بخشها بدون آن کار میکنند و فقط انتخاب تم بهخاطر سپرده نمیشود.