Skip to content
This repository was archived by the owner on Jan 6, 2025. It is now read-only.

Commit 62457a5

Browse files
CaerusKaruThomasBurleson
authored andcommitted
chore(build): update deps to Angular v5 and RxJs 5.5
Updates rxjs to latest best practices * fix: import individual rx operators * Removes 'rxjs/operators' import in favor of indivial imports, adds lint rule to prevent that type of import * Maintains parity with angular/components#8160 Fixes #519, #508, #533. Closes #474.
1 parent 49a229a commit 62457a5

File tree

14 files changed

+141
-116
lines changed

14 files changed

+141
-116
lines changed
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import {Directive, ElementRef, Inject, Output} from '@angular/core';
2-
import {DOCUMENT} from '@angular/platform-browser';
2+
import {DOCUMENT} from '@angular/common';
33

44
import {Observable} from 'rxjs/Observable';
55

6-
import 'rxjs/add/observable/fromEvent';
7-
import 'rxjs/add/operator/takeUntil';
8-
import 'rxjs/add/operator/switchMap';
9-
import 'rxjs/add/operator/map';
6+
import {fromEvent} from 'rxjs/observable/fromEvent';
7+
import {map} from 'rxjs/operators/map';
8+
import {switchMap} from 'rxjs/operators/switchMap';
9+
import {takeUntil} from 'rxjs/operators/takeUntil';
10+
1011

1112
@Directive({
1213
selector: '[ngxSplitHandle]',
@@ -20,14 +21,13 @@ export class SplitHandleDirective {
2021
@Output() drag: Observable<{ x: number, y: number }>;
2122

2223
constructor(ref: ElementRef, @Inject(DOCUMENT) _document: any) {
23-
const fromEvent = Observable.fromEvent;
2424
const getMouseEventPosition = (event: MouseEvent) => ({x: event.movementX, y: event.movementY});
2525

26-
const mousedown$ = fromEvent(ref.nativeElement, 'mousedown').map(getMouseEventPosition);
27-
const mousemove$ = fromEvent(_document, 'mousemove').map(getMouseEventPosition);
28-
const mouseup$ = fromEvent(_document, 'mouseup').map(getMouseEventPosition);
26+
const mousedown$ = fromEvent(ref.nativeElement, 'mousedown').pipe(map(getMouseEventPosition));
27+
const mousemove$ = fromEvent(_document, 'mousemove').pipe(map(getMouseEventPosition));
28+
const mouseup$ = fromEvent(_document, 'mouseup').pipe(map(getMouseEventPosition));
2929

30-
this.drag = mousedown$.switchMap(_ => mousemove$.takeUntil(mouseup$));
30+
this.drag = mousedown$.pipe(switchMap(_ => mousemove$.pipe(takeUntil(mouseup$))));
3131
}
3232

3333
}

src/demo-app/system-config.ts

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,43 @@ System.config({
99
map: {
1010
'rxjs': 'node:rxjs',
1111
'main': 'main.js',
12+
'tslib': 'node:tslib/tslib.js',
1213

1314
// Angular specific mappings.
1415
'@angular/core': 'node:@angular/core/bundles/core.umd.js',
16+
'@angular/core/testing': 'node:@angular/core/bundles/core-testing.umd.js',
1517
'@angular/common': 'node:@angular/common/bundles/common.umd.js',
18+
'@angular/common/testing': 'node:@angular/common/bundles/common-testing.umd.js',
19+
'@angular/common/http': 'node:@angular/common/bundles/common-http.umd.js',
20+
'@angular/common/http/testing': 'node:@angular/common/bundles/common-http-testing.umd.js',
1621
'@angular/compiler': 'node:@angular/compiler/bundles/compiler.umd.js',
22+
'@angular/compiler/testing': 'node:@angular/compiler/bundles/compiler-testing.umd.js',
1723
'@angular/http': 'node:@angular/http/bundles/http.umd.js',
24+
'@angular/http/testing': 'node:@angular/http/bundles/http-testing.umd.js',
1825
'@angular/forms': 'node:@angular/forms/bundles/forms.umd.js',
19-
'@angular/router': 'node:@angular/router/bundles/router.umd.js',
26+
'@angular/forms/testing': 'node:@angular/forms/bundles/forms-testing.umd.js',
2027
'@angular/animations': 'node:@angular/animations/bundles/animations.umd.js',
2128
'@angular/animations/browser': 'node:@angular/animations/bundles/animations-browser.umd.js',
22-
'@angular/platform-browser': 'node:@angular/platform-browser/bundles/platform-browser.umd.js',
23-
'@angular/platform-browser/animations': 'node:@angular/platform-browser/bundles/platform-browser-animations.umd.js', // tslint:disable-line:max-line-length
24-
'@angular/platform-browser-dynamic': 'node:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', // tslint:disable-line:max-line-length
25-
26-
'@angular/flex-layout': 'dist/bundles/flex-layout.umd.js',
29+
'@angular/platform-browser/animations':
30+
'node:@angular/platform-browser/bundles/platform-browser-animations.umd',
31+
'@angular/platform-browser':
32+
'node:@angular/platform-browser/bundles/platform-browser.umd.js',
33+
'@angular/platform-browser/testing':
34+
'node:@angular/platform-browser/bundles/platform-browser-testing.umd.js',
35+
'@angular/platform-browser-dynamic':
36+
'node:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
37+
'@angular/platform-browser-dynamic/testing':
38+
'node:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js',
2739

2840
'@angular/material': 'node:@angular/material/bundles/material.umd.js',
2941
'@angular/cdk': 'node:@angular/cdk/bundles/cdk.umd.js',
30-
31-
// CDK Secondary entry points
3242
'@angular/cdk/a11y': 'node:@angular/cdk/bundles/cdk-a11y.umd.js',
43+
'@angular/cdk/accordion': 'node:@angular/cdk/bundles/cdk-accordion.umd.js',
3344
'@angular/cdk/bidi': 'node:@angular/cdk/bundles/cdk-bidi.umd.js',
3445
'@angular/cdk/coercion': 'node:@angular/cdk/bundles/cdk-coercion.umd.js',
3546
'@angular/cdk/collections': 'node:@angular/cdk/bundles/cdk-collections.umd.js',
3647
'@angular/cdk/keycodes': 'node:@angular/cdk/bundles/cdk-keycodes.umd.js',
48+
'@angular/cdk/layout': 'node:@angular/cdk/bundles/cdk-layout.umd.js',
3749
'@angular/cdk/observers': 'node:@angular/cdk/bundles/cdk-observers.umd.js',
3850
'@angular/cdk/overlay': 'node:@angular/cdk/bundles/cdk-overlay.umd.js',
3951
'@angular/cdk/platform': 'node:@angular/cdk/bundles/cdk-platform.umd.js',
@@ -42,14 +54,13 @@ System.config({
4254
'@angular/cdk/scrolling': 'node:@angular/cdk/bundles/cdk-scrolling.umd.js',
4355
'@angular/cdk/stepper': 'node:@angular/cdk/bundles/cdk-stepper.umd.js',
4456
'@angular/cdk/table': 'node:@angular/cdk/bundles/cdk-table.umd.js',
45-
'@angular/cdk/testing': 'node:@angular/cdk/bundles/cdk-testing.umd.js'
4657

58+
'@angular/flex-layout': 'dist/bundles/flex-layout.umd.js',
4759

4860
},
4961
packages: {
5062
// 3rd-Party barrels.
5163
'rxjs': { main: 'index' },
52-
'rxjs/operators': {main: 'index'},
5364
// Set the default extension for the root package, because otherwise the demo-app can't
5465
// be built within the production mode. Due to missing file extensions.
5566
'.': {

src/lib/api/core/base-adapter.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
* Use of this source code is governed by an MIT-style license that can be
66
* found in the LICENSE file at https://angular.io/license
77
*/
8-
import {ElementRef} from '@angular/core';
8+
import {ElementRef, Renderer2} from '@angular/core';
99
import {BaseFxDirectiveAdapter} from './base-adapter';
1010
import {expect} from '../../utils/testing/custom-matchers';
11+
import {MediaMonitor} from '@angular/flex-layout/media-query';
1112

1213
export class MockElementRef extends ElementRef {
1314
constructor() {
@@ -20,7 +21,7 @@ export class MockElementRef extends ElementRef {
2021
describe('BaseFxDirectiveAdapter class', () => {
2122
let component;
2223
beforeEach(() => {
23-
component = new BaseFxDirectiveAdapter(null, null, new MockElementRef(), null);
24+
component = new BaseFxDirectiveAdapter('', {} as MediaMonitor, new MockElementRef(), {} as Renderer2); // tslint:disable-line:max-line-length
2425
});
2526
describe('cacheInput', () => {
2627
it('should call _cacheInputArray when source is an array', () => {

src/lib/api/core/responsive-activation.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88
import {Subscription} from 'rxjs/Subscription';
9-
import {map} from 'rxjs/operators';
9+
import {map} from 'rxjs/operators/map';
1010

1111
import {MediaChange, MediaQuerySubscriber} from '../../media-query/media-change';
1212
import {BreakPoint} from '../../media-query/breakpoints/break-point';
@@ -130,10 +130,12 @@ export class ResponsiveActivation {
130130
};
131131

132132
subscriptions.push(
133-
this.mediaMonitor.observe(bp.alias).pipe(map(buildChanges))
134-
.subscribe(change => {
135-
this._onMonitorEvents(change);
136-
})
133+
this.mediaMonitor
134+
.observe(bp.alias)
135+
.pipe(map(buildChanges))
136+
.subscribe(change => {
137+
this._onMonitorEvents(change);
138+
})
137139
);
138140
}
139141
});

src/lib/media-query/match-media.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {ɵgetDOM as getDom} from '@angular/platform-browser';
1010
import {DOCUMENT} from '@angular/common';
1111
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
1212
import {Observable} from 'rxjs/Observable';
13-
import {filter} from 'rxjs/operators';
13+
import {filter} from 'rxjs/operators/filter';
1414

1515
import {MediaChange} from './media-change';
1616

src/lib/media-query/media-monitor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import {MediaChange} from './media-change';
1515
import {mergeAlias} from '../utils/add-alias';
1616

1717
import {Observable} from 'rxjs/Observable';
18-
import {filter, map} from 'rxjs/operators';
18+
import {filter} from 'rxjs/operators/filter';
19+
import {map} from 'rxjs/operators/map';
1920

2021
/**
2122
* MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and

src/lib/media-query/observable-media.spec.ts

Lines changed: 61 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
*/
88
import {TestBed, inject, async} from '@angular/core/testing';
99

10-
import {filter, map} from 'rxjs/operators';
10+
import {filter} from 'rxjs/operators/filter';
11+
import {map} from 'rxjs/operators/map';
1112

1213
import {BreakPoint} from './breakpoints/break-point';
1314
import {BREAKPOINTS} from './breakpoints/break-points-token';
@@ -24,13 +25,14 @@ import {OBSERVABLE_MEDIA_PROVIDER} from './observable-media-provider';
2425
import {MockMatchMediaProvider} from './mock/mock-match-media';
2526

2627
describe('observable-media', () => {
28+
2729
describe('with default BreakPoints', () => {
2830
let knownBreakPoints: BreakPoint[] = [];
29-
let findMediaQuery = (alias) => {
31+
let findMediaQuery: (alias: string) => string = (alias) => {
3032
const NOT_FOUND = `${alias} not found`;
3133
return knownBreakPoints.reduce((mediaQuery, bp) => {
3234
return mediaQuery || ((bp.alias === alias) ? bp.mediaQuery : null);
33-
}, null) || NOT_FOUND;
35+
}, null) as string || NOT_FOUND;
3436
};
3537
beforeEach(() => {
3638
// Configure testbed to prepare services
@@ -107,74 +109,79 @@ describe('observable-media', () => {
107109
current = change;
108110
});
109111

110-
// Confirm initial match is for 'all'
111-
expect(current).toBeDefined();
112-
expect(current.matches).toBeTruthy();
113-
expect(current.mediaQuery).toEqual('all');
112+
async(() => {
113+
// Confirm initial match is for 'all'
114+
expect(current).toBeDefined();
115+
expect(current.matches).toBeTruthy();
116+
expect(current.mediaQuery).toEqual('all');
114117

115-
try {
116-
matchMedia.autoRegisterQueries = false;
118+
try {
119+
matchMedia.autoRegisterQueries = false;
117120

118-
// Activate mediaQuery associated with 'md' alias
119-
matchMedia.activate('md');
120-
expect(current.mediaQuery).toEqual(findMediaQuery('md'));
121+
// Activate mediaQuery associated with 'md' alias
122+
matchMedia.activate('md');
123+
expect(current.mediaQuery).toEqual(findMediaQuery('md'));
121124

122-
// Allow overlapping activations to be announced to observers
123-
media$.filterOverlaps = false;
125+
// Allow overlapping activations to be announced to observers
126+
media$.filterOverlaps = false;
124127

125-
matchMedia.activate('gt-lg');
126-
expect(current.mediaQuery).toEqual(findMediaQuery('gt-lg'));
128+
matchMedia.activate('gt-lg');
129+
expect(current.mediaQuery).toEqual(findMediaQuery('gt-lg'));
127130

128-
matchMedia.activate('unknown');
129-
expect(current.mediaQuery).toEqual(findMediaQuery('gt-lg'));
131+
matchMedia.activate('unknown');
132+
expect(current.mediaQuery).toEqual(findMediaQuery('gt-lg'));
130133

131-
} finally {
132-
matchMedia.autoRegisterQueries = true;
133-
subscription.unsubscribe();
134-
}
134+
} finally {
135+
matchMedia.autoRegisterQueries = true;
136+
subscription.unsubscribe();
137+
}
138+
});
135139
}));
136140

137-
it('can `.unsubscribe()` properly', async(inject(
141+
it('can `.unsubscribe()` properly', inject(
138142
[ObservableMedia, MatchMedia],
139143
(media, matchMedia) => {
140144
let current: MediaChange;
141145
let subscription = media.subscribe((change: MediaChange) => {
142146
current = change;
143147
});
144148

145-
// Activate mediaQuery associated with 'md' alias
146-
matchMedia.activate('md');
147-
expect(current.mediaQuery).toEqual(findMediaQuery('md'));
149+
async(() => {
150+
// Activate mediaQuery associated with 'md' alias
151+
matchMedia.activate('md');
152+
expect(current.mediaQuery).toEqual(findMediaQuery('md'));
148153

149-
// Un-subscribe
150-
subscription.unsubscribe();
154+
// Un-subscribe
155+
subscription.unsubscribe();
151156

152-
matchMedia.activate('lg');
153-
expect(current.mqAlias).toBe('md');
157+
matchMedia.activate('lg');
158+
expect(current.mqAlias).toBe('md');
154159

155-
matchMedia.activate('xs');
156-
expect(current.mqAlias).toBe('md');
157-
})));
160+
matchMedia.activate('xs');
161+
expect(current.mqAlias).toBe('md');
162+
});
163+
}));
158164

159-
it('can observe a startup activation of XS', async(inject(
165+
it('can observe a startup activation of XS', inject(
160166
[ObservableMedia, MatchMedia],
161167
(media, matchMedia) => {
162168
let current: MediaChange;
163169
let subscription = media.subscribe((change: MediaChange) => {
164170
current = change;
165171
});
166172

167-
// Activate mediaQuery associated with 'md' alias
168-
matchMedia.activate('xs');
169-
expect(current.mediaQuery).toEqual(findMediaQuery('xs'));
170-
171-
// Un-subscribe
172-
subscription.unsubscribe();
173+
async(() => {
174+
// Activate mediaQuery associated with 'md' alias
175+
matchMedia.activate('xs');
176+
expect(current.mediaQuery).toEqual(findMediaQuery('xs'));
173177

174-
matchMedia.activate('lg');
175-
expect(current.mqAlias).toBe('xs');
178+
// Un-subscribe
179+
subscription.unsubscribe();
176180

177-
})));
181+
matchMedia.activate('lg');
182+
expect(current.mqAlias).toBe('xs');
183+
});
184+
}));
178185
});
179186

180187
describe('with custom BreakPoints', () => {
@@ -198,26 +205,26 @@ describe('observable-media', () => {
198205
});
199206
});
200207

201-
it('can activate custom alias with custom mediaQueries', async(inject(
208+
it('can activate custom alias with custom mediaQueries', inject(
202209
[ObservableMedia, MatchMedia],
203210
(media, matchMedia) => {
204211
let current: MediaChange;
205212
let subscription = media.subscribe((change: MediaChange) => {
206213
current = change;
207214
});
208215

209-
// Activate mediaQuery associated with 'md' alias
210-
matchMedia.activate('print.md');
211-
expect(current.mediaQuery).toEqual(mdMediaQuery);
212-
213-
matchMedia.activate('tablet-gt-xs');
214-
expect(current.mqAlias).toBe('tablet-gt-xs');
215-
expect(current.mediaQuery).toBe(gtXsMediaQuery);
216+
async(() => {
217+
// Activate mediaQuery associated with 'md' alias
218+
matchMedia.activate('print.md');
219+
expect(current.mediaQuery).toEqual(mdMediaQuery);
216220

217-
subscription.unsubscribe();
218-
})));
221+
matchMedia.activate('tablet-gt-xs');
222+
expect(current.mqAlias).toBe('tablet-gt-xs');
223+
expect(current.mediaQuery).toBe(gtXsMediaQuery);
219224

225+
subscription.unsubscribe();
226+
});
227+
}));
220228
});
221-
222229
});
223230

src/lib/media-query/observable-media.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import {Injectable} from '@angular/core';
1010
import {Subscription} from 'rxjs/Subscription';
1111
import {Observable, Subscribable} from 'rxjs/Observable';
1212

13-
import {map, filter} from 'rxjs/operators';
13+
import {map} from 'rxjs/operators/map';
14+
import {filter} from 'rxjs/operators/filter';
1415

1516
import {BreakPointRegistry} from './breakpoints/break-point-registry';
1617

@@ -52,7 +53,7 @@ export abstract class ObservableMedia implements Subscribable<MediaChange> {
5253
* @usage
5354
*
5455
* // RxJS
55-
* import 'rxjs/add/operator/filter';
56+
* import {filter} from 'rxjs/operators/filter';
5657
* import { ObservableMedia } from '@angular/flex-layout';
5758
*
5859
* @Component({ ... })
@@ -69,8 +70,9 @@ export abstract class ObservableMedia implements Subscribable<MediaChange> {
6970
* // media.subscribe(onChange);
7071
*
7172
* media.asObservable()
72-
* .filter((change:MediaChange) => true) // silly noop filter
73-
* .subscribe(onChange);
73+
* .pipe(
74+
* filter((change:MediaChange) => true) // silly noop filter
75+
* ).subscribe(onChange);
7476
* }
7577
* }
7678
*/

0 commit comments

Comments
 (0)