@if (articleDetails().anchors.length) {
diff --git a/libs/blog/articles/feature-article/src/lib/article-details/article-details.component.ts b/libs/blog/articles/feature-article/src/lib/article-details/article-details.component.ts
index f6265db2..b4f3edf8 100644
--- a/libs/blog/articles/feature-article/src/lib/article-details/article-details.component.ts
+++ b/libs/blog/articles/feature-article/src/lib/article-details/article-details.component.ts
@@ -2,11 +2,12 @@ import { DatePipe, NgClass } from '@angular/common';
import {
ChangeDetectionStrategy,
Component,
+ inject,
input,
- signal,
} from '@angular/core';
import { FastSvgComponent } from '@push-based/ngx-fast-svg';
+import { AdBannerStore } from '@angular-love/blog/ad-banner/data-access';
import { GiscusCommentsComponent } from '@angular-love/blog/articles/feature-comments';
import { RelatedArticlesComponent } from '@angular-love/blog/articles/feature-related-articles';
import { ArticleCompactCardSkeletonComponent } from '@angular-love/blog/articles/ui-article-card';
@@ -57,5 +58,5 @@ import { ArticleShareIconsComponent } from '../article-share-icons/article-share
})
export class ArticleDetailsComponent {
readonly articleDetails = input.required
();
- protected readonly adBannerStoreVisible = signal(false);
+ protected readonly bannerStore = inject(AdBannerStore);
}
diff --git a/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.html b/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.html
index 940fa856..bf0b091c 100644
--- a/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.html
+++ b/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.html
@@ -28,12 +28,21 @@
} @else {
}
-
-
-
+
+ @if (cardBanner(); as cardBanner) {
+
+ } @else {
+
+
+
+ }
diff --git a/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.ts b/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.ts
index 5663766e..965d235f 100644
--- a/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.ts
+++ b/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.ts
@@ -9,15 +9,18 @@ import {
import { RouterLink } from '@angular/router';
import { TranslocoDirective } from '@jsverse/transloco';
+import { AdBannerStore } from '@angular-love/blog/ad-banner/data-access';
import { ArticleListStore } from '@angular-love/blog/articles/data-access';
import {
ArticleRegularCardSkeletonComponent,
UiArticleCardComponent,
} from '@angular-love/blog/articles/ui-article-card';
import { NewsletterComponent } from '@angular-love/blog/newsletter';
+import { AlNewsletterBannerComponent } from '@angular-love/blog/shared/ad-banner';
import { ButtonComponent } from '@angular-love/blog/shared/ui-button';
import {
CardComponent,
+ CardContentDirective,
GradientCardDirective,
} from '@angular-love/blog/shared/ui-card';
import { PillDirective } from '@angular-love/blog/shared/ui-pill';
@@ -34,15 +37,16 @@ import { CategoryListItem, injectCategories } from './categories.const';
UiArticleCardComponent,
NewsletterComponent,
CardComponent,
- GradientCardDirective,
NgClass,
TranslocoDirective,
ArticleRegularCardSkeletonComponent,
- CardComponent,
RepeatDirective,
+ CardContentDirective,
+ AlNewsletterBannerComponent,
RouterLink,
ButtonComponent,
PillDirective,
+ GradientCardDirective,
],
host: {
'data-testid': 'latest-articles-container',
@@ -61,13 +65,19 @@ export class FeatureLatestArticlesComponent {
readonly take = 8;
private readonly _articleListStore = inject(ArticleListStore);
+ private readonly _bannerStore = inject(AdBannerStore);
+ // todo: remove this once the card banner is implemented
+ protected readonly cardBanner = computed(() => {
+ this._bannerStore.banners();
+ return {
+ url: 'https://img.freepik.com/free-psd/banner-template-black-friday-clearance_23-2148745448.jpg',
+ alt: 'Card Banner Example',
+ navigateTo: '/',
+ };
+ });
readonly isFetchArticleListLoading =
this._articleListStore.isFetchArticleListLoading;
-
- readonly isFetchArticleListError =
- this._articleListStore.isFetchArticleListError;
-
readonly articles = this._articleListStore.articles;
constructor() {
diff --git a/libs/blog/articles/ui-article-card/src/lib/components/article-horizontal-card/article-horizontal-card.component.html b/libs/blog/articles/ui-article-card/src/lib/components/article-horizontal-card/article-horizontal-card.component.html
index 5e6de07f..21ab022f 100644
--- a/libs/blog/articles/ui-article-card/src/lib/components/article-horizontal-card/article-horizontal-card.component.html
+++ b/libs/blog/articles/ui-article-card/src/lib/components/article-horizontal-card/article-horizontal-card.component.html
@@ -1,6 +1,6 @@
+
+ @if (topBanner(); as topBanner) {
+
+ }
(() =>
- this.sliderStore.slider()?.slides.map((slide) => ({
- url: slide.url,
- alt: slide.alt,
+ this.bannerStore.banners()?.slider?.slides.map((slide) => ({
+ url: slide.url!,
+ alt: slide.alt!,
action: {
type: 'url',
url: slide.navigateTo,
@@ -68,7 +82,10 @@ export class RootShellComponent {
})),
);
protected readonly msPerSlide = computed(
- () => this.sliderStore.slider()?.slideDisplayTimeMs,
+ () => this.bannerStore.banners()?.slider?.slideDisplayTimeMs,
+ );
+ protected readonly topBanner = computed(
+ () => this.bannerStore.banners()?.topBanner,
);
readonly translocoService = inject(TranslocoService);
@@ -94,13 +111,7 @@ export class RootShellComponent {
);
}
- constructor(viewport: ViewportScroller) {
- // todo: temporary solution to keep in mind how banner influence the layout
- effect(() => {
- this.adBannerVisible()
- ? viewport.setOffset([0, 160])
- : viewport.setOffset([0, 80]);
- });
- this.sliderStore.getData();
+ constructor() {
+ this.bannerStore.getData();
}
}