in packages/eui/src/components/popover/popover.tsx [452:488]
componentDidUpdate(prevProps: Props) {
// The popover is being opened.
if (!prevProps.isOpen && this.props.isOpen) {
this.onOpenPopover();
}
// ensure recalculation of panel position on prop updates
if (
this.props.isOpen &&
(prevProps.anchorPosition !== this.props.anchorPosition ||
prevProps.buffer !== this.props.buffer ||
prevProps.offset !== this.props.offset ||
prevProps.panelPaddingSize !== this.props.panelPaddingSize)
) {
this.positionPopoverFluid();
}
// update scroll listener
if (prevProps.repositionOnScroll !== this.props.repositionOnScroll) {
if (this.props.repositionOnScroll) {
window.addEventListener('scroll', this.positionPopoverFixed, true);
} else {
window.removeEventListener('scroll', this.positionPopoverFixed, true);
}
}
// The popover is being closed.
if (prevProps.isOpen && !this.props.isOpen) {
// If the user has just closed the popover, queue up the removal of the content after the
// transition is complete.
this.closingTransitionTimeout = window.setTimeout(() => {
this.setState({
isClosing: false,
});
}, closingTransitionTime);
}
}