PromucFlow_constructor/app/client/src/components/designSystems/appsmith/ContainerComponent.tsx

51 lines
1.4 KiB
TypeScript
Raw Normal View History

import React, { forwardRef, Ref, ReactNode } from "react";
import styled from "styled-components";
2019-09-05 17:47:50 +00:00
import { ComponentProps } from "./BaseComponent";
2020-02-11 09:56:21 +00:00
import { getBorderCSSShorthand, invisible } from "constants/DefaultTheme";
import { Color } from "constants/Colors";
const StyledContainerComponent = styled.div<ContainerComponentProps>`
${props =>
props.containerStyle !== "none"
? `
border: ${getBorderCSSShorthand(props.theme.borders[2])};
border-radius: ${
props.containerStyle === "card" || props.containerStyle === "rounded-border"
? props.theme.radii[1]
: 0
}px;`
: ""}
height: 100%;
width: 100%;
background: ${props => props.backgroundColor};
2020-01-16 11:46:21 +00:00
position: relative;
2020-02-11 09:56:21 +00:00
${props => (!props.isVisible ? invisible : "")};
}`;
/* eslint-disable react/display-name */
const ContainerComponent = forwardRef(
(props: ContainerComponentProps, ref: Ref<HTMLDivElement>) => {
return (
<StyledContainerComponent {...props} ref={ref}>
{props.children}
</StyledContainerComponent>
);
},
);
ContainerComponent.defaultProps = {
containerStyle: "card",
backgroundColor: "white",
};
export type ContainerStyle = "border" | "card" | "rounded-border" | "none";
export interface ContainerComponentProps extends ComponentProps {
containerStyle?: ContainerStyle;
children?: ReactNode;
className?: string;
backgroundColor?: Color;
}
2019-09-09 09:08:54 +00:00
export default ContainerComponent;