Frontmatter
| id | 9155 |
| title | [DevIndex] Grid Icon Columns fail to update on Filter change |
| state | Closed |
| labels | bugai |
| assignees | tobiu |
| createdAt | Feb 14, 2026, 7:46 PM |
| updatedAt | Feb 14, 2026, 8:15 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9155 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9106 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 14, 2026, 8:15 PM |
[DevIndex] Grid Icon Columns fail to update on Filter change

Input from Gemini 3 Pro:
✦ Fixed the Icon visibility update regression.
Root Cause:
Component.updateStylemergeswrapperStyleandstyle. SincewrapperStylereads the currentvdom.styleas a default (to support runtime hacks), styles persist inwrapperStyleonce merged.Base.show()attempted to clear visibility bydeletingthe property from thestyleconfig. This removed the override but exposed the underlying "polluted" state inwrapperStyle(which still hadvisibility: hidden), causing the show operation to fail visually.Fix: Updated
Base.show()to explicitly setstyle.visibility = null. This forces a value change that overrides the pollutedwrapperStyle, triggers the correct VDOM delta, and clears the persistence loop on the next cycle.Documentation: Added JSDoc warnings to
style_andwrapperStyle_inBase.mjsregarding this persistent state behavior and the need for explicit nulling.
IconandIconLinkcomponents (and potentially others) usinghideMode: 'visibility'fail to reappear after being hidden.Diagnosis: The
show()method insrc/component/Base.mjsattempts to restore visibility by deleting thevisibilityproperty from the style object:let style = me.style; delete style.visibility; me.style = style;However, debug logs confirm that
vdom.styleretains{visibility: 'hidden'}even afterme.stylebecomes{}. This suggests thatvdom.style(orwrapperStyle) might be retaining the property, or the spread merge{...me.wrapperStyle, ...me.style}inupdateStyleis not clearing it as expected.Solution: Override
afterSetHiddeninIcon.mjsandIconLink.mjsto explicitly setvisibility: 'visible'(ornull) instead of relying on property deletion. This forces a value change that propagates to the VDOM delta.Long-term: Investigate if
Component.mjsshow()needs a generic fix (e.g. settingnullinstead ofdelete).