Skip to content

fix(vue): nested category checks survive reload on product Categories tab - #642

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-641-nested-category-checks
Open

fix(vue): nested category checks survive reload on product Categories tab#642
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-641-nested-category-checks

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 30, 2026

Copy link
Copy Markdown
Member

Описание

После F5 на вкладке товара «Категории» галки вложенных дополнительных категорий пропадали. Hidden categories терял id, которых не было на первой странице ленивого дерева. Повторное сохранение чистило ms3_product_categories.

В ResourceCategoryTree checkedSet теперь засевается из modelValue до loadRoot (immediate watch). После fetch selection не эмитится усечённым списком. Emit только при действии пользователя или когда реально добавили locked id. Writer wipe+insert не меняли.

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

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

Связанные Issues

Closes #641

Отчёт: https://modx.pro/help/25733

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

cd vueManager
npm test -- src/components/ResourceCategoryTree.test.js   # exit 0, 5 passed
npm test                                                  # exit 0, 37 passed
npm run lint:ci                                           # exit 0

Ручная проверка на https://project.test/manager (товар #25 QA Combo Title, memberships 2,3,4,12):

  1. Собрал vueManager (npm run build) и синхронизировал vue-dist на сайт.
  2. Открыл ?a=resource/update&id=25, вкладка Categories.
  3. После F5 hidden categories и Ext form.getValues().categories = [2,3,4,12].
  4. Корень «Электроника» отмечен. После раскрытия отмечены «Смартфоны» (3) и «Android-смартфоны» (4). Parent «Android-планшеты» (12) — checked + disabled.
  5. Снятие галки с «Смартфоны» → hidden [2,4,12] (вложенные 4 и 12 остаются).
  6. Save без изменений → в ms3_product_categories по-прежнему 2,3,4,12.
  • Ручное тестирование
  • Автоматические тесты (npm test, npm run lint:ci)
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: ветка fix/issue-641-nested-category-checks от beta
  • MODX: 3.2.0-pl (project.test)
  • PHP: 8.2 (окружение сайта)

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

Не применимо.

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en) — n/a, строк UI не добавляли
  • PHPStan проходит без новых ошибок — n/a, PHP не меняли
  • ESLint проходит без ошибок (npm run lint:ci для Vue)
  • Обновлён CHANGELOG.md — не трогали (по правилам релиза)

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

Вне скоупа PR: фильтр context_key / defaultRootId для состава дерева (второй симптом с форума), show_in_tree=0 как доп. категории.

ResourceCategoryTree was emitting a truncated selection after loadRoot,
so nested additional categories disappeared from the hidden field and
were wiped from ms3_product_categories on the next save.
@Ibochkarev
Ibochkarev requested a review from biz87 August 30, 2026 06:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant