Frontmatter
| id | 8473 |
| title | Refactor afterSetId in Split Button and Grid Body |
| state | Closed |
| labels | airefactoringcore |
| assignees | tobiu |
| createdAt | Jan 9, 2026, 5:34 PM |
| updatedAt | Jan 9, 2026, 5:38 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8473 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8469 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 9, 2026, 5:38 PM |
Refactor afterSetId in Split Button and Grid Body
tobiu added parent issue #8469 on Jan 9, 2026, 5:34 PM
tobiu assigned to @tobiu on Jan 9, 2026, 5:37 PM

tobiu
Jan 9, 2026, 5:38 PM
Input from Gemini 3 Pro:
✦ I have completed the refactoring for
src/button/Split.mjsandsrc/grid/Body.mjs.Changes:
- Removed the manual
afterSetIdmethods from both classes.- Verified that
Neo.mixin.VdomLifecycle.ensureStableIdscorrectly assigns the__wrapperID suffix to the root node and the raw ID to the component's internal root (getVdomRoot()).Verification:
- Added a new unit test:
test/playwright/unit/component/WrapperIdCheck.spec.mjs.- Confirmed that
Neo.create(SplitButton)andNeo.create(GridBody)produce the correct VDOM ID structure.Commit: 08358cb4b (#8473)
tobiu closed this issue on Jan 9, 2026, 5:38 PM
Context:
src/button/Split.mjsandsrc/grid/Body.mjsimplement manual VDOM ID assignment for their wrapper nodes inafterSetId. This logic is now redundant becauseNeo.mixin.VdomLifecycle.ensureStableIds(invoked byComponent.Base) automatically detects wrapper nodes (viagetVdomRoot()) and assigns the standard__wrapperID suffix.Goals:
afterSetIdfromsrc/button/Split.mjs.afterSetIdfromsrc/grid/Body.mjs.ensureStableIdscorrectly handles the ID assignment.Verification:
Splitbutton andGridbody should still render with the correct__wrapperID on their root element.