github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/ui/dashboard/src/components/dashboards/layout/Container/index.tsx (about) 1 import Children from "../Children"; 2 import ContainerTitle from "../../titles/ContainerTitle"; 3 import Grid from "../Grid"; 4 import { ContainerDefinition } from "../../../../types"; 5 import { 6 ContainerProvider, 7 useContainer, 8 } from "../../../../hooks/useContainer"; 9 import { registerComponent } from "../../index"; 10 import { useDashboard } from "../../../../hooks/useDashboard"; 11 12 type ContainerProps = { 13 layoutDefinition?: ContainerDefinition; 14 definition?: ContainerDefinition; 15 }; 16 17 const Container = ({ definition }) => { 18 const { showTitle } = useContainer(); 19 return ( 20 <Grid name={definition.name} width={definition.width}> 21 {showTitle && <ContainerTitle title={definition.title} />} 22 <Children children={definition?.children || []} parentType="container" /> 23 </Grid> 24 ); 25 }; 26 27 const ContainerWrapper = (props: ContainerProps) => { 28 const { panelsMap } = useDashboard(); 29 30 if (!props.definition && !props.layoutDefinition) { 31 return null; 32 } 33 34 const panelDefinition = props.definition 35 ? props.definition 36 : props.layoutDefinition && panelsMap[props.layoutDefinition.name] 37 ? panelsMap[props.layoutDefinition.name] 38 : props.layoutDefinition; 39 40 if (!panelDefinition) { 41 return null; 42 } 43 44 return ( 45 <ContainerProvider> 46 <Container 47 definition={{ 48 ...panelDefinition, 49 children: props.definition 50 ? props.definition.children 51 : props.layoutDefinition 52 ? props.layoutDefinition.children 53 : [], 54 }} 55 /> 56 </ContainerProvider> 57 ); 58 }; 59 60 registerComponent("container", ContainerWrapper); 61 62 export default Container;