Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions dotcom-rendering/src/components/Figure.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,11 @@ export const Figure = ({
articleArrangement === 'immersiveLandscape',
format.theme === ArticleSpecial.Labs,
),
articleArrangement === 'immersivePortrait' &&
css`
height: auto;
aspect-ratio: 4 / 5;
`,
articleArrangement === 'immersivePortrait' &&
format.design === ArticleDesign.WeekendEssay &&
css`
Expand Down
2 changes: 1 addition & 1 deletion dotcom-rendering/src/components/MostViewedFooterLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ const frontStyles = (hasPageSkin: boolean) => css`

const adFreeStyles = css`
${between.desktop.and.leftCol} {
min-width: 960px;
min-width: min(960px, 100%);
}
${between.leftCol.and.wide} {
width: 75%;
Expand Down
8 changes: 4 additions & 4 deletions dotcom-rendering/src/grid.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ type Line =
const mobileColumns =
'[grid-start] 0px [centre-column-start] repeat(6, 1fr) [centre-column-end] 0px [grid-end]';
const tabletColumns =
'[grid-start] 1fr [centre-column-start] repeat(12, 40px) [centre-column-end] 1fr [grid-end]';
'[grid-start] 1fr [centre-column-start] repeat(12, minmax(0, 40px)) [centre-column-end] 1fr [grid-end]';
const desktopColumns =
'[grid-start] 1fr [centre-column-start] repeat(8, 60px) [centre-column-end right-column-start] repeat(4, 60px) [right-column-end] 1fr [grid-end]';
'[grid-start] 1fr [centre-column-start] repeat(8, minmax(0, 60px)) [centre-column-end right-column-start] repeat(4, minmax(0, 60px)) [right-column-end] 1fr [grid-end]';
const leftColColumns =
'[grid-start] 1fr [left-column-start] repeat(2, 60px) [left-column-end centre-column-start] repeat(8, 60px) [centre-column-end right-column-start] repeat(4, 60px) [right-column-end] 1fr [grid-end]';
'[grid-start] 1fr [left-column-start] repeat(2, minmax(0, 60px)) [left-column-end centre-column-start] repeat(8, minmax(0, 60px)) [centre-column-end right-column-start] repeat(4, minmax(0, 60px)) [right-column-end] 1fr [grid-end]';
const wideColumns =
'[grid-start] 1fr [left-column-start] repeat(3, 60px) [left-column-end centre-column-start] repeat(8, 60px) [centre-column-end] 60px [right-column-start] repeat(4, 60px) [right-column-end] 1fr [grid-end]';
'[grid-start] 1fr [left-column-start] repeat(3, minmax(0, 60px)) [left-column-end centre-column-start] repeat(8, minmax(0, 60px)) [centre-column-end] minmax(0, 60px) [right-column-start] repeat(4, minmax(0, 60px)) [right-column-end] 1fr [grid-end]';
const mobileColumnGap = '10px';
const columnGap = '20px';

Expand Down
77 changes: 77 additions & 0 deletions dotcom-rendering/src/layouts/StandardLayout.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { breakpoints } from '@guardian/source/foundations';
import type { Meta, StoryObj } from '@storybook/react-webpack5';
import { expect, within } from 'storybook/test';
import { allModes } from '../../.storybook/modes';
import { Audio as AudioFixture } from '../../fixtures/generated/fe-articles/Audio';
import { Recipe as RecipeFixture } from '../../fixtures/generated/fe-articles/Recipe';
import { Standard as StandardFixture } from '../../fixtures/generated/fe-articles/Standard';
import { ArticleDesign, ArticleDisplay } from '../lib/articleFormat';
import { getCurrentPillar } from '../lib/layoutHelpers';
Expand Down Expand Up @@ -241,3 +243,78 @@ export const WebImmersiveMobile: Story = {
await expect(height).toBeCloseTo((width * 5) / 4, 0);
},
};

const webImmersivePortraitArticle = enhanceArticleType(
{
...RecipeFixture,
format: {
...RecipeFixture.format,
display: 'ImmersiveDisplay',
},
mainMediaElements: RecipeFixture.mainMediaElements.map((element) =>
element._type ===
'model.dotcomrendering.pageElements.ImageBlockElement'
? {
...element,
media: {
...element.media,
allImages: element.media.allImages.map((image) => ({
...image,
fields: {
...image.fields,
aspectRatio: `${image.fields.width}:${image.fields.height}`,
},
})),
},
}
: element,
),
},
'Web',
);
const immersivePortraitFormat = {
design: webImmersivePortraitArticle.design,
display: webImmersivePortraitArticle.display,
theme: webImmersivePortraitArticle.theme,
};

export const WebImmersivePortrait: Story = {
args: {
renderingTarget: 'Web',
NAV: {
...extractNAV(webImmersivePortraitArticle.frontendData.nav),
selectedPillar: getCurrentPillar(
webImmersivePortraitArticle.frontendData,
),
},
article: {
...webImmersivePortraitArticle.frontendData,
shouldHideAds: true,
},
format: immersivePortraitFormat,
},
parameters: {
formats: [immersivePortraitFormat],
chromatic: {
modes: {
'light mobile': allModes['light mobile'],
'light mobileMedium': allModes['light mobileMedium'],
'light mobileLandscape': {
...allModes.light,
viewport: breakpoints.mobileLandscape,
},
'light phablet': {
...allModes.light,
viewport: breakpoints.phablet,
},
'light tablet': {
...allModes.light,
viewport: breakpoints.tablet,
},
'light desktop': allModes['light desktop'],
'light leftCol': allModes['light leftCol'],
'light wide': allModes['light wide'],
},
},
},
};
12 changes: 4 additions & 8 deletions dotcom-rendering/src/layouts/StandardLayoutArticleGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ export const StandardLayoutArticleGrid = ({
const isImmersiveLandscape = layoutType === 'immersiveLandscape';
const isImmersive = isImmersivePortrait || isImmersiveLandscape;

const hasMinimumImageHeight =
const hasLabsPortraitImage =
isLabs && isImmersivePortrait && isMainMediaImage;

const ageWarning = getAgeWarning(
Expand Down Expand Up @@ -334,23 +334,19 @@ export const StandardLayoutArticleGrid = ({

${isImmersivePortrait &&
css`
${from.desktop} {
aspect-ratio: 4/5;
}
aspect-ratio: 4 / 5;
`}

${isImmersiveLandscape &&
landscapeImmersiveMediaBelowDesktop}

${hasMinimumImageHeight &&
${hasLabsPortraitImage &&
css`
${until.tablet} {
position: relative;
width: 100%;
min-width: 0;
min-height: 469px;
${mainMediaAspectRatio != null &&
`aspect-ratio: ${mainMediaAspectRatio.replace(':', ' / ')};`}
aspect-ratio: 4 / 5;
overflow: hidden;
background-color: ${headlineBackgroundImmersive};

Expand Down
Loading