terriajs
Version:
Geospatial data visualization platform.
156 lines (130 loc) • 5.65 kB
JavaScript
import styled from "styled-components";
export const Box = styled.div `
display: flex;
box-sizing: border-box;
${(props) => props.position && `position: ${props.position};`}
${(props) => props.position === "absolute" && `z-index:1;`}
${(props) => !props.position && `position: relative;`}
${(props) => props.topRight &&
`
right: 0px;
top: 0px;
`}
${(props) => props.displayInlineBlock && `display: inline-block;`}
${(props) => props.rounded && `border-radius: ${props.theme.radiusLarge};`}
${(props) => props.fullHeight && `height: 100%;`}
${(props) => props.fullWidth && `width: 100%;`}
${(props) => props.styledWidth && `width: ${props.styledWidth};`}
${(props) => props.styledHeight && `height: ${props.styledHeight};`}
${(props) => props.styledMinWidth && `min-width: ${props.styledMinWidth};`}
${(props) => props.styledMaxWidth && `max-width: ${props.styledMaxWidth};`}
${(props) => props.styledMinHeight && `min-height: ${props.styledMinHeight};`}
${(props) => props.styledMaxHeight && `max-height: ${props.styledMaxHeight};`}
${(props) => props.col &&
`
float: left;
box-sizing: border-box;
`}
// ${(props) => props.col1 && "width: 8.33333%;"}
// ${(props) => props.col2 && "width: 16.66667%;"}
// ${(props) => props.col3 && "width: 25%;"}
// ${(props) => props.col4 && "width: 33.33333%;"}
${(props) => props.col5 && "width: 41.66667%;"}
${(props) => props.col6 && "width: 50%;"}
// ${(props) => props.col7 && "width: 58.33333%;"}
// ${(props) => props.col8 && "width: 66.66667%;"}
// ${(props) => props.col9 && "width: 75%;"}
${(props) => props.col10 && "width: 83.33333%;"}
${(props) => props.col11 && "width: 91.66667%;"}
// ${(props) => props.col12 && "width: 100%;"}
${(props) => props.verticalCenter && `align-items: center;`}
${(props) => props.centered && `align-items: center;`}
${(props) => props.centered && `justify-content: center;`}
${(props) => props.justifyContentSpaceAround && `justify-content: space-around;`}
${(props) => props.justifySpaceBetween && `justify-content: space-between;`}
${(props) => props.left && `align-items: center;`}
${(props) => props.left && `justify-content: flex-start;`}
${(props) => props.alignItemsFlexStart && `align-items: flex-start;`}
${(props) => props.leftSelf && `align-self: flex-start;`}
${(props) => props.right && `align-items: center;`}
${(props) => props.right && `justify-content: flex-end;`}
${(props) => props.alignItemsFlexEnd && `align-items: flex-end;`}
${(props) => props.rightSelf && `align-self: flex-end;`}
${(props) => props.column && `flex-direction: column;`}
${(props) => props.flexWrap && `flex-wrap: wrap;`}
${(props) => props.flex && `flex: ${props.flex};`}
${(props) => props.flexShrinkZero && `flex-shrink: 0;`}
${(props) => props.boxShadow && `box-shadow: 0 2px 8px 0 rgba(0,0,0,0.16);`}
/* Background colours? unsure how to handle this on theme level yet */
${(props) => props.charcoalGreyBg && `background-color: ${props.theme.charcoalGrey};`}
/* background color can be set on box or passed in through props read via theme...? */
${(props) => props.backgroundColor && `background-color: ${props.backgroundColor};`}
/* Unsure of padding API as yet */
${(props) => props.padded && `padding: 5px;`}
${(props) => props.paddedRatio && `padding: ${5 * props.paddedRatio}px;`}
${(props) => props.paddedHorizontally &&
`
padding-left:${5 * (props.paddedHorizontally === true ? 1 : props.paddedHorizontally)}px;
padding-right:${5 * (props.paddedHorizontally === true ? 1 : props.paddedHorizontally)}px;
`}
${(props) => props.paddedVertically &&
`
padding-top: ${5 * (props.paddedVertically === true ? 1 : props.paddedVertically)}px;
padding-bottom: ${5 * (props.paddedVertically === true ? 1 : props.paddedVertically)}px;
`}
${(props) => props.styledPadding && `padding: ${props.styledPadding};`}
${(props) => props.styledMargin && `margin: ${props.styledMargin};`}
${(props) => props.backgroundImage &&
`
${props.backgroundBlackOverlay
? `
background-image: linear-gradient(
rgba(0, 0, 0, ${props.backgroundBlackOverlay}),
rgba(0, 0, 0, ${props.backgroundBlackOverlay})
),
url(${props.backgroundImage});`
: `background-image: url(${props.backgroundImage});`}
background-size: cover;
background-repeat: no-repeat;
background-position: center;
`}
${(props) => props.wordBreak && `word-break: ${props.wordBreak};`}
${(props) => props.whiteSpace && `white-space: ${props.whiteSpace};`}
${(props) => props.overflow &&
`
overflow: ${props.overflow};
`}
${(props) => props.overflowY &&
`
overflow-y: ${props.overflowY};
`}
${(props) => props.overflowX &&
`
overflow-x: ${props.overflowX};
`}
${(props) => props.gap &&
`
gap: ${5 * (props.gap === true ? 1 : props.gap)}px;;
`}
${(props) => props.scroll &&
`
-webkit-overflow-scrolling: touch;
&::-webkit-scrollbar {
width: 5px; /* for vertical scrollbars */
height: 8px; /* for horizontal scrollbars */
}
&::-webkit-scrollbar-track {
background: ${props.theme.scrollbarTrackColor};
border-radius: ${props.theme.radiusLarge};
}
&::-webkit-scrollbar-thumb {
background: ${props.theme.scrollbarColor};
border-radius: ${props.theme.radiusLarge}
}
`}
`;
export const BoxSpan = styled(Box).attrs((_props) => ({
as: "span"
})) ``;
export default Box;
//# sourceMappingURL=Box.js.map