From bcae614d79565f6eb4aee50b22cda09482892321 Mon Sep 17 00:00:00 2001 From: Jeremy Elbourn Date: Tue, 25 Jul 2017 16:15:24 -0700 Subject: [PATCH] build: change cdk to use secondary entry-points (#5922) * build: change cdk to use secondary entry-points * refactoring for comments * fix closure and payload size calc --- .../closure-compiler/build-devapp-bundle.sh | 18 ++++ src/cdk/a11y/focus-trap.ts | 6 +- src/cdk/a11y/index.ts | 23 +---- src/cdk/a11y/interactivity-checker.ts | 2 +- src/cdk/a11y/list-key-manager.ts | 2 +- src/cdk/a11y/live-announcer.spec.ts | 2 +- src/cdk/a11y/live-announcer.ts | 2 +- src/cdk/a11y/public_api.ts | 30 +++++++ src/cdk/a11y/tsconfig-build.json | 23 +++++ src/cdk/bidi/index.ts | 24 +----- src/cdk/bidi/public_api.ts | 31 +++++++ src/cdk/bidi/tsconfig-build.json | 17 ++++ src/cdk/coercion/index.ts | 3 +- src/cdk/coercion/public_api.ts | 10 +++ src/cdk/coercion/tsconfig-build.json | 17 ++++ src/cdk/index.ts | 5 -- src/cdk/keyboard/index.ts | 2 +- src/cdk/keyboard/public_api.ts | 9 ++ src/cdk/keyboard/tsconfig-build.json | 17 ++++ src/cdk/observe-content/index.ts | 2 +- src/cdk/observe-content/observe-content.ts | 2 +- src/cdk/observe-content/public_api.ts | 9 ++ src/cdk/observe-content/tsconfig-build.json | 20 +++++ src/cdk/platform/index.ts | 13 +-- src/cdk/platform/public_api.ts | 20 +++++ src/cdk/platform/tsconfig-build.json | 17 ++++ src/cdk/portal/index.ts | 6 +- src/cdk/portal/public_api.ts | 11 +++ src/cdk/portal/tsconfig-build.json | 17 ++++ src/cdk/public_api.ts | 12 +-- src/cdk/rxjs/index.ts | 5 +- src/cdk/rxjs/public_api.ts | 10 +++ src/cdk/rxjs/tsconfig-build.json | 17 ++++ src/cdk/table/index.ts | 33 +------- src/cdk/table/public_api.ts | 42 ++++++++++ src/cdk/table/tsconfig-build.json | 20 +++++ src/cdk/testing/index.ts | 7 +- src/cdk/testing/public_api.ts | 12 +++ src/cdk/testing/tsconfig-build.json | 17 ++++ src/cdk/tsconfig-tests.json | 8 +- src/demo-app/demo-app-module.ts | 2 +- src/demo-app/system-config.ts | 12 ++- src/demo-app/table/person-data-source.ts | 2 +- src/demo-app/tsconfig-aot.json | 2 +- src/demo-app/tsconfig-build.json | 2 +- src/e2e-app/system-config.ts | 12 ++- src/e2e-app/tsconfig-build.json | 2 +- src/lib/checkbox/checkbox.ts | 2 +- src/lib/checkbox/index.ts | 2 +- src/lib/chips/chip-input.ts | 2 +- src/lib/chips/chip-list.ts | 3 +- src/lib/chips/chip.ts | 2 +- src/lib/core/a11y/fake-mousedown.ts | 2 +- src/lib/core/a11y/focus-trap.ts | 2 +- src/lib/core/a11y/index.ts | 2 +- src/lib/core/a11y/interactivity-checker.ts | 2 +- src/lib/core/a11y/list-key-manager.ts | 2 +- src/lib/core/a11y/live-announcer.ts | 2 +- src/lib/core/bidi/dir.ts | 2 +- src/lib/core/bidi/directionality.ts | 2 +- src/lib/core/bidi/index.ts | 2 +- .../core/common-behaviors/disable-ripple.ts | 2 +- src/lib/core/common-behaviors/disabled.ts | 2 +- src/lib/core/core.ts | 9 +- src/lib/core/keyboard/keycodes.ts | 2 +- src/lib/core/option/option.ts | 2 +- src/lib/core/overlay/overlay-directives.ts | 2 +- src/lib/core/platform/features.ts | 2 +- src/lib/core/platform/index.ts | 2 +- src/lib/core/platform/platform.ts | 2 +- src/lib/core/portal/dom-portal-host.ts | 2 +- src/lib/core/portal/portal-directives.ts | 2 +- src/lib/core/portal/portal.ts | 8 +- src/lib/core/ripple/ripple.spec.ts | 2 +- src/lib/core/rxjs/rx-chain.ts | 2 +- src/lib/core/rxjs/rx-operators.ts | 2 +- src/lib/datepicker/datepicker-input.ts | 2 +- src/lib/datepicker/datepicker-toggle.ts | 2 +- src/lib/datepicker/datepicker.ts | 2 +- src/lib/expansion/accordion.ts | 2 +- src/lib/radio/radio.ts | 2 +- src/lib/select/select.ts | 2 +- src/lib/sort/sort-header.ts | 2 +- src/lib/sort/sort.spec.ts | 2 +- src/lib/table/cell.ts | 2 +- src/lib/table/index.ts | 2 +- src/lib/table/row.ts | 2 +- src/lib/table/table.spec.ts | 3 +- src/lib/table/table.ts | 2 +- src/lib/tabs/index.ts | 2 +- src/lib/tooltip/tooltip.ts | 2 +- src/lib/tsconfig-build.json | 10 ++- src/lib/tsconfig-tests.json | 3 +- .../cdk-table-basic-example.ts | 2 +- src/material-examples/material-module.ts | 2 +- .../table-basic/table-basic-example.ts | 2 +- .../table-filtering-example.ts | 2 +- .../table-http/table-http-example.ts | 2 +- .../table-overview/table-overview-example.ts | 2 +- .../table-pagination-example.ts | 2 +- .../table-sorting/table-sorting-example.ts | 2 +- src/material-examples/tsconfig-build.json | 11 ++- src/universal-app/tsconfig-build.json | 2 +- src/universal-app/tsconfig-prerender.json | 2 +- test/karma-test-shim.js | 9 ++ tools/gulp/gulpfile.ts | 2 +- tools/gulp/tasks/ci.ts | 2 +- tools/gulp/tasks/payload.ts | 13 +-- tools/gulp/tasks/universal.ts | 2 +- tools/package-tools/build-bundles.ts | 84 ++++++++++++++----- tools/package-tools/build-release.ts | 50 ++++++++++- .../package-tools/entry-point-package-json.ts | 15 ++++ tools/package-tools/gulp/build-tasks-gulp.ts | 56 ++++++++++--- tools/package-tools/metadata-reexport.ts | 6 +- tools/package-tools/rollup-helpers.ts | 11 +++ tools/package-tools/secondary-entry-points.ts | 40 +++++++++ tools/package-tools/typings-reexport.ts | 9 +- tsconfig.json | 3 +- 118 files changed, 780 insertions(+), 246 deletions(-) create mode 100644 src/cdk/a11y/public_api.ts create mode 100644 src/cdk/a11y/tsconfig-build.json create mode 100644 src/cdk/bidi/public_api.ts create mode 100644 src/cdk/bidi/tsconfig-build.json create mode 100644 src/cdk/coercion/public_api.ts create mode 100644 src/cdk/coercion/tsconfig-build.json create mode 100644 src/cdk/keyboard/public_api.ts create mode 100644 src/cdk/keyboard/tsconfig-build.json create mode 100644 src/cdk/observe-content/public_api.ts create mode 100644 src/cdk/observe-content/tsconfig-build.json create mode 100644 src/cdk/platform/public_api.ts create mode 100644 src/cdk/platform/tsconfig-build.json create mode 100644 src/cdk/portal/public_api.ts create mode 100644 src/cdk/portal/tsconfig-build.json create mode 100644 src/cdk/rxjs/public_api.ts create mode 100644 src/cdk/rxjs/tsconfig-build.json create mode 100644 src/cdk/table/public_api.ts create mode 100644 src/cdk/table/tsconfig-build.json create mode 100644 src/cdk/testing/public_api.ts create mode 100644 src/cdk/testing/tsconfig-build.json create mode 100644 tools/package-tools/entry-point-package-json.ts create mode 100644 tools/package-tools/secondary-entry-points.ts diff --git a/scripts/closure-compiler/build-devapp-bundle.sh b/scripts/closure-compiler/build-devapp-bundle.sh index 35c6bc74b62..bc85d749298 100755 --- a/scripts/closure-compiler/build-devapp-bundle.sh +++ b/scripts/closure-compiler/build-devapp-bundle.sh @@ -43,6 +43,15 @@ OPTS=( "--js_module_root=dist/packages" "--js_module_root=dist/releases/material" "--js_module_root=dist/releases/cdk" + "--js_module_root=dist/releases/cdk/a11y" + "--js_module_root=dist/releases/cdk/bidi" + "--js_module_root=dist/releases/cdk/coercion" + "--js_module_root=dist/releases/cdk/keyboard" + "--js_module_root=dist/releases/cdk/observe-content" + "--js_module_root=dist/releases/cdk/platform" + "--js_module_root=dist/releases/cdk/portal" + "--js_module_root=dist/releases/cdk/rxjs" + "--js_module_root=dist/releases/cdk/table" "--js_module_root=node_modules/@angular/core" "--js_module_root=node_modules/@angular/common" "--js_module_root=node_modules/@angular/compiler" @@ -62,6 +71,15 @@ OPTS=( # Include the Material and CDK FESM bundles dist/releases/material/@angular/material.js dist/releases/cdk/@angular/cdk.js + dist/releases/cdk/@angular/cdk/a11y.js + dist/releases/cdk/@angular/cdk/bidi.js + dist/releases/cdk/@angular/cdk/coercion.js + dist/releases/cdk/@angular/cdk/keyboard.js + dist/releases/cdk/@angular/cdk/observe-content.js + dist/releases/cdk/@angular/cdk/platform.js + dist/releases/cdk/@angular/cdk/portal.js + dist/releases/cdk/@angular/cdk/rxjs.js + dist/releases/cdk/@angular/cdk/table.js # Include all Angular FESM bundles. node_modules/@angular/core/@angular/core.js diff --git a/src/cdk/a11y/focus-trap.ts b/src/cdk/a11y/focus-trap.ts index 60cb67ef3df..a4045fccd58 100644 --- a/src/cdk/a11y/focus-trap.ts +++ b/src/cdk/a11y/focus-trap.ts @@ -15,10 +15,10 @@ import { AfterContentInit, Injectable, } from '@angular/core'; -import {coerceBooleanProperty} from '../coercion/boolean-property'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {Platform} from '@angular/cdk/platform'; +import {first} from '@angular/cdk/rxjs'; import {InteractivityChecker} from './interactivity-checker'; -import {Platform} from '../platform/platform'; -import {first} from '../rxjs/index'; /** diff --git a/src/cdk/a11y/index.ts b/src/cdk/a11y/index.ts index c78f2a4b010..f93e7c31d56 100644 --- a/src/cdk/a11y/index.ts +++ b/src/cdk/a11y/index.ts @@ -6,25 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {FocusTrapDirective, FocusTrapDeprecatedDirective, FocusTrapFactory} from './focus-trap'; -import {LIVE_ANNOUNCER_PROVIDER} from './live-announcer'; -import {InteractivityChecker} from './interactivity-checker'; -import {CommonModule} from '@angular/common'; -import {PlatformModule} from '../platform/index'; - -@NgModule({ - imports: [CommonModule, PlatformModule], - declarations: [FocusTrapDirective, FocusTrapDeprecatedDirective], - exports: [FocusTrapDirective, FocusTrapDeprecatedDirective], - providers: [InteractivityChecker, FocusTrapFactory, LIVE_ANNOUNCER_PROVIDER] -}) -export class A11yModule {} - -export * from './live-announcer'; -export * from './fake-mousedown'; -export * from './focus-trap'; -export * from './interactivity-checker'; -export * from './list-key-manager'; -export * from './activedescendant-key-manager'; -export * from './focus-key-manager'; +export * from './public_api'; diff --git a/src/cdk/a11y/interactivity-checker.ts b/src/cdk/a11y/interactivity-checker.ts index 035e2700150..dac06f66ea4 100644 --- a/src/cdk/a11y/interactivity-checker.ts +++ b/src/cdk/a11y/interactivity-checker.ts @@ -7,7 +7,7 @@ */ import {Injectable} from '@angular/core'; -import {Platform} from '../platform/platform'; +import {Platform} from '@angular/cdk/platform'; /** * The InteractivityChecker leans heavily on the ally.js accessibility utilities. diff --git a/src/cdk/a11y/list-key-manager.ts b/src/cdk/a11y/list-key-manager.ts index 2a4cac4cdd0..0a57b648403 100644 --- a/src/cdk/a11y/list-key-manager.ts +++ b/src/cdk/a11y/list-key-manager.ts @@ -7,9 +7,9 @@ */ import {QueryList} from '@angular/core'; -import {UP_ARROW, DOWN_ARROW, TAB} from '../keyboard/keycodes'; import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; +import {UP_ARROW, DOWN_ARROW, TAB} from '@angular/cdk/keyboard'; /** * This interface is for items that can be disabled. The type passed into diff --git a/src/cdk/a11y/live-announcer.spec.ts b/src/cdk/a11y/live-announcer.spec.ts index e88c30ebe7a..16bfbedce68 100644 --- a/src/cdk/a11y/live-announcer.spec.ts +++ b/src/cdk/a11y/live-announcer.spec.ts @@ -2,7 +2,7 @@ import {inject, fakeAsync, tick, ComponentFixture, TestBed} from '@angular/core/ import {Component} from '@angular/core'; import {By} from '@angular/platform-browser'; import {LiveAnnouncer, LIVE_ANNOUNCER_ELEMENT_TOKEN} from './live-announcer'; -import {A11yModule} from '../index'; +import {A11yModule} from './index'; describe('LiveAnnouncer', () => { diff --git a/src/cdk/a11y/live-announcer.ts b/src/cdk/a11y/live-announcer.ts index 6056c5aa83b..d1789e06f88 100644 --- a/src/cdk/a11y/live-announcer.ts +++ b/src/cdk/a11y/live-announcer.ts @@ -14,7 +14,7 @@ import { SkipSelf, OnDestroy, } from '@angular/core'; -import {Platform} from '../platform/platform'; +import {Platform} from '@angular/cdk/platform'; export const LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement'); diff --git a/src/cdk/a11y/public_api.ts b/src/cdk/a11y/public_api.ts new file mode 100644 index 00000000000..2d327ccc0a2 --- /dev/null +++ b/src/cdk/a11y/public_api.ts @@ -0,0 +1,30 @@ +/** + * @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 {NgModule} from '@angular/core'; +import {FocusTrapDirective, FocusTrapDeprecatedDirective, FocusTrapFactory} from './focus-trap'; +import {LIVE_ANNOUNCER_PROVIDER} from './live-announcer'; +import {InteractivityChecker} from './interactivity-checker'; +import {CommonModule} from '@angular/common'; +import {PlatformModule} from '@angular/cdk/platform'; + +@NgModule({ + imports: [CommonModule, PlatformModule], + declarations: [FocusTrapDirective, FocusTrapDeprecatedDirective], + exports: [FocusTrapDirective, FocusTrapDeprecatedDirective], + providers: [InteractivityChecker, FocusTrapFactory, LIVE_ANNOUNCER_PROVIDER] +}) +export class A11yModule {} + +export * from './live-announcer'; +export * from './fake-mousedown'; +export * from './focus-trap'; +export * from './interactivity-checker'; +export * from './list-key-manager'; +export * from './activedescendant-key-manager'; +export * from './focus-key-manager'; diff --git a/src/cdk/a11y/tsconfig-build.json b/src/cdk/a11y/tsconfig-build.json new file mode 100644 index 00000000000..e86343ebd46 --- /dev/null +++ b/src/cdk/a11y/tsconfig-build.json @@ -0,0 +1,23 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "outDir": "../../../dist/packages/cdk", + "baseUrl": ".", + "paths": { + "@angular/cdk/coercion": ["../../../dist/packages/cdk/coercion/public_api"], + "@angular/cdk/keyboard": ["../../../dist/packages/cdk/keyboard/public_api"], + "@angular/cdk/platform": ["../../../dist/packages/cdk/platform/public_api"], + "@angular/cdk/rxjs": ["../../../dist/packages/cdk/rxjs/public_api"] + } + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/a11y", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/bidi/index.ts b/src/cdk/bidi/index.ts index d42a66e628a..f93e7c31d56 100644 --- a/src/cdk/bidi/index.ts +++ b/src/cdk/bidi/index.ts @@ -6,26 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {DOCUMENT} from '@angular/platform-browser'; -import {Dir} from './dir'; -import {DIR_DOCUMENT, Directionality} from './directionality'; - -export { - Directionality, - DIRECTIONALITY_PROVIDER_FACTORY, - DIRECTIONALITY_PROVIDER, - DIR_DOCUMENT, - Direction, -} from './directionality'; -export {Dir} from './dir'; - -@NgModule({ - exports: [Dir], - declarations: [Dir], - providers: [ - {provide: DIR_DOCUMENT, useExisting: DOCUMENT}, - Directionality, - ] -}) -export class BidiModule { } +export * from './public_api'; diff --git a/src/cdk/bidi/public_api.ts b/src/cdk/bidi/public_api.ts new file mode 100644 index 00000000000..d42a66e628a --- /dev/null +++ b/src/cdk/bidi/public_api.ts @@ -0,0 +1,31 @@ +/** + * @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 {NgModule} from '@angular/core'; +import {DOCUMENT} from '@angular/platform-browser'; +import {Dir} from './dir'; +import {DIR_DOCUMENT, Directionality} from './directionality'; + +export { + Directionality, + DIRECTIONALITY_PROVIDER_FACTORY, + DIRECTIONALITY_PROVIDER, + DIR_DOCUMENT, + Direction, +} from './directionality'; +export {Dir} from './dir'; + +@NgModule({ + exports: [Dir], + declarations: [Dir], + providers: [ + {provide: DIR_DOCUMENT, useExisting: DOCUMENT}, + Directionality, + ] +}) +export class BidiModule { } diff --git a/src/cdk/bidi/tsconfig-build.json b/src/cdk/bidi/tsconfig-build.json new file mode 100644 index 00000000000..fe03260b211 --- /dev/null +++ b/src/cdk/bidi/tsconfig-build.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "baseUrl": ".", + "outDir": "../../../dist/packages/cdk" + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/bidi", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/coercion/index.ts b/src/cdk/coercion/index.ts index 53767a7ac27..f93e7c31d56 100644 --- a/src/cdk/coercion/index.ts +++ b/src/cdk/coercion/index.ts @@ -6,5 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './boolean-property'; -export * from './number-property'; +export * from './public_api'; diff --git a/src/cdk/coercion/public_api.ts b/src/cdk/coercion/public_api.ts new file mode 100644 index 00000000000..53767a7ac27 --- /dev/null +++ b/src/cdk/coercion/public_api.ts @@ -0,0 +1,10 @@ +/** + * @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 './boolean-property'; +export * from './number-property'; diff --git a/src/cdk/coercion/tsconfig-build.json b/src/cdk/coercion/tsconfig-build.json new file mode 100644 index 00000000000..e60425e4d26 --- /dev/null +++ b/src/cdk/coercion/tsconfig-build.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "baseUrl": ".", + "outDir": "../../../dist/packages/cdk" + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/coercion", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/index.ts b/src/cdk/index.ts index f2136b9e289..f93e7c31d56 100644 --- a/src/cdk/index.ts +++ b/src/cdk/index.ts @@ -6,9 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -/* - * This file is not used to build this module. The real "index.js" file will be generated by the - * Angular Compiler CLI. This file is used inside of Google and is also used to simplify the - * SystemJS configuration - */ export * from './public_api'; diff --git a/src/cdk/keyboard/index.ts b/src/cdk/keyboard/index.ts index e486715ffd5..f93e7c31d56 100644 --- a/src/cdk/keyboard/index.ts +++ b/src/cdk/keyboard/index.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './keycodes'; +export * from './public_api'; diff --git a/src/cdk/keyboard/public_api.ts b/src/cdk/keyboard/public_api.ts new file mode 100644 index 00000000000..e486715ffd5 --- /dev/null +++ b/src/cdk/keyboard/public_api.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 './keycodes'; diff --git a/src/cdk/keyboard/tsconfig-build.json b/src/cdk/keyboard/tsconfig-build.json new file mode 100644 index 00000000000..462a113c07c --- /dev/null +++ b/src/cdk/keyboard/tsconfig-build.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "baseUrl": ".", + "outDir": "../../../dist/packages/cdk" + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/keyboard", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/observe-content/index.ts b/src/cdk/observe-content/index.ts index 942aea5b489..f93e7c31d56 100644 --- a/src/cdk/observe-content/index.ts +++ b/src/cdk/observe-content/index.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './observe-content'; +export * from './public_api'; diff --git a/src/cdk/observe-content/observe-content.ts b/src/cdk/observe-content/observe-content.ts index 9188a562e70..f9729341744 100644 --- a/src/cdk/observe-content/observe-content.ts +++ b/src/cdk/observe-content/observe-content.ts @@ -18,7 +18,7 @@ import { Injectable, } from '@angular/core'; import {Subject} from 'rxjs/Subject'; -import {RxChain, debounceTime} from '../rxjs/index'; +import {RxChain, debounceTime} from '@angular/cdk/rxjs'; /** * Factory that creates a new MutationObserver and allows us to stub it out in unit tests. diff --git a/src/cdk/observe-content/public_api.ts b/src/cdk/observe-content/public_api.ts new file mode 100644 index 00000000000..942aea5b489 --- /dev/null +++ b/src/cdk/observe-content/public_api.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 './observe-content'; diff --git a/src/cdk/observe-content/tsconfig-build.json b/src/cdk/observe-content/tsconfig-build.json new file mode 100644 index 00000000000..24b52a6225b --- /dev/null +++ b/src/cdk/observe-content/tsconfig-build.json @@ -0,0 +1,20 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "outDir": "../../../dist/packages/cdk", + "baseUrl": ".", + "paths": { + "@angular/cdk/rxjs": ["../../../dist/packages/cdk/rxjs/public_api"] + } + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/observe-content", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/platform/index.ts b/src/cdk/platform/index.ts index ea7a9a4b4cf..f93e7c31d56 100644 --- a/src/cdk/platform/index.ts +++ b/src/cdk/platform/index.ts @@ -6,15 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {Platform} from './platform'; - - -@NgModule({ - providers: [Platform] -}) -export class PlatformModule {} - - -export * from './platform'; -export * from './features'; +export * from './public_api'; diff --git a/src/cdk/platform/public_api.ts b/src/cdk/platform/public_api.ts new file mode 100644 index 00000000000..ea7a9a4b4cf --- /dev/null +++ b/src/cdk/platform/public_api.ts @@ -0,0 +1,20 @@ +/** + * @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 {NgModule} from '@angular/core'; +import {Platform} from './platform'; + + +@NgModule({ + providers: [Platform] +}) +export class PlatformModule {} + + +export * from './platform'; +export * from './features'; diff --git a/src/cdk/platform/tsconfig-build.json b/src/cdk/platform/tsconfig-build.json new file mode 100644 index 00000000000..bd056d7906f --- /dev/null +++ b/src/cdk/platform/tsconfig-build.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "baseUrl": ".", + "outDir": "../../../dist/packages/cdk" + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/platform", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/portal/index.ts b/src/cdk/portal/index.ts index 3006ee0af57..2b504ab757d 100644 --- a/src/cdk/portal/index.ts +++ b/src/cdk/portal/index.ts @@ -6,6 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './portal'; -export * from './dom-portal-host'; -export * from './portal-directives'; + + +export * from './public_api'; diff --git a/src/cdk/portal/public_api.ts b/src/cdk/portal/public_api.ts new file mode 100644 index 00000000000..3006ee0af57 --- /dev/null +++ b/src/cdk/portal/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 './portal'; +export * from './dom-portal-host'; +export * from './portal-directives'; diff --git a/src/cdk/portal/tsconfig-build.json b/src/cdk/portal/tsconfig-build.json new file mode 100644 index 00000000000..38f58560a10 --- /dev/null +++ b/src/cdk/portal/tsconfig-build.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "baseUrl": ".", + "outDir": "../../../dist/packages/cdk" + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/portal", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/public_api.ts b/src/cdk/public_api.ts index 8c771e4938f..cef0ea58855 100644 --- a/src/cdk/public_api.ts +++ b/src/cdk/public_api.ts @@ -6,12 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './a11y/index'; -export * from './bidi/index'; -export * from './coercion/index'; -export * from './table/index'; -export * from './platform/index'; -export * from './portal/index'; -export * from './rxjs/index'; -export * from './observe-content/index'; -export * from './keyboard/index'; + +// TODO(jelbourn): add version here +export const __TMP__ = 0; diff --git a/src/cdk/rxjs/index.ts b/src/cdk/rxjs/index.ts index a6f22e575d8..2b504ab757d 100644 --- a/src/cdk/rxjs/index.ts +++ b/src/cdk/rxjs/index.ts @@ -6,5 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './rx-chain'; -export * from './rx-operators'; + + +export * from './public_api'; diff --git a/src/cdk/rxjs/public_api.ts b/src/cdk/rxjs/public_api.ts new file mode 100644 index 00000000000..a6f22e575d8 --- /dev/null +++ b/src/cdk/rxjs/public_api.ts @@ -0,0 +1,10 @@ +/** + * @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 './rx-chain'; +export * from './rx-operators'; diff --git a/src/cdk/rxjs/tsconfig-build.json b/src/cdk/rxjs/tsconfig-build.json new file mode 100644 index 00000000000..786e6e247ec --- /dev/null +++ b/src/cdk/rxjs/tsconfig-build.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "baseUrl": ".", + "outDir": "../../../dist/packages/cdk" + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/rxjs", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/table/index.ts b/src/cdk/table/index.ts index 12d49a7f0c8..2b504ab757d 100644 --- a/src/cdk/table/index.ts +++ b/src/cdk/table/index.ts @@ -6,37 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {CommonModule} from '@angular/common'; -import {NgModule} from '@angular/core'; -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'; -const EXPORTED_DECLARATIONS = [ - CdkTable, - CdkRowDef, - CdkCellDef, - CdkCellOutlet, - CdkHeaderCellDef, - CdkColumnDef, - CdkCell, - CdkRow, - CdkHeaderCell, - CdkHeaderRow, - CdkHeaderRowDef, - RowPlaceholder, - HeaderRowPlaceholder, -]; - -@NgModule({ - imports: [CommonModule], - exports: [EXPORTED_DECLARATIONS], - declarations: [EXPORTED_DECLARATIONS] - -}) -export class CdkTableModule { } +export * from './public_api'; diff --git a/src/cdk/table/public_api.ts b/src/cdk/table/public_api.ts new file mode 100644 index 00000000000..12d49a7f0c8 --- /dev/null +++ b/src/cdk/table/public_api.ts @@ -0,0 +1,42 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {NgModule} from '@angular/core'; +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'; + +const EXPORTED_DECLARATIONS = [ + CdkTable, + CdkRowDef, + CdkCellDef, + CdkCellOutlet, + CdkHeaderCellDef, + CdkColumnDef, + CdkCell, + CdkRow, + CdkHeaderCell, + CdkHeaderRow, + CdkHeaderRowDef, + RowPlaceholder, + HeaderRowPlaceholder, +]; + +@NgModule({ + imports: [CommonModule], + exports: [EXPORTED_DECLARATIONS], + declarations: [EXPORTED_DECLARATIONS] + +}) +export class CdkTableModule { } diff --git a/src/cdk/table/tsconfig-build.json b/src/cdk/table/tsconfig-build.json new file mode 100644 index 00000000000..cff8bf2a700 --- /dev/null +++ b/src/cdk/table/tsconfig-build.json @@ -0,0 +1,20 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "outDir": "../../../dist/packages/cdk", + "baseUrl": ".", + "paths": { + "@angular/cdk/platform": ["../../../dist/packages/cdk/platform/index"] + } + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/table", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/testing/index.ts b/src/cdk/testing/index.ts index d0b8f467c65..2b504ab757d 100644 --- a/src/cdk/testing/index.ts +++ b/src/cdk/testing/index.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './dispatch-events'; -export * from './event-objects'; -export * from './type-in-element'; -export * from './wrapped-error-message'; + + +export * from './public_api'; diff --git a/src/cdk/testing/public_api.ts b/src/cdk/testing/public_api.ts new file mode 100644 index 00000000000..d0b8f467c65 --- /dev/null +++ b/src/cdk/testing/public_api.ts @@ -0,0 +1,12 @@ +/** + * @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 './dispatch-events'; +export * from './event-objects'; +export * from './type-in-element'; +export * from './wrapped-error-message'; diff --git a/src/cdk/testing/tsconfig-build.json b/src/cdk/testing/tsconfig-build.json new file mode 100644 index 00000000000..2c013af424e --- /dev/null +++ b/src/cdk/testing/tsconfig-build.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig-build", + "compilerOptions": { + "baseUrl": ".", + "outDir": "../../../dist/packages/cdk" + }, + "files": [ + "public_api.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/cdk/testing", + "skipTemplateCodegen": true + } +} diff --git a/src/cdk/tsconfig-tests.json b/src/cdk/tsconfig-tests.json index be799bf8511..b834ba802df 100644 --- a/src/cdk/tsconfig-tests.json +++ b/src/cdk/tsconfig-tests.json @@ -8,13 +8,17 @@ "module": "commonjs", "target": "es5", "types": ["jasmine"], - "experimentalDecorators": true + "experimentalDecorators": true, + "paths": { + "@angular/cdk/*": ["./*"] + } }, "files": [ - "./index.ts", "./testing/index.ts" ], "include": [ + // Include the index.ts for each secondary entry-point + "./*/index.ts", "**/*.spec.ts" ] } diff --git a/src/demo-app/demo-app-module.ts b/src/demo-app/demo-app-module.ts index 98b2c3dc8b1..13417071ff2 100644 --- a/src/demo-app/demo-app-module.ts +++ b/src/demo-app/demo-app-module.ts @@ -78,7 +78,7 @@ import { OverlayContainer, StyleModule } from '@angular/material'; -import {CdkTableModule} from '@angular/cdk'; +import {CdkTableModule} from '@angular/cdk/table'; import {TableHeaderDemo} from './table/table-header-demo'; /** diff --git a/src/demo-app/system-config.ts b/src/demo-app/system-config.ts index a4546adb2d2..058051c4136 100644 --- a/src/demo-app/system-config.ts +++ b/src/demo-app/system-config.ts @@ -26,7 +26,17 @@ System.config({ 'node:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', '@angular/material': 'dist/bundles/material.umd.js', - '@angular/cdk': 'dist/bundles/cdk.umd.js' + '@angular/cdk': 'dist/bundles/cdk.umd.js', + '@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/keyboard': 'dist/bundles/cdk-keyboard.umd.js', + '@angular/cdk/observe-content': 'dist/bundles/cdk-observe-content.umd.js', + '@angular/cdk/platform': 'dist/bundles/cdk-platform.umd.js', + '@angular/cdk/portal': 'dist/bundles/cdk-portal.umd.js', + '@angular/cdk/rxjs': 'dist/bundles/cdk-rxjs.umd.js', + '@angular/cdk/table': 'dist/bundles/cdk-table.umd.js', + '@angular/cdk/testing': 'dist/bundles/cdk-testing.umd.js', }, packages: { // Thirdparty barrels. diff --git a/src/demo-app/table/person-data-source.ts b/src/demo-app/table/person-data-source.ts index f4e775a38ef..47bc342f4bf 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'; +import {DataSource} from '@angular/cdk/table'; import {Observable} from 'rxjs/Observable'; import {PeopleDatabase, UserData} from './people-database'; import 'rxjs/add/observable/merge'; diff --git a/src/demo-app/tsconfig-aot.json b/src/demo-app/tsconfig-aot.json index afbb0672d69..2240063c7bc 100644 --- a/src/demo-app/tsconfig-aot.json +++ b/src/demo-app/tsconfig-aot.json @@ -11,7 +11,7 @@ "outDir": ".", "paths": { "@angular/material": ["./material"], - "@angular/cdk": ["./cdk"] + "@angular/cdk/*": ["./cdk/*"] } }, "files": [ diff --git a/src/demo-app/tsconfig-build.json b/src/demo-app/tsconfig-build.json index a89769c9f7f..ff3196c1261 100644 --- a/src/demo-app/tsconfig-build.json +++ b/src/demo-app/tsconfig-build.json @@ -22,7 +22,7 @@ "baseUrl": ".", "paths": { "@angular/material": ["../../dist/packages/material/public_api"], - "@angular/cdk": ["../../dist/packages/cdk/public_api"] + "@angular/cdk/*": ["../../dist/packages/cdk/*"] } }, "files": [ diff --git a/src/e2e-app/system-config.ts b/src/e2e-app/system-config.ts index 13909bac1e3..bd06bea9264 100644 --- a/src/e2e-app/system-config.ts +++ b/src/e2e-app/system-config.ts @@ -27,7 +27,17 @@ System.config({ '@angular/material': 'dist/bundles/material.umd.js', '@angular/cdk': 'dist/bundles/cdk.umd.js', - '@angular/material-examples': 'dist/bundles/material-examples.umd.js' + '@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/keyboard': 'dist/bundles/cdk-keyboard.umd.js', + '@angular/cdk/observe-content': 'dist/bundles/cdk-observe-content.umd.js', + '@angular/cdk/platform': 'dist/bundles/cdk-platform.umd.js', + '@angular/cdk/portal': 'dist/bundles/cdk-portal.umd.js', + '@angular/cdk/rxjs': 'dist/bundles/cdk-rxjs.umd.js', + '@angular/cdk/table': 'dist/bundles/cdk-table.umd.js', + '@angular/cdk/testing': 'dist/bundles/cdk-testing.umd.js', + '@angular/material-examples': 'dist/bundles/material-examples.umd.js', }, packages: { // Thirdparty barrels. diff --git a/src/e2e-app/tsconfig-build.json b/src/e2e-app/tsconfig-build.json index afc999f9618..8219cdac58c 100644 --- a/src/e2e-app/tsconfig-build.json +++ b/src/e2e-app/tsconfig-build.json @@ -25,7 +25,7 @@ "baseUrl": ".", "paths": { "@angular/material": ["./material"], - "@angular/cdk": ["./cdk"], + "@angular/cdk/*": ["./cdk/*"], "@angular/material-examples": ["./material-examples"] } }, diff --git a/src/lib/checkbox/checkbox.ts b/src/lib/checkbox/checkbox.ts index b1e78e95e95..a243fc40e62 100644 --- a/src/lib/checkbox/checkbox.ts +++ b/src/lib/checkbox/checkbox.ts @@ -22,7 +22,7 @@ import { ViewEncapsulation, } from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {FocusOrigin, FocusOriginMonitor, MdRipple, RippleRef} from '../core'; import {mixinDisabled, CanDisable} from '../core/common-behaviors/disabled'; import {CanColor, mixinColor} from '../core/common-behaviors/color'; diff --git a/src/lib/checkbox/index.ts b/src/lib/checkbox/index.ts index 138c51324e7..1bb92517f83 100644 --- a/src/lib/checkbox/index.ts +++ b/src/lib/checkbox/index.ts @@ -8,7 +8,7 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {ObserveContentModule} from '@angular/cdk'; +import {ObserveContentModule} from '@angular/cdk/observe-content'; import {MdRippleModule, MdCommonModule, FocusOriginMonitor} from '../core'; import {MdCheckbox} from './checkbox'; diff --git a/src/lib/chips/chip-input.ts b/src/lib/chips/chip-input.ts index 9cf217614e8..a42f5e72d27 100644 --- a/src/lib/chips/chip-input.ts +++ b/src/lib/chips/chip-input.ts @@ -7,7 +7,7 @@ */ import {Directive, Output, EventEmitter, ElementRef, Input} from '@angular/core'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {ENTER} from '../core/keyboard/keycodes'; import {MdChipList} from './chip-list'; diff --git a/src/lib/chips/chip-list.ts b/src/lib/chips/chip-list.ts index feb65ebcf7a..180b0ad2fe8 100644 --- a/src/lib/chips/chip-list.ts +++ b/src/lib/chips/chip-list.ts @@ -23,8 +23,9 @@ import { import {MdChip} from './chip'; import {FocusKeyManager} from '../core/a11y/focus-key-manager'; import {BACKSPACE, DELETE, LEFT_ARROW, RIGHT_ARROW, UP_ARROW} from '../core/keyboard/keycodes'; -import {coerceBooleanProperty, Directionality} from '@angular/cdk'; +import {Directionality} from '@angular/cdk/bidi'; import {Subscription} from 'rxjs/Subscription'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; /** * A material design chips component (named ChipList for it's similarity to the List component). diff --git a/src/lib/chips/chip.ts b/src/lib/chips/chip.ts index 8befac669d6..a1720f0e228 100644 --- a/src/lib/chips/chip.ts +++ b/src/lib/chips/chip.ts @@ -19,7 +19,7 @@ import { } from '@angular/core'; import {Focusable} from '../core/a11y/focus-key-manager'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {CanColor, mixinColor} from '../core/common-behaviors/color'; import {CanDisable, mixinDisabled} from '../core/common-behaviors/disabled'; import {SPACE, BACKSPACE, DELETE} from '../core/keyboard/keycodes'; diff --git a/src/lib/core/a11y/fake-mousedown.ts b/src/lib/core/a11y/fake-mousedown.ts index 024aaef75b4..f3d2b68e682 100644 --- a/src/lib/core/a11y/fake-mousedown.ts +++ b/src/lib/core/a11y/fake-mousedown.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export {isFakeMousedownFromScreenReader} from '@angular/cdk'; +export {isFakeMousedownFromScreenReader} from '@angular/cdk/a11y'; diff --git a/src/lib/core/a11y/focus-trap.ts b/src/lib/core/a11y/focus-trap.ts index 0c7cc27bec6..7ee2f473073 100644 --- a/src/lib/core/a11y/focus-trap.ts +++ b/src/lib/core/a11y/focus-trap.ts @@ -11,7 +11,7 @@ export { FocusTrapFactory, FocusTrapDeprecatedDirective, FocusTrapDirective -} from '@angular/cdk'; +} from '@angular/cdk/a11y'; diff --git a/src/lib/core/a11y/index.ts b/src/lib/core/a11y/index.ts index 581029af911..50ef493946c 100644 --- a/src/lib/core/a11y/index.ts +++ b/src/lib/core/a11y/index.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export {A11yModule} from '@angular/cdk'; +export {A11yModule} from '@angular/cdk/a11y'; diff --git a/src/lib/core/a11y/interactivity-checker.ts b/src/lib/core/a11y/interactivity-checker.ts index cd8a2d6ae70..def5fa2b151 100644 --- a/src/lib/core/a11y/interactivity-checker.ts +++ b/src/lib/core/a11y/interactivity-checker.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export {InteractivityChecker} from '@angular/cdk'; +export {InteractivityChecker} from '@angular/cdk/a11y'; diff --git a/src/lib/core/a11y/list-key-manager.ts b/src/lib/core/a11y/list-key-manager.ts index 50967d66297..c02fd7f8bb1 100644 --- a/src/lib/core/a11y/list-key-manager.ts +++ b/src/lib/core/a11y/list-key-manager.ts @@ -6,6 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -export {CanDisable, ListKeyManager} from '@angular/cdk'; +export {CanDisable, ListKeyManager} from '@angular/cdk/a11y'; diff --git a/src/lib/core/a11y/live-announcer.ts b/src/lib/core/a11y/live-announcer.ts index 2070aedb161..7965fd4cf10 100644 --- a/src/lib/core/a11y/live-announcer.ts +++ b/src/lib/core/a11y/live-announcer.ts @@ -12,4 +12,4 @@ export { LiveAnnouncer, LIVE_ANNOUNCER_PROVIDER_FACTORY, LIVE_ANNOUNCER_PROVIDER -} from '@angular/cdk'; +} from '@angular/cdk/a11y'; diff --git a/src/lib/core/bidi/dir.ts b/src/lib/core/bidi/dir.ts index 31a3054787d..a264ca5780c 100644 --- a/src/lib/core/bidi/dir.ts +++ b/src/lib/core/bidi/dir.ts @@ -6,5 +6,5 @@ * found in the LICENSE file at https://angular.io/license */ -export {Dir} from '@angular/cdk'; +export {Dir} from '@angular/cdk/bidi'; diff --git a/src/lib/core/bidi/directionality.ts b/src/lib/core/bidi/directionality.ts index aa44238be80..00f584c8c8f 100644 --- a/src/lib/core/bidi/directionality.ts +++ b/src/lib/core/bidi/directionality.ts @@ -12,4 +12,4 @@ export { Directionality, DIRECTIONALITY_PROVIDER_FACTORY, DIRECTIONALITY_PROVIDER, -} from '@angular/cdk'; +} from '@angular/cdk/bidi'; diff --git a/src/lib/core/bidi/index.ts b/src/lib/core/bidi/index.ts index 98dd0cd9f39..df77755789b 100644 --- a/src/lib/core/bidi/index.ts +++ b/src/lib/core/bidi/index.ts @@ -13,4 +13,4 @@ export { Direction, Dir, BidiModule, -} from '@angular/cdk'; +} from '@angular/cdk/bidi'; diff --git a/src/lib/core/common-behaviors/disable-ripple.ts b/src/lib/core/common-behaviors/disable-ripple.ts index 1bb631c6d45..c68e3dac63e 100644 --- a/src/lib/core/common-behaviors/disable-ripple.ts +++ b/src/lib/core/common-behaviors/disable-ripple.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {Constructor} from './constructor'; /** @docs-private */ diff --git a/src/lib/core/common-behaviors/disabled.ts b/src/lib/core/common-behaviors/disabled.ts index 266fcf422a8..c2ea6d49758 100644 --- a/src/lib/core/common-behaviors/disabled.ts +++ b/src/lib/core/common-behaviors/disabled.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {Constructor} from './constructor'; /** @docs-private */ diff --git a/src/lib/core/core.ts b/src/lib/core/core.ts index 660d54e4e93..fdf65913c61 100644 --- a/src/lib/core/core.ts +++ b/src/lib/core/core.ts @@ -7,7 +7,7 @@ */ import {NgModule} from '@angular/core'; -import {ObserveContentModule} from '@angular/cdk'; +import {ObserveContentModule} from '@angular/cdk/observe-content'; import {MdLineModule} from './line/line'; import {BidiModule} from './bidi/index'; import {MdOptionModule} from './option/index'; @@ -21,9 +21,12 @@ import {MdRippleModule} from './ripple/index'; export { coerceBooleanProperty, coerceNumberProperty, +} from '@angular/cdk/coercion'; + +export { ObserveContentModule, - ObserveContent -} from '@angular/cdk'; + ObserveContent, +} from '@angular/cdk/observe-content'; // RTL export {Dir, Direction, Directionality, BidiModule} from './bidi/index'; diff --git a/src/lib/core/keyboard/keycodes.ts b/src/lib/core/keyboard/keycodes.ts index bdd8223be82..97deda36b86 100644 --- a/src/lib/core/keyboard/keycodes.ts +++ b/src/lib/core/keyboard/keycodes.ts @@ -22,4 +22,4 @@ export { ESCAPE, BACKSPACE, DELETE -} from '@angular/cdk'; +} from '@angular/cdk/keyboard'; diff --git a/src/lib/core/option/option.ts b/src/lib/core/option/option.ts index b801e4e2742..d04288e760d 100644 --- a/src/lib/core/option/option.ts +++ b/src/lib/core/option/option.ts @@ -19,7 +19,7 @@ import { ChangeDetectorRef, } from '@angular/core'; import {ENTER, SPACE} from '../keyboard/keycodes'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {MATERIAL_COMPATIBILITY_MODE} from '../../core/compatibility/compatibility'; import {MdOptgroup} from './optgroup'; import {CanDisableRipple, mixinDisableRipple} from '../common-behaviors/disable-ripple'; diff --git a/src/lib/core/overlay/overlay-directives.ts b/src/lib/core/overlay/overlay-directives.ts index 643d06b60ec..9b7a57564ab 100644 --- a/src/lib/core/overlay/overlay-directives.ts +++ b/src/lib/core/overlay/overlay-directives.ts @@ -35,7 +35,7 @@ import { } from './position/connected-position'; import {ConnectedPositionStrategy} from './position/connected-position-strategy'; import {Directionality, Direction} from '../bidi/index'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {ScrollStrategy, RepositionScrollStrategy} from './scroll/index'; import {ESCAPE} from '../keyboard/keycodes'; import {Subscription} from 'rxjs/Subscription'; diff --git a/src/lib/core/platform/features.ts b/src/lib/core/platform/features.ts index 212bc31fedc..04844f624ef 100644 --- a/src/lib/core/platform/features.ts +++ b/src/lib/core/platform/features.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export {getSupportedInputTypes} from '@angular/cdk'; +export {getSupportedInputTypes} from '@angular/cdk/platform'; diff --git a/src/lib/core/platform/index.ts b/src/lib/core/platform/index.ts index ef07ff61678..e8f8a33331c 100644 --- a/src/lib/core/platform/index.ts +++ b/src/lib/core/platform/index.ts @@ -6,6 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -export {PlatformModule} from '@angular/cdk'; +export {PlatformModule} from '@angular/cdk/platform'; export * from './platform'; export * from './features'; diff --git a/src/lib/core/platform/platform.ts b/src/lib/core/platform/platform.ts index 1aca01fd9aa..648567b59d2 100755 --- a/src/lib/core/platform/platform.ts +++ b/src/lib/core/platform/platform.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export {Platform} from '@angular/cdk'; +export {Platform} from '@angular/cdk/platform'; diff --git a/src/lib/core/portal/dom-portal-host.ts b/src/lib/core/portal/dom-portal-host.ts index 60c04a93340..45424d674bb 100644 --- a/src/lib/core/portal/dom-portal-host.ts +++ b/src/lib/core/portal/dom-portal-host.ts @@ -5,4 +5,4 @@ * 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 {DomPortalHost} from '@angular/cdk'; +export {DomPortalHost} from '@angular/cdk/portal'; diff --git a/src/lib/core/portal/portal-directives.ts b/src/lib/core/portal/portal-directives.ts index 9508c0d430f..e2eed6c434a 100644 --- a/src/lib/core/portal/portal-directives.ts +++ b/src/lib/core/portal/portal-directives.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export {TemplatePortalDirective, PortalHostDirective, PortalModule} from '@angular/cdk'; +export {TemplatePortalDirective, PortalHostDirective, PortalModule} from '@angular/cdk/portal'; diff --git a/src/lib/core/portal/portal.ts b/src/lib/core/portal/portal.ts index ed84c15ecd5..91ac14adaea 100644 --- a/src/lib/core/portal/portal.ts +++ b/src/lib/core/portal/portal.ts @@ -6,4 +6,10 @@ * found in the LICENSE file at https://angular.io/license */ -export {Portal, PortalHost, BasePortalHost, ComponentPortal, TemplatePortal} from '@angular/cdk'; +export { + Portal, + PortalHost, + BasePortalHost, + ComponentPortal, + TemplatePortal +} from '@angular/cdk/portal'; diff --git a/src/lib/core/ripple/ripple.spec.ts b/src/lib/core/ripple/ripple.spec.ts index 190a54dc151..3fcb30607bd 100644 --- a/src/lib/core/ripple/ripple.spec.ts +++ b/src/lib/core/ripple/ripple.spec.ts @@ -6,7 +6,7 @@ import {dispatchMouseEvent} from '@angular/cdk/testing'; import { MdRipple, MdRippleModule, MD_RIPPLE_GLOBAL_OPTIONS, RippleState, RippleGlobalOptions } from './index'; -import {Platform} from '@angular/cdk'; +import {Platform} from '@angular/cdk/platform'; describe('MdRipple', () => { diff --git a/src/lib/core/rxjs/rx-chain.ts b/src/lib/core/rxjs/rx-chain.ts index 88caa5c9b63..fa3f771efcf 100644 --- a/src/lib/core/rxjs/rx-chain.ts +++ b/src/lib/core/rxjs/rx-chain.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export {RxChain} from '@angular/cdk'; +export {RxChain} from '@angular/cdk/rxjs'; diff --git a/src/lib/core/rxjs/rx-operators.ts b/src/lib/core/rxjs/rx-operators.ts index 9c03be71da9..864b6be10b2 100644 --- a/src/lib/core/rxjs/rx-operators.ts +++ b/src/lib/core/rxjs/rx-operators.ts @@ -44,4 +44,4 @@ export { debounceTime, auditTime, takeUntil, -} from '@angular/cdk'; +} from '@angular/cdk/rxjs'; diff --git a/src/lib/datepicker/datepicker-input.ts b/src/lib/datepicker/datepicker-input.ts index 05babf194aa..865637780e2 100644 --- a/src/lib/datepicker/datepicker-input.ts +++ b/src/lib/datepicker/datepicker-input.ts @@ -36,7 +36,7 @@ import {DOWN_ARROW} from '../core/keyboard/keycodes'; import {DateAdapter} from '../core/datetime/index'; import {createMissingDateImplError} from './datepicker-errors'; import {MD_DATE_FORMATS, MdDateFormats} from '../core/datetime/date-formats'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; export const MD_DATEPICKER_VALUE_ACCESSOR: any = { diff --git a/src/lib/datepicker/datepicker-toggle.ts b/src/lib/datepicker/datepicker-toggle.ts index 9f7591e015e..cc30fb8efc9 100644 --- a/src/lib/datepicker/datepicker-toggle.ts +++ b/src/lib/datepicker/datepicker-toggle.ts @@ -9,7 +9,7 @@ import {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core'; import {MdDatepicker} from './datepicker'; import {MdDatepickerIntl} from './datepicker-intl'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; @Component({ diff --git a/src/lib/datepicker/datepicker.ts b/src/lib/datepicker/datepicker.ts index 7d2fd822640..d3bb28eafb1 100644 --- a/src/lib/datepicker/datepicker.ts +++ b/src/lib/datepicker/datepicker.ts @@ -46,7 +46,7 @@ import {createMissingDateImplError} from './datepicker-errors'; import {ESCAPE} from '../core/keyboard/keycodes'; import {MdCalendar} from './calendar'; import {first} from '../core/rxjs/index'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; /** Used to generate a unique ID for each datepicker instance. */ diff --git a/src/lib/expansion/accordion.ts b/src/lib/expansion/accordion.ts index 6e46135373d..04267bc2b1e 100644 --- a/src/lib/expansion/accordion.ts +++ b/src/lib/expansion/accordion.ts @@ -7,7 +7,7 @@ */ import {Directive, Input} from '@angular/core'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; /** MdAccordion's display modes. */ export type MdAccordionDisplayMode = 'default' | 'flat'; diff --git a/src/lib/radio/radio.ts b/src/lib/radio/radio.ts index dcb9e2fff5e..b6d9cb60898 100644 --- a/src/lib/radio/radio.ts +++ b/src/lib/radio/radio.ts @@ -35,7 +35,7 @@ import { FocusOriginMonitor, FocusOrigin, } from '../core'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {mixinDisabled, CanDisable} from '../core/common-behaviors/disabled'; import {CanColor, mixinColor} from '../core/common-behaviors/color'; import {CanDisableRipple, mixinDisableRipple} from '../core/common-behaviors/disable-ripple'; diff --git a/src/lib/select/select.ts b/src/lib/select/select.ts index 0ee23309ac0..37173b0eab7 100644 --- a/src/lib/select/select.ts +++ b/src/lib/select/select.ts @@ -36,7 +36,7 @@ import {Observable} from 'rxjs/Observable'; import {Subscription} from 'rxjs/Subscription'; import {transformPlaceholder, transformPanel, fadeInContent} from './select-animations'; import {ControlValueAccessor, NgControl} from '@angular/forms'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {ConnectedOverlayDirective} from '../core/overlay/overlay-directives'; import {ViewportRuler} from '../core/overlay/position/viewport-ruler'; import {SelectionModel} from '../core/selection/selection'; diff --git a/src/lib/sort/sort-header.ts b/src/lib/sort/sort-header.ts index 5ee5f95777f..85a2d3d0cb0 100644 --- a/src/lib/sort/sort-header.ts +++ b/src/lib/sort/sort-header.ts @@ -12,7 +12,7 @@ import { } from '@angular/core'; import {MdSort, MdSortable} from './sort'; import {MdSortHeaderIntl} from './sort-header-intl'; -import {CdkColumnDef} from '@angular/cdk'; +import {CdkColumnDef} from '@angular/cdk/table'; import {coerceBooleanProperty} from '../core'; import {getMdSortHeaderNotContainedWithinMdSortError} from './sort-errors'; import {Subscription} from 'rxjs/Subscription'; diff --git a/src/lib/sort/sort.spec.ts b/src/lib/sort/sort.spec.ts index aaee0bf6b98..c8eab1e52b0 100644 --- a/src/lib/sort/sort.spec.ts +++ b/src/lib/sort/sort.spec.ts @@ -1,7 +1,7 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing'; import {Component, ElementRef, ViewChild} from '@angular/core'; import {MdSort, MdSortHeader, Sort, SortDirection, MdSortModule} from './index'; -import {CdkTableModule, DataSource, CollectionViewer} from '@angular/cdk'; +import {CdkTableModule, DataSource, CollectionViewer} from '@angular/cdk/table'; import {Observable} from 'rxjs/Observable'; import {dispatchMouseEvent} from '@angular/cdk/testing'; import { diff --git a/src/lib/table/cell.ts b/src/lib/table/cell.ts index 2769916ff55..e405a55035c 100644 --- a/src/lib/table/cell.ts +++ b/src/lib/table/cell.ts @@ -7,7 +7,7 @@ */ import {Directive, ElementRef, Renderer2} from '@angular/core'; -import {CdkCell, CdkColumnDef, CdkHeaderCell} from '@angular/cdk'; +import {CdkCell, CdkColumnDef, CdkHeaderCell} from '@angular/cdk/table'; /** Workaround for https://github.com/angular/angular/issues/17849 */ export const _MdHeaderCellBase = CdkHeaderCell; diff --git a/src/lib/table/index.ts b/src/lib/table/index.ts index 891f7c30195..cc11e87b1a7 100644 --- a/src/lib/table/index.ts +++ b/src/lib/table/index.ts @@ -8,7 +8,7 @@ import {NgModule} from '@angular/core'; import {MdTable} from './table'; -import {CdkTableModule} from '@angular/cdk'; +import {CdkTableModule} from '@angular/cdk/table'; import {MdCell, MdHeaderCell} from './cell'; import {MdHeaderRow, MdRow} from './row'; import {CommonModule} from '@angular/common'; diff --git a/src/lib/table/row.ts b/src/lib/table/row.ts index 2cdc17c9079..18e51e00027 100644 --- a/src/lib/table/row.ts +++ b/src/lib/table/row.ts @@ -7,7 +7,7 @@ */ import {ChangeDetectionStrategy, Component} from '@angular/core'; -import {CdkHeaderRow, CdkRow, CDK_ROW_TEMPLATE} from '@angular/cdk'; +import {CdkHeaderRow, CdkRow, CDK_ROW_TEMPLATE} from '@angular/cdk/table'; /** Workaround for https://github.com/angular/angular/issues/17849 */ export const _MdHeaderRow = CdkHeaderRow; diff --git a/src/lib/table/table.spec.ts b/src/lib/table/table.spec.ts index 954d305f4bb..9b3a8cf6977 100644 --- a/src/lib/table/table.spec.ts +++ b/src/lib/table/table.spec.ts @@ -1,7 +1,6 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing'; import {Component, ViewChild} from '@angular/core'; -import {CdkTable, DataSource, CdkTableModule} from '@angular/cdk'; -import {} from '../core/data-table/data-source'; +import {CdkTable, DataSource, CdkTableModule} from '@angular/cdk/table'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; import {MdTableModule} from './index'; diff --git a/src/lib/table/table.ts b/src/lib/table/table.ts index 68473e395b6..fd452d1f953 100644 --- a/src/lib/table/table.ts +++ b/src/lib/table/table.ts @@ -7,7 +7,7 @@ */ import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core'; -import {CDK_TABLE_TEMPLATE, CdkTable} from '@angular/cdk'; +import {CDK_TABLE_TEMPLATE, CdkTable} from '@angular/cdk/table'; /** Workaround for https://github.com/angular/angular/issues/17849 */ export const _MdTable = CdkTable; diff --git a/src/lib/tabs/index.ts b/src/lib/tabs/index.ts index 82b9ca88916..95dedfaa874 100644 --- a/src/lib/tabs/index.ts +++ b/src/lib/tabs/index.ts @@ -9,7 +9,7 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {MdCommonModule} from '../core'; -import {ObserveContentModule} from '@angular/cdk'; +import {ObserveContentModule} from '@angular/cdk/observe-content'; import {PortalModule} from '../core'; import {MdRippleModule} from '../core/ripple/index'; import {MdTab} from './tab'; diff --git a/src/lib/tooltip/tooltip.ts b/src/lib/tooltip/tooltip.ts index b12a6843868..85d5383701f 100644 --- a/src/lib/tooltip/tooltip.ts +++ b/src/lib/tooltip/tooltip.ts @@ -49,7 +49,7 @@ import {Directionality} from '../core/bidi/index'; import {Platform} from '../core/platform/index'; import {first} from '../core/rxjs/index'; import {ScrollDispatcher} from '../core/overlay/scroll/scroll-dispatcher'; -import {coerceBooleanProperty} from '@angular/cdk'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; export type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after'; diff --git a/src/lib/tsconfig-build.json b/src/lib/tsconfig-build.json index a10df682769..a956c3f49f4 100644 --- a/src/lib/tsconfig-build.json +++ b/src/lib/tsconfig-build.json @@ -21,7 +21,15 @@ "types": [], "baseUrl": ".", "paths": { - "@angular/cdk": ["../../dist/packages/cdk/public_api"] + "@angular/cdk/a11y": ["../../dist/packages/cdk/a11y/public_api"], + "@angular/cdk/bidi": ["../../dist/packages/cdk/bidi/public_api"], + "@angular/cdk/coercion": ["../../dist/packages/cdk/coercion/public_api"], + "@angular/cdk/keyboard": ["../../dist/packages/cdk/keyboard/public_api"], + "@angular/cdk/observe-content": ["../../dist/packages/cdk/observe-content/public_api"], + "@angular/cdk/platform": ["../../dist/packages/cdk/platform/public_api"], + "@angular/cdk/portal": ["../../dist/packages/cdk/portal/public_api"], + "@angular/cdk/rxjs": ["../../dist/packages/cdk/rxjs/public_api"], + "@angular/cdk/table": ["../../dist/packages/cdk/table/public_api"] } }, "files": [ diff --git a/src/lib/tsconfig-tests.json b/src/lib/tsconfig-tests.json index f360edc75b8..180eb592a5a 100644 --- a/src/lib/tsconfig-tests.json +++ b/src/lib/tsconfig-tests.json @@ -11,8 +11,7 @@ "experimentalDecorators": true, "strictNullChecks": true, "paths": { - "@angular/cdk": ["../../dist/packages/cdk"], - "@angular/cdk/testing": ["../../dist/packages/cdk/testing"] + "@angular/cdk/*": ["../../dist/packages/cdk/*"] } }, "include": [ 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 26104dc1f95..76df7296e04 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'; +import {DataSource} from '@angular/cdk/table'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/startWith'; diff --git a/src/material-examples/material-module.ts b/src/material-examples/material-module.ts index 2d6e3da7fa5..eb050ff20f7 100644 --- a/src/material-examples/material-module.ts +++ b/src/material-examples/material-module.ts @@ -1,6 +1,6 @@ import {NgModule} from '@angular/core'; -import {CdkTableModule} from '@angular/cdk'; +import {CdkTableModule} from '@angular/cdk/table'; import { MdAutocompleteModule, MdButtonModule, MdButtonToggleModule, MdPaginatorModule, MdCardModule, MdCheckboxModule, MdChipsModule, MdDatepickerModule, diff --git a/src/material-examples/table-basic/table-basic-example.ts b/src/material-examples/table-basic/table-basic-example.ts index effa3ec33fc..4db0a4aaa62 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'; +import {DataSource} from '@angular/cdk/table'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/startWith'; diff --git a/src/material-examples/table-filtering/table-filtering-example.ts b/src/material-examples/table-filtering/table-filtering-example.ts index 4c7015e9244..337b20c00c1 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'; +import {DataSource} from '@angular/cdk/table'; 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 a2c9da53161..b4ac594db38 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, ViewChild} from '@angular/core'; import {Http, Response} from '@angular/http'; -import {DataSource} from '@angular/cdk'; +import {DataSource} from '@angular/cdk/table'; import {MdPaginator, MdSort} from '@angular/material'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/first'; diff --git a/src/material-examples/table-overview/table-overview-example.ts b/src/material-examples/table-overview/table-overview-example.ts index 937e68993ea..eb6a65f3ed4 100644 --- a/src/material-examples/table-overview/table-overview-example.ts +++ b/src/material-examples/table-overview/table-overview-example.ts @@ -1,5 +1,5 @@ import {Component, ElementRef, ViewChild} from '@angular/core'; -import {DataSource} from '@angular/cdk'; +import {DataSource} from '@angular/cdk/table'; import {MdPaginator, MdSort, SelectionModel} from '@angular/material'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; diff --git a/src/material-examples/table-pagination/table-pagination-example.ts b/src/material-examples/table-pagination/table-pagination-example.ts index 5cc82408607..7de7e38af09 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'; +import {DataSource} from '@angular/cdk/table'; 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 bb1597fee09..2d30ebed8f9 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'; +import {DataSource} from '@angular/cdk/table'; import {MdSort} from '@angular/material'; import {BehaviorSubject} from 'rxjs/BehaviorSubject'; import {Observable} from 'rxjs/Observable'; diff --git a/src/material-examples/tsconfig-build.json b/src/material-examples/tsconfig-build.json index fca6a83f5b3..49736c2fb12 100644 --- a/src/material-examples/tsconfig-build.json +++ b/src/material-examples/tsconfig-build.json @@ -21,7 +21,16 @@ "baseUrl": ".", "paths": { "@angular/material": ["../../dist/packages/material/public_api"], - "@angular/cdk": ["../../dist/packages/cdk/public_api"] + "@angular/cdk/a11y": ["../../dist/packages/cdk/a11y/public_api"], + "@angular/cdk/bidi": ["../../dist/packages/cdk/bidi/public_api"], + "@angular/cdk/coercion": ["../../dist/packages/cdk/coercion/public_api"], + "@angular/cdk/platform": ["../../dist/packages/cdk/platform/public_api"], + "@angular/cdk/portal": ["../../dist/packages/cdk/portal/public_api"], + "@angular/cdk/keyboard": ["../../dist/packages/cdk/keyboard/public_api"], + "@angular/cdk/rxjs": ["../../dist/packages/cdk/rxjs/public_api"], + "@angular/cdk/table": ["../../dist/packages/cdk/table/public_api"], + "@angular/cdk/testing": ["../../dist/packages/cdk/testing/public_api"], + "@angular/cdk/observe-content": ["../../dist/packages/cdk/observe-content/public_api"] } }, "files": [ diff --git a/src/universal-app/tsconfig-build.json b/src/universal-app/tsconfig-build.json index 289f7d5dc78..b51d28668fc 100644 --- a/src/universal-app/tsconfig-build.json +++ b/src/universal-app/tsconfig-build.json @@ -19,7 +19,7 @@ "baseUrl": ".", "paths": { "@angular/material": ["./material"], - "@angular/cdk": ["./cdk"] + "@angular/cdk/*": ["./cdk/*"] } }, "files": [ diff --git a/src/universal-app/tsconfig-prerender.json b/src/universal-app/tsconfig-prerender.json index f9199203777..b93ecc29299 100644 --- a/src/universal-app/tsconfig-prerender.json +++ b/src/universal-app/tsconfig-prerender.json @@ -19,7 +19,7 @@ "baseUrl": ".", "paths": { "@angular/material": ["./material"], - "@angular/cdk": ["./cdk"] + "@angular/cdk/*": ["./cdk/*"] } }, "files": [ diff --git a/test/karma-test-shim.js b/test/karma-test-shim.js index 42939bf1f96..0762d302871 100644 --- a/test/karma-test-shim.js +++ b/test/karma-test-shim.js @@ -49,6 +49,15 @@ System.config({ // TODO(devversion): replace once the index.ts file for the Material package has been added. '@angular/material': 'dist/packages/material/public_api.js', '@angular/cdk': 'dist/packages/cdk/index.js', + '@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/keyboard': 'dist/packages/cdk/keyboard/index.js', + '@angular/cdk/observe-content': 'dist/packages/cdk/observe-content/index.js', + '@angular/cdk/platform': 'dist/packages/cdk/platform/index.js', + '@angular/cdk/portal': 'dist/packages/cdk/portal/index.js', + '@angular/cdk/rxjs': 'dist/packages/cdk/rxjs/index.js', + '@angular/cdk/table': 'dist/packages/cdk/table/index.js', '@angular/cdk/testing': 'dist/packages/cdk/testing/index.js', }, packages: { diff --git a/tools/gulp/gulpfile.ts b/tools/gulp/gulpfile.ts index 6d671cf6f63..8b3970a6773 100644 --- a/tools/gulp/gulpfile.ts +++ b/tools/gulp/gulpfile.ts @@ -1,7 +1,7 @@ import {createPackageBuildTasks} from 'material2-build-tools'; // Create gulp tasks to build the different packages in the project. -createPackageBuildTasks('cdk'); +createPackageBuildTasks('cdk', [], {useSecondaryEntryPoints: true}); createPackageBuildTasks('material', ['cdk']); createPackageBuildTasks('material-examples', ['material', 'cdk']); diff --git a/tools/gulp/tasks/ci.ts b/tools/gulp/tasks/ci.ts index 1ab0914413f..c4553e571f6 100644 --- a/tools/gulp/tasks/ci.ts +++ b/tools/gulp/tasks/ci.ts @@ -18,4 +18,4 @@ task('ci:payload', ['payload']); task('ci:coverage', ['coverage:upload']); /** Task that verifies if all Material components are working with platform-server.*/ -task('ci:prerender', ['universal:test-prerender']); +task('ci:prerender', ['prerender']); diff --git a/tools/gulp/tasks/payload.ts b/tools/gulp/tasks/payload.ts index 26f33b3ed90..6cbbb2a14af 100644 --- a/tools/gulp/tasks/payload.ts +++ b/tools/gulp/tasks/payload.ts @@ -1,6 +1,7 @@ import {task} from 'gulp'; import {join} from 'path'; import {statSync} from 'fs'; +import {sync as glob} from 'glob'; import {isTravisBuild, isTravisMasterBuild} from '../util/travis-ci'; import {buildConfig} from 'material2-build-tools'; import {openFirebaseDashboardApp, openFirebaseDashboardAppAsGuest} from '../util/firebase'; @@ -25,10 +26,10 @@ task('payload', ['material:clean-build'], async () => { material_fesm_2015: getBundleSize('material.js'), material_fesm_2014: getBundleSize('material.es5.js'), // CDK bundles - cdk_umd: getBundleSize('cdk.umd.js'), - cdk_umd_minified_uglify: getBundleSize('cdk.umd.min.js'), - cdk_fesm_2015: getBundleSize('cdk.js'), - cdk_fesm_2014: getBundleSize('cdk.es5.js'), + cdk_umd: getBundleSize('cdk*.umd.js'), + cdk_umd_minified_uglify: getBundleSize('cdk*.umd.min.js'), + cdk_fesm_2015: getBundleSize('cdk.js') + getBundleSize('cdk/!(*.es5).js'), + cdk_fesm_2014: getBundleSize('cdk.es5.js') + getBundleSize('cdk/*.es5.js'), }; // Print the results to the console, so we can read it from the CI. @@ -52,12 +53,12 @@ task('payload', ['material:clean-build'], async () => { // Disconnect database connection because Firebase otherwise prevents Gulp from exiting. firebaseApp.delete(); } - }); /** Returns the size of the given library bundle. */ function getBundleSize(bundleName: string) { - return getFilesize(join(bundlesDir, bundleName)); + return glob(bundleName, {cwd: bundlesDir}) + .reduce((sum, fileName) => sum + getFilesize(join(bundlesDir, fileName)), 0); } /** Returns the size of a file in kilobytes. */ diff --git a/tools/gulp/tasks/universal.ts b/tools/gulp/tasks/universal.ts index aa14142abcc..591d2c51030 100644 --- a/tools/gulp/tasks/universal.ts +++ b/tools/gulp/tasks/universal.ts @@ -22,7 +22,7 @@ const tsconfigPrerenderPath = join(outDir, 'tsconfig-prerender.json'); const prerenderOutFile = join(outDir, 'prerender.js'); /** Task that builds the universal-app and runs the prerender script. */ -task('universal:test-prerender', ['universal:build'], execTask( +task('prerender', ['universal:build'], execTask( // Runs node with the tsconfig-paths module to alias the @angular/material dependency. 'node', ['-r', 'tsconfig-paths/register', prerenderOutFile], { env: {TS_NODE_PROJECT: tsconfigPrerenderPath}, diff --git a/tools/package-tools/build-bundles.ts b/tools/package-tools/build-bundles.ts index 61c381fc13d..2e7465d9d47 100644 --- a/tools/package-tools/build-bundles.ts +++ b/tools/package-tools/build-bundles.ts @@ -1,36 +1,69 @@ import {join} from 'path'; +import {readdirSync, lstatSync} from 'fs'; import {ScriptTarget, ModuleKind, NewLineKind} from 'typescript'; import {uglifyJsFile} from './minify-sources'; import {createRollupBundle} from './rollup-helpers'; import {remapSourcemap} from './sourcemap-remap'; import {transpileFile} from './typescript-transpile'; import {buildConfig} from './build-config'; +import {getSecondaryEntryPointsForPackage} from './secondary-entry-points'; /** Directory where all bundles will be created in. */ const bundlesDir = join(buildConfig.outputDir, 'bundles'); -/** Builds the bundles for the specified package. */ -export async function buildPackageBundles(entryFile: string, packageName: string) { - const moduleName = `ng.${packageName}`; - // List of paths to the package bundles. - const fesm2015File = join(bundlesDir, `${packageName}.js`); - const fesm2014File = join(bundlesDir, `${packageName}.es5.js`); - const umdFile = join(bundlesDir, `${packageName}.umd.js`); - const umdMinFile = join(bundlesDir, `${packageName}.umd.min.js`); +/** Builds bundles for the primary entry-point w/ given entry file, e.g. @angular/cdk */ +export async function buildPrimaryEntryPointBundles(entryFile: string, packageName: string) { + return createBundlesForEntryPoint({ + entryFile, + moduleName: `ng.${packageName}`, + fesm2015Dest: join(bundlesDir, `${packageName}.js`), + fesm2014Dest: join(bundlesDir, `${packageName}.es5.js`), + umdDest: join(bundlesDir, `${packageName}.umd.js`), + umdMinDest: join(bundlesDir, `${packageName}.umd.min.js`), + }); +} +/** Builds bundles for all secondary entry-points for a given package, e.g. 'cdk' */ +export async function buildAllSecondaryEntryPointBundles(packageName: string) { + const rootPackageDir = join(buildConfig.outputDir, 'packages', packageName); + + return Promise.all(getSecondaryEntryPointsForPackage(packageName) + .map(entryPointName => buildSecondaryEntryPointBundles( + join(rootPackageDir, entryPointName, `index.js`), packageName, entryPointName))); +} + +/** Builds bundles for a single secondary entry-point w/ given entry file, e.g. @angular/cdk/a11y */ +export async function buildSecondaryEntryPointBundles( + entryFile: string, packageName: string, entryPointName: string) { + return createBundlesForEntryPoint({ + entryFile, + moduleName: `ng.${packageName}.${entryPointName}`, + fesm2015Dest: join(bundlesDir, `${packageName}`, `${entryPointName}.js`), + fesm2014Dest: join(bundlesDir, `${packageName}`, `${entryPointName}.es5.js`), + umdDest: join(bundlesDir, `${packageName}-${entryPointName}.umd.js`), + umdMinDest: join(bundlesDir, `${packageName}-${entryPointName}.umd.min.js`), + }); +} + +/** + * Creates the ES5, ES2015, and UMD bundles for the specified entry-point. + * @param config Configuration that specifies the entry-point, module name, and output + * bundle paths. + */ +async function createBundlesForEntryPoint(config: BundlesConfig) { // Build FESM-2015 bundle file. await createRollupBundle({ - moduleName: moduleName, - entry: entryFile, - dest: fesm2015File, + moduleName: config.moduleName, + entry: config.entryFile, + dest: config.fesm2015Dest, format: 'es', }); - await remapSourcemap(fesm2015File); + await remapSourcemap(config.fesm2015Dest); // Downlevel FESM-2015 file to ES5. - transpileFile(fesm2015File, fesm2014File, { + transpileFile(config.fesm2015Dest, config.fesm2014Dest, { importHelpers: true, target: ScriptTarget.ES5, module: ModuleKind.ES2015, @@ -38,20 +71,31 @@ export async function buildPackageBundles(entryFile: string, packageName: string newLine: NewLineKind.LineFeed }); - await remapSourcemap(fesm2014File); + await remapSourcemap(config.fesm2014Dest); // Create UMD bundle of FESM-2014 output. await createRollupBundle({ - moduleName: moduleName, - entry: fesm2014File, - dest: umdFile, + moduleName: config.moduleName, + entry: config.fesm2014Dest, + dest: config.umdDest, format: 'umd' }); - await remapSourcemap(umdFile); + await remapSourcemap(config.umdDest); // Create a minified UMD bundle using UglifyJS - uglifyJsFile(umdFile, umdMinFile); + uglifyJsFile(config.umdDest, config.umdMinDest); - await remapSourcemap(umdMinFile); + await remapSourcemap(config.umdMinDest); +} + + +/** Configuration for creating library bundles. */ +interface BundlesConfig { + entryFile: string; + moduleName: string; + fesm2015Dest: string; + fesm2014Dest: string; + umdDest: string; + umdMinDest: string; } diff --git a/tools/package-tools/build-release.ts b/tools/package-tools/build-release.ts index 4b355a88527..0792176b52c 100644 --- a/tools/package-tools/build-release.ts +++ b/tools/package-tools/build-release.ts @@ -1,10 +1,13 @@ import {join} from 'path'; +import {mkdirpSync} from 'fs-extra'; import {copyFiles} from './copy-files'; import {addPureAnnotationsToFile} from './pure-annotations'; import {updatePackageVersion} from './package-versions'; import {inlinePackageMetadataFiles} from './metadata-inlining'; import {createTypingsReexportFile} from './typings-reexport'; import {createMetadataReexportFile} from './metadata-reexport'; +import {getSecondaryEntryPointsForPackage} from './secondary-entry-points'; +import {createEntryPointPackageJson} from './entry-point-package-json'; import {buildConfig} from './build-config'; const {packagesDir, outputDir, projectDir} = buildConfig; @@ -17,7 +20,7 @@ const bundlesDir = join(outputDir, 'bundles'); * release folder structure. The output will also contain a README and the according package.json * file. Additionally the package will be Closure Compiler and AOT compatible. */ -export function composeRelease(packageName: string) { +export function composeRelease(packageName: string, options: ComposeReleaseOptions = {}) { // To avoid refactoring of the project the package material will map to the source path `lib/`. const sourcePath = join(packagesDir, packageName === 'material' ? 'lib' : packageName); const packagePath = join(outputDir, 'packages', packageName); @@ -26,14 +29,53 @@ export function composeRelease(packageName: string) { inlinePackageMetadataFiles(packagePath); copyFiles(packagePath, '**/*.+(d.ts|metadata.json)', join(releasePath, 'typings')); - copyFiles(bundlesDir, `${packageName}.umd?(.min).js?(.map)`, join(releasePath, 'bundles')); + copyFiles(bundlesDir, `${packageName}?(-*).umd.js?(.map)`, join(releasePath, 'bundles')); copyFiles(bundlesDir, `${packageName}?(.es5).js?(.map)`, join(releasePath, '@angular')); + copyFiles(join(bundlesDir, packageName), '**', join(releasePath, '@angular', packageName)); copyFiles(projectDir, 'LICENSE', releasePath); copyFiles(packagesDir, 'README.md', releasePath); copyFiles(sourcePath, 'package.json', releasePath); updatePackageVersion(releasePath); - createTypingsReexportFile(releasePath, packageName); - createMetadataReexportFile(releasePath, packageName); + createTypingsReexportFile(releasePath, './typings/index', packageName); + createMetadataReexportFile(releasePath, './typings/index', packageName); + + if (options.useSecondaryEntryPoints) { + createFilesForSecondaryEntryPoint(packageName, packagePath, releasePath); + } + addPureAnnotationsToFile(join(releasePath, '@angular', `${packageName}.es5.js`)); } + +/** Creates files necessary for a secondary entry-point. */ +function createFilesForSecondaryEntryPoint(packageName: string, packagePath: string, releasePath: string) { + getSecondaryEntryPointsForPackage(packageName).forEach(entryPointName => { + // Create a directory in the root of the package for this entry point that contains + // * A package.json that lists the different bundle locations + // * An index.d.ts file that re-exports the index.d.ts from the typings/ directory + // * A metadata.json re-export for this entry-point's metadata. + const entryPointDir = join(releasePath, entryPointName); + mkdirpSync(entryPointDir); + createEntryPointPackageJson(entryPointDir, packageName, entryPointName); + + // Copy typings and metadata from tsc output location into the entry-point. + copyFiles( + join(packagePath, entryPointName), + '**/*.+(d.ts|metadata.json)', + join(entryPointDir, 'typings')); + + // Create a typings and a metadata re-export within the entry-point to point to the + // typings we just copied. + createTypingsReexportFile(entryPointDir, `./typings/index`, 'index'); + createMetadataReexportFile(entryPointDir, `./typings/index`, 'index'); + + // Finally, create both a d.ts and metadata file for this entry-point in the root of + // the package that re-exports from the entry-point's directory. + createTypingsReexportFile(releasePath, `./${entryPointName}/index`, entryPointName); + createMetadataReexportFile(releasePath, `./${entryPointName}/index`, entryPointName); + }); +} + +interface ComposeReleaseOptions { + useSecondaryEntryPoints?: boolean; +} diff --git a/tools/package-tools/entry-point-package-json.ts b/tools/package-tools/entry-point-package-json.ts new file mode 100644 index 00000000000..c6b0ae4e39d --- /dev/null +++ b/tools/package-tools/entry-point-package-json.ts @@ -0,0 +1,15 @@ +import {join} from 'path'; +import {lstatSync, readdirSync, writeFileSync} from 'fs'; + +/** Creates a package.json for a secondary entry-point with the different bundle locations. */ +export function createEntryPointPackageJson(destDir: string, packageName: string, entryPointName: string) { + const content = { + name: `@angular/${packageName}/${entryPointName}`, + typings: `../${entryPointName}.d.ts`, + main: `../bundles/${packageName}-${entryPointName}.umd.js`, + module: `../@angular/${packageName}/${entryPointName}.es5.js`, + es2015: `../@angular/${packageName}/${entryPointName}.js`, + }; + + writeFileSync(join(destDir, 'package.json'), JSON.stringify(content), 'utf-8'); +} diff --git a/tools/package-tools/gulp/build-tasks-gulp.ts b/tools/package-tools/gulp/build-tasks-gulp.ts index 255a25348dc..a8fdeead324 100644 --- a/tools/package-tools/gulp/build-tasks-gulp.ts +++ b/tools/package-tools/gulp/build-tasks-gulp.ts @@ -1,13 +1,15 @@ -import {task, src, dest} from 'gulp'; +import {dest, src, task} from 'gulp'; import {join} from 'path'; +import {readFileSync, unlink, writeFileSync} from 'fs'; import {main as tsc} from '@angular/tsc-wrapped'; import {buildConfig} from '../build-config'; import {composeRelease} from '../build-release'; -import {buildPackageBundles} from '../build-bundles'; +import {buildAllSecondaryEntryPointBundles, buildPrimaryEntryPointBundles} from '../build-bundles'; import {inlineResourcesForDirectory} from '../inline-resources'; import {buildScssTask} from './build-scss-task'; import {sequenceTask} from './sequence-task'; import {watchFiles} from './watch-files'; +import {getSecondaryEntryPointsForPackage} from '../secondary-entry-points'; // There are no type definitions available for these imports. const htmlmin = require('gulp-htmlmin'); @@ -24,9 +26,9 @@ const htmlMinifierOptions = { /** * Creates a set of gulp tasks that can build the specified package. * @param packageName Name of the package. Needs to be similar to the directory name in `src/`. - * @param requiredPackages Required packages that will be built before building the current package. + * @param dependencies Required packages that will be built before building the current package. */ -export function createPackageBuildTasks(packageName: string, requiredPackages: string[] = []) { +export function createPackageBuildTasks(packageName: string, dependencies: string[] = [], options: PackageTaskOptions = {}) { // To avoid refactoring of the project the package material will map to the source path `lib/`. const packageRoot = join(packagesDir, packageName === 'material' ? 'lib' : packageName); const packageOut = join(outputDir, 'packages', packageName); @@ -44,7 +46,7 @@ export function createPackageBuildTasks(packageName: string, requiredPackages: s const htmlGlob = join(packageRoot, '**/*.html'); // List of watch tasks that need run together with the watch task of the current package. - const dependentWatchTasks = requiredPackages.map(pkgName => `${pkgName}:watch`); + const dependentWatchTasks = dependencies.map(pkgName => `${pkgName}:watch`); /** * Main tasks for the package building. Tasks execute the different sub-tasks in the correct @@ -54,7 +56,7 @@ export function createPackageBuildTasks(packageName: string, requiredPackages: s task(`${packageName}:build`, sequenceTask( // Build all required packages before building. - ...requiredPackages.map(pkgName => `${pkgName}:build`), + ...dependencies.map(pkgName => `${pkgName}:build`), // Build ESM and assets output. [`${packageName}:build:esm`, `${packageName}:assets`], // Inline assets into ESM output. @@ -65,7 +67,7 @@ export function createPackageBuildTasks(packageName: string, requiredPackages: s task(`${packageName}:build-tests`, sequenceTask( // Build all required tests before building. - ...requiredPackages.map(pkgName => `${pkgName}:build-tests`), + ...dependencies.map(pkgName => `${pkgName}:build-tests`), // Build the ESM output that includes all test files. Also build assets for the package. [`${packageName}:build:esm:tests`, `${packageName}:assets`], // Inline assets into ESM output. @@ -75,15 +77,37 @@ export function createPackageBuildTasks(packageName: string, requiredPackages: s /** * Release tasks for the package. Tasks compose the release output for the package. */ + task(`${packageName}:build-release:clean`, sequenceTask('clean', `${packageName}:build-release`)); - task(`${packageName}:build-release`, [`${packageName}:build`], () => composeRelease(packageName)); + task(`${packageName}:build-release`, [`${packageName}:build`], () => { + return composeRelease(packageName, {useSecondaryEntryPoints: options.useSecondaryEntryPoints}); + }); + /** * TypeScript compilation tasks. Tasks are creating ESM, FESM, UMD bundles for releases. */ - task(`${packageName}:build:esm`, () => tsc(tsconfigBuild, {basePath: packageRoot})); + + task(`${packageName}:build:esm`, () => { + const primaryEntryPointResult = tsc(tsconfigBuild, {basePath: packageRoot}); + + if (options.useSecondaryEntryPoints) { + return Promise.all([ + compileSecondaryEntryPointsEsm(packageName, packageRoot), + primaryEntryPointResult + ]); + } + + return primaryEntryPointResult; + }); task(`${packageName}:build:esm:tests`, () => tsc(tsconfigTests, {basePath: packageRoot})); - task(`${packageName}:build:bundles`, () => buildPackageBundles(esmMainFile, packageName)); + task(`${packageName}:build:bundles`, () => { + const primaryBundlePromise = buildPrimaryEntryPointBundles(esmMainFile, packageName); + + return options.useSecondaryEntryPoints ? + Promise.all([primaryBundlePromise, buildAllSecondaryEntryPointBundles('cdk')]) : + primaryBundlePromise; + }); /** * Asset tasks. Building SASS files and inlining CSS, HTML files into the ESM output. @@ -111,3 +135,15 @@ export function createPackageBuildTasks(packageName: string, requiredPackages: s watchFiles(join(packageRoot, '**/*.+(ts|scss|html)'), [`${packageName}:build`]); }); } + + +interface PackageTaskOptions { + useSecondaryEntryPoints?: boolean; +} + +/** Sequentially runs tsc for all secondary entry-points for a package. */ +async function compileSecondaryEntryPointsEsm(packageName: string, packageRoot: string) { + for (const p of getSecondaryEntryPointsForPackage(packageName)) { + await tsc(join(packageRoot, p, 'tsconfig-build.json'), {basePath: join(packageRoot, p)}); + } +} diff --git a/tools/package-tools/metadata-reexport.ts b/tools/package-tools/metadata-reexport.ts index 3348227f932..60836016bbd 100644 --- a/tools/package-tools/metadata-reexport.ts +++ b/tools/package-tools/metadata-reexport.ts @@ -2,12 +2,12 @@ import {writeFileSync} from 'fs'; import {join} from 'path'; /** Creates a metadata file that re-exports the metadata bundle inside of the typings. */ -export function createMetadataReexportFile(packageDir: string, packageName: string) { +export function createMetadataReexportFile(destDir: string, from: string, name: string) { const metadataReExport = `{ "__symbolic":"module", "version":3,"metadata":{}, - "exports":[{"from":"./typings/index"}], + "exports":[{"from":"${from}"}], "flatModuleIndexRedirect": true }`; - writeFileSync(join(packageDir, `${packageName}.metadata.json`), metadataReExport, 'utf-8'); + writeFileSync(join(destDir, `${name}.metadata.json`), metadataReExport, 'utf-8'); } diff --git a/tools/package-tools/rollup-helpers.ts b/tools/package-tools/rollup-helpers.ts index 7cd1bfd001f..5db30a14ff0 100644 --- a/tools/package-tools/rollup-helpers.ts +++ b/tools/package-tools/rollup-helpers.ts @@ -22,6 +22,17 @@ const ROLLUP_GLOBALS = { // Local Angular packages inside of Material. '@angular/material': 'ng.material', + + // TODO(jelbourn): don't hard-code these + '@angular/cdk/a11y': 'ng.cdk.a11y', + '@angular/cdk/bidi': 'ng.cdk.bidi', + '@angular/cdk/coercion': 'ng.cdk.coercion', + '@angular/cdk/keyboard': 'ng.cdk.keyboard', + '@angular/cdk/observe-content': 'ng.cdk.observeContent', + '@angular/cdk/platform': 'ng.cdk.platform', + '@angular/cdk/portal': 'ng.cdk.portal', + '@angular/cdk/rxjs': 'ng.cdk.rxjs', + '@angular/cdk/table': 'ng.cdk.table', '@angular/cdk': 'ng.cdk', // RxJS dependencies diff --git a/tools/package-tools/secondary-entry-points.ts b/tools/package-tools/secondary-entry-points.ts new file mode 100644 index 00000000000..e81dc4f3013 --- /dev/null +++ b/tools/package-tools/secondary-entry-points.ts @@ -0,0 +1,40 @@ +import {join} from 'path'; +import {readdirSync, lstatSync} from 'fs'; +import {buildConfig} from './build-config'; + + +/** + * List of cdk entry-points in the order that they must be built. This is necessary because + * some of the entry-points depend on each other. This is temporary until we switch to bazel. + */ +const CDK_ENTRY_POINTS = [ + 'coercion', + 'rxjs', + 'keyboard', + 'platform', + 'bidi', + 'table', + 'portal', + 'observe-content', + 'a11y', +]; + +/** + * Gets secondary entry-points for a given package. + * + * This currently assumes that every directory under a package should be an entry-point. This may + * not always be desired, in which case we can add an extra build configuration for specifying the + * entry-points. + * + * @param packageName The package name for which to get entry points, e.g., 'cdk'. + * @returns An array of secondary entry-points names, e.g., ['a11y', 'bidi', ...] + */ +export function getSecondaryEntryPointsForPackage(packageName: string) { + // For now, we hard-code the fact that only the CDK has secondary entry-points until we switch + // to bazel. + if (packageName === 'cdk') { + return CDK_ENTRY_POINTS; + } + + throw Error('Only the cdk supports secondary entry-points right now.'); +} diff --git a/tools/package-tools/typings-reexport.ts b/tools/package-tools/typings-reexport.ts index 48d009ecf13..356f857d3f9 100644 --- a/tools/package-tools/typings-reexport.ts +++ b/tools/package-tools/typings-reexport.ts @@ -3,8 +3,9 @@ import {buildConfig} from './build-config'; import {join} from 'path'; /** Create a typing file that links to the bundled definitions of NGC. */ -export function createTypingsReexportFile(outputDir: string, entryName: string) { - writeFileSync(join(outputDir, `${entryName}.d.ts`), - buildConfig.licenseBanner + '\nexport * from "./typings/index";' - ); +export function createTypingsReexportFile(outDir: string, from: string, fileName: string) { + writeFileSync( + join(outDir, `${fileName}.d.ts`), + `${buildConfig.licenseBanner}\nexport * from '${from}'`, + 'utf-8'); } diff --git a/tsconfig.json b/tsconfig.json index 8ef1ee46270..939147d5ef4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,8 +16,7 @@ "baseUrl": ".", "paths": { "@angular/material": ["./src/lib/public_api.ts"], - "@angular/cdk": ["./src/cdk/public_api.ts"], - "@angular/cdk/testing": ["./src/cdk/testing"], + "@angular/cdk*": ["./src/cdk/*"], "@angular/material-examples": ["./src/material-examples"] } },