Skip to content

Commit 92ace50

Browse files
committed
fix(InViewport): Fix module not working with aot
Reverted using injection token to reference Window and using WindowRef class BREAKING CHANGE: Must provide the whole Provide object when providing window for browser module
1 parent 383de7c commit 92ace50

File tree

9 files changed

+31
-27
lines changed

9 files changed

+31
-27
lines changed

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,14 @@ yarn add @thisissoon/angular-inviewport
2626
```ts
2727
import { InViewportModule } from '@thisissoon/angular-inviewport';
2828

29+
const providers = [
30+
{ provide: WindowRef, useValue: window }
31+
];
32+
2933
@NgModule({
3034
imports: [
31-
// pass window object to forRoot function
32-
InViewportModule.forRoot(window)
35+
// provide WindowRef class by using an window object
36+
InViewportModule.forRoot(providers)
3337
]
3438
})
3539
export class AppModule { }

index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@ export {
55
eventWindowScroll, inViewportClass, notInViewportClass
66
} from './src/app/in-viewport/shared/event-data';
77
export { Viewport } from './src/app/in-viewport/shared/viewport.model';
8-
export { WindowRef } from './src/app/in-viewport/window/window.service';
9-
export { WINDOW } from './src/app/in-viewport/window/window-token';
8+
export { WindowRef } from './src/app/in-viewport/window/window-ref.service';

src/app/app.module.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@ import { BrowserModule } from '@angular/platform-browser';
22
import { NgModule } from '@angular/core';
33

44
import { AppComponent } from './app.component';
5-
import { InViewportModule } from './in-viewport';
5+
import { InViewportModule, WindowRef } from './in-viewport';
6+
7+
const providers = [
8+
{ provide: WindowRef, useValue: window }
9+
];
610

711
@NgModule({
812
declarations: [
913
AppComponent
1014
],
1115
imports: [
1216
BrowserModule,
13-
InViewportModule.forRoot(window)
17+
InViewportModule.forRoot(providers)
1418
],
1519
bootstrap: [AppComponent]
1620
})

src/app/in-viewport/in-viewport.directive.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { fakeAsync, tick } from '@angular/core/testing';
22
import { ElementRef, NgZone } from '@angular/core';
3-
import { WindowRef } from './window/window.service';
3+
import { WindowRef } from './window/window-ref.service';
44
import { InViewportDirective } from './in-viewport.directive';
55
import { FakeDOMStandardElement } from '../testing/dom';
66
import { MockNgZone } from '../testing/mock-ng-zone';

src/app/in-viewport/in-viewport.directive.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {
22
Directive, ElementRef, HostBinding, EventEmitter,
33
Input, Output, OnDestroy, AfterViewInit,
4-
ChangeDetectorRef, NgZone, PLATFORM_ID, Inject
4+
ChangeDetectorRef, NgZone, Inject
55
} from '@angular/core';
66
import { Observable } from 'rxjs/Observable';
77
import { Subject } from 'rxjs/Subject';
@@ -11,8 +11,7 @@ import 'rxjs/add/operator/debounceTime';
1111
import 'rxjs/add/operator/takeUntil';
1212
import 'rxjs/add/observable/merge';
1313

14-
import { WindowRef } from './window/window.service';
15-
import { WINDOW } from './window/window-token';
14+
import { WindowRef } from './window/window-ref.service';
1615
import { Viewport } from './shared/viewport.model';
1716
import * as eventData from './shared/event-data';
1817

@@ -135,7 +134,7 @@ export class InViewportDirective implements AfterViewInit, OnDestroy {
135134
*/
136135
constructor(
137136
private el: ElementRef,
138-
@Inject(WINDOW) private windowRef: WindowRef,
137+
private windowRef: WindowRef,
139138
private cdRef: ChangeDetectorRef,
140139
public ngZone: NgZone
141140
) { }

src/app/in-viewport/in-viewport.module.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { NgModule, ModuleWithProviders, Provider } from '@angular/core';
2-
import { WindowRef } from './window/window.service';
3-
import { WINDOW } from './window/window-token';
2+
import { WindowRef } from './window/window-ref.service';
43

54
import { InViewportDirective } from './in-viewport.directive';
65

7-
const defaultWindowRef = new WindowRef();
6+
const defaultProviders = [
7+
WindowRef
8+
];
89

910
/**
1011
* A simple lightweight library for Angular 2/4+ with other dependencies
@@ -25,16 +26,14 @@ export class InViewportModule {
2526
* services.
2627
*
2728
* @static
28-
* @param {any} [windowRef=defaultWindowRef]
29+
* @param {Provider[]} [providers]
2930
* @returns {ModuleWithProviders}
3031
* @memberof InViewportModule
3132
*/
32-
public static forRoot(windowRef: any = defaultWindowRef): ModuleWithProviders {
33+
public static forRoot(providers: Provider[] = defaultProviders): ModuleWithProviders {
3334
return {
3435
ngModule: InViewportModule,
35-
providers: [
36-
{ provide: WINDOW, useValue: windowRef }
37-
]
36+
providers: providers
3837
};
3938
}
4039
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
export * from './window.service';
2-
export * from './window-token';
1+
export * from './window-ref.service';

src/app/in-viewport/window/window.service.ts renamed to src/app/in-viewport/window/window-ref.service.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import { Injectable } from '@angular/core';
2+
13
/**
2-
* Class that acts a reference to window object
4+
* Service that acts a reference to window object
35
* in platforms where `window` does not exists
46
*
57
* @export
6-
* @class WindowRef
8+
* @property WindowRef
79
*/
10+
@Injectable()
811
export class WindowRef {
912
closed = null;
1013
defaultStatus = null;
@@ -57,7 +60,7 @@ export class WindowRef {
5760
resizeBy() {}
5861
resizeTo() {}
5962
removeEventListener() {}
60-
scroll() { }
63+
scroll() {}
6164
scrollBy() {}
6265
scrollTo() {}
6366
setInterval() {}

src/app/in-viewport/window/window-token.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)