Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
4 changes: 4 additions & 0 deletions dotcom-rendering/src/components/Card/Card.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -821,6 +821,7 @@ export const Card = ({
? palette('--onward-content-top-border')
: undefined
}
isLoopAndInLoopClickTestVariant={isLoopAndInLoopClickTestVariant}
>
<CardLink
linkTo={linkTo}
Expand Down Expand Up @@ -893,6 +894,9 @@ export const Card = ({
mediaPositionOnMobile={mediaPositionOnMobile}
padMedia={isMediaCardOrNewsletter && !isOnwardsContent}
isSmallCard={isSmallCard}
isLoopAndInLoopClickTestVariant={
isLoopAndInLoopClickTestVariant
}
>
{media.type === 'slideshow' && (
<Island
Expand Down
12 changes: 9 additions & 3 deletions dotcom-rendering/src/components/Card/components/CardWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ type Props = {
showTopBarMobile: boolean;
containerPalette?: DCRContainerPalette;
topBarColour?: string;
isLoopAndInLoopClickTestVariant?: boolean;
};

const baseCardStyles = css`
Expand Down Expand Up @@ -41,7 +42,7 @@ const baseCardStyles = css`
text-decoration: none;
`;

const hoverStyles = css`
const hoverStyles = (isLoopAndInLoopClickTestVariant: boolean) => css`
:hover .media-overlay {
width: 100%;
height: 100%;
Expand All @@ -59,7 +60,11 @@ const hoverStyles = css`
*/
:has(
ul.sublinks:hover,
.video-container:not(.cinemagraph):hover,
.video-container:not(
${isLoopAndInLoopClickTestVariant
? `.cinemagraph, .loop`
: `.cinemagraph`}
):hover,
.slideshow-carousel-footer:hover,
.branding-logo:hover
) {
Expand Down Expand Up @@ -100,14 +105,15 @@ export const CardWrapper = ({
showTopBarMobile,
containerPalette,
topBarColour = palette('--card-border-top'),
isLoopAndInLoopClickTestVariant,
}: Props) => {
return (
<FormatBoundary format={format}>
<ContainerOverrides containerPalette={containerPalette}>
<div
css={[
baseCardStyles,
hoverStyles,
hoverStyles(isLoopAndInLoopClickTestVariant === true),
showTopBarDesktop && desktopTopBarStyles(topBarColour),
showTopBarMobile && mobileTopBarStyles(topBarColour),
]}
Expand Down
11 changes: 10 additions & 1 deletion dotcom-rendering/src/components/Card/components/MediaWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ type Props = {
mediaPositionOnMobile: MediaPositionType;
isSmallCard: boolean;
padMedia?: boolean;
isLoopAndInLoopClickTestVariant?: boolean;
};

const mediaOverlayContainerStyles = css`
Expand Down Expand Up @@ -72,6 +73,7 @@ const mediaPaddingStyles = (
padding-top: ${mediaPositionOnMobile !== 'bottom' && `${space[2]}px`};
padding-bottom: ${mediaPositionOnMobile !== 'top' && `${space[2]}px`};
}

${from.tablet} {
padding-left: ${mediaPositionOnDesktop !== 'right' && `${space[2]}px`};
padding-right: ${mediaPositionOnDesktop !== 'left' && `${space[2]}px`};
Expand All @@ -96,6 +98,7 @@ const flexBasisStyles = ({
if (mediaType === 'podcast' && !isSmallCard) {
return css`
flex-basis: 120px;

${from.desktop} {
flex-basis: 168px;
}
Expand All @@ -114,6 +117,7 @@ const flexBasisStyles = ({
${from.tablet} {
flex-basis: 460px;
}

${from.desktop} {
flex-basis: 620px;
}
Expand All @@ -123,6 +127,7 @@ const flexBasisStyles = ({
${from.tablet} {
flex-basis: 520px;
}

${from.desktop} {
flex-basis: 700px;
}
Expand Down Expand Up @@ -172,6 +177,7 @@ export const MediaWrapper = ({
mediaPositionOnMobile,
isSmallCard,
padMedia,
isLoopAndInLoopClickTestVariant,
}: Props) => {
const isHorizontalOnMobile =
mediaPositionOnMobile === 'left' || mediaPositionOnMobile === 'right';
Expand Down Expand Up @@ -209,6 +215,7 @@ export const MediaWrapper = ({
css`
/* position relative is required here to bound the image overlay */
position: relative;

img {
width: 100%;
display: block;
Expand All @@ -232,7 +239,9 @@ export const MediaWrapper = ({
<>
{children}
{/* This overlay is styled when the CardLink is hovered */}
{(mediaType === 'picture' || mediaType === 'cinemagraph') && (
{(mediaType === 'picture' ||
mediaType === 'cinemagraph' ||
isLoopAndInLoopClickTestVariant == true) && (
<div
css={[
mediaOverlayContainerStyles,
Expand Down
27 changes: 22 additions & 5 deletions dotcom-rendering/src/components/FeatureCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,16 @@ const underlineOnHoverStyles = css`
}
`;

const hoverStyles = css`
const hoverStyles = (isLoopAndInLoopClickTestVariant: boolean) => css`
:hover .media-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: ${palette('--card-background-hover')};

${isLoopAndInLoopClickTestVariant && loopClickThroughOverlayStyles}
}

${underlineOnHoverStyles}
Expand All @@ -106,6 +108,12 @@ const hoverStyles = css`
}
`;

const loopClickThroughOverlayStyles = css`
z-index: ${getZIndex('mediaOverlay')};
cursor: pointer;
pointer-events: none;
`;

const contentStyles = css`
display: flex;
flex-basis: 100%;
Expand Down Expand Up @@ -507,17 +515,25 @@ export const FeatureCard = ({

const aspectRatioNumber = isImmersive ? 5 / 3 : 4 / 5;

/* The whole card is clickable on cinemagraphs and pictures */
/** The whole card is clickable for:
* - cinemagraphs
* - pictures
* - loops in the loop click test variant group
* */
const allowLinkThroughOverlay =
media.style === 'cinemagraph' || media.type === 'picture';
media.style === 'cinemagraph' ||
media.type === 'picture' ||
isLoopAndInLoopClickTestVariant;

return (
<FormatBoundary format={format}>
<ContainerOverrides containerPalette={containerPalette}>
<div
css={[
baseCardStyles,
!isSelfHostedVideoWithControls && hoverStyles,
(!isSelfHostedVideoWithControls ||
isLoopAndInLoopClickTestVariant) &&
hoverStyles(isLoopAndInLoopClickTestVariant),
]}
>
{!isYoutubeVideo && !isSelfHostedVideoWithControls && (
Expand Down Expand Up @@ -692,7 +708,8 @@ export const FeatureCard = ({
)}

{/* This overlay is styled when the CardLink is hovered */}
{!isSelfHostedVideoWithControls && (
{(!isSelfHostedVideoWithControls ||
isLoopAndInLoopClickTestVariant) && (
<div className="media-overlay" />
)}
<div
Expand Down
Loading