ShareModal: Responsive tabs and Public Dashboards modal fixed (#66805)

This commit is contained in:
Juan Cabanas
2023-04-28 13:37:11 -03:00
committed by GitHub
parent 836fef6785
commit e88e50efe4
3 changed files with 24 additions and 22 deletions
@@ -3,7 +3,7 @@ import React, { ReactNode } from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { stylesFactory, useTheme2 } from '../../themes';
import { useStyles2 } from '../../themes';
export interface Props {
/** Children should be a single <Tab /> or an array of <Tab /> */
@@ -13,32 +13,31 @@ export interface Props {
hideBorder?: boolean;
}
const getTabsBarStyles = stylesFactory((theme: GrafanaTheme2, hideBorder = false) => {
return {
tabsWrapper:
!hideBorder &&
css`
border-bottom: 1px solid ${theme.colors.border.weak};
`,
tabs: css`
position: relative;
display: flex;
height: ${theme.components.menuTabs.height}px;
`,
};
});
export const TabsBar = React.forwardRef<HTMLDivElement, Props>(({ children, className, hideBorder }, ref) => {
const theme = useTheme2();
const tabsStyles = getTabsBarStyles(theme, hideBorder);
export const TabsBar = React.forwardRef<HTMLDivElement, Props>(({ children, className, hideBorder = false }, ref) => {
const styles = useStyles2(getStyles);
return (
<div className={cx(tabsStyles.tabsWrapper, className)} ref={ref}>
<div className={tabsStyles.tabs} role="tablist">
<div className={cx(styles.tabsWrapper, hideBorder && styles.noBorder, className)} ref={ref}>
<div className={styles.tabs} role="tablist">
{children}
</div>
</div>
);
});
const getStyles = (theme: GrafanaTheme2) => ({
tabsWrapper: css`
border-bottom: 1px solid ${theme.colors.border.weak};
overflow-x: auto;
`,
noBorder: css`
border-bottom: 0;
`,
tabs: css`
position: relative;
display: flex;
height: ${theme.components.menuTabs.height}px;
`,
});
TabsBar.displayName = 'TabsBar';