fix(web): a selection driven below the fold scrolls itself into view
improvise-jq8l. `web/app.js` called `scrollIntoView` NOWHERE, so a selection moved past the bottom of `#grid` stayed there, invisible, with no way back but scrolling by hand. What the ticket did not predict: this is NOT a projection bug and NOT a `row_offset` bug, and the acceptance criteria's talk of reconciling the absolute selection against the announced window describes work `render.rs` already does. The row had been sent. `#grid` has `overflow: auto`, `ROW_PX`/`COL_PX` UNDER-estimate (a real row measures 28.6px against the assumed 26) and inline group rows are deliberately not charged for at all, so the page renders more rows than its own box can show and the overflow is the DOM's. `block: "nearest"` is the whole option: it scrolls only when the element is out of view, and it scrolls the nearest container rather than the document. The expensive half was the fixture. Neither shipped document can reach the state — `web/demo.improv` is four rows, `harness/fixtures/grouped.improv` is eight, and a probe measured BOTH at `scrollHeight === clientHeight` in a 484px box. The assertion would have passed against a page that never scrolls, which is why the spec asserts the overflow exists before it presses a key. `harness/fixtures/tall.improv` is thirty rows in three groups; measured against the unfixed page it gives 105px of overflow with the selected cell 96px below the visible bottom and `scrollTop` still 0. Tests: 25 chromium harness (was 24), Rust and node unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
v2025-04-09
|
||||
# Harness tall fixture
|
||||
Initial View: Tall
|
||||
|
||||
## View: Default
|
||||
_Index: none
|
||||
_Dim: none
|
||||
_Measure: page
|
||||
Region: row
|
||||
format: ,.0
|
||||
|
||||
## View: Tall
|
||||
_Index: none
|
||||
_Dim: none
|
||||
_Measure: column
|
||||
Region: row
|
||||
format: ,.0
|
||||
|
||||
## Category: _Measure
|
||||
- Revenue, Cost
|
||||
|
||||
## Category: Region
|
||||
- R01[Alpha]
|
||||
- R02[Alpha]
|
||||
- R03[Alpha]
|
||||
- R04[Alpha]
|
||||
- R05[Alpha]
|
||||
- R06[Alpha]
|
||||
- R07[Alpha]
|
||||
- R08[Alpha]
|
||||
- R09[Alpha]
|
||||
- R10[Alpha]
|
||||
- R11[Beta]
|
||||
- R12[Beta]
|
||||
- R13[Beta]
|
||||
- R14[Beta]
|
||||
- R15[Beta]
|
||||
- R16[Beta]
|
||||
- R17[Beta]
|
||||
- R18[Beta]
|
||||
- R19[Beta]
|
||||
- R20[Beta]
|
||||
- R21[Gamma]
|
||||
- R22[Gamma]
|
||||
- R23[Gamma]
|
||||
- R24[Gamma]
|
||||
- R25[Gamma]
|
||||
- R26[Gamma]
|
||||
- R27[Gamma]
|
||||
- R28[Gamma]
|
||||
- R29[Gamma]
|
||||
- R30[Gamma]
|
||||
|
||||
## Data
|
||||
Region=R01, _Measure=Cost = 50
|
||||
Region=R01, _Measure=Revenue = 100
|
||||
Region=R02, _Measure=Cost = 51
|
||||
Region=R02, _Measure=Revenue = 101
|
||||
Region=R03, _Measure=Cost = 52
|
||||
Region=R03, _Measure=Revenue = 102
|
||||
Region=R04, _Measure=Cost = 53
|
||||
Region=R04, _Measure=Revenue = 103
|
||||
Region=R05, _Measure=Cost = 54
|
||||
Region=R05, _Measure=Revenue = 104
|
||||
Region=R06, _Measure=Cost = 55
|
||||
Region=R06, _Measure=Revenue = 105
|
||||
Region=R07, _Measure=Cost = 56
|
||||
Region=R07, _Measure=Revenue = 106
|
||||
Region=R08, _Measure=Cost = 57
|
||||
Region=R08, _Measure=Revenue = 107
|
||||
Region=R09, _Measure=Cost = 58
|
||||
Region=R09, _Measure=Revenue = 108
|
||||
Region=R10, _Measure=Cost = 59
|
||||
Region=R10, _Measure=Revenue = 109
|
||||
Region=R11, _Measure=Cost = 60
|
||||
Region=R11, _Measure=Revenue = 110
|
||||
Region=R12, _Measure=Cost = 61
|
||||
Region=R12, _Measure=Revenue = 111
|
||||
Region=R13, _Measure=Cost = 62
|
||||
Region=R13, _Measure=Revenue = 112
|
||||
Region=R14, _Measure=Cost = 63
|
||||
Region=R14, _Measure=Revenue = 113
|
||||
Region=R15, _Measure=Cost = 64
|
||||
Region=R15, _Measure=Revenue = 114
|
||||
Region=R16, _Measure=Cost = 65
|
||||
Region=R16, _Measure=Revenue = 115
|
||||
Region=R17, _Measure=Cost = 66
|
||||
Region=R17, _Measure=Revenue = 116
|
||||
Region=R18, _Measure=Cost = 67
|
||||
Region=R18, _Measure=Revenue = 117
|
||||
Region=R19, _Measure=Cost = 68
|
||||
Region=R19, _Measure=Revenue = 118
|
||||
Region=R20, _Measure=Cost = 69
|
||||
Region=R20, _Measure=Revenue = 119
|
||||
Region=R21, _Measure=Cost = 70
|
||||
Region=R21, _Measure=Revenue = 120
|
||||
Region=R22, _Measure=Cost = 71
|
||||
Region=R22, _Measure=Revenue = 121
|
||||
Region=R23, _Measure=Cost = 72
|
||||
Region=R23, _Measure=Revenue = 122
|
||||
Region=R24, _Measure=Cost = 73
|
||||
Region=R24, _Measure=Revenue = 123
|
||||
Region=R25, _Measure=Cost = 74
|
||||
Region=R25, _Measure=Revenue = 124
|
||||
Region=R26, _Measure=Cost = 75
|
||||
Region=R26, _Measure=Revenue = 125
|
||||
Region=R27, _Measure=Cost = 76
|
||||
Region=R27, _Measure=Revenue = 126
|
||||
Region=R28, _Measure=Cost = 77
|
||||
Region=R28, _Measure=Revenue = 127
|
||||
Region=R29, _Measure=Cost = 78
|
||||
Region=R29, _Measure=Revenue = 128
|
||||
Region=R30, _Measure=Cost = 79
|
||||
Region=R30, _Measure=Revenue = 129
|
||||
Reference in New Issue
Block a user