Skip to content

bug: popover height calculated incorrectly with popoverController + component #30320

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
3 tasks done
willyboy opened this issue Mar 30, 2025 · 1 comment
Open
3 tasks done
Labels

Comments

@willyboy
Copy link

willyboy commented Mar 30, 2025

Prerequisites

Ionic Framework Version

v8.x

Current Behavior

When creating a popover with the popoverController and an Angular component, the height of the popover is calculated before Angular's change detection cycle is run. This means that if you are passing content into the popover, the height will be calculated incorrectly and the popover will be positioned wrong.

This mainly shows up when putting the popover in a footer as the offset is calculated using the content height.

Expected Behavior

Ionic shouldn't calculate the content height of the popover before a change detection cycle has run so that any height changes caused by component props will be reflected.

Steps to Reproduce

const popover = await this.popoverController.create({
      component: PopoverContentComponent,
      componentProps: { message: "some multiline content" },
      event: { target: element } as unknown as Event, // an element in a footer
    });
import { Component, Input } from '@angular/core';
import { CommonModule } from '@angular/common';

@Component({
  selector: 'popover-content',
  standalone: true,
  imports: [CommonModule],
  templateUrl: './popover-content.component.html',
  styleUrl: './popover-content.component.scss',
})
export class PopoverContentComponent {
  @Input() message = '';
}
<div class="popover-content">
    <p>{{ message }}</p>
</div>

Code Reproduction URL

https://github.com

Ionic Info

Ionic:

Ionic CLI : 7.2.0 (\AppData\Roaming\nvm\v18.20.3\node_modules@ionic\cli)
Ionic Framework : @ionic/angular 8.2.7 (\node_modules@ionic\angular)
@angular-devkit/build-angular : 18.2.12 (\node_modules@angular-devkit\build-angular)
@angular-devkit/schematics : 18.2.12 (\node_modules@angular-devkit\schematics)
@angular/cli : 18.2.12 (\node_modules@angular\cli)
@ionic/angular-toolkit : not installed

Capacitor:

Capacitor CLI : not installed
@capacitor/android : 6.1.0 (\node_modules@capacitor\android)
@capacitor/core : 6.1.0 (\node_modules@capacitor\core)
@capacitor/ios : 6.1.0 (\node_modules@capacitor\ios)

Utility:

cordova-res : not installed globally
native-run : not installed globally

System:

NodeJS : v18.20.3 (C:\Program Files\nodejs\node.exe)
npm : 10.7.0
OS : Windows 10

Additional Information

No response

@ionitron-bot ionitron-bot bot added the triage label Mar 30, 2025
@willyboy
Copy link
Author

Note, by placing the content in popover-component.html inside of an ion-content, the issue is resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant