Skip to content

Commit 886abff

Browse files
authored
feat: global ad banner (#346)
1 parent 90d9a6e commit 886abff

File tree

3 files changed

+26
-43
lines changed

3 files changed

+26
-43
lines changed

libs/blog/home/feature-home/src/lib/home-page/home-page.component.html

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
@if (slides(); as slides) {
2-
<al-banner-carousel [banners]="slides" [msPerSlide]="msPerSlide()!" />
3-
}
41
<al-latest-articles />
52
<al-articles-list />
63
<al-partners [partnerList]="[hoaHireUs]" title="homePage.mainPartner" />
Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,10 @@
1-
import {
2-
ChangeDetectionStrategy,
3-
Component,
4-
computed,
5-
inject,
6-
} from '@angular/core';
1+
import { ChangeDetectionStrategy, Component } from '@angular/core';
72
import { ReactiveFormsModule } from '@angular/forms';
83

9-
import { AdBannerStore } from '@angular-love/blog/ad-banner/data-access';
104
import { ArticlesListContainerComponent } from '@angular-love/blog/articles/feature-list';
115
import { UiArticleCardComponent } from '@angular-love/blog/articles/ui-article-card';
126
import { NewsletterComponent } from '@angular-love/blog/newsletter';
137
import { PartnersComponent } from '@angular-love/blog/partners/ui-partners';
14-
import {
15-
AdImageBanner,
16-
AdImageBannerComponent,
17-
AlBannerCarouselComponent,
18-
} from '@angular-love/blog/shared/ad-banner';
198
import { CardComponent } from '@angular-love/blog/shared/ui-card';
209
import { FeatureLatestArticlesComponent } from '@angular-love/feature-latest-articles';
2110

@@ -33,8 +22,6 @@ import { hoaHireUs, partnersList } from './partners';
3322
FeatureLatestArticlesComponent,
3423
UiArticleCardComponent,
3524
ArticlesListContainerComponent,
36-
AdImageBannerComponent,
37-
AlBannerCarouselComponent,
3825
],
3926
templateUrl: './home-page.component.html',
4027
styleUrls: ['./home-page.component.scss'],
@@ -43,22 +30,4 @@ import { hoaHireUs, partnersList } from './partners';
4330
export class HomePageComponent {
4431
protected readonly hoaHireUs = hoaHireUs;
4532
protected readonly partnersList = partnersList;
46-
protected readonly sliderStore = inject(AdBannerStore);
47-
protected readonly slides = computed<AdImageBanner[] | undefined>(() =>
48-
this.sliderStore.slider()?.slides.map((slide) => ({
49-
url: slide.url,
50-
alt: slide.alt,
51-
action: {
52-
type: 'url',
53-
url: slide.navigateTo,
54-
},
55-
})),
56-
);
57-
protected readonly msPerSlide = computed(
58-
() => this.sliderStore.slider()?.slideDisplayTimeMs,
59-
);
60-
61-
constructor() {
62-
this.sliderStore.getData();
63-
}
6433
}

libs/blog/shell/feature-shell-web/src/lib/root-shell.component.ts

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,23 @@ import { Router, RouterOutlet } from '@angular/router';
55
import { TranslocoService } from '@jsverse/transloco';
66
import { startWith } from 'rxjs';
77

8+
import { AdBannerStore } from '@angular-love/blog/ad-banner/data-access';
89
import { AlLocalizeService } from '@angular-love/blog/i18n/util';
910
import {
1011
FooterComponent,
1112
HeaderComponent,
1213
LayoutComponent,
1314
} from '@angular-love/blog/layouts/ui-layouts';
1415
import { SearchComponent } from '@angular-love/blog/search/feature-search';
16+
import {
17+
AdImageBanner,
18+
AlBannerCarouselComponent,
19+
} from '@angular-love/blog/shared/ad-banner';
1520

1621
@Component({
1722
selector: 'al-root-shell',
1823
template: `
1924
<div class="fixed top-0 z-10 w-full">
20-
<!--top screen closable banner-->
21-
<!--@if (adBannerVisible()) {
22-
<al-ad-banner
23-
class="block"
24-
[data]="adBanner()"
25-
(closed)="adBannerStore.onClose()"
26-
/>
27-
}-->
2825
<al-header
2926
class="block w-full"
3027
[language]="language()"
@@ -34,6 +31,9 @@ import { SearchComponent } from '@angular-love/blog/search/feature-search';
3431
</al-header>
3532
</div>
3633
<al-layout class="mt-20" [ngClass]="{ 'mt-40': adBannerVisible() }">
34+
@if (slides(); as slides) {
35+
<al-banner-carousel [banners]="slides" [msPerSlide]="msPerSlide()!" />
36+
}
3737
<router-outlet />
3838
</al-layout>
3939
<al-footer class="mt-auto block" />
@@ -46,9 +46,25 @@ import { SearchComponent } from '@angular-love/blog/search/feature-search';
4646
LayoutComponent,
4747
SearchComponent,
4848
NgClass,
49+
AlBannerCarouselComponent,
4950
],
5051
})
5152
export class RootShellComponent {
53+
protected readonly sliderStore = inject(AdBannerStore);
54+
protected readonly slides = computed<AdImageBanner[] | undefined>(() =>
55+
this.sliderStore.slider()?.slides.map((slide) => ({
56+
url: slide.url,
57+
alt: slide.alt,
58+
action: {
59+
type: 'url',
60+
url: slide.navigateTo,
61+
},
62+
})),
63+
);
64+
protected readonly msPerSlide = computed(
65+
() => this.sliderStore.slider()?.slideDisplayTimeMs,
66+
);
67+
5268
readonly translocoService = inject(TranslocoService);
5369

5470
// todo: temporary solution to keep in mind how banner influence the layout
@@ -79,5 +95,6 @@ export class RootShellComponent {
7995
? viewport.setOffset([0, 160])
8096
: viewport.setOffset([0, 80]);
8197
});
98+
this.sliderStore.getData();
8299
}
83100
}

0 commit comments

Comments
 (0)