File tree 2 files changed +57
-0
lines changed
projects/coreui-angular/src/lib/carousel
2 files changed +57
-0
lines changed Original file line number Diff line number Diff line change
1
+ import { TestBed } from '@angular/core/testing' ;
2
+
3
+ import { IntersectionService } from './intersection.service' ;
4
+
5
+ describe ( 'IntersectionService' , ( ) => {
6
+ let service : IntersectionService ;
7
+
8
+ beforeEach ( ( ) => {
9
+ TestBed . configureTestingModule ( {
10
+ imports : [ IntersectionService ]
11
+ } ) ;
12
+ service = new IntersectionService ( ) ;
13
+ // service = TestBed.inject(IntersectionService);
14
+ } ) ;
15
+
16
+ it ( 'should be created' , ( ) => {
17
+ expect ( service ) . toBeTruthy ( ) ;
18
+ } ) ;
19
+ } ) ;
Original file line number Diff line number Diff line change
1
+ import { Injectable , OnDestroy } from '@angular/core' ;
2
+ import { BehaviorSubject } from 'rxjs' ;
3
+
4
+ @Injectable ( )
5
+ export class IntersectionService implements OnDestroy {
6
+
7
+ constructor ( ) { }
8
+
9
+ private intersecting = new BehaviorSubject < boolean > ( false ) ;
10
+ intersecting$ = this . intersecting . asObservable ( ) ;
11
+
12
+ private intersectionObserver ! : IntersectionObserver ;
13
+ private hostElement ! : { nativeElement : Element ; } ;
14
+
15
+ createIntersectionObserver ( hostElement : { nativeElement : Element ; } ) {
16
+
17
+ this . hostElement = hostElement ;
18
+
19
+ const options = {
20
+ root : null ,
21
+ rootMargin : '0px' ,
22
+ threshold : 0.2
23
+ } ;
24
+
25
+ const handleIntersect = ( entries : any [ ] , observer : any ) => {
26
+ entries . forEach ( ( entry : any ) => {
27
+ this . intersecting . next ( entry . isIntersecting ) ;
28
+ } ) ;
29
+ } ;
30
+
31
+ this . intersectionObserver = new IntersectionObserver ( handleIntersect , options ) ;
32
+ this . intersectionObserver . observe ( hostElement . nativeElement ) ;
33
+ }
34
+
35
+ ngOnDestroy ( ) : void {
36
+ this . intersectionObserver ?. unobserve ( this . hostElement ?. nativeElement ) ;
37
+ }
38
+ }
You can’t perform that action at this time.
0 commit comments