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;