Portal: Fix positioning when bodyScrolling is disabled (#93277)

fix portal when bodyScrolling is disabled
This commit is contained in:
Ashley Harrison 2024-09-12 16:24:36 +01:00 committed by GitHub
parent 2a8f6755d5
commit dceba35a55
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,4 +1,4 @@
import { css, cx } from '@emotion/css';
import { css } from '@emotion/css';
import { PropsWithChildren, useLayoutEffect, useRef } from 'react';
import * as React from 'react';
import ReactDOM from 'react-dom';
@ -51,25 +51,27 @@ export function getPortalContainer() {
/** @internal */
export function PortalContainer() {
const styles = useStyles2(getStyles);
const isBodyScrolling = window.grafanaBootData?.settings.featureToggles.bodyScrolling;
return (
<div
id="grafana-portal-container"
className={cx({
[styles.grafanaPortalContainer]: isBodyScrolling,
})}
/>
);
return <div id="grafana-portal-container" className={styles.grafanaPortalContainer} />;
}
const getStyles = (theme: GrafanaTheme2) => ({
grafanaPortalContainer: css({
position: 'fixed',
top: 0,
width: '100%',
zIndex: theme.zIndex.portal,
}),
});
const getStyles = (theme: GrafanaTheme2) => {
const isBodyScrolling = window.grafanaBootData?.settings.featureToggles.bodyScrolling;
return {
grafanaPortalContainer: css(
isBodyScrolling
? {
position: 'fixed',
top: 0,
width: '100%',
zIndex: theme.zIndex.portal,
}
: {
position: 'absolute',
width: '100%',
}
),
};
};
export const RefForwardingPortal = React.forwardRef<HTMLDivElement, Props>((props, ref) => {
return <Portal {...props} forwardedRef={ref} />;