ArticleCard image refactoring
This commit is contained in:
1 parent
3dfca4c3e2
commit
9fb815081c
2 files changed
+29
-13
No files matched your search
@@ -6,11 +6,18 @@ const Date = ({ children }) => (
|
|||||||
<p className="date">{dateFormat(children)}</p>
|
<p className="date">{dateFormat(children)}</p>
|
||||||
)
|
)
|
||||||
|
|
||||||
export interface IArticleCardProps {
|
interface IImage {
|
||||||
article: any
|
alt: string
|
||||||
|
src: string
|
||||||
|
srcSet: Array<{ url: string, density: number }>
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ArticleCard: React.FC<IArticleCardProps> = ({ article }) => (
|
export interface IArticleCardProps {
|
||||||
|
article: any
|
||||||
|
preview?: IImage
|
||||||
|
}
|
||||||
|
|
||||||
|
export const ArticleCard: React.FC<IArticleCardProps> = ({ article, ...props }) => (
|
||||||
<section className="ArticleCard">
|
<section className="ArticleCard">
|
||||||
<style jsx>{`
|
<style jsx>{`
|
||||||
.ArticleCard {
|
.ArticleCard {
|
||||||
@@ -105,13 +112,13 @@ export const ArticleCard: React.FC<IArticleCardProps> = ({ article }) => (
|
|||||||
|
|
||||||
<a className="invisible" href={article.url}>
|
<a className="invisible" href={article.url}>
|
||||||
<div className="ArticleCard-image">
|
<div className="ArticleCard-image">
|
||||||
{!article.preview ? null : (
|
{!props.preview ? null : (
|
||||||
<picture>
|
<picture>
|
||||||
<img
|
<img
|
||||||
className={cx({ opa: false })}
|
className={cx({ opa: false })}
|
||||||
alt={article.title}
|
alt={props.preview.alt}
|
||||||
src={article.preview.src}
|
src={props.preview.src}
|
||||||
srcSet={article.preview.set.map(({ url, density }) => `${url} ${density}x`)}
|
srcSet={props.preview.srcSet.map(({ url, density }) => `${url} ${density}x`).join(' ')}
|
||||||
/>
|
/>
|
||||||
</picture >
|
</picture >
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -17,12 +17,21 @@ export const ArticleCardList = ({ articles, nextPage, prevPage }) => (
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
<div className={'body'}>
|
<div className={'body'}>
|
||||||
{articles.map((article, i) => (
|
{articles.map((article, i) => {
|
||||||
<ArticleCard
|
const preview = {
|
||||||
key={i}
|
alt: article.title,
|
||||||
article={article}
|
src: article.preview.src,
|
||||||
/>
|
srcSet: article.preview.set,
|
||||||
))}
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ArticleCard
|
||||||
|
key={i}
|
||||||
|
article={article}
|
||||||
|
preview={preview}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
})}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{!nextPage ? null : (
|
{!nextPage ? null : (
|
||||||
|
|||||||
Reference in new issue
Block a user