@@ -5,26 +5,23 @@ import { Router, RouterOutlet } from '@angular/router';
5
5
import { TranslocoService } from '@jsverse/transloco' ;
6
6
import { startWith } from 'rxjs' ;
7
7
8
+ import { AdBannerStore } from '@angular-love/blog/ad-banner/data-access' ;
8
9
import { AlLocalizeService } from '@angular-love/blog/i18n/util' ;
9
10
import {
10
11
FooterComponent ,
11
12
HeaderComponent ,
12
13
LayoutComponent ,
13
14
} from '@angular-love/blog/layouts/ui-layouts' ;
14
15
import { SearchComponent } from '@angular-love/blog/search/feature-search' ;
16
+ import {
17
+ AdImageBanner ,
18
+ AlBannerCarouselComponent ,
19
+ } from '@angular-love/blog/shared/ad-banner' ;
15
20
16
21
@Component ( {
17
22
selector : 'al-root-shell' ,
18
23
template : `
19
24
<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
- }-->
28
25
<al-header
29
26
class="block w-full"
30
27
[language]="language()"
@@ -34,6 +31,9 @@ import { SearchComponent } from '@angular-love/blog/search/feature-search';
34
31
</al-header>
35
32
</div>
36
33
<al-layout class="mt-20" [ngClass]="{ 'mt-40': adBannerVisible() }">
34
+ @if (slides(); as slides) {
35
+ <al-banner-carousel [banners]="slides" [msPerSlide]="msPerSlide()!" />
36
+ }
37
37
<router-outlet />
38
38
</al-layout>
39
39
<al-footer class="mt-auto block" />
@@ -46,9 +46,25 @@ import { SearchComponent } from '@angular-love/blog/search/feature-search';
46
46
LayoutComponent ,
47
47
SearchComponent ,
48
48
NgClass ,
49
+ AlBannerCarouselComponent ,
49
50
] ,
50
51
} )
51
52
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
+
52
68
readonly translocoService = inject ( TranslocoService ) ;
53
69
54
70
// todo: temporary solution to keep in mind how banner influence the layout
@@ -79,5 +95,6 @@ export class RootShellComponent {
79
95
? viewport . setOffset ( [ 0 , 160 ] )
80
96
: viewport . setOffset ( [ 0 , 80 ] ) ;
81
97
} ) ;
98
+ this . sliderStore . getData ( ) ;
82
99
}
83
100
}
0 commit comments