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"
/>