feat(overlay) use popover in overlay service#16835
Conversation
There was a problem hiding this comment.
Pull request overview
This PR modernizes the overlay service by adopting the native Popover API to manage element layering, replacing the traditional z-index approach. The implementation adds the popover="manual" attribute to overlay wrapper elements and uses showPopover()/hidePopover() methods to control visibility in the browser's top layer.
Changes:
- Added Popover API integration with
showPopover()call before positioning andhidePopover()during cleanup - Removed z-index styling in favor of browser-managed top layer positioning
- Added comprehensive style overrides to reset browser default popover styles while maintaining custom overlay positioning
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| projects/igniteui-angular/core/src/services/overlay/overlay.ts | Implements Popover API calls in show/hide logic with proper error handling and browser compatibility checks |
| projects/igniteui-angular/core/src/core/styles/components/overlay/_overlay-theme.scss | Removes z-index properties and adds popover attribute styles to override browser defaults |
projects/igniteui-angular/core/src/core/styles/components/overlay/_overlay-theme.scss
Outdated
Show resolved
Hide resolved
projects/igniteui-angular/core/src/services/overlay/position/container-position-strategy.ts
Show resolved
Hide resolved
projects/igniteui-angular/core/src/services/overlay/overlay.spec.ts
Outdated
Show resolved
Hide resolved
projects/igniteui-angular/core/src/services/overlay/overlay.spec.ts
Outdated
Show resolved
Hide resolved
projects/igniteui-angular/core/src/services/overlay/utilities.ts
Outdated
Show resolved
Hide resolved
projects/igniteui-angular/core/src/services/overlay/utilities.ts
Outdated
Show resolved
Hide resolved
projects/igniteui-angular/core/src/services/overlay/utilities.ts
Outdated
Show resolved
Hide resolved
…gniteUI/igniteui-angular into mvenkov/use-popover-in-overlay
…ec.ts Co-authored-by: Damyan Petev <damyanpetev@users.noreply.github.com>
…ec.ts Co-authored-by: Damyan Petev <damyanpetev@users.noreply.github.com>
…gniteUI/igniteui-angular into mvenkov/use-popover-in-overlay
projects/igniteui-angular/grids/grid/src/grid-base.directive.ts
Outdated
Show resolved
Hide resolved
projects/igniteui-angular/core/src/services/overlay/utilities.ts
Outdated
Show resolved
Hide resolved
Co-authored-by: Damyan Petev <damyanpetev@users.noreply.github.com>
…gniteUI/igniteui-angular into mvenkov/use-popover-in-overlay
|
@wnvko When a dialog is open, when resizing smaller the browser, the first time the dialog briefly goes above the nav-drawer before going under. In addition, when the nav-drawer is open, initially the dialog remains in its previous position, it moves only after the resizing starts. screen-capture.9.webm |
damyanpetev
left a comment
There was a problem hiding this comment.
Could probably fight to inch some smoother frames when doing animated moves, tough that's likely not too critical of a scenario. With the limited observer feedback likely not worth it, so I'd like to focus on CSS anchors that should be natively smooth and this LGTM.
Um, the drawer is initially pinned (not in overlay mode), so pretty sure the dialog going on top is before the drawer unpins, after which the drawer goes on top as expected. |
This how it is works on 21.0.12 branch |

Use
popoverglobal attribute to show the overlay. We are adding the attribute to overlay wrapper element and show the overlay by callingshowPopover.Closes #16824
Additional information (check all that apply):
Checklist:
feature/README.MDupdates for the feature docsREADME.MDCHANGELOG.MDupdates for newly added functionalityng updatemigrations for the breaking changes (migrations guidelines)