You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Двойной confirm при удалении товара в сетке категории (category/update) #538
Админка → редактирование категории → вкладка «Сетка товаров». Клик по кнопке удаления (иконка-корзина в строке или «Удалить выбранные») показывает два диалога подтверждения одновременно.
Причина
Страница category/update монтирует два независимых Vue-приложения (core/components/minishop3/controllers/category/update.class.php:70-71):
PrimeVue вынесен в общий Import Map (external: ['vue','pinia','primevue'] в vueManager/vite.config.js), поэтому на всю страницу — один экземпляр модуля PrimeVue. Шина подтверждений ConfirmationEventBus внутри PrimeVue — модульный singleton. Значит confirm.require() из любого из двух приложений улетает в одну общую шину, и её слушают все смонтированные <ConfirmDialog> без атрибута group.
Один confirm.require() (из useActions для строки или useSelection для bulk) → его ловят оба диалога → «два confirm сразу».
Доказательство
В проекте уже есть 4 компонента, изолирующих подтверждения через group именно из-за этой коллизии: ExtraFieldsManager (extra-fields), GridFieldsConfig, ModelFieldsGrid, ProductDataConfig. CategoryProductsGrid и CategoryOptionsTab — единственные два на этой странице, оставшиеся без группы.
Дополнительно: висячий useConfirm() в CategoryProductsGrid.vue:36 (вызван без присваивания) — мусор от рефактора, к багу отношения не имеет, убрать заодно.
Решение
Namespace-ить оба приложения через group (по уже принятому в проекте паттерну):
CategoryOptionsTab → group="category-options" на <ConfirmDialog> + в обоих confirm.require() (стр. 184, 257).
CategoryProductsGrid → group="category-products" на <ConfirmDialog> (775); группа прокидывается через composables useActions/useSelection (новая опциональная опция confirmGroup, по умолчанию ungrouped — обратная совместимость для остальных гридов).
Activity
refactor(vue): harden confirm-group against silent-fail typos (#538)
fix(vue): изоляция confirm-диалогов категории через group — двойной c…
chore(release): 1.13.0-beta1 — version bump + changelog (#560)
chore: sync beta with upstream modx-pro/MiniShop3 (#1)