Conversation
- Добавлен Selectors.js с дефолтными селекторами и getSelectors() - Конфиг переопределяется через ms3Config.selectors - UI-классы (CartUI, OrderUI, QuantityUI, CustomerUI, ProductCardUI) используют селекторы из конфига - Fallback на CSS-классы для обратной совместимости - Миграция для добавления Selectors.js в ms3_frontend_assets Co-authored-by: Cursor <cursoragent@cursor.com>
Ревью PR #97Подход правильный — централизация селекторов с возможностью переопределения. Есть несколько проблем. 1. Определение направления кнопок +/- не использует селекторы (значимо)В const isInc = e.target.getAttribute('data-ms3-qty') === 'inc' || e.target.classList.contains('inc-qty')
const isDec = e.target.getAttribute('data-ms3-qty') === 'dec' || e.target.classList.contains('dec-qty')Если пользователь переопределит 2. IE11 polyfill — мёртвый кодconst matches = form.matches || form.msMatchesSelector || form.webkitMatchesSelectorВесь код использует 3.
|
- QuantityUI: use e.target.matches() with quantityIncreaseSelector/quantityDecreaseSelector
instead of hardcoded data-ms3-qty for custom selector support
- ms3.js: remove IE11 polyfill; use form.matches(formSelector)
- Add selectors getter to all UI classes and ms3; replace config?.selectors||{} with this.selectors
- Rename shortened vars: sel→selectors, qtyInputSel→quantityInputSelector,
formSel→formSelector, linkSel→linkSelector, cartCostEl→cartCostElement, etc.
- Improve console.warn to show actual formSelector value
Refs #18
Co-authored-by: Cursor <cursoragent@cursor.com>
|
@biz87 можно смотреть |
Описание
Вынос селекторов в общий конфиг (Issue #18). Все захардкоженные селекторы в JS перенесены в единый модуль
Selectors.jsс возможностью переопределения черезms3Config.selectors. Сохранена обратная совместимость: дефолтные селекторы включают иdata-ms3-*атрибуты, и CSS-классы.Основные изменения:
assets/components/minishop3/js/web/core/Selectors.js— объект дефолтных селекторов и функцияgetSelectors()(слияние сms3Config.selectors)ms3.jsиспользуют селекторы изconfig.selectorsвместо хардкодаms3_frontend_assets(перед ApiClient.js) + миграция для существующих установокMiniShop3.phpвjs_settingдобавлено полеselectors: []для переопределения на стороне шаблонаТип изменений
Связанные Issues
Closes #18
Как это было протестировано?
Конфигурация тестирования:
Скриншоты (если применимо)
Не применимо — визуальное поведение не меняется.
Чеклист
Дополнительные заметки
getSelectorsиспользуетсяwindow.Ms3DefaultSelectors; в UI-классах сохранены строковые fallback-селекторыinitFormHandlerиспользуетсяform.matches || form.msMatchesSelector || form.webkitMatchesSelectorms3Config.selectors = { formOrder: '.my-order-form' }— частичное слияние с дефолтами