new MediaChoice approach for setting conditional css properties

This commit is contained in:
Steve Klebanoff
2018-11-06 14:05:49 -08:00
parent 88c7d907fa
commit 006a13448f
6 changed files with 19 additions and 61 deletions

View File

@@ -1,7 +1,7 @@
import * as _ from 'lodash';
import { darken } from 'polished';
import { media } from '../../style/media';
import { MediaChoice, stylesForMedia } from '../../style/media';
import { ColorOption, styled } from '../../style/theme';
import { cssRuleIfExists } from '../../style/util';
@@ -12,8 +12,8 @@ export interface ContainerProps {
right?: string;
bottom?: string;
left?: string;
width?: string;
height?: string;
width?: MediaChoice;
height?: MediaChoice;
maxWidth?: string;
margin?: string;
marginTop?: string;
@@ -36,22 +36,8 @@ export interface ContainerProps {
overflow?: string;
darkenOnHover?: boolean;
flexGrow?: string | number;
smallWidth?: string;
smallHeight?: string;
}
const mediaStyles = (props: ContainerProps) => {
if (!_.some([props.smallWidth, props.smallHeight])) {
return '';
}
return media.small`
width: ${props.smallWidth || props.width || 'auto'}
height: ${props.smallHeight || props.height || 'auto'}
`;
};
// TODO Dont commit flex grow
export const Container =
styled.div <
@@ -84,7 +70,8 @@ export const Container =
${props => cssRuleIfExists(props, 'cursor')}
${props => cssRuleIfExists(props, 'overflow')}
${props => (props.hasBoxShadow ? `box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1)` : '')};
${props => mediaStyles(props)}
${props => stylesForMedia('width', props.width || 'auto')}
${props => stylesForMedia('height', props.height || 'auto')}
background-color: ${props => (props.backgroundColor ? props.theme[props.backgroundColor] : 'none')};
border-color: ${props => (props.borderColor ? props.theme[props.borderColor] : 'none')};
&:hover {