import { css } from '@emotion/css'; import { Fragment } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { SceneComponentProps } from '@grafana/scenes'; import { Divider, TabContent, TabsBar, useStyles2 } from '@grafana/ui'; import { getDashboardSceneFor } from '../../utils/utils'; import { TabItemMenu } from './TabItemMenu'; import { TabsLayoutManager } from './TabsLayoutManager'; export function TabsLayoutManagerRenderer({ model }: SceneComponentProps) { const styles = useStyles2(getStyles); const { tabs, currentTabIndex } = model.useState(); const currentTab = tabs[currentTabIndex]; const { layout } = currentTab.useState(); const dashboard = getDashboardSceneFor(model); const { isEditing } = dashboard.useState(); return ( <>
{tabs.map((tab, idx) => ( {isEditing && idx > 0 && } ))}
{isEditing && }
{currentTab && } ); } const getStyles = (theme: GrafanaTheme2) => ({ tabsWrapper: css({ overflow: 'hidden', }), tabsRow: css({ justifyContent: 'space-between', display: 'flex', width: '100%', }), tabsContainer: css({ display: 'flex', justifyContent: 'flex-start', alignItems: 'center', overflowX: 'scroll', overflowY: 'visible', paddingInline: theme.spacing(0.125), }), tabContentContainer: css({ backgroundColor: 'transparent', display: 'flex', flex: 1, height: '100%', overflow: 'auto', scrollbarWidth: 'thin', padding: '2px 2px 0 2px', }), });