Skip to content

refactor(vue-manager): extract thin list/config/crud/sort composables#397

Open
Ibochkarev wants to merge 3 commits into
betafrom
feat/issue-354-thin-grid-composables
Open

refactor(vue-manager): extract thin list/config/crud/sort composables#397
Ibochkarev wants to merge 3 commits into
betafrom
feat/issue-354-thin-grid-composables

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Узкие composables для повторяющегося каркаса mgr-гридов: list/pagination (с AbortController + seq), grid-config, filters, CRUD-dialog state, sortable drag→API. Без useResourceGrid({ schema }) и без schema форм.

Мигрированы: Links, Notifications, Statuses, Vendors, Deliveries, Payments, OptionGroups, Orders (list + filters/config). OptionGroups переведён на useSelection вместо локального Set.

Phase 2 (M2M Deliveries↔Payments linking) — отдельно в #361.

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

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

Связанные Issues

Closes #354
Refs #385 (race foundation в useResourceList; Orders тоже на нём)
Refs #361 (Phase 2 linking)

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

  • Ручное тестирование
  • Автоматические тесты (PHPStan, ESLint)
  • Тестирование на разных версиях PHP/MODX

Команды (Gate E):

  • cd vueManager && npm run lint → exit 0
  • npx prettier --check по затронутым путям → exit 0
  • node --test src/utils/displayFormatters.test.js src/utils/resourceListResponse.test.js → 10/10 pass
  • npm run build → exit 0

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

  • MiniShop3: branch feat/issue-354-thin-grid-composables
  • MODX: n/a (frontend-only)
  • PHP: n/a

Скриншоты (если применимо)

До После
n/a n/a

Чеклист

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

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

  • Deliveries/Payments впервые могут подтянуть server grid-config.columns (раньше смотрели несуществующий fields и почти всегда шли в fallback) — стоит глянуть колонки в менеджере.
  • useGridConfig.onError опционален; по умолчанию fallback без toast (как раньше).
  • Unit-тесты покрывают pure helpers; полный race-сценарий useResourceList без Vue test harness не гонялся.
  • Gallery / CategoryProducts / ModelFields / Options domain UI не трогали.

Pull shared mgr grid scaffolding into focused composables without a
schema-driven mega-grid. Migrate pilot and twin grids; AbortController+seq
in useResourceList addresses stale list races (#385 foundation).
@Ibochkarev Ibochkarev added priority: high Важно исправить в ближайшее время javascript Pull requests that update javascript code enhancement New feature or request tech-debt Maintainability / refactor / architecture debt labels Jul 16, 2026
…earchQuery

Move normalizeImagePath into displayFormatters; bind formatValue in Vendors;
remove unused Deliveries/Payments searchQuery; stabilize formatValue number test.
@Ibochkarev Ibochkarev removed the priority: high Важно исправить в ближайшее время label Jul 16, 2026
Extract createResourceList for Node-testable AbortController/seq races
and reuse displayFormatters.normalizeImagePath in FileBrowser.
@Ibochkarev Ibochkarev added the priority: high Важно исправить в ближайшее время label Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request javascript Pull requests that update javascript code priority: high Важно исправить в ближайшее время tech-debt Maintainability / refactor / architecture debt

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Vue Manager: тонкие composables list/config/crud/sort (без magic framework)

1 participant