Frontmatter
| id | 8978 |
| title | Refactor Selection Models: Phase 1 (Base & Row) |
| state | Closed |
| labels | enhancementairefactoring |
| assignees | tobiu |
| createdAt | Feb 4, 2026, 10:50 AM |
| updatedAt | Feb 4, 2026, 11:23 AM |
| githubUrl | https://github.com/neomjs/neo/issues/8978 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8964 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 4, 2026, 11:23 AM |
Refactor Selection Models: Phase 1 (Base & Row)
tobiu added parent issue #8964 on Feb 4, 2026, 11:21 AM

tobiu
Feb 4, 2026, 11:21 AM
Input from Gemini 3 Pro:
✦ Refactored
BaseModelto support component-based rows.
- Removed legacy VDOM manipulation (
view.getVdomChild).- Implemented
getRowComponenthelper.- Optimized updates: Now modifies
row.vdomdirectly (class/aria) and triggers a scopedview.update()withupdateDepth: 2instead of full Row re-renders.- Verified click-based selection works.
- Note: Keyboard navigation is currently broken and will need a separate fix (out of scope for this ticket).
tobiu assigned to @tobiu on Feb 4, 2026, 11:23 AM
tobiu closed this issue on Feb 4, 2026, 11:23 AM
The
Neo.grid.Rowrefactor changes how rows are rendered.BaseModelandRowModelcurrently manipulate VDOM directly, which is obsolete.Scope:
BaseModel:selectRow,deselectRow, anddeselectAllRows.view.getVdomChild,node.cls).selectedRowsstate and then find the corresponding mountedNeo.grid.Rowcomponent(s) inview.items.row.createVdom()or force an update) to reflect the new selection state.RowModel:onRowClickandonNavKeyRowwork with the new component-based rows.getRecord(path)logic remains valid with the new VDOM structure (checkingaria-rowindex).Note: This is the first sub-task of the Selection Model refactor. Cell/Column models will be handled separately.