8
8
9
9
import { _isNumberValue } from '@angular/cdk/coercion' ;
10
10
import { DataSource } from '@angular/cdk/table' ;
11
- import { MatPaginator , PageEvent } from '@angular/material/paginator' ;
11
+ import { MatPaginator } from '@angular/material/paginator' ;
12
12
import { MatSort , Sort } from '@angular/material/sort' ;
13
13
import {
14
14
BehaviorSubject ,
@@ -27,16 +27,32 @@ import {map} from 'rxjs/operators';
27
27
*/
28
28
const MAX_SAFE_INTEGER = 9007199254740991 ;
29
29
30
- interface Paginator {
31
- page : Subject < PageEvent > ;
30
+ /**
31
+ * Interface that matches the required API parts for the MatPaginator's PageEvent.
32
+ * Decoupled so that users can depend on either the legacy or MDC-based paginator.
33
+ */
34
+ export interface MatTableDataSourcePageEvent {
35
+ pageIndex : number ;
36
+ pageSize : number ;
37
+ length : number ;
38
+ }
39
+
40
+ /**
41
+ * Interface that matches the required API parts of the MatPaginator.
42
+ * Decoupled so that users can depend on either the legacy or MDC-based paginator.
43
+ */
44
+ export interface MatTableDataSourcePaginator {
45
+ page : Subject < MatTableDataSourcePageEvent > ;
32
46
pageIndex : number ;
33
47
initialized : Observable < void > ;
34
48
pageSize : number ;
35
49
length : number ;
36
50
}
37
51
38
52
/** Shared base class with MDC-based implementation. */
39
- export class _MatTableDataSource < T , P extends Paginator > extends DataSource < T > {
53
+ export class _MatTableDataSource < T ,
54
+ P extends MatTableDataSourcePaginator = MatTableDataSourcePaginator >
55
+ extends DataSource < T > {
40
56
/** Stream that emits when a new data array is set on the data source. */
41
57
private readonly _data : BehaviorSubject < T [ ] > ;
42
58
@@ -240,12 +256,12 @@ export class _MatTableDataSource<T, P extends Paginator> extends DataSource<T> {
240
256
const sortChange : Observable < Sort | null | void > = this . _sort ?
241
257
merge ( this . _sort . sortChange , this . _sort . initialized ) as Observable < Sort | void > :
242
258
observableOf ( null ) ;
243
- const pageChange : Observable < PageEvent | null | void > = this . _paginator ?
259
+ const pageChange : Observable < MatTableDataSourcePageEvent | null | void > = this . _paginator ?
244
260
merge (
245
261
this . _paginator . page ,
246
262
this . _internalPageChanges ,
247
263
this . _paginator . initialized
248
- ) as Observable < PageEvent | void > :
264
+ ) as Observable < MatTableDataSourcePageEvent | void > :
249
265
observableOf ( null ) ;
250
266
const dataStream = this . _data ;
251
267
// Watch for base data or filter changes to provide a filtered set of data.
0 commit comments