# هسته JavaScript و قراردادهای رفتاری

> آریا — مجموعه پنل مدیریت فارسی، نسخه ۱.۰  
> این سند برای توسعه‌دهنده‌ای نوشته شده که می‌خواهد بدون تغییر غیرضروری در هسته، پنل را شخصی‌سازی یا برای یک صنف تازه آماده کند.

## فایل‌های اصلی

- `core/js/app.js` — منو، هدر، تم، تنظیم ظاهر، میانبر صفحات، اجزاء عمومی، جدول و فرم‌های عمومی.
- `core/js/phase7.js` — جدول داده پیشرفته، خروجی، نمودارهای بیرونی و نقشه‌ها.
- `industries/01-ecommerce/assets/js/ecommerce.js` — رفتارهای خاص فروشگاه.
- `industries/01-ecommerce/assets/js/apps.js` — برنامه‌های روزمره مانند ایمیل، پیام‌رسان و تقویم.

## قرارداد داده‌ای

هسته به جای وابستگی زیاد به شناسه‌های ثابت از `data-*` استفاده می‌کند. نمونه:

```html
<button type="button" data-customizer-open>تنظیم ظاهر</button>
<button type="button" data-modal-open="deleteModal">حذف</button>
<input type="search" data-table-search>
<table data-table>...</table>
```

## ذخیره محلی

`industry.storagePrefix` پیشوند کلیدهای LocalStorage را تعیین می‌کند. از کلید عمومی بدون پیشوند استفاده نکنید تا دو صنف روی یک دامنه با هم تداخل نداشته باشند.

## پیام رابط

برای عملیات رابط از Toast استفاده می‌شود. از `window.alert()` استفاده نکنید؛ پیام مسدودکننده تجربه پنل را خراب می‌کند.

## افزودن رفتار تازه

1. ابتدا یک `data-*` واضح تعریف کنید.
2. رویداد را فقط یک‌بار در تابع Init مناسب متصل کنید.
3. حالت نبود عنصر را بدون خطا تحمل کنید.
4. در پایان تابع Init تازه را به `init()` اضافه کنید.
5. رفتار را در موبایل و با صفحه‌کلید بررسی کنید.

## API فاز هفتم

برای خروجی‌ها API زیر در دسترس است:

```js
window.ARIYA_PHASE7.exportCsv(table, 'گزارش.csv');
window.ARIYA_PHASE7.exportExcel(table, 'گزارش.xls');
window.ARIYA_PHASE7.exportPdf(table, 'گزارش.pdf', 'عنوان گزارش');
```
