diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6f88a48cba1..117c1d7b21f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -49,7 +49,8 @@ src/lib/core/datetime/** @mmalerba # CDK src/cdk/coercion/** @jelbourn src/cdk/rxjs/** @jelbourn -src/cdk/observers/** @crisbeto @jelbourn +src/cdk/observers/** @jelbourn @crisbeto +src/cdk/collections/** @jelbourn @crisbeto @andrewseguin src/cdk/a11y/** @jelbourn @devversion src/cdk/platform/** @jelbourn @devversion src/cdk/bidi/** @jelbourn diff --git a/src/cdk/collections/collection-viewer.ts b/src/cdk/collections/collection-viewer.ts new file mode 100644 index 00000000000..83591723829 --- /dev/null +++ b/src/cdk/collections/collection-viewer.ts @@ -0,0 +1,17 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {Observable} from 'rxjs/Observable'; + +/** + * Interface for any component that provides a view of some data collection and wants to provide + * information regarding the view and any changes made. + */ +export interface CollectionViewer { + viewChange: Observable<{start: number, end: number}>; +} diff --git a/src/cdk/table/data-source.ts b/src/cdk/collections/data-source.ts similarity index 92% rename from src/cdk/table/data-source.ts rename to src/cdk/collections/data-source.ts index 86e93f1409b..c52c155e04f 100644 --- a/src/cdk/table/data-source.ts +++ b/src/cdk/collections/data-source.ts @@ -7,10 +7,7 @@ */ import {Observable} from 'rxjs/Observable'; - -export interface CollectionViewer { - viewChange: Observable<{start: number, end: number}>; -} +import {CollectionViewer} from './collection-viewer'; export abstract class DataSource { /** diff --git a/src/cdk/collections/index.ts b/src/cdk/collections/index.ts new file mode 100644 index 00000000000..f93e7c31d56 --- /dev/null +++ b/src/cdk/collections/index.ts @@ -0,0 +1,9 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +export * from './public_api'; diff --git a/src/cdk/collections/public_api.ts b/src/cdk/collections/public_api.ts new file mode 100644 index 00000000000..ed7251e3c14 --- /dev/null +++ b/src/cdk/collections/public_api.ts @@ -0,0 +1,11 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +export * from './collection-viewer'; +export * from './data-source'; +export * from './selection'; diff --git a/src/lib/core/selection/selection.spec.ts b/src/cdk/collections/selection.spec.ts similarity index 100% rename from src/lib/core/selection/selection.spec.ts rename to src/cdk/collections/selection.spec.ts diff --git a/src/lib/core/selection/selection.ts b/src/cdk/collections/selection.ts similarity index 99% rename from src/lib/core/selection/selection.ts rename to src/cdk/collections/selection.ts index f3d67427366..b2c199cfc9e 100644 --- a/src/lib/core/selection/selection.ts +++ b/src/cdk/collections/selection.ts @@ -8,10 +8,8 @@ import {Subject} from 'rxjs/Subject'; - /** * Class to be used to power selecting one or more options from a list. - * @docs-private */ export class SelectionModel { /** Currently-selected values. */ diff --git a/src/cdk/collections/tsconfig-build.json b/src/cdk/collections/tsconfig-build.json new file mode 100644 index 00000000000..7f637f1343a --- /dev/null +++ b/src/cdk/collections/tsconfig-build.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/collections", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/table/public_api.ts b/src/cdk/table/public_api.ts index 12d49a7f0c8..24a36e8ddd9 100644 --- a/src/cdk/table/public_api.ts +++ b/src/cdk/table/public_api.ts @@ -12,11 +12,13 @@ import {HeaderRowPlaceholder, RowPlaceholder, CdkTable} from './table'; import {CdkCellOutlet, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef} from './row'; import {CdkColumnDef, CdkHeaderCellDef, CdkHeaderCell, CdkCell, CdkCellDef} from './cell'; -export * from './data-source'; export * from './table'; export * from './cell'; export * from './row'; +/** Re-export DataSource for a more intuitive experience for users of just the table. */ +export {DataSource} from '@angular/cdk/collections'; + const EXPORTED_DECLARATIONS = [ CdkTable, CdkRowDef, diff --git a/src/cdk/table/table.spec.ts b/src/cdk/table/table.spec.ts index c22b28bfba3..a07b9283348 100644 --- a/src/cdk/table/table.spec.ts +++ b/src/cdk/table/table.spec.ts @@ -1,7 +1,7 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing'; import {Component, ViewChild} from '@angular/core'; import {CdkTable} from './table'; -import {CollectionViewer, DataSource} from './data-source'; +import {CollectionViewer, DataSource} from '@angular/cdk/collections'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; import {combineLatest} from 'rxjs/observable/combineLatest'; diff --git a/src/cdk/table/table.ts b/src/cdk/table/table.ts index 14f4b72cf55..4bf1760e917 100644 --- a/src/cdk/table/table.ts +++ b/src/cdk/table/table.ts @@ -29,7 +29,7 @@ import { ViewContainerRef, ViewEncapsulation, } from '@angular/core'; -import {CollectionViewer, DataSource} from './data-source'; +import {CollectionViewer, DataSource} from '@angular/cdk/collections'; import {CdkCellOutlet, CdkCellOutletRowContext, CdkHeaderRowDef, CdkRowDef} from './row'; import {takeUntil} from 'rxjs/operator/takeUntil'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; diff --git a/src/demo-app/system-config.ts b/src/demo-app/system-config.ts index 103320a0130..267598c7cad 100644 --- a/src/demo-app/system-config.ts +++ b/src/demo-app/system-config.ts @@ -30,6 +30,7 @@ System.config({ '@angular/cdk/a11y': 'dist/bundles/cdk-a11y.umd.js', '@angular/cdk/bidi': 'dist/bundles/cdk-bidi.umd.js', '@angular/cdk/coercion': 'dist/bundles/cdk-coercion.umd.js', + '@angular/cdk/collections': 'dist/bundles/cdk-collections.umd.js', '@angular/cdk/keycodes': 'dist/bundles/cdk-keycodes.umd.js', '@angular/cdk/observers': 'dist/bundles/cdk-observers.umd.js', '@angular/cdk/overlay': 'dist/bundles/cdk-overlay.umd.js', diff --git a/src/demo-app/table/person-data-source.ts b/src/demo-app/table/person-data-source.ts index 47bc342f4bf..9837486dcda 100644 --- a/src/demo-app/table/person-data-source.ts +++ b/src/demo-app/table/person-data-source.ts @@ -1,5 +1,5 @@ import {MdPaginator, MdSort} from '@angular/material'; -import {DataSource} from '@angular/cdk/table'; +import {DataSource} from '@angular/cdk/collections'; import {Observable} from 'rxjs/Observable'; import {PeopleDatabase, UserData} from './people-database'; import 'rxjs/add/observable/merge'; diff --git a/src/e2e-app/system-config.ts b/src/e2e-app/system-config.ts index 418d03aedac..d99329ec07d 100644 --- a/src/e2e-app/system-config.ts +++ b/src/e2e-app/system-config.ts @@ -30,6 +30,7 @@ System.config({ '@angular/cdk/a11y': 'dist/bundles/cdk-a11y.umd.js', '@angular/cdk/bidi': 'dist/bundles/cdk-bidi.umd.js', '@angular/cdk/coercion': 'dist/bundles/cdk-coercion.umd.js', + '@angular/cdk/collections': 'dist/bundles/cdk-collections.umd.js', '@angular/cdk/keycodes': 'dist/bundles/cdk-keycodes.umd.js', '@angular/cdk/observers': 'dist/bundles/cdk-observers.umd.js', '@angular/cdk/overlay': 'dist/bundles/cdk-overlay.umd.js', diff --git a/src/lib/core/core.ts b/src/lib/core/core.ts index 842fb0fbc34..96cea885498 100644 --- a/src/lib/core/core.ts +++ b/src/lib/core/core.ts @@ -14,7 +14,7 @@ import {OverlayModule} from '@angular/cdk/overlay'; import {PortalModule} from '@angular/cdk/portal'; import {MdLineModule} from './line/line'; import {MdOptionModule} from './option/index'; -import {MdSelectionModule} from './selection/index'; +import {MdPseudoCheckboxModule} from './selection/index'; import {MdRippleModule} from './ripple/index'; // Re-exports of the CDK to avoid breaking changes. @@ -28,6 +28,10 @@ export { ObserveContent, } from '@angular/cdk/observers'; +export { + SelectionModel +} from '@angular/cdk/collections'; + // RTL export {Dir, Direction, Directionality, BidiModule} from './bidi/index'; @@ -63,9 +67,6 @@ export {HammerInput, HammerManager} from './gestures/gesture-annotations'; // Ripple export * from './ripple/index'; -// Selection -export * from './selection/selection'; - // a11y export { AriaLivePoliteness, @@ -138,7 +139,7 @@ export { OverlayModule, A11yModule, MdOptionModule, - MdSelectionModule, + MdPseudoCheckboxModule, ], exports: [ MdLineModule, @@ -149,7 +150,7 @@ export { OverlayModule, A11yModule, MdOptionModule, - MdSelectionModule, + MdPseudoCheckboxModule, ], }) export class MdCoreModule {} diff --git a/src/lib/core/option/index.ts b/src/lib/core/option/index.ts index 5340908cebb..2150e97f094 100644 --- a/src/lib/core/option/index.ts +++ b/src/lib/core/option/index.ts @@ -9,13 +9,13 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {MdRippleModule} from '../ripple/index'; -import {MdSelectionModule} from '../selection/index'; +import {MdPseudoCheckboxModule} from '../selection/index'; import {MdOption} from './option'; import {MdOptgroup} from './optgroup'; @NgModule({ - imports: [MdRippleModule, CommonModule, MdSelectionModule], + imports: [MdRippleModule, CommonModule, MdPseudoCheckboxModule], exports: [MdOption, MdOptgroup], declarations: [MdOption, MdOptgroup] }) diff --git a/src/lib/core/selection/index.ts b/src/lib/core/selection/index.ts index 1797864dfde..cb3ef436abc 100644 --- a/src/lib/core/selection/index.ts +++ b/src/lib/core/selection/index.ts @@ -14,7 +14,7 @@ import {MdPseudoCheckbox} from './pseudo-checkbox/pseudo-checkbox'; exports: [MdPseudoCheckbox], declarations: [MdPseudoCheckbox] }) -export class MdSelectionModule { } +export class MdPseudoCheckboxModule { } export * from './pseudo-checkbox/pseudo-checkbox'; diff --git a/src/lib/list/index.ts b/src/lib/list/index.ts index d5960fe69a1..ad7ed22da62 100644 --- a/src/lib/list/index.ts +++ b/src/lib/list/index.ts @@ -7,24 +7,23 @@ */ import {NgModule} from '@angular/core'; -import {MdLineModule, MdRippleModule, MdCommonModule, MdSelectionModule} from '../core'; +import {MdCommonModule, MdLineModule, MdPseudoCheckboxModule, MdRippleModule} from '../core'; import {CommonModule} from '@angular/common'; import { - MdList, - MdListItem, - MdListDivider, - MdListAvatarCssMatStyler, - MdListIconCssMatStyler, - MdListCssMatStyler, - MdNavListCssMatStyler, MdDividerCssMatStyler, - MdListSubheaderCssMatStyler + MdList, + MdListAvatarCssMatStyler, + MdListCssMatStyler, + MdListDivider, + MdListIconCssMatStyler, + MdListItem, + MdListSubheaderCssMatStyler, + MdNavListCssMatStyler } from './list'; -import {MdSelectionList, MdListOption} from './selection-list'; - +import {MdListOption, MdSelectionList} from './selection-list'; @NgModule({ - imports: [MdLineModule, MdRippleModule, MdCommonModule, MdSelectionModule, CommonModule], + imports: [MdLineModule, MdRippleModule, MdCommonModule, MdPseudoCheckboxModule, CommonModule], exports: [ MdList, MdListItem, @@ -37,7 +36,7 @@ import {MdSelectionList, MdListOption} from './selection-list'; MdNavListCssMatStyler, MdDividerCssMatStyler, MdListSubheaderCssMatStyler, - MdSelectionModule, + MdPseudoCheckboxModule, MdSelectionList, MdListOption ], diff --git a/src/lib/select/select.ts b/src/lib/select/select.ts index fd76f0b7805..6e89d088028 100644 --- a/src/lib/select/select.ts +++ b/src/lib/select/select.ts @@ -51,7 +51,7 @@ import {merge} from 'rxjs/observable/merge'; import {Observable} from 'rxjs/Observable'; import {Subscription} from 'rxjs/Subscription'; import {fadeInContent, transformPanel, transformPlaceholder} from './select-animations'; -import {SelectionModel} from '../core/selection/selection'; +import {SelectionModel} from '@angular/cdk/collections'; import { getMdSelectDynamicMultipleError, getMdSelectNonArrayValueError, diff --git a/src/lib/sort/sort.spec.ts b/src/lib/sort/sort.spec.ts index 1ac5b3ea2c2..de24529d3b3 100644 --- a/src/lib/sort/sort.spec.ts +++ b/src/lib/sort/sort.spec.ts @@ -2,7 +2,8 @@ import {async, ComponentFixture, TestBed, inject} from '@angular/core/testing'; import {Component, ElementRef, ViewChild} from '@angular/core'; import {By} from '@angular/platform-browser'; import {MdSort, MdSortHeader, Sort, SortDirection, MdSortModule, MdSortHeaderIntl} from './index'; -import {CdkTableModule, DataSource, CollectionViewer} from '@angular/cdk/table'; +import {DataSource, CollectionViewer} from '@angular/cdk/collections'; +import {CdkTableModule} from '@angular/cdk/table'; import {Observable} from 'rxjs/Observable'; import { getMdSortDuplicateMdSortableIdError, diff --git a/src/lib/table/table.spec.ts b/src/lib/table/table.spec.ts index a879c5bf1b2..00ec04b84b7 100644 --- a/src/lib/table/table.spec.ts +++ b/src/lib/table/table.spec.ts @@ -1,6 +1,6 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing'; import {Component, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk/table'; +import {DataSource} from '@angular/cdk/collections'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; import {MdTableModule} from './index'; diff --git a/src/material-examples/cdk-table-basic/cdk-table-basic-example.ts b/src/material-examples/cdk-table-basic/cdk-table-basic-example.ts index 76df7296e04..80975595e08 100644 --- a/src/material-examples/cdk-table-basic/cdk-table-basic-example.ts +++ b/src/material-examples/cdk-table-basic/cdk-table-basic-example.ts @@ -1,5 +1,5 @@ import {Component} from '@angular/core'; -import {DataSource} from '@angular/cdk/table'; +import {DataSource} from '@angular/cdk/collections'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/startWith'; diff --git a/src/material-examples/table-basic/table-basic-example.ts b/src/material-examples/table-basic/table-basic-example.ts index f5ca4a86107..41f41c7eacb 100644 --- a/src/material-examples/table-basic/table-basic-example.ts +++ b/src/material-examples/table-basic/table-basic-example.ts @@ -1,5 +1,5 @@ import {Component} from '@angular/core'; -import {DataSource} from '@angular/cdk/table'; +import {DataSource} from '@angular/cdk/collections'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/observable/of'; diff --git a/src/material-examples/table-filtering/table-filtering-example.ts b/src/material-examples/table-filtering/table-filtering-example.ts index 337b20c00c1..8404f0c1b98 100644 --- a/src/material-examples/table-filtering/table-filtering-example.ts +++ b/src/material-examples/table-filtering/table-filtering-example.ts @@ -1,5 +1,5 @@ import {Component, ElementRef, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk/table'; +import {DataSource} from '@angular/cdk/collections'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/startWith'; diff --git a/src/material-examples/table-http/table-http-example.ts b/src/material-examples/table-http/table-http-example.ts index 1c24f2b1263..34389b71561 100644 --- a/src/material-examples/table-http/table-http-example.ts +++ b/src/material-examples/table-http/table-http-example.ts @@ -1,6 +1,6 @@ import {Component, OnInit, ViewChild} from '@angular/core'; import {Http} from '@angular/http'; -import {DataSource} from '@angular/cdk/table'; +import {DataSource} from '@angular/cdk/collections'; import {MdPaginator, MdSort} from '@angular/material'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/observable/merge'; diff --git a/src/material-examples/table-overview/table-overview-example.ts b/src/material-examples/table-overview/table-overview-example.ts index 12f53be904b..b564dd30488 100644 --- a/src/material-examples/table-overview/table-overview-example.ts +++ b/src/material-examples/table-overview/table-overview-example.ts @@ -1,6 +1,7 @@ import {Component, ElementRef, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk/table'; -import {MdPaginator, MdSort, SelectionModel} from '@angular/material'; +import {DataSource} from '@angular/cdk/collections'; +import {MdPaginator, MdSort} from '@angular/material'; +import {SelectionModel} from '@angular/cdk/collections'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/startWith'; diff --git a/src/material-examples/table-pagination/table-pagination-example.ts b/src/material-examples/table-pagination/table-pagination-example.ts index 7de7e38af09..1434c8f6acd 100644 --- a/src/material-examples/table-pagination/table-pagination-example.ts +++ b/src/material-examples/table-pagination/table-pagination-example.ts @@ -1,5 +1,5 @@ import {Component, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk/table'; +import {DataSource} from '@angular/cdk/collections'; import {MdPaginator} from '@angular/material'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; diff --git a/src/material-examples/table-sorting/table-sorting-example.ts b/src/material-examples/table-sorting/table-sorting-example.ts index 2d30ebed8f9..1cbcc4c6f68 100644 --- a/src/material-examples/table-sorting/table-sorting-example.ts +++ b/src/material-examples/table-sorting/table-sorting-example.ts @@ -1,5 +1,5 @@ import {Component, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk/table'; +import {DataSource} from '@angular/cdk/collections'; import {MdSort} from '@angular/material'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; diff --git a/test/karma-test-shim.js b/test/karma-test-shim.js index fadbd1397e7..df15bf56b75 100644 --- a/test/karma-test-shim.js +++ b/test/karma-test-shim.js @@ -52,6 +52,7 @@ System.config({ '@angular/cdk/a11y': 'dist/packages/cdk/a11y/index.js', '@angular/cdk/bidi': 'dist/packages/cdk/bidi/index.js', '@angular/cdk/coercion': 'dist/packages/cdk/coercion/index.js', + '@angular/cdk/collections': 'dist/packages/cdk/collections/index.js', '@angular/cdk/keycodes': 'dist/packages/cdk/keycodes/index.js', '@angular/cdk/observers': 'dist/packages/cdk/observers/index.js', '@angular/cdk/overlay': 'dist/packages/cdk/overlay/index.js',