From f0de4789401053af5b465ed34805ffb8de021b26 Mon Sep 17 00:00:00 2001 From: "s.esmaeili" Date: Mon, 14 Sep 2026 15:09:11 +0330 Subject: [PATCH] admin-panel: fix CSS bugs and dedupe scoped grid utilities Approved departure from the port's byte-faithful rule (docs/ADMIN-PORT-PLAN.md bug rows 4-6), fixed and logged rather than silently changed: - farsi.less: bold/700 @font-face blocks now load iran-yekan-700.woff2 instead of the 400 file, so bold text actually renders bold. No source file exists for weight 300, so that face is dropped rather than faked. - format("woff") corrected to format("woff2") on all faces. - Removed 'font-weight: inherit' from the body,* reset, which was flattening every heading's weight. Also deduped 24 view files that each redeclared .grid-2/.grid-3/.grid-4 in a scoped + diff --git a/apps/admin-panel/src/views/apps/customer/ReagentCustomer.vue b/apps/admin-panel/src/views/apps/customer/ReagentCustomer.vue index 95a0599..8fc83b5 100644 --- a/apps/admin-panel/src/views/apps/customer/ReagentCustomer.vue +++ b/apps/admin-panel/src/views/apps/customer/ReagentCustomer.vue @@ -258,16 +258,8 @@ onMounted(async () => { + diff --git a/apps/admin-panel/src/views/apps/customer/singleCustomer.vue b/apps/admin-panel/src/views/apps/customer/singleCustomer.vue index 50a9521..913ac76 100644 --- a/apps/admin-panel/src/views/apps/customer/singleCustomer.vue +++ b/apps/admin-panel/src/views/apps/customer/singleCustomer.vue @@ -132,6 +132,4 @@ onMounted(async () => { }); - + diff --git a/apps/admin-panel/src/views/apps/product/AddProduct.vue b/apps/admin-panel/src/views/apps/product/AddProduct.vue index 7393364..967bf9c 100644 --- a/apps/admin-panel/src/views/apps/product/AddProduct.vue +++ b/apps/admin-panel/src/views/apps/product/AddProduct.vue @@ -352,11 +352,7 @@ onMounted(async () => { + diff --git a/apps/admin-panel/src/views/branch/AddBranches.vue b/apps/admin-panel/src/views/branch/AddBranches.vue index 5419fcd..21c51a4 100644 --- a/apps/admin-panel/src/views/branch/AddBranches.vue +++ b/apps/admin-panel/src/views/branch/AddBranches.vue @@ -113,10 +113,4 @@ onMounted(async () => { }); - + diff --git a/apps/admin-panel/src/views/city/createCity.vue b/apps/admin-panel/src/views/city/createCity.vue index 0901e6c..4614569 100644 --- a/apps/admin-panel/src/views/city/createCity.vue +++ b/apps/admin-panel/src/views/city/createCity.vue @@ -47,6 +47,4 @@ async function handleSubmit() { } - + diff --git a/apps/admin-panel/src/views/finical/addFinDoc.vue b/apps/admin-panel/src/views/finical/addFinDoc.vue index d6a64da..95d850a 100644 --- a/apps/admin-panel/src/views/finical/addFinDoc.vue +++ b/apps/admin-panel/src/views/finical/addFinDoc.vue @@ -228,10 +228,4 @@ onMounted(async () => { }); - + diff --git a/apps/admin-panel/src/views/invoice/AddInvoice.vue b/apps/admin-panel/src/views/invoice/AddInvoice.vue index c811d0d..f6001ac 100644 --- a/apps/admin-panel/src/views/invoice/AddInvoice.vue +++ b/apps/admin-panel/src/views/invoice/AddInvoice.vue @@ -181,11 +181,7 @@ onMounted(async () => { + diff --git a/apps/admin-panel/src/views/offersIgnore/offersIgnore-add-edit.vue b/apps/admin-panel/src/views/offersIgnore/offersIgnore-add-edit.vue index 90326ba..43226a4 100644 --- a/apps/admin-panel/src/views/offersIgnore/offersIgnore-add-edit.vue +++ b/apps/admin-panel/src/views/offersIgnore/offersIgnore-add-edit.vue @@ -211,11 +211,7 @@ onMounted(getData); diff --git a/apps/admin-panel/src/views/promotion/autopromotion.vue b/apps/admin-panel/src/views/promotion/autopromotion.vue index 6e2b9f4..82e8825 100644 --- a/apps/admin-panel/src/views/promotion/autopromotion.vue +++ b/apps/admin-panel/src/views/promotion/autopromotion.vue @@ -75,10 +75,4 @@ onMounted(async () => { }); - + diff --git a/apps/admin-panel/src/views/reg.vue b/apps/admin-panel/src/views/reg.vue index f8f77e7..6fefbdc 100644 --- a/apps/admin-panel/src/views/reg.vue +++ b/apps/admin-panel/src/views/reg.vue @@ -116,9 +116,5 @@ async function handleSubmit() { width: 100%; max-width: 900px; } -.grid-3 { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); - gap: 1rem; -} +/* .grid-3 now comes from the global utilities.less (dedup) */ diff --git a/apps/admin-panel/src/views/report/order_item.vue b/apps/admin-panel/src/views/report/order_item.vue index 7b5372c..8df7b42 100644 --- a/apps/admin-panel/src/views/report/order_item.vue +++ b/apps/admin-panel/src/views/report/order_item.vue @@ -87,11 +87,7 @@ onMounted(load); diff --git a/apps/admin-panel/src/views/statics/index.vue b/apps/admin-panel/src/views/statics/index.vue index 507fc85..a777d0c 100644 --- a/apps/admin-panel/src/views/statics/index.vue +++ b/apps/admin-panel/src/views/statics/index.vue @@ -87,6 +87,4 @@ onMounted(async () => { }); - + diff --git a/apps/admin-panel/src/views/user/Permission.vue b/apps/admin-panel/src/views/user/Permission.vue index 32ed7e1..a47c98c 100644 --- a/apps/admin-panel/src/views/user/Permission.vue +++ b/apps/admin-panel/src/views/user/Permission.vue @@ -207,11 +207,7 @@ onMounted(async () => { + diff --git a/docs/ADMIN-PORT-PLAN.md b/docs/ADMIN-PORT-PLAN.md index c669614..9e63914 100644 --- a/docs/ADMIN-PORT-PLAN.md +++ b/docs/ADMIN-PORT-PLAN.md @@ -132,9 +132,9 @@ OmdeArchivedList.vue 612 | 1 | `router.push` بدون `next()` داخل `beforeEach` | `router.js:198` | در Vue Router 4 روتر را قفل می‌کند. Phase 2 با `next({path:'/auth/login'})` معادل‌سازی می‌شود؛ رفتار کاربر یکسان. | | 2 | `roles` در module-scope که هنگام logout باطل نمی‌شود | `router.js:162,190` | کاربر بعدی دسترسی‌های کاربر قبلی را می‌گیرد. Phase 2 داخل store نگه داشته و روی logout پاک می‌شود. | | 3 | `token` و `user` در state به‌جای مقدار، **تابع** تعریف شده‌اند | `store/auth/moduleAuth.js` | `store.state.auth.token` همیشه truthy است، پس شرط `isLogin` در `getPermission()` بی‌اثر است. وفادار پورت می‌شود. | -| 4 | هر ۵ بلاک `@font-face` به همان `iran-yekan-400.woff2` اشاره می‌کنند | `assets/scss/ara/farsi.scss` | فایل `iran-yekan-700.woff2` وجود دارد ولی هرگز بارگذاری نمی‌شود؛ متن bold با وزن معمولی رندر می‌شود. **عیناً پورت شد.** | -| 5 | `format("woff")` برای فایل `.woff2` | `farsi.scss` | راهنمای فرمت غلط. **عیناً پورت شد.** | -| 6 | `font-weight: inherit` در ریست `body, *` | `farsi.scss` | وزن پیش‌فرض همه‌ی هدینگ‌ها (h1..h6) صاف می‌شود. **عیناً پورت شد.** | +| 4 | هر ۵ بلاک `@font-face` به همان `iran-yekan-400.woff2` اشاره می‌کنند | `assets/scss/ara/farsi.scss` | فایل `iran-yekan-700.woff2` وجود دارد ولی هرگز بارگذاری نمی‌شود؛ متن bold با وزن معمولی رندر می‌شود. **اصلاح شد (۲۰۲۶-۰۹-۱۴، طبق درخواست کاربر): وزن bold/700 اکنون به `iran-yekan-700.woff2` اشاره می‌کند.** | +| 5 | `format("woff")` برای فایل `.woff2` | `farsi.scss` | راهنمای فرمت غلط. **اصلاح شد: `format("woff2")` صحیح شد.** | +| 6 | `font-weight: inherit` در ریست `body, *` | `farsi.scss` | وزن پیش‌فرض همه‌ی هدینگ‌ها (h1..h6) صاف می‌شود. **اصلاح شد: `font-weight: inherit` حذف شد؛ وزن پیش‌فرض هدینگ‌ها بازگشت.** | | 7 | منو `permissionId:"newsletters.newsletters"` دارد ولی route اش `role: 'newsletters'` است — و آن هم **کامنت شده** | `navMenuItems.js:481` / `router/admin.js:851` | هیچ‌وقت با هم مچ نمی‌شوند؛ آیتم خبرنامه برای همه پنهان می‌ماند مگر rid دقیقاً `newsletters.newsletters` داده شود. | | 8 | منو `permissionId:"wallet.list"` دارد ولی route اش `role: 'wallet'` است | `navMenuItems.js:262` / `router/admin.js:430` | `checkParent` فقط والد می‌سازد نه فرزند، پس `wallet` هرگز `wallet.list` را تولید نمی‌کند. آیتم منو پنهان می‌ماند در حالی که خود صفحه باز می‌شود. | | 9 | `secondary-color` و `third-color` در `modifyVars` متغیر واقعی ant نیستند | `vue.config.js` | بی‌اثرند (در خود legacy هم بی‌اثر بودند). راستی‌آزمایی شد: در `default.less` وجود ندارند. **رفتار یکسان حفظ شد.** |