Skip to content

Commit bc71031

Browse files
authored
use <aside> as ad slot wrapper rather than <div> element (#13593)
1 parent fa8e73f commit bc71031

File tree

1 file changed

+51
-60
lines changed

1 file changed

+51
-60
lines changed

dotcom-rendering/src/components/AdSlot.web.tsx

Lines changed: 51 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { css } from '@emotion/react';
1+
import { css, type Interpolation } from '@emotion/react';
22
import type { SlotName } from '@guardian/commercial';
33
import { adSizes, constants } from '@guardian/commercial';
44
import {
@@ -382,6 +382,22 @@ const crosswordBannerMobileAdStyles = css`
382382
min-height: ${adSizes.mobilesticky.height + constants.AD_LABEL_HEIGHT}px;
383383
`;
384384

385+
const AdSlotWrapper = ({
386+
children,
387+
css: additionalCss,
388+
className = 'ad-slot-container',
389+
}: {
390+
children: React.ReactNode;
391+
css?: Interpolation;
392+
className?: string;
393+
}) => {
394+
return (
395+
<aside className={className} css={additionalCss}>
396+
{children}
397+
</aside>
398+
);
399+
};
400+
385401
export const AdSlot = ({
386402
position,
387403
display,
@@ -395,7 +411,7 @@ export const AdSlot = ({
395411
switch (display) {
396412
case ArticleDisplay.Immersive: {
397413
return (
398-
<div className="ad-slot-container">
414+
<AdSlotWrapper>
399415
<div
400416
id="dfp-ad--right"
401417
css={rightAdStyles}
@@ -412,16 +428,13 @@ export const AdSlot = ({
412428
data-testid="slot"
413429
aria-hidden="true"
414430
/>
415-
</div>
431+
</AdSlotWrapper>
416432
);
417433
}
418434
case ArticleDisplay.Showcase:
419435
case ArticleDisplay.NumberedList: {
420436
return (
421-
<div
422-
className="ad-slot-container"
423-
css={[showcaseRightColumnContainerStyles]}
424-
>
437+
<AdSlotWrapper css={showcaseRightColumnContainerStyles}>
425438
<div
426439
id="dfp-ad--right"
427440
css={[rightAdStyles, showcaseRightColumnStyles]}
@@ -438,7 +451,7 @@ export const AdSlot = ({
438451
data-testid="slot"
439452
aria-hidden="true"
440453
/>
441-
</div>
454+
</AdSlotWrapper>
442455
);
443456
}
444457
case ArticleDisplay.Standard: {
@@ -458,9 +471,7 @@ export const AdSlot = ({
458471
}
459472
/>
460473
</Island>
461-
<div
462-
id="top-right-ad-slot"
463-
className="ad-slot-container"
474+
<AdSlotWrapper
464475
css={[
465476
css`
466477
position: static;
@@ -497,7 +508,7 @@ export const AdSlot = ({
497508
data-testid="slot"
498509
aria-hidden="true"
499510
/>
500-
</div>
511+
</AdSlotWrapper>
501512
</>
502513
);
503514
}
@@ -507,8 +518,7 @@ export const AdSlot = ({
507518
case 'right-football': {
508519
const slotId = 'dfp-ad--right';
509520
return (
510-
<div
511-
className="ad-slot-container"
521+
<AdSlotWrapper
512522
css={[
513523
css`
514524
height: 100%;
@@ -547,12 +557,12 @@ export const AdSlot = ({
547557
// Football fixtures pages cannot always support longer right column ads, so limit allowed size
548558
data-desktop="300,250"
549559
/>
550-
</div>
560+
</AdSlotWrapper>
551561
);
552562
}
553563
case 'comments': {
554564
return (
555-
<div className="ad-slot-container">
565+
<AdSlotWrapper>
556566
<div
557567
id="dfp-ad--comments"
558568
className={[
@@ -568,15 +578,12 @@ export const AdSlot = ({
568578
data-testid="slot"
569579
aria-hidden="true"
570580
/>
571-
</div>
581+
</AdSlotWrapper>
572582
);
573583
}
574584
case 'top-above-nav': {
575585
return (
576-
<div
577-
css={[topAboveNavContainerStyles]}
578-
className="ad-slot-container"
579-
>
586+
<AdSlotWrapper css={[topAboveNavContainerStyles]}>
580587
<div
581588
id="dfp-ad--top-above-nav"
582589
className={[
@@ -591,16 +598,13 @@ export const AdSlot = ({
591598
data-testid="slot"
592599
aria-hidden="true"
593600
></div>
594-
</div>
601+
</AdSlotWrapper>
595602
);
596603
}
597604
case 'mostpop': {
598605
return (
599606
<Hide until="tablet">
600-
<div
601-
className="ad-slot-container"
602-
css={[mostPopContainerStyles]}
603-
>
607+
<AdSlotWrapper css={mostPopContainerStyles}>
604608
<div
605609
id="dfp-ad--mostpop"
606610
className={[
@@ -616,16 +620,13 @@ export const AdSlot = ({
616620
data-testid="slot"
617621
aria-hidden="true"
618622
/>
619-
</div>
623+
</AdSlotWrapper>
620624
</Hide>
621625
);
622626
}
623627
case 'merchandising-high': {
624628
return (
625-
<div
626-
className="ad-slot-container"
627-
css={[merchandisingAdContainerStyles]}
628-
>
629+
<AdSlotWrapper css={[merchandisingAdContainerStyles]}>
629630
<div
630631
id="dfp-ad--merchandising-high"
631632
className={[
@@ -640,15 +641,12 @@ export const AdSlot = ({
640641
data-testid="slot"
641642
aria-hidden="true"
642643
/>
643-
</div>
644+
</AdSlotWrapper>
644645
);
645646
}
646647
case 'merchandising': {
647648
return (
648-
<div
649-
className="ad-slot-container"
650-
css={[merchandisingAdContainerStyles]}
651-
>
649+
<AdSlotWrapper css={merchandisingAdContainerStyles}>
652650
<div
653651
id="dfp-ad--merchandising"
654652
className={[
@@ -662,7 +660,7 @@ export const AdSlot = ({
662660
data-testid="slot"
663661
aria-hidden="true"
664662
/>
665-
</div>
663+
</AdSlotWrapper>
666664
);
667665
}
668666
case 'fronts-banner': {
@@ -672,8 +670,7 @@ export const AdSlot = ({
672670
className="top-fronts-banner-ad-container"
673671
css={frontsBannerAdTopContainerStyles}
674672
>
675-
<div
676-
className="ad-slot-container"
673+
<AdSlotWrapper
677674
css={[
678675
frontsBannerAdContainerStyles,
679676
hasPageskin && frontsBannerCollapseStyles,
@@ -694,7 +691,7 @@ export const AdSlot = ({
694691
data-testid="slot"
695692
aria-hidden="true"
696693
/>
697-
</div>
694+
</AdSlotWrapper>
698695
</div>
699696
);
700697
}
@@ -721,7 +718,7 @@ export const AdSlot = ({
721718
case 'liveblog-inline': {
722719
const advertId = `inline${index + 1}`;
723720
return (
724-
<div
721+
<AdSlotWrapper
725722
className="ad-slot-container ad-slot-desktop"
726723
css={liveblogInlineContainerStyles}
727724
>
@@ -740,16 +737,13 @@ export const AdSlot = ({
740737
data-testid={`liveblog-inline--${advertId}`}
741738
aria-hidden="true"
742739
/>
743-
</div>
740+
</AdSlotWrapper>
744741
);
745742
}
746743
case 'liveblog-inline-mobile': {
747744
const advertId = index === 0 ? 'top-above-nav' : `inline${index}`;
748745
return (
749-
<div
750-
className="ad-slot-container ad-slot-mobile"
751-
css={liveblogInlineContainerStyles}
752-
>
746+
<AdSlotWrapper css={liveblogInlineContainerStyles}>
753747
<div
754748
id={`dfp-ad--${advertId}--mobile`}
755749
className={[
@@ -765,15 +759,12 @@ export const AdSlot = ({
765759
data-testid={`liveblog-inline-mobile--${advertId}`}
766760
aria-hidden="true"
767761
/>
768-
</div>
762+
</AdSlotWrapper>
769763
);
770764
}
771765
case 'liveblog-top': {
772766
return (
773-
<div
774-
className="ad-slot-container"
775-
css={[liveBlogTopContainerStyles]}
776-
>
767+
<AdSlotWrapper css={liveBlogTopContainerStyles}>
777768
<div
778769
id="dfp-ad--liveblog-top"
779770
className={[
@@ -788,13 +779,13 @@ export const AdSlot = ({
788779
data-testid="slot"
789780
aria-hidden="true"
790781
/>
791-
</div>
782+
</AdSlotWrapper>
792783
);
793784
}
794785
case 'mobile-front': {
795786
const advertId = index === 0 ? 'top-above-nav' : `inline${index}`;
796787
return (
797-
<div className="ad-slot-container">
788+
<AdSlotWrapper>
798789
<div
799790
id={`dfp-ad--${advertId}--mobile`}
800791
className={[
@@ -812,12 +803,12 @@ export const AdSlot = ({
812803
data-testid="slot"
813804
aria-hidden="true"
814805
/>
815-
</div>
806+
</AdSlotWrapper>
816807
);
817808
}
818809
case 'pageskin': {
819810
return (
820-
<div className="ad-slot-container">
811+
<AdSlotWrapper>
821812
<div
822813
id="dfp-ad--pageskin-inread"
823814
className={[
@@ -836,12 +827,12 @@ export const AdSlot = ({
836827
data-testid="slot"
837828
aria-hidden="true"
838829
/>
839-
</div>
830+
</AdSlotWrapper>
840831
);
841832
}
842833
case 'article-end': {
843834
return (
844-
<div className="ad-slot-container">
835+
<AdSlotWrapper>
845836
<div
846837
id="dfp-ad--article-end"
847838
className={[
@@ -856,12 +847,12 @@ export const AdSlot = ({
856847
data-testid="slot"
857848
aria-hidden="true"
858849
/>
859-
</div>
850+
</AdSlotWrapper>
860851
);
861852
}
862853
case 'crossword-banner-mobile': {
863854
return (
864-
<div className="ad-slot-container">
855+
<AdSlotWrapper>
865856
<div
866857
id="dfp-ad--crossword-banner-mobile"
867858
className={[
@@ -876,7 +867,7 @@ export const AdSlot = ({
876867
data-testid="slot"
877868
aria-hidden="true"
878869
/>
879-
</div>
870+
</AdSlotWrapper>
880871
);
881872
}
882873
}

0 commit comments

Comments
 (0)