diff --git a/packages/portal/src/components/authored/AuthoredHead.vue b/packages/portal/src/components/authored/AuthoredHead.vue index ad46323bb1..48fc145f1e 100644 --- a/packages/portal/src/components/authored/AuthoredHead.vue +++ b/packages/portal/src/components/authored/AuthoredHead.vue @@ -48,6 +48,7 @@ :rights-statement="hero.license" :attribution="hero" :alt="heroImageAlt" + :lazy="false" hero /> diff --git a/packages/portal/src/components/browse/BrowseAutomatedCardGroup.vue b/packages/portal/src/components/browse/BrowseAutomatedCardGroup.vue index 0b7a6bc447..a223f04532 100644 --- a/packages/portal/src/components/browse/BrowseAutomatedCardGroup.vue +++ b/packages/portal/src/components/browse/BrowseAutomatedCardGroup.vue @@ -14,6 +14,7 @@ v-else :section="contentCardSection" class="mb-5" + :lazy="lazy" /> @@ -52,6 +53,13 @@ moreButton: { type: Object, default: null + }, + /** + * If `true`, image will be lazy-loaded + */ + lazy: { + type: Boolean, + default: true } }, diff --git a/packages/portal/src/components/browse/BrowseContentCard.vue b/packages/portal/src/components/browse/BrowseContentCard.vue index a0918a3e21..c77fa95faa 100644 --- a/packages/portal/src/components/browse/BrowseContentCard.vue +++ b/packages/portal/src/components/browse/BrowseContentCard.vue @@ -12,6 +12,7 @@ :image-optimisation-options="{ width: 510 }" :logo="fields.logo" :variant="variant" + :lazy="lazy" /> @@ -37,6 +38,13 @@ variant: { type: String, default: null + }, + /** + * If `true`, image will be lazy-loaded + */ + lazy: { + type: Boolean, + default: true } }, computed: { diff --git a/packages/portal/src/components/browse/BrowsePage.vue b/packages/portal/src/components/browse/BrowsePage.vue index b60f0e4961..026aee1950 100644 --- a/packages/portal/src/components/browse/BrowsePage.vue +++ b/packages/portal/src/components/browse/BrowsePage.vue @@ -18,6 +18,7 @@ v-for="(section, index) in hasPartCollection.items" :key="index" :section="section" + :lazy="index > 0" /> diff --git a/packages/portal/src/components/content/ContentCardSection.vue b/packages/portal/src/components/content/ContentCardSection.vue index 43347e02d9..efaf379be7 100644 --- a/packages/portal/src/components/content/ContentCardSection.vue +++ b/packages/portal/src/components/content/ContentCardSection.vue @@ -33,6 +33,7 @@ :url="entityRouterLink(card.identifier, card.slug)" :image-url="card.entityImage" :image-optimisation-options="{ width: 510 }" + :lazy="lazy" variant="mini" /> @@ -43,6 +44,7 @@ :fields="card" :card-type="card['__typename']" :variant="card['__variant']" + :lazy="lazy || (index >= 4)" /> @@ -86,6 +88,13 @@ titleTag: { type: String, default: 'h2' + }, + /** + * If `true`, image will be lazy-loaded + */ + lazy: { + type: Boolean, + default: true } }, computed: { diff --git a/packages/portal/src/components/content/ContentHubPage.vue b/packages/portal/src/components/content/ContentHubPage.vue index 9ba22caac9..a316edb023 100644 --- a/packages/portal/src/components/content/ContentHubPage.vue +++ b/packages/portal/src/components/content/ContentHubPage.vue @@ -26,6 +26,7 @@ :image-alt="imageAlt(item.primaryImageOfPage)" :texts="[item.description]" :offset="index" + :lazy="index >= 4" /> diff --git a/packages/portal/src/components/content/ContentSection.vue b/packages/portal/src/components/content/ContentSection.vue index e0c7079662..5f8c9885db 100644 --- a/packages/portal/src/components/content/ContentSection.vue +++ b/packages/portal/src/components/content/ContentSection.vue @@ -7,12 +7,14 @@ @@ -60,6 +61,10 @@ hero: { type: Boolean, default: false + }, + lazy: { + type: Boolean, + default: true } } }; diff --git a/packages/portal/src/components/stories/StoriesInterface.vue b/packages/portal/src/components/stories/StoriesInterface.vue index 23b984e2bb..1ace7da8a2 100644 --- a/packages/portal/src/components/stories/StoriesInterface.vue +++ b/packages/portal/src/components/stories/StoriesInterface.vue @@ -65,6 +65,7 @@ :image-url="entry.primaryImageOfPage && entry.primaryImageOfPage.image.url" :image-content-type="entry.primaryImageOfPage && entry.primaryImageOfPage.image.contentType" :image-optimisation-options="entry.primaryImageOfPage ? entryImageOptions(entry.primaryImageOfPage.image) : {}" + :lazy="index >= 4" /> diff --git a/packages/portal/src/components/story/StoryPost.vue b/packages/portal/src/components/story/StoryPost.vue index 0f27ad17cd..889dc83e19 100644 --- a/packages/portal/src/components/story/StoryPost.vue +++ b/packages/portal/src/components/story/StoryPost.vue @@ -87,6 +87,7 @@ :key="`sub-${subIndex}`" :section="subSection" :rich-text-is-card="false" + :lazy="index > 0" /> @@ -97,6 +98,7 @@ :key="index" :section="section" :rich-text-is-card="false" + :lazy="index > 0" data-qa="story image text slide scroller" />