diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2018-11-09 08:09:38 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2018-11-09 08:09:38 +0800 |
commit | 211163b3724090347dba736cbcdcb2b1ec252bd0 (patch) | |
tree | 80f3b8e23daba4a12e4afc55d7a345678ca04795 /packages/instant/src/style/media.ts | |
parent | c84e163edb329b478749cad09f222cc12e3698fe (diff) | |
parent | 117e2f583ff44bdb63340a2134edea0f3ecb77b3 (diff) | |
download | dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.gz dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.bz2 dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.lz dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.xz dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.zst dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.zip |
Merge branch 'development' into feature/instant/account-state-change
* development:
[instant] Viewport specific errors (#1228)
Added more comments
Include wholeNumberSchema in sra-spec schemas
chore(instant): fix linter
Fix isNode
fix(instant): update buy quote at start up in the case of default amount
fix: apply css reset to overlay as well
fix(website): turn off production flag when building locally
chore: linter
fix: progress bar
fix: use fontSize prop in button
feat: make instant resistant to external styles
feat: add faux externall css file
Add upstream issue
Use const require instead of import
Fix tslint issues
Use detect-node
Set curstom inspect printer in BigNumber
Diffstat (limited to 'packages/instant/src/style/media.ts')
-rw-r--r-- | packages/instant/src/style/media.ts | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/packages/instant/src/style/media.ts b/packages/instant/src/style/media.ts index beabbac46..5e7aaba37 100644 --- a/packages/instant/src/style/media.ts +++ b/packages/instant/src/style/media.ts @@ -14,30 +14,38 @@ const generateMediaWrapper = (screenWidth: ScreenWidths) => (...args: any[]) => } `; -const media = { +export const media = { small: generateMediaWrapper(ScreenWidths.Sm), medium: generateMediaWrapper(ScreenWidths.Md), large: generateMediaWrapper(ScreenWidths.Lg), }; -export interface ScreenSpecifications { - default: string; - sm?: string; - md?: string; - lg?: string; +export interface ScreenSpecification<T> { + default: T; + sm?: T; + md?: T; + lg?: T; } -export type MediaChoice = string | ScreenSpecifications; -export const stylesForMedia = (cssPropertyName: string, choice: MediaChoice): InterpolationValue[] => { - if (typeof choice === 'string') { +export type OptionallyScreenSpecific<T> = T | ScreenSpecification<T>; +export type MediaChoice = OptionallyScreenSpecific<string>; +/** + * Given a css property name and a OptionallyScreenSpecific value, + * generates css properties with screen-specific viewport styling + */ +export function stylesForMedia<T extends string | number>( + cssPropertyName: string, + choice: OptionallyScreenSpecific<T>, +): InterpolationValue[] { + if (typeof choice === 'object') { return css` - ${cssPropertyName}: ${choice}; - `; - } - - return css` ${cssPropertyName}: ${choice.default}; ${choice.lg && media.large`${cssPropertyName}: ${choice.lg}`} ${choice.md && media.medium`${cssPropertyName}: ${choice.md}`} ${choice.sm && media.small`${cssPropertyName}: ${choice.sm}`} `; -}; + } else { + return css` + ${cssPropertyName}: ${choice}; + `; + } +} |