Repository navigation
refactor: drop unused legacy renderer container & its portal elements - #549
Merged
Merged
Conversation
damyanpetev
requested review from
dkamburov
and
a balanced review from Copilot
October 20, 2026 16:18
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
Static review supports removal of the unused rendering path without changing concrete component behavior, with no unresolved blocking issues.
No open issues 🎉
What changed in this PR
Completes the cleanup after #478 by removing the unused renderer container and portal infrastructure while retaining concrete components’ existing rendering paths.
Changes:
- Removes legacy containers, portal registration, and obsolete wrapper-rendering overrides.
- Simplifies client element adoption and rejects base classes without an element.
- Adds render-mode assertions and updates test guidance.
| File | Description |
|---|---|
| tests/IgniteUI.Blazor.Tests/ScriptPropTests.cs | Covers base script properties through derived components. |
| tests/IgniteUI.Blazor.Tests/MaskInputTests.cs | Enables adopted-element assertion; updates comment. |
| tests/IgniteUI.Blazor.Tests/DateTimeInputTests.cs | Enables adopted-element assertion. |
| tests/IgniteUI.Blazor.Tests/DateRangePickerTests.cs | Adds adopted-element assertion. |
| tests/IgniteUI.Blazor.Tests/DatePickerTests.cs | Adds adopted-element assertion. |
| tests/IgniteUI.Blazor.Tests/ComboTests.cs | Adds adopted-element assertion. |
| tests/IgniteUI.Blazor.Tests/ColorPickerTests.cs | Enables adopted-element assertion. |
| tests/IgniteUI.Blazor.Tests/ChatTests.cs | Enables adopted-element assertion. |
| tests/IgniteUI.Blazor.Tests/CalendarTests.cs | Adds adopted-element assertion. |
| tests/IgniteUI.Blazor.Tests/BaseControlTests.cs | Tests rejection of elementless bases. |
| src/src/index.ts | Removes portal registration and container indirection. |
| src/src/ig/igniteui-core/igc-portal.ts | Deletes legacy portal elements. |
| src/src/ig/igniteui-core/igc-component-renderer-container-component.ts | Deletes legacy container implementation. |
| src/src/ig/igniteui-core/ComponentRendererAdapter.ts | Simplifies element creation and root adoption. |
| src/componentsBase/IgbComponentBase.cs | Removes wrapper rendering; rejects missing tags. |
| src/components/Blazor/TreeItem.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Tree.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Tooltip.cs | Removes unused wrapper overrides. |
| src/components/Blazor/ToggleButton.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Toast.cs | Removes unused wrapper overrides. |
| src/components/Blazor/TileManager.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Tile.cs | Removes unused wrapper overrides. |
| src/components/Blazor/ThemeProvider.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Textarea.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Tabs.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Tab.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Switch.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Stepper.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Step.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Splitter.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Snackbar.cs | Removes unused wrapper overrides. |
| src/components/Blazor/SliderLabel.cs | Removes unused wrapper overrides. |
| src/components/Blazor/SliderBase.cs | Removes placeholder tag and rendering overrides. |
| src/components/Blazor/Slider.cs | Removes unused wrapper overrides. |
| src/components/Blazor/SelectItem.cs | Removes unused wrapper overrides. |
| src/components/Blazor/SelectHeader.cs | Removes unused wrapper overrides. |
| src/components/Blazor/SelectGroup.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Select.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Ripple.cs | Removes unused wrapper overrides. |
| src/components/Blazor/RatingSymbol.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Rating.cs | Removes unused wrapper overrides. |
| src/components/Blazor/RangeSlider.cs | Removes unused wrapper overrides. |
| src/components/Blazor/RadioGroup.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Radio.cs | Removes unused wrapper overrides. |
| src/components/Blazor/QrCode.cs | Removes unused wrapper overrides. |
| src/components/Blazor/ProgressBase.cs | Removes placeholder tag and rendering overrides. |
| src/components/Blazor/NavDrawerItem.cs | Removes unused wrapper overrides. |
| src/components/Blazor/NavDrawerHeaderItem.cs | Removes unused wrapper overrides. |
| src/components/Blazor/NavDrawer.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Navbar.cs | Removes unused wrapper overrides. |
| src/components/Blazor/MaskInput.cs | Removes unused portal override. |
| src/components/Blazor/ListItem.cs | Removes unused wrapper overrides. |
| src/components/Blazor/ListHeader.cs | Removes unused wrapper overrides. |
| src/components/Blazor/List.cs | Removes unused wrapper overrides. |
| src/components/Blazor/LinearProgress.cs | Removes unused wrapper overrides. |
| src/components/Blazor/InputBase.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Input.cs | Removes unused wrapper overrides. |
| src/components/Blazor/IconButton.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Icon.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Highlight.cs | Removes unused wrapper overrides. |
| src/components/Blazor/ExpansionPanel.cs | Removes unused wrapper overrides. |
| src/components/Blazor/DropdownItem.cs | Removes unused wrapper overrides. |
| src/components/Blazor/DropdownHeader.cs | Removes unused wrapper overrides. |
| src/components/Blazor/DropdownGroup.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Dropdown.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Divider.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Dialog.cs | Removes unused wrapper overrides. |
| src/components/Blazor/DateTimeInputBase.cs | Removes unused wrapper overrides. |
| src/components/Blazor/DateTimeInput.cs | Removes unused portal override. |
| src/components/Blazor/DateRangePicker.cs | Removes unused portal override. |
| src/components/Blazor/DatePicker.cs | Removes unused portal override. |
| src/components/Blazor/ComboBoxBaseLike.cs | Removes unused wrapper-display override. |
| src/components/Blazor/Combo.cs | Removes unused portal override. |
| src/components/Blazor/ColorPicker.cs | Removes unused portal override. |
| src/components/Blazor/CircularProgress.cs | Removes unused wrapper overrides. |
| src/components/Blazor/CircularGradient.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Chip.cs | Removes unused wrapper overrides. |
| src/components/Blazor/CheckboxBase.cs | Removes placeholder tag and rendering overrides. |
| src/components/Blazor/Checkbox.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Chat.cs | Removes unused portal override. |
| src/components/Blazor/CarouselSlide.cs | Removes unused wrapper overrides. |
| src/components/Blazor/CarouselIndicator.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Carousel.cs | Removes unused wrapper overrides. |
| src/components/Blazor/CardMedia.cs | Removes unused wrapper overrides. |
| src/components/Blazor/CardHeader.cs | Removes unused wrapper overrides. |
| src/components/Blazor/CardContent.cs | Removes unused wrapper overrides. |
| src/components/Blazor/CardActions.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Card.cs | Removes unused wrapper overrides. |
| src/components/Blazor/CalendarBase.cs | Removes unused wrapper-display override. |
| src/components/Blazor/Calendar.cs | Removes unused portal override. |
| src/components/Blazor/ButtonGroup.cs | Removes unused wrapper overrides. |
| src/components/Blazor/ButtonBase.cs | Removes placeholder tag and rendering overrides. |
| src/components/Blazor/Button.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Breadcrumbs.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Breadcrumb.cs | Removes unused wrapper overrides. |
| src/components/Blazor/BaseOptionLike.cs | Removes placeholder tag and rendering overrides. |
| src/components/Blazor/BaseComboBox.cs | Removes unused wrapper-display override. |
| src/components/Blazor/BaseAlertLike.cs | Removes placeholder tag and rendering overrides. |
| src/components/Blazor/Banner.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Badge.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Avatar.cs | Removes unused wrapper overrides. |
| src/components/Blazor/Accordion.cs | Removes unused wrapper overrides. |
| .agents/skills/write-library-tests/SKILL.md | Documents render-mode assertions and inherited script coverage. |
Review effort: Balanced
kdinev
approved these changes
Oct 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Since #478 every component renders its own web component element: directly, with its values as attributes, or adopted by the client renderer (
data-ig-root) and driven through descriptions. The legacy path, a wrapperdivwith anigc-component-renderer-containerthe renderer created the element in, was left reachable only by the base classes, which name no element. This removes it on both sides.It also matters for the full package taking this one as a dependency: the client registered
igc-portal-entrance,igc-portal-exitandigc-portal-itemwithout a guard on every load, and a secondcustomElements.defineof the same name throws. Those elements only served the removed path.igc-component-renderer-containeritself was never a defined custom element, so it never collided.What changes
InvalidOperationExceptionthat names it, instead of rendering a wrapper the client never filled. Only the base classes get there, such asIgbInputBase<T>orIgbCalendarBase; nothing working rendered one.data-ig-rootelement itself, creates child elements withdocument.createElement, and finds the component and its template holder on the element. The container class and the portal elements are gone.ResolveDisplayandSupportsVisualChildrenare removed; they only styled the wrapper and turned on its portal.igc-button-base,igc-checkbox-base,igc-progress-base,igc-slider-base,igc-base-alert-like,igc-base-option-like). They no longer set a render mode; every component derived from them sets its own.Type of Change (check all that apply):
Component(s) / Area(s) Affected:
How Has This Been Tested?
Test Configuration:
Checklist:
README.MDCHANGELOG.MDupdates for newly added functionalityCloses #