-
Notifications
You must be signed in to change notification settings - Fork 230
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Amp Img #1101
Amp Img #1101
Changes from 26 commits
206e4b8
2df0125
aafe6c3
4e18239
8b5da7b
5c6a973
ed6791f
da39b3d
3dc4bbf
5121fbc
fec261b
a79ff57
766a0e5
921929a
58c0ec8
39db323
bc0d448
aba7527
a849328
0b2f529
13e46dc
d981939
ff2bd2a
3ef1341
baa6570
a166b7c
db7df3b
a7303a6
89002af
7e291e3
8399629
974b8ec
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Image component | ||
|
||
## Usage | ||
|
||
Importing the standard Image component, which renders an `<img />` tag. | ||
|
||
```jsx | ||
import Image from '../components/Image'; | ||
|
||
const WrappingContainer = ({ alt, height, src, width }) => ( | ||
<Img alt={alt} height={height} src={src} width={width} /> | ||
); | ||
``` | ||
|
||
Importing an Amp Image component, which renders an `<amp-img />` tag. | ||
|
||
```jsx | ||
import { AmpImg } from '../components/Image'; | ||
|
||
const WrappingContainer = ({ alt, height, src, width }) => ( | ||
<AmpImg alt={alt} height={height} src={src} width={width} /> | ||
); | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Needs the rest of the README structure (guess I could have raised an issue for that!), e.g. https://github.com/BBC-News/psammead/tree/latest/packages/components/psammead-paragraph There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The CoC and other links will need to change when we move it to Psammead. I've added a note to the description in this Issue: BBC-archive/psammead#203 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
// Jest Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`Image - AmpImg should render image with custom dimensions correctly 1`] = ` | ||
.c0 { | ||
display: block; | ||
width: 100%; | ||
} | ||
|
||
<amp-img | ||
alt="By Elisa Decker, from her series \\"Sidewalk\\"" | ||
className="c0" | ||
height={547} | ||
src="https://ichef.bbci.co.uk/news/445/cpsprodpb/164BB/production/_104032319_03270dcc-9dda-4bd4-96a0-db89f6b915ae.jpg" | ||
width={445} | ||
/> | ||
`; | ||
|
||
exports[`Image - AmpImg should render image with srcset correctly 1`] = ` | ||
.c0 { | ||
display: block; | ||
width: 100%; | ||
} | ||
|
||
<amp-img | ||
alt="Student sitting an exam" | ||
className="c0" | ||
height={576} | ||
src="https://ichef.bbci.co.uk/news/1024/cpsprodpb/7098/production/_104842882_students.jpg" | ||
srcSet="https://ichef.bbci.co.uk/news/1024/cpsprodpb/7098/production/_104842882_students.jpg 1024w, https://ichef.bbci.co.uk/news/1024/cpsprodpb/7098/production/_104842882_students.jpg 1024w, https://ichef.bbci.co.uk/news/1024/cpsprodpb/7098/production/_104842882_students.jpg 1024w, https://ichef.bbci.co.uk/news/1024/cpsprodpb/7098/production/_104842882_students.jpg 1024w, https://ichef.bbci.co.uk/news/1024/cpsprodpb/7098/production/_104842882_students.jpg 1024w" | ||
width={1024} | ||
/> | ||
`; | ||
|
||
exports[`Image - AmpImg should render landscape image correctly 1`] = ` | ||
.c0 { | ||
display: block; | ||
width: 100%; | ||
} | ||
|
||
<amp-img | ||
alt="Student sitting an exam" | ||
className="c0" | ||
height={576} | ||
src="https://ichef.bbci.co.uk/news/1024/cpsprodpb/7098/production/_104842882_students.jpg" | ||
width={1024} | ||
/> | ||
`; | ||
|
||
exports[`Image - AmpImg should render portrait image correctly 1`] = ` | ||
.c0 { | ||
display: block; | ||
width: 100%; | ||
} | ||
|
||
<amp-img | ||
alt="Map of the UK displaying Syrian refugees and asylum seekers per 10000 population. Ranges from 0 to 17." | ||
className="c0" | ||
height={1138} | ||
src="https://ichef.bbci.co.uk/news/640/cpsprodpb/439A/production/_100960371_syrians_and_asylum_v2-nc.png" | ||
width={640} | ||
/> | ||
`; | ||
|
||
exports[`Image - AmpImg should render square image correctly 1`] = ` | ||
.c0 { | ||
display: block; | ||
width: 100%; | ||
} | ||
|
||
<amp-img | ||
alt="Tracks through the snow" | ||
className="c0" | ||
height={1024} | ||
src="https://ichef.bbci.co.uk/news/1024/cpsprodpb/114FE/production/_104801907_79010.jpg" | ||
width={1024} | ||
/> | ||
`; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// Jest Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`StyledImg should render correctly 1`] = ` | ||
.c0 { | ||
display: block; | ||
width: 100%; | ||
} | ||
|
||
<img | ||
className="c0" | ||
/> | ||
`; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import React from 'react'; | ||
import { number, string } from 'prop-types'; | ||
import StyledImg from './styledImg'; | ||
|
||
const AmpImg = ({ alt, height, src, srcset, width }) => { | ||
const props = { | ||
as: 'amp-img', | ||
layout: 'responsive', | ||
alt, | ||
src, | ||
height, | ||
width, | ||
}; | ||
|
||
if (srcset) { | ||
props.srcSet = srcset; | ||
} | ||
|
||
return <StyledImg {...props} />; | ||
}; | ||
|
||
AmpImg.propTypes = { | ||
alt: string.isRequired, | ||
src: string.isRequired, | ||
srcset: string, | ||
height: number.isRequired, | ||
width: number.isRequired, | ||
}; | ||
|
||
AmpImg.defaultProps = { | ||
srcset: null, | ||
}; | ||
|
||
export default AmpImg; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
import AmpImg from './index.amp'; | ||
import stories from './testHelpers/stories'; | ||
|
||
stories(AmpImg, 'Image - AmpImg'); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
import AmpImg from './index.amp'; | ||
import snapshotTests from './testHelpers/snapshotTests'; | ||
|
||
describe('Image - AmpImg', () => { | ||
sareh marked this conversation as resolved.
Show resolved
Hide resolved
sareh marked this conversation as resolved.
Show resolved
Hide resolved
|
||
snapshotTests(AmpImg); | ||
}); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,29 @@ | ||
import styled from 'styled-components'; | ||
import React from 'react'; | ||
import { number, string } from 'prop-types'; | ||
import StyledImg from './styledImg'; | ||
|
||
const Image = styled.img` | ||
display: block; | ||
width: 100%; | ||
`; | ||
export { default as AmpImg } from './index.amp'; | ||
|
||
export default Image; | ||
export const Img = ({ alt, height, src, srcset, width }) => { | ||
const props = { alt, src, height, width }; | ||
|
||
if (srcset) { | ||
props.srcSet = srcset; | ||
} | ||
|
||
return <StyledImg {...props} />; | ||
}; | ||
|
||
Img.propTypes = { | ||
alt: string.isRequired, | ||
src: string.isRequired, | ||
ChrisBAshton marked this conversation as resolved.
Show resolved
Hide resolved
|
||
srcset: string, | ||
height: number.isRequired, | ||
width: number.isRequired, | ||
}; | ||
|
||
Img.defaultProps = { | ||
srcset: null, | ||
}; | ||
|
||
export default Img; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,4 @@ | ||
import React from 'react'; | ||
import { storiesOf } from '@storybook/react'; // eslint-disable-line import/no-extraneous-dependencies | ||
import Image from './index'; | ||
import { Img } from '.'; | ||
import stories from './testHelpers/stories'; | ||
|
||
const imageAlt = | ||
'Map of the UK displaying Syrian refugees and asylum seekers per 10000 population. Ranges from 0 to 17.'; | ||
const imageSrc = | ||
'https://ichef.bbci.co.uk/news/640/cpsprodpb/439A/production/_100960371_syrians_and_asylum_v2-nc.png'; | ||
|
||
storiesOf('Image', module).add('default', () => ( | ||
<Image alt={imageAlt} src={imageSrc} /> | ||
)); | ||
stories(Img, 'Image - Img'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(makes it consistent with the other below)