88
99import { _isNumberValue } from '@angular/cdk/coercion' ;
1010import { DataSource } from '@angular/cdk/table' ;
11- import { MatPaginator , PageEvent } from '@angular/material/paginator' ;
11+ import { MatPaginator } from '@angular/material/paginator' ;
1212import { MatSort , Sort } from '@angular/material/sort' ;
1313import {
1414 BehaviorSubject ,
@@ -27,16 +27,32 @@ import {map} from 'rxjs/operators';
2727 */
2828const MAX_SAFE_INTEGER = 9007199254740991 ;
2929
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 > ;
3246 pageIndex : number ;
3347 initialized : Observable < void > ;
3448 pageSize : number ;
3549 length : number ;
3650}
3751
3852/** 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 > {
4056 /** Stream that emits when a new data array is set on the data source. */
4157 private readonly _data : BehaviorSubject < T [ ] > ;
4258
@@ -240,12 +256,12 @@ export class _MatTableDataSource<T, P extends Paginator> extends DataSource<T> {
240256 const sortChange : Observable < Sort | null | void > = this . _sort ?
241257 merge ( this . _sort . sortChange , this . _sort . initialized ) as Observable < Sort | void > :
242258 observableOf ( null ) ;
243- const pageChange : Observable < PageEvent | null | void > = this . _paginator ?
259+ const pageChange : Observable < MatTableDataSourcePageEvent | null | void > = this . _paginator ?
244260 merge (
245261 this . _paginator . page ,
246262 this . _internalPageChanges ,
247263 this . _paginator . initialized
248- ) as Observable < PageEvent | void > :
264+ ) as Observable < MatTableDataSourcePageEvent | void > :
249265 observableOf ( null ) ;
250266 const dataStream = this . _data ;
251267 // Watch for base data or filter changes to provide a filtered set of data.
0 commit comments