Skip to content

Commit eac0d74

Browse files
authored
Merge pull request #13630 from guardian/doml/highlights-aspect-ratio
Set aspect ratio of images in highlights card to 1:1
2 parents e52111d + a2b91e4 commit eac0d74

File tree

1 file changed

+37
-28
lines changed

1 file changed

+37
-28
lines changed

dotcom-rendering/src/components/Masthead/HighlightsCard.tsx

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ const decideImage = (
142142
if (!image && !avatarUrl) {
143143
return null;
144144
}
145+
145146
if (avatarUrl) {
146147
return (
147148
<Avatar
@@ -152,6 +153,7 @@ const decideImage = (
152153
/>
153154
);
154155
}
156+
155157
if (mainMedia?.type === 'Audio' && mainMedia.podcastImage?.src) {
156158
return (
157159
<>
@@ -161,15 +163,17 @@ const decideImage = (
161163
alt={mainMedia.podcastImage.altText}
162164
loading={imageLoading}
163165
isCircular={false}
164-
aspectRatio={'1:1'}
166+
aspectRatio="1:1"
165167
/>
166168
<div className="image-overlay"> </div>
167169
</>
168170
);
169171
}
172+
170173
if (!image) {
171174
return null;
172175
}
176+
173177
return (
174178
<>
175179
<CardPicture
@@ -178,13 +182,41 @@ const decideImage = (
178182
alt={image.altText}
179183
loading={imageLoading}
180184
isCircular={true}
185+
aspectRatio="1:1"
181186
/>
182187
{/* This image overlay is styled when the CardLink is hovered */}
183188
<div className="image-overlay circular"> </div>
184189
</>
185190
);
186191
};
187192

193+
const MediaPill = ({ mainMedia }: { mainMedia: MainMedia }) => (
194+
<div css={mediaIcon}>
195+
{mainMedia.type === 'Video' && (
196+
<Pill
197+
content={secondsToDuration(mainMedia.duration)}
198+
icon={<SvgMediaControlsPlay />}
199+
iconSize="small"
200+
/>
201+
)}
202+
{mainMedia.type === 'Audio' && (
203+
<Pill
204+
content={mainMedia.duration}
205+
icon={<SvgMediaControlsPlay />}
206+
iconSize="small"
207+
/>
208+
)}
209+
{mainMedia.type === 'Gallery' && (
210+
<Pill
211+
prefix="Gallery"
212+
content={mainMedia.count}
213+
icon={<SvgCamera />}
214+
iconSide="right"
215+
/>
216+
)}
217+
</div>
218+
);
219+
188220
export const HighlightsCard = ({
189221
linkTo,
190222
format,
@@ -201,32 +233,7 @@ export const HighlightsCard = ({
201233
starRating,
202234
}: HighlightsCardProps) => {
203235
const isMediaCard = isMedia(format);
204-
const MediaPill = () => (
205-
<div css={mediaIcon}>
206-
{mainMedia?.type === 'Video' && (
207-
<Pill
208-
content={secondsToDuration(mainMedia.duration)}
209-
icon={<SvgMediaControlsPlay />}
210-
iconSize={'small'}
211-
/>
212-
)}
213-
{mainMedia?.type === 'Audio' && (
214-
<Pill
215-
content={mainMedia.duration}
216-
icon={<SvgMediaControlsPlay />}
217-
iconSize={'small'}
218-
/>
219-
)}
220-
{mainMedia?.type === 'Gallery' && (
221-
<Pill
222-
prefix="Gallery"
223-
content={mainMedia.count}
224-
icon={<SvgCamera />}
225-
iconSide="right"
226-
/>
227-
)}
228-
</div>
229-
);
236+
230237
return (
231238
<FormatBoundary format={format}>
232239
<div css={[gridContainer, hoverStyles]}>
@@ -265,7 +272,9 @@ export const HighlightsCard = ({
265272
</div>
266273
) : null}
267274

268-
{!!mainMedia && isMediaCard && MediaPill()}
275+
{!!mainMedia && isMediaCard && (
276+
<MediaPill mainMedia={mainMedia} />
277+
)}
269278

270279
<div css={[imageArea, avatarUrl && avatarAlignmentStyles]}>
271280
{decideImage(

0 commit comments

Comments
 (0)