Шаг focus-click пропуска чекбоксов выводил фокус из ТЧ через fillFields({Комментарий}),
что лишний раз перезаписывало значение. clickElement по полю «Комментарий» фокусирует
его без перезаполнения и так же сбрасывает горизонтальный viewport грида. Поведение
шага не меняется (читаются только булевы Товаров), тест зелёный.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fillTableRow теперь принимает row как объектный фильтр (одна/несколько колонок,
AND-матч) — как clickElement — и опцию scroll:true для строк за пределами
DOM-окна виртуализации. Фильтр резолвится в числовой индекс один раз в начале
через переиспользование resolveRowIndexByFilter из click-cell.mjs (без дублей
matching/reveal); дальше существующий код row-mode не тронут. row:<число> —
полная обратная совместимость.
Побочно починен баг в общем reveal-цикле (его же использует clickElement scroll):
детектор конца списка опирался на текст первой колонки + selIdx, поэтому на
табчасти с однотипной первой колонкой ложно срабатывал на втором PageDown.
Теперь основной признак конца — hasBelow===false, а сигнатура снимка строится
по всей строке (snapshotGridScript).
Версии: click-cell v1.4, dom/grid v1.9, row-fill v1.22.
Регресс tests/web-test: 22/22 зелёные (live E2E на синтетическом стенде).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3 новых шага в 18-cell-click на группе БольшойСписок (60 элементов)
справочника Номенклатура:
- dyn-list setup — вход в группу, проверка hasMore = {above:false, below:true}
(определяется через turn-кнопки vertButtonScroll, не через scrollbar табчасти)
- dyn-list reveal — clickElement({row:{filter}}, {scroll:true}) на дин-списке,
находит Позиция 055 через PageDown loop; после прокрутки above=true
- dyn-list cleanup
Раньше reveal-loop и hasMore проверялись только на табчасти LongDoc;
теперь покрыт и второй тип виртуализированного грида.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 новых шага на расширенном стенде (LongDoc + 18-колоночная ТЧ):
1. reveal-loop — открыть LongDoc через filterList по Комментарий, ТЧ Товары
виртуализирована (13 строк в окне из 30). Клик с scroll:true по строке
с Количество=25,000 — должен пролистать PageDown'ом до окна 20..30.
2. horizontal scroll туда-обратно — клик в Признак контроля (последняя,
18-я колонка, ArrowRight scroll), потом сразу в Количество (2-я колонка,
ArrowLeft scroll). Проверяет оба направления.
3. focus-click skip checkbox — кластер ВРезерве/НаКомиссии/Подарок у правого
края дефолтного viewport. Клик в Серия (за пределами viewport) должен
вызвать ArrowRight scroll с focus-pick на rightmost non-checkbox cell.
Проверка: boolean'ы в строке 0 не изменились после клика.
Удалил устаревший Note про "перенесём на будущее" — теперь покрыто.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
clickElement({row,column}) теперь работает не только на SpreadsheetDocument,
но и на гридах формы (динамические списки, табчасти). Маршрутизация:
spreadsheet приоритет (backward-compat), без spreadsheet — первый видимый
грид; явный table='Имя' форсит конкретный грид.
Поддержка:
- row: number — индекс в текущем DOM окне (виртуализация — документировано)
- row: { Колонка: значение } — фильтр по нормализованному содержимому
- scroll: true | number — reveal-loop через PageDown пока строка не найдена
или DOM не перестал меняться (с лимитом)
- Автоматический горизонтальный скролл к колонке за viewport
(учитывает frozen-колонки .gridBoxFix)
- Post-scroll visibility check — throw вместо ложного success
readTable обогащён полем hasMore: { above?, below } — единственный
надёжный сигнал виртуализации. total/shown остаются как DOM-окно
(backward-compat) с честным описанием в SKILL.md.
Общий хелпер scrollHorizontallyByKey вынесен в engine/core/, переиспользуется
spreadsheet'ом и грид-click'ом. DOM-логика (findGridCellScript,
findFocusCellScript, snapshotGridScript, resolveCellTargetScript) живёт
в dom/grid.mjs — engine только оркестрирует.
Покрытие: новый 18-cell-click.test.mjs (7 шагов: spreadsheet
regression-guard, catalog dblclick, табчасть, hasMore, 2 error-paths,
cleanup). Расширен 05-table.test.mjs проверкой hasMore.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>