Skip to content

feat(vue): Централизованная тема через VueTools getActiveTheme - #738

Merged
biz87 merged 4 commits into
betafrom
feat/issue-701-centralized-theme
Sep 17, 2026
Merged

biz87 merged 4 commits into
betafrom
feat/issue-701-centralized-theme

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Часть B #701: менеджер берёт PrimeVue-тему из VueTools (getActiveTheme / @vuetools/useTheme), а не хардкодит Aura. Дефолт остаётся Aura через настройку vuetools.theme. Пресет Modx включается flip'ом VueTools без пересборки MS3.

Стек на Part A (#702 barrel/guard/cache-bust). База PR — feat/issue-701-primevue-barrel; после merge #702 перенаправить на beta.

Что сделано:

  • helper getManagerPrimeVueConfig() (darkModeSelector: 'none', cssLayer: false) во всех entries + main.js
  • formStyles inject только для Aura (shouldInjectFormStylesOverride)
  • проверка Import Map требует vuetools/theme (общий vue_core_check.inc.php)
  • resolver VueTools → 1.2.0-pl, лексикон ru/en
  • severity="success" на primary Save; accent/spacing шкалу Aura не ломаем (откат ошибочного alias на --p-primary-color)

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #701

Depends on #702. Связано: #640, vueTools#22.

Как это было протестировано?

cd vueManager
npm run lint:ci
# exit 0

npm test
# 78 passed, exit 0

npm run build
# exit 0, @vuetools/useTheme external

php -l core/components/minishop3/controllers/vue_core_check.inc.php
php -l core/components/minishop3/controllers/manager.class.php
php -l core/components/minishop3/controllers/resource_create.class.php
php -l core/components/minishop3/controllers/resource_update.class.php
# exit 0

Ручная проверка (нужна VueTools >= 1.2.0): vuetools.theme=aura — вид как сейчас; =modx — density/токены Modx; VueTools 1.1.x — MODX-алерт, не ошибка линковки getActiveTheme.

  • Ручное тестирование
  • Автоматические тесты (composer ci:php / composer test, npm run lint:ci, composer stan / GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок (composer stan / CI job PHPStan)
  • ESLint проходит без ошибок (npm run lint:ci для Vue)
  • Обновлён CHANGELOG.md (для значимых изменений)

Дополнительные заметки

@Ibochkarev
Ibochkarev added this pull request to stack #739 September 16, 2026 03:06
@Ibochkarev
Ibochkarev requested a review from biz87 September 16, 2026 03:09
@Ibochkarev Ibochkarev self-assigned this Sep 16, 2026
@biz87

biz87 commented Sep 16, 2026

Copy link
Copy Markdown
Member

Слил поверх #702 и актуальной beta, конфликтов нет. Гейт зелёный: smoke 112/112, PHPUnit 554, PHPStan 0 ошибок, ESLint, Vitest 78, build (@vuetools/useTheme — external).

Проверил на dev (VueTools 1.2.0-pl):

  • vuetools.theme=modx — тема Modx применяется: основной цвет #234368, плотные таблицы и контролы, formStyles не инжектится. Ошибок в консоли нет.
  • vuetools.theme=aura — заказы, настройки, клиенты, уведомления, товар, товары категории по вычисленным стилям совпадают с feat(vue): Salvage PrimeVue barrel, cache-bust, and i18n #702 (а значит, с текущей beta с поправкой на 2–3 px из feat(vue): Salvage PrimeVue barrel, cache-bust, and i18n #702). Ошибок в консоли нет.
  • getActiveTheme() / getThemeName() сверил с src/composables/useTheme.js VueTools — обе формы реестра ({ theme: { preset } } и { theme: ModxManagerTheme }) обрабатываются, darkModeSelector/cssLayer накладываются поверх.
  • vue_core_check.inc.php общий для трёх контроллеров; без vuetools/theme в Import Map модули снимаются и показывается алерт — по коду, на VueTools 1.1.x вживую не проверял.

Блокирует этот PR только база: #702 нужно исправить (поле combooptions, см. комментарий там).

severity="success" не зависит от темы

В #701 для части B: «Плотность / severity="success" / Modx-CSS — сделать theme-aware, иначе при дефолтной Aura сломается». Здесь severity="success" добавлен на кнопки «Сохранить» безусловно, поэтому в Aura (дефолт) они меняют цвет: было --p-primary-color #10b981, стало success #22c55e (проверил в диалоге редактирования уведомления). Не поломка, но это видимое изменение дефолтной темы — либо ограничить Modx-пресетом, либо явно зафиксировать в описании, что в Aura так и задумано.

Мелочь: в OrderEditProductDialog.vue кнопка сохранения осталась без severity="success", хотя остальные диалоги обновлены.

Ibochkarev added a commit that referenced this pull request Sep 16, 2026
Limit success severity to Modx preset via getPrimarySaveSeverity so
Aura keeps primary green. Cover OrderEditProductDialog and add helper
unit tests (#738 review).
@Ibochkarev
Ibochkarev force-pushed the feat/issue-701-centralized-theme branch from 06c9c9d to 789ea14 Compare September 16, 2026 18:33
@Ibochkarev

Copy link
Copy Markdown
Member Author

@biz87 Спасибо за ревью.

База #702: ветка перебазирована на актуальный feat/issue-701-primevue-barrel (InputChips для comboOptions уже там).

severity="success": теперь theme-aware — getPrimarySaveSeverity() возвращает success только при vuetools.theme=modx; на Aura кнопки Save снова без severity (дефолтный primary). То же для Create в OrderFormActionsBar.

Мелочь: OrderEditProductDialog.vue тоже на primarySaveSeverity.

Тесты: primevueTheme.test.js + полный Vitest 84/84, lint:ci ok.

Коммит: см. latest на ветке.

Base automatically changed from feat/issue-701-primevue-barrel to beta September 17, 2026 10:27
Resolve the active PrimeVue theme from the VueTools `vuetools.theme`
system setting instead of hardcoding Aura in every manager entry.

- Add `primevueTheme.js` helper: spreads `getActiveTheme()` and forces
  `darkModeSelector: 'none'` so manager chrome stays light. Works for
  both aura `{ theme: { preset } }` and modx `{ theme: ModxManagerTheme }`.
- Migrate all 11 entries + main.js off the hardcoded Aura preset to the
  helper; externalize `@vuetools/useTheme` in vite.config.js.
- Make `formStyles.js` runtime inject a no-op under the Modx preset
  (Modx owns control height/density); keep it for Aura.
- Theme-aware CSS: alias `--ms3-accent-primary` to `--p-primary-color`,
  use `--p-modx-space-panel` (with fallbacks) for mt-3/mb-3, and widen
  select/multiselect filters to 100% in main.css.
- Add `severity="success"` to primary Save buttons in dialog footers
  across order, settings, and catalog grids (fine on Aura too).
- Tighten the VueTools import-map check in 3 manager controllers to also
  require `vuetools/theme`; bump VueTools resolver to 1.2.0-pl and update
  the `ms3_vuetools_required` lexicon (ru+en) to mention >= 1.2.0.
Add getManagerPrimeVueConfig() and isModxManagerTheme() so entries
share one locale+theme setup; help.js keeps theme-only path.
… check

Revert accent/--p-modx spacing that broke default Aura; restore cssLayer
false in the theme helper; extract import-map check to one include;
unify help.js on getManagerPrimeVueConfig.
Limit success severity to Modx preset via getPrimarySaveSeverity so
Aura keeps primary green. Cover OrderEditProductDialog and add helper
unit tests (#738 review).
@biz87
biz87 force-pushed the feat/issue-701-centralized-theme branch from 789ea14 to b1173ef Compare September 17, 2026 10:27
@biz87
biz87 merged commit a146f80 into beta Sep 17, 2026
6 checks passed
Ibochkarev added a commit that referenced this pull request Sep 21, 2026
VueTools keeps theme ownership (#701/#738): no :root primary inject and no second Aura chunk. Success stays a semantic color. Group every selected msOption column so ONLY_FULL_GROUP_BY works on MariaDB.
Ibochkarev added a commit that referenced this pull request Sep 21, 2026
VueTools keeps theme ownership (#701/#738): no :root primary inject and no second Aura chunk. Success stays a semantic color. Group every selected msOption column so ONLY_FULL_GROUP_BY works on MariaDB.
biz87 pushed a commit that referenced this pull request Sep 21, 2026
* fix(mgr): align Vue Manager visuals with MODX chrome

Unify primary/success to AA-safe #4e8136 (preset + CSS var inject for
VueTools-external PrimeVue), flatten ProductDataFields Card/for-id,
fix option_fields under ONLY_FULL_GROUP_BY, and polish Utilities/Uppy/
vtabs/a11y/lexicons (#615).

* fix(mgr): polish Vue Manager density and gallery affordances

Match MODX primary green, unify toolbar/tab spacing, and make gallery upload and bulk actions clearer and keyboard-friendly.

* fix(mgr): unify control heights and product links form layout

Force buttons and AutoComplete dropdowns to the shared 2.25rem control height, and fix product links search/dialog spacing inside .vueApp.

* fix(mgr): drop Aura recolor and fix MariaDB option GROUP BY

VueTools keeps theme ownership (#701/#738): no :root primary inject and no second Aura chunk. Success stays a semantic color. Group every selected msOption column so ONLY_FULL_GROUP_BY works on MariaDB.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants