diff --git a/.travis.yml b/.travis.yml index e88eac92a861..7544dea8bd2b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,9 @@ jobs: - env: "MODE=aot" - env: "MODE=payload" - env: "MODE=prerender" - - env: "MODE=closure-compiler" + # Closure Compiler CI check is temporarily disabled until a new version of + # the tool is released with https://github.com/google/closure-compiler/pull/2600 + # - env: "MODE=closure-compiler" - env: "MODE=e2e" - env: "MODE=saucelabs_required" - env: "MODE=browserstack_required" diff --git a/package-lock.json b/package-lock.json index 18d9ce7ecbe6..4d90745db73c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "material2-srcs", - "version": "2.0.0-beta.8", + "version": "2.0.0-beta.11", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -675,6 +675,16 @@ "@types/node": "7.0.34" } }, + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, "abab": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", @@ -2286,8 +2296,8 @@ "integrity": "sha1-4ye1MZThp61dxjR57pCZpSsCSGU=", "dev": true, "requires": { - "is-text-path": "1.0.1", "JSONStream": "1.3.1", + "is-text-path": "1.0.1", "lodash": "4.17.4", "meow": "3.7.0", "split2": "2.1.1", @@ -3079,7 +3089,7 @@ "shelljs": "0.7.8", "spdx-license-list": "2.1.0", "stringmap": "0.2.2", - "typescript": "2.2.2" + "typescript": "2.4.2" } }, "di": { @@ -4555,6 +4565,7 @@ "dev": true, "requires": { "@google-cloud/functions-emulator": "1.0.0-alpha.21", + "JSONStream": "1.3.1", "archiver": "0.16.0", "chalk": "1.1.3", "cjson": "0.3.3", @@ -4572,7 +4583,6 @@ "fstream-ignore": "1.0.5", "inquirer": "0.12.0", "jsonschema": "1.1.1", - "JSONStream": "1.3.1", "jsonwebtoken": "5.7.0", "lodash": "4.17.4", "open": "0.0.5", @@ -9170,6 +9180,16 @@ "through2": "0.6.5" }, "dependencies": { + "JSONStream": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", + "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", + "dev": true, + "requires": { + "jsonparse": "0.0.5", + "through": "2.3.8" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -9182,16 +9202,6 @@ "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", "dev": true }, - "JSONStream": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", - "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", - "dev": true, - "requires": { - "jsonparse": "0.0.5", - "through": "2.3.8" - } - }, "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -9256,16 +9266,6 @@ "integrity": "sha1-PO3o4+QR03eHLu+8n98mODy8Ptk=", "dev": true }, - "JSONStream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", - "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", - "dev": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - } - }, "jsonwebtoken": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.1.tgz", @@ -12551,6 +12551,15 @@ "source-map-support": "0.4.15" } }, + "rollup-plugin-alias": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-alias/-/rollup-plugin-alias-1.3.1.tgz", + "integrity": "sha1-qRUv7EtqZRDa6TmJUXynhTwypvo=", + "dev": true, + "requires": { + "slash": "1.0.0" + } + }, "rollup-plugin-node-resolve": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", @@ -13127,6 +13136,12 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, "slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", @@ -13551,15 +13566,6 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, "string-format-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.0.tgz", @@ -13593,6 +13599,15 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "stringify-object": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-0.1.8.tgz", @@ -14703,9 +14718,9 @@ "dev": true }, "typescript": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.2.2.tgz", - "integrity": "sha1-YGAiUIR5tV/6NotY/uljoD39eww=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.2.tgz", + "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index d7be6be388fb..7c36a280c74c 100644 --- a/package.json +++ b/package.json @@ -107,6 +107,7 @@ "request": "^2.81.0", "resolve-bin": "^0.4.0", "rollup": "^0.41.6", + "rollup-plugin-alias": "^1.3.1", "rollup-plugin-node-resolve": "^3.0.0", "run-sequence": "^1.2.2", "scss-bundle": "^2.0.1-beta.7", @@ -117,7 +118,7 @@ "tsconfig-paths": "^2.2.0", "tslint": "^5.7.0", "tsutils": "^2.6.0", - "typescript": "~2.2.1", + "typescript": "~2.4.2", "uglify-js": "^2.8.14", "web-animations-js": "^2.2.5" } diff --git a/scripts/closure-compiler/build-devapp-bundle.sh b/scripts/closure-compiler/build-devapp-bundle.sh index 8e483922b3fc..f0efff42b318 100755 --- a/scripts/closure-compiler/build-devapp-bundle.sh +++ b/scripts/closure-compiler/build-devapp-bundle.sh @@ -58,9 +58,9 @@ OPTS=( "--debug" # Include the Material and CDK FESM bundles - dist/releases/material/@angular/material.js - dist/releases/cdk/@angular/cdk.js - dist/releases/material-moment-adapter/@angular/material-moment-adapter.js + dist/releases/material/esm2015/material.js + dist/releases/cdk/esm2015/cdk.js + dist/releases/material-moment-adapter/esm2015/material-moment-adapter.js # Include all Angular FESM bundles. node_modules/@angular/core/@angular/core.js @@ -90,7 +90,7 @@ OPTS=( # Walk through every entry-point of the CDK and add it to closure options. for i in "${cdkEntryPoints[@]}"; do OPTS+=("--js_module_root=dist/releases/cdk/${i}") - OPTS+=("dist/releases/cdk/@angular/cdk/${i}.js") + OPTS+=("dist/releases/cdk/esm2015/${i}.js") done # Write closure flags to a closure flagfile. diff --git a/src/cdk/package.json b/src/cdk/package.json index 3b1a28634a4e..0109d456cd20 100644 --- a/src/cdk/package.json +++ b/src/cdk/package.json @@ -3,8 +3,8 @@ "version": "0.0.0-PLACEHOLDER", "description": "Angular Material Component Development Kit", "main": "./bundles/cdk.umd.js", - "module": "./@angular/cdk.es5.js", - "es2015": "./@angular/cdk.js", + "module": "./esm5/cdk.es5.js", + "es2015": "./esm2015/cdk.js", "typings": "./cdk.d.ts", "repository": { "type": "git", diff --git a/src/cdk/tsconfig.json b/src/cdk/tsconfig.json new file mode 100644 index 000000000000..db5560801237 --- /dev/null +++ b/src/cdk/tsconfig.json @@ -0,0 +1,12 @@ +// Configuration for IDEs only. +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "..", + "baseUrl": ".", + "paths": { + "@angular/cdk/*": ["./*"] + } + }, + "include": ["./**/*.ts"] +} diff --git a/src/demo-app/chips/chips-demo.ts b/src/demo-app/chips/chips-demo.ts index d58217352256..ce46def82be2 100644 --- a/src/demo-app/chips/chips-demo.ts +++ b/src/demo-app/chips/chips-demo.ts @@ -1,5 +1,6 @@ +import {ENTER} from '@angular/cdk/keycodes'; import {Component} from '@angular/core'; -import {MdChipInputEvent, ENTER} from '@angular/material'; +import {MdChipInputEvent} from '@angular/material'; const COMMA = 188; diff --git a/src/demo-app/demo-app/demo-app.ts b/src/demo-app/demo-app/demo-app.ts index 08a4fae98e8a..6f8341a5d88e 100644 --- a/src/demo-app/demo-app/demo-app.ts +++ b/src/demo-app/demo-app/demo-app.ts @@ -4,7 +4,7 @@ import { ElementRef, Renderer2, } from '@angular/core'; -import {OverlayContainer} from '@angular/material'; +import {OverlayContainer} from '@angular/cdk/overlay'; /** * The entry app for demo site. Routes under `accessibility` will use AccessibilityDemo component, diff --git a/src/demo-app/demo-app/demo-module.ts b/src/demo-app/demo-app/demo-module.ts index 79de0624a050..3d98a8f0efc8 100644 --- a/src/demo-app/demo-app/demo-module.ts +++ b/src/demo-app/demo-app/demo-module.ts @@ -45,7 +45,7 @@ import {DemoMaterialModule} from '../demo-material-module'; import { FullscreenOverlayContainer, OverlayContainer, -} from '@angular/material'; +} from '@angular/cdk/overlay'; import {TableHeaderDemo} from '../table/table-header-demo'; @NgModule({ diff --git a/src/demo-app/demo-material-module.ts b/src/demo-app/demo-material-module.ts index bf2ffc8cc2df..58617586afec 100644 --- a/src/demo-app/demo-material-module.ts +++ b/src/demo-app/demo-material-module.ts @@ -15,12 +15,10 @@ import { MdInputModule, MdListModule, MdMenuModule, - MdNativeDateModule, MdPaginatorModule, MdProgressBarModule, MdProgressSpinnerModule, MdRadioModule, - MdRippleModule, MdSelectModule, MdSidenavModule, MdSliderModule, @@ -31,9 +29,9 @@ import { MdTabsModule, MdToolbarModule, MdTooltipModule, - StyleModule, MdStepperModule, } from '@angular/material'; +import {StyleModule, MdNativeDateModule, MdRippleModule} from '@angular/material'; import {CdkTableModule} from '@angular/cdk/table'; import {A11yModule} from '@angular/cdk/a11y'; import {BidiModule} from '@angular/cdk/bidi'; diff --git a/src/demo-app/live-announcer/live-announcer-demo.ts b/src/demo-app/live-announcer/live-announcer-demo.ts index bc43d069fcd2..45988580e121 100644 --- a/src/demo-app/live-announcer/live-announcer-demo.ts +++ b/src/demo-app/live-announcer/live-announcer-demo.ts @@ -1,5 +1,6 @@ import {Component} from '@angular/core'; -import {LiveAnnouncer} from '@angular/material'; +import {LiveAnnouncer} from '@angular/cdk/a11y'; + @Component({ moduleId: module.id, @@ -7,11 +8,9 @@ import {LiveAnnouncer} from '@angular/material'; templateUrl: 'live-announcer-demo.html', }) export class LiveAnnouncerDemo { - constructor(private live: LiveAnnouncer) {} announceText(message: string) { this.live.announce(message); } - } diff --git a/src/demo-app/overlay/overlay-demo.ts b/src/demo-app/overlay/overlay-demo.ts index bc925ee82757..1cf11b4796aa 100644 --- a/src/demo-app/overlay/overlay-demo.ts +++ b/src/demo-app/overlay/overlay-demo.ts @@ -1,22 +1,20 @@ +import {Overlay, OverlayOrigin, OverlayState} from '@angular/cdk/overlay'; import { - Component, - ViewChildren, - QueryList, - ViewEncapsulation, - ViewChild, - ViewContainerRef, -} from '@angular/core'; + ComponentPortal, + // This import is only used to define a generic type. The current TypeScript version incorrectly + // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) + // tslint:disable-next-line:no-unused-variable + Portal, + TemplatePortalDirective +} from '@angular/cdk/portal'; import { - Overlay, - OverlayState, - OverlayOrigin, - ComponentPortal, - // This import is only used to define a generic type. The current TypeScript version incorrectly - // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) - // tslint:disable-next-line:no-unused-variable - Portal, - TemplatePortalDirective, -} from '@angular/material'; + Component, + QueryList, + ViewChild, + ViewChildren, + ViewContainerRef, + ViewEncapsulation, +} from '@angular/core'; @Component({ diff --git a/src/demo-app/platform/platform-demo.ts b/src/demo-app/platform/platform-demo.ts index d96230627e95..d80dfd6c70d8 100644 --- a/src/demo-app/platform/platform-demo.ts +++ b/src/demo-app/platform/platform-demo.ts @@ -1,5 +1,5 @@ import {Component} from '@angular/core'; -import {Platform, getSupportedInputTypes} from '@angular/material'; +import {Platform, getSupportedInputTypes} from '@angular/cdk/platform'; @Component({ diff --git a/src/demo-app/portal/portal-demo.ts b/src/demo-app/portal/portal-demo.ts index b00a1789ff86..f780d2f71a6c 100644 --- a/src/demo-app/portal/portal-demo.ts +++ b/src/demo-app/portal/portal-demo.ts @@ -1,9 +1,5 @@ -import {Component, ViewChildren, QueryList} from '@angular/core'; -import { - Portal, - ComponentPortal, - TemplatePortalDirective, -} from '@angular/material'; +import {ComponentPortal, Portal, TemplatePortalDirective} from '@angular/cdk/portal'; +import {Component, QueryList, ViewChildren} from '@angular/core'; @Component({ diff --git a/src/demo-app/tsconfig-aot.json b/src/demo-app/tsconfig-aot.json index f868fe1c2677..fb9cc74893ed 100644 --- a/src/demo-app/tsconfig-aot.json +++ b/src/demo-app/tsconfig-aot.json @@ -10,8 +10,9 @@ "strictNullChecks": true, "outDir": ".", "paths": { - "@angular/material": ["./material"], "@angular/cdk/*": ["./cdk/*"], + "@angular/material": ["./material"], + "@angular/material/*": ["./material/*"], "@angular/material-moment-adapter": ["./material-moment-adapter"] } }, diff --git a/src/demo-app/tsconfig-build.json b/src/demo-app/tsconfig-build.json index 98e6b789b1d1..c3169ecece30 100644 --- a/src/demo-app/tsconfig-build.json +++ b/src/demo-app/tsconfig-build.json @@ -8,6 +8,7 @@ "noUnusedParameters": true, "strictNullChecks": true, "lib": ["es6", "es2015", "dom"], + "skipLibCheck": true, "module": "commonjs", "moduleResolution": "node", "noEmitOnError": true, @@ -23,6 +24,7 @@ "paths": { "@angular/material": ["../../dist/packages/material/public_api"], "@angular/cdk/*": ["../../dist/packages/cdk/*"], + "@angular/material/*": ["../../dist/packages/material/*"], "@angular/material-moment-adapter": ["../../dist/packages/material-moment-adapter"] } }, diff --git a/src/demo-app/tsconfig.json b/src/demo-app/tsconfig.json new file mode 100644 index 000000000000..3e4fa9c6417d --- /dev/null +++ b/src/demo-app/tsconfig.json @@ -0,0 +1,14 @@ +// Configuration for IDEs only. +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "..", + "baseUrl": ".", + "paths": { + "@angular/cdk/*": ["../cdk/*"], + "@angular/material/*": ["../lib/*"], + "@angular/material": ["../lib/public_api.ts"] + } + }, + "include": ["./**/*.ts"] +} diff --git a/src/e2e-app/system-config.ts b/src/e2e-app/system-config.ts index 75700c38fcfc..25d051d19fa5 100644 --- a/src/e2e-app/system-config.ts +++ b/src/e2e-app/system-config.ts @@ -42,6 +42,38 @@ System.config({ '@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', + + '@angular/material/autocomplete': 'dist/bundles/material-autocomplete.umd.js', + '@angular/material/button': 'dist/bundles/material-button.umd.js', + '@angular/material/button-toggle': 'dist/bundles/material-button-toggle.umd.js', + '@angular/material/card': 'dist/bundles/material-card.umd.js', + '@angular/material/checkbox': 'dist/bundles/material-checkbox.umd.js', + '@angular/material/chips': 'dist/bundles/material-chips.umd.js', + '@angular/material/core': 'dist/bundles/material-core.umd.js', + '@angular/material/datepicker': 'dist/bundles/material-datepicker.umd.js', + '@angular/material/dialog': 'dist/bundles/material-dialog.umd.js', + '@angular/material/expansion': 'dist/bundles/material-expansion.umd.js', + '@angular/material/form-field': 'dist/bundles/material-form-field.umd.js', + '@angular/material/grid-list': 'dist/bundles/material-grid-list.umd.js', + '@angular/material/icon': 'dist/bundles/material-icon.umd.js', + '@angular/material/input': 'dist/bundles/material-input.umd.js', + '@angular/material/list': 'dist/bundles/material-list.umd.js', + '@angular/material/menu': 'dist/bundles/material-menu.umd.js', + '@angular/material/paginator': 'dist/bundles/material-paginator.umd.js', + '@angular/material/progress-bar': 'dist/bundles/material-progress-bar.umd.js', + '@angular/material/progress-spinner': 'dist/bundles/material-progress-spinner.umd.js', + '@angular/material/radio': 'dist/bundles/material-radio.umd.js', + '@angular/material/select': 'dist/bundles/material-select.umd.js', + '@angular/material/sidenav': 'dist/bundles/material-sidenav.umd.js', + '@angular/material/slide-toggle': 'dist/bundles/material-slide-toggle.umd.js', + '@angular/material/slider': 'dist/bundles/material-slider.umd.js', + '@angular/material/snack-bar': 'dist/bundles/material-snack-bar.umd.js', + '@angular/material/sort': 'dist/bundles/material-sort.umd.js', + '@angular/material/stepper': 'dist/bundles/material-stepper.umd.js', + '@angular/material/table': 'dist/bundles/material-table.umd.js', + '@angular/material/tabs': 'dist/bundles/material-tabs.umd.js', + '@angular/material/toolbar': 'dist/bundles/material-toolbar.umd.js', + '@angular/material/tooltip': 'dist/bundles/material-tooltip.umd.js', }, packages: { // Thirdparty barrels. diff --git a/src/e2e-app/tsconfig-build.json b/src/e2e-app/tsconfig-build.json index 8219cdac58c9..b7d368a5e3ea 100644 --- a/src/e2e-app/tsconfig-build.json +++ b/src/e2e-app/tsconfig-build.json @@ -24,8 +24,9 @@ ], "baseUrl": ".", "paths": { - "@angular/material": ["./material"], "@angular/cdk/*": ["./cdk/*"], + "@angular/material": ["./material"], + "@angular/material/*": ["./material/*"], "@angular/material-examples": ["./material-examples"] } }, diff --git a/src/e2e-app/tsconfig.json b/src/e2e-app/tsconfig.json new file mode 100644 index 000000000000..ab108ba3a8f0 --- /dev/null +++ b/src/e2e-app/tsconfig.json @@ -0,0 +1,15 @@ +// Configuration for IDEs only. +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "..", + "baseUrl": ".", + "paths": { + "@angular/cdk/*": ["../cdk/*"], + "@angular/material/*": ["../lib/*"], + "@angular/material": ["../lib/public_api.ts"], + "@angular/material-examples": ["../material-examples/public_api.ts"] + } + }, + "include": ["./**/*.ts"] +} diff --git a/src/lib/autocomplete/autocomplete-trigger.ts b/src/lib/autocomplete/autocomplete-trigger.ts index 7d3aca8621fa..972b78fe9823 100644 --- a/src/lib/autocomplete/autocomplete-trigger.ts +++ b/src/lib/autocomplete/autocomplete-trigger.ts @@ -6,6 +6,19 @@ * found in the LICENSE file at https://angular.io/license */ +import {Directionality} from '@angular/cdk/bidi'; +import {DOWN_ARROW, ENTER, ESCAPE, UP_ARROW} from '@angular/cdk/keycodes'; +import { + ConnectedPositionStrategy, + Overlay, + OverlayRef, + OverlayState, + PositionStrategy, + RepositionScrollStrategy, + ScrollStrategy, +} from '@angular/cdk/overlay'; +import {TemplatePortal} from '@angular/cdk/portal'; +import {filter, first, map, RxChain, switchMap} from '@angular/cdk/rxjs'; import { ChangeDetectorRef, Directive, @@ -21,30 +34,14 @@ import { ViewContainerRef, } from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; +import {MdOption, MdOptionSelectionChange} from '@angular/material/core'; +import {MdFormField} from '@angular/material/form-field'; import {DOCUMENT} from '@angular/platform-browser'; -import {Directionality} from '@angular/cdk/bidi'; -import {filter, first, map, RxChain, switchMap} from '@angular/cdk/rxjs'; -import { - ConnectedPositionStrategy, - Overlay, - OverlayRef, - OverlayState, - PositionStrategy, - RepositionScrollStrategy, - // This import is only used to define a generic type. The current TypeScript version incorrectly - // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) - // tslint:disable-next-line:no-unused-variable - ScrollStrategy, -} from '@angular/cdk/overlay'; -import {TemplatePortal} from '@angular/cdk/portal'; -import {DOWN_ARROW, ENTER, ESCAPE, UP_ARROW} from '@angular/cdk/keycodes'; import {Observable} from 'rxjs/Observable'; -import {MdFormField} from '../form-field/index'; -import {Subscription} from 'rxjs/Subscription'; -import {merge} from 'rxjs/observable/merge'; import {fromEvent} from 'rxjs/observable/fromEvent'; +import {merge} from 'rxjs/observable/merge'; import {of as observableOf} from 'rxjs/observable/of'; -import {MdOption, MdOptionSelectionChange} from '../core/option/option'; +import {Subscription} from 'rxjs/Subscription'; import {MdAutocomplete} from './autocomplete'; diff --git a/src/lib/autocomplete/autocomplete.spec.ts b/src/lib/autocomplete/autocomplete.spec.ts index 01e940027f05..308382a9c0f9 100644 --- a/src/lib/autocomplete/autocomplete.spec.ts +++ b/src/lib/autocomplete/autocomplete.spec.ts @@ -25,9 +25,9 @@ import { } from './index'; import {MdInputModule} from '../input/index'; import {Subscription} from 'rxjs/Subscription'; -import {DOWN_ARROW, ENTER, ESCAPE, SPACE, UP_ARROW} from '../core/keyboard/keycodes'; -import {MdOption} from '../core/option/option'; -import {MdFormField, MdFormFieldModule} from '../form-field/index'; +import {DOWN_ARROW, ENTER, ESCAPE, SPACE, UP_ARROW} from '@angular/material/core'; +import {MdOption} from '@angular/material/core'; +import {MdFormField, MdFormFieldModule} from '@angular/material/form-field'; import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; diff --git a/src/lib/autocomplete/autocomplete.ts b/src/lib/autocomplete/autocomplete.ts index 3126485ea6e5..b8c7885d1b1c 100644 --- a/src/lib/autocomplete/autocomplete.ts +++ b/src/lib/autocomplete/autocomplete.ts @@ -21,7 +21,7 @@ import { EventEmitter, Output, } from '@angular/core'; -import {MdOption, MdOptgroup} from '../core'; +import {MdOption, MdOptgroup} from '@angular/material/core'; import {ActiveDescendantKeyManager} from '@angular/cdk/a11y'; diff --git a/src/lib/autocomplete/index.ts b/src/lib/autocomplete/index.ts index c5f09f6b83ac..f93e7c31d564 100644 --- a/src/lib/autocomplete/index.ts +++ b/src/lib/autocomplete/index.ts @@ -6,24 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {MdOptionModule, MdCommonModule} from '../core'; -import {MdAutocomplete} from './autocomplete'; -import { - MdAutocompleteTrigger, - MD_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, -} from './autocomplete-trigger'; - -@NgModule({ - imports: [MdOptionModule, OverlayModule, MdCommonModule, CommonModule], - exports: [MdAutocomplete, MdOptionModule, MdAutocompleteTrigger, MdCommonModule], - declarations: [MdAutocomplete, MdAutocompleteTrigger], - providers: [MD_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER], -}) -export class MdAutocompleteModule {} - - -export * from './autocomplete'; -export * from './autocomplete-trigger'; +export * from './public_api'; diff --git a/src/lib/autocomplete/public_api.ts b/src/lib/autocomplete/public_api.ts new file mode 100644 index 000000000000..0f672a71b641 --- /dev/null +++ b/src/lib/autocomplete/public_api.ts @@ -0,0 +1,29 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {OverlayModule} from '@angular/cdk/overlay'; +import {MdOptionModule, MdCommonModule} from '@angular/material/core'; +import {MdAutocomplete} from './autocomplete'; +import { + MdAutocompleteTrigger, + MD_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, +} from './autocomplete-trigger'; + +@NgModule({ + imports: [MdOptionModule, OverlayModule, MdCommonModule, CommonModule], + exports: [MdAutocomplete, MdOptionModule, MdAutocompleteTrigger, MdCommonModule], + declarations: [MdAutocomplete, MdAutocompleteTrigger], + providers: [MD_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER], +}) +export class MdAutocompleteModule {} + + +export * from './autocomplete'; +export * from './autocomplete-trigger'; diff --git a/src/lib/autocomplete/tsconfig-build.json b/src/lib/autocomplete/tsconfig-build.json new file mode 100644 index 000000000000..363a0a4837d6 --- /dev/null +++ b/src/lib/autocomplete/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/autocomplete", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/button-toggle/button-toggle.ts b/src/lib/button-toggle/button-toggle.ts index f2fc081c5110..daa882984084 100644 --- a/src/lib/button-toggle/button-toggle.ts +++ b/src/lib/button-toggle/button-toggle.ts @@ -27,8 +27,8 @@ import { } from '@angular/core'; import {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms'; import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import {UniqueSelectionDispatcher, FocusOriginMonitor} from '../core'; -import {CanDisable, mixinDisabled} from '../core/common-behaviors/disabled'; +import {UniqueSelectionDispatcher, FocusOriginMonitor} from '@angular/material/core'; +import {CanDisable, mixinDisabled} from '@angular/material/core'; /** Acceptable types for a button toggle. */ export type ToggleType = 'checkbox' | 'radio'; diff --git a/src/lib/button-toggle/index.ts b/src/lib/button-toggle/index.ts index adf987daf8b0..f93e7c31d564 100644 --- a/src/lib/button-toggle/index.ts +++ b/src/lib/button-toggle/index.ts @@ -6,27 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdButtonToggleGroup, MdButtonToggleGroupMultiple, MdButtonToggle} from './button-toggle'; -import { - UNIQUE_SELECTION_DISPATCHER_PROVIDER, - MdCommonModule, - StyleModule, -} from '../core'; - - -@NgModule({ - imports: [MdCommonModule, StyleModule], - exports: [ - MdButtonToggleGroup, - MdButtonToggleGroupMultiple, - MdButtonToggle, - MdCommonModule, - ], - declarations: [MdButtonToggleGroup, MdButtonToggleGroupMultiple, MdButtonToggle], - providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER] -}) -export class MdButtonToggleModule {} - - -export * from './button-toggle'; +export * from './public_api'; diff --git a/src/lib/button-toggle/public_api.ts b/src/lib/button-toggle/public_api.ts new file mode 100644 index 000000000000..3b4ad6857692 --- /dev/null +++ b/src/lib/button-toggle/public_api.ts @@ -0,0 +1,32 @@ +/** + * @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 {MdButtonToggleGroup, MdButtonToggleGroupMultiple, MdButtonToggle} from './button-toggle'; +import { + UNIQUE_SELECTION_DISPATCHER_PROVIDER, + MdCommonModule, + StyleModule, +} from '@angular/material/core'; + + +@NgModule({ + imports: [MdCommonModule, StyleModule], + exports: [ + MdButtonToggleGroup, + MdButtonToggleGroupMultiple, + MdButtonToggle, + MdCommonModule, + ], + declarations: [MdButtonToggleGroup, MdButtonToggleGroupMultiple, MdButtonToggle], + providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER] +}) +export class MdButtonToggleModule {} + + +export * from './button-toggle'; diff --git a/src/lib/button-toggle/tsconfig-build.json b/src/lib/button-toggle/tsconfig-build.json new file mode 100644 index 000000000000..fadd13eed97c --- /dev/null +++ b/src/lib/button-toggle/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/button-toggle", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/button/button.spec.ts b/src/lib/button/button.spec.ts index e1d7dc74e675..a7707a08d207 100644 --- a/src/lib/button/button.spec.ts +++ b/src/lib/button/button.spec.ts @@ -4,7 +4,7 @@ import {By} from '@angular/platform-browser'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {FakeViewportRuler} from '@angular/cdk/testing'; import {MdButtonModule} from './index'; -import {MdRipple} from '../core/ripple/index'; +import {MdRipple} from '@angular/material/core'; describe('MdButton', () => { diff --git a/src/lib/button/button.ts b/src/lib/button/button.ts index e863c5e0fca0..1b69aa9f99f2 100644 --- a/src/lib/button/button.ts +++ b/src/lib/button/button.ts @@ -12,18 +12,23 @@ import { Directive, ElementRef, forwardRef, + Inject, OnDestroy, Optional, Renderer2, Self, ViewEncapsulation, - Inject, } from '@angular/core'; import {Platform} from '@angular/cdk/platform'; -import {FocusOriginMonitor} from '../core'; -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'; +import { + CanColor, + CanDisable, + CanDisableRipple, + FocusOriginMonitor, + mixinColor, + mixinDisabled, + mixinDisableRipple +} from '@angular/material/core'; // TODO(kara): Convert attribute selectors to classes when attr maps become available diff --git a/src/lib/button/index.ts b/src/lib/button/index.ts index 07311f39bb7d..f93e7c31d564 100644 --- a/src/lib/button/index.ts +++ b/src/lib/button/index.ts @@ -6,48 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {MdCommonModule, MdRippleModule, StyleModule} from '../core'; -import { - MdAnchor, - MdButton, - MdMiniFab, - MdButtonCssMatStyler, - MdFab, - MdIconButtonCssMatStyler, - MdRaisedButtonCssMatStyler -} from './button'; - - -export * from './button'; - - -@NgModule({ - imports: [ - CommonModule, - MdRippleModule, - MdCommonModule, - StyleModule, - ], - exports: [ - MdButton, - MdAnchor, - MdMiniFab, - MdFab, - MdCommonModule, - MdButtonCssMatStyler, - MdRaisedButtonCssMatStyler, - MdIconButtonCssMatStyler, - ], - declarations: [ - MdButton, - MdAnchor, - MdMiniFab, - MdFab, - MdButtonCssMatStyler, - MdRaisedButtonCssMatStyler, - MdIconButtonCssMatStyler, - ], -}) -export class MdButtonModule {} +export * from './public_api'; diff --git a/src/lib/button/public_api.ts b/src/lib/button/public_api.ts new file mode 100644 index 000000000000..3cec824cd095 --- /dev/null +++ b/src/lib/button/public_api.ts @@ -0,0 +1,53 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {MdCommonModule, MdRippleModule, StyleModule} from '@angular/material/core'; +import { + MdAnchor, + MdButton, + MdMiniFab, + MdButtonCssMatStyler, + MdFab, + MdIconButtonCssMatStyler, + MdRaisedButtonCssMatStyler +} from './button'; + + +export * from './button'; + + +@NgModule({ + imports: [ + CommonModule, + MdRippleModule, + MdCommonModule, + StyleModule, + ], + exports: [ + MdButton, + MdAnchor, + MdMiniFab, + MdFab, + MdCommonModule, + MdButtonCssMatStyler, + MdRaisedButtonCssMatStyler, + MdIconButtonCssMatStyler, + ], + declarations: [ + MdButton, + MdAnchor, + MdMiniFab, + MdFab, + MdButtonCssMatStyler, + MdRaisedButtonCssMatStyler, + MdIconButtonCssMatStyler, + ], +}) +export class MdButtonModule {} diff --git a/src/lib/button/tsconfig-build.json b/src/lib/button/tsconfig-build.json new file mode 100644 index 000000000000..aa81fe018b36 --- /dev/null +++ b/src/lib/button/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/button", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/card/index.ts b/src/lib/card/index.ts index b6441d8bd9a9..f93e7c31d564 100644 --- a/src/lib/card/index.ts +++ b/src/lib/card/index.ts @@ -6,52 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdCommonModule} from '../core'; -import { - MdCard, - MdCardHeader, - MdCardTitleGroup, - MdCardContent, - MdCardTitle, - MdCardSubtitle, - MdCardActions, - MdCardFooter, - MdCardSmImage, - MdCardMdImage, - MdCardLgImage, - MdCardImage, - MdCardXlImage, - MdCardAvatar, -} from './card'; - - -@NgModule({ - imports: [MdCommonModule], - exports: [ - MdCard, - MdCardHeader, - MdCardTitleGroup, - MdCardContent, - MdCardTitle, - MdCardSubtitle, - MdCardActions, - MdCardFooter, - MdCardSmImage, - MdCardMdImage, - MdCardLgImage, - MdCardImage, - MdCardXlImage, - MdCardAvatar, - MdCommonModule, - ], - declarations: [ - MdCard, MdCardHeader, MdCardTitleGroup, MdCardContent, MdCardTitle, MdCardSubtitle, - MdCardActions, MdCardFooter, MdCardSmImage, MdCardMdImage, MdCardLgImage, MdCardImage, - MdCardXlImage, MdCardAvatar, - ], -}) -export class MdCardModule {} - - -export * from './card'; +export * from './public_api'; diff --git a/src/lib/card/public_api.ts b/src/lib/card/public_api.ts new file mode 100644 index 000000000000..986e21c4b3b0 --- /dev/null +++ b/src/lib/card/public_api.ts @@ -0,0 +1,57 @@ +/** + * @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 {MdCommonModule} from '@angular/material/core'; +import { + MdCard, + MdCardHeader, + MdCardTitleGroup, + MdCardContent, + MdCardTitle, + MdCardSubtitle, + MdCardActions, + MdCardFooter, + MdCardSmImage, + MdCardMdImage, + MdCardLgImage, + MdCardImage, + MdCardXlImage, + MdCardAvatar, +} from './card'; + + +@NgModule({ + imports: [MdCommonModule], + exports: [ + MdCard, + MdCardHeader, + MdCardTitleGroup, + MdCardContent, + MdCardTitle, + MdCardSubtitle, + MdCardActions, + MdCardFooter, + MdCardSmImage, + MdCardMdImage, + MdCardLgImage, + MdCardImage, + MdCardXlImage, + MdCardAvatar, + MdCommonModule, + ], + declarations: [ + MdCard, MdCardHeader, MdCardTitleGroup, MdCardContent, MdCardTitle, MdCardSubtitle, + MdCardActions, MdCardFooter, MdCardSmImage, MdCardMdImage, MdCardLgImage, MdCardImage, + MdCardXlImage, MdCardAvatar, + ], +}) +export class MdCardModule {} + + +export * from './card'; diff --git a/src/lib/card/tsconfig-build.json b/src/lib/card/tsconfig-build.json new file mode 100644 index 000000000000..c53fd82c5200 --- /dev/null +++ b/src/lib/card/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/card", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/checkbox/checkbox.spec.ts b/src/lib/checkbox/checkbox.spec.ts index 6abe20c65605..d6d829f37c0f 100644 --- a/src/lib/checkbox/checkbox.spec.ts +++ b/src/lib/checkbox/checkbox.spec.ts @@ -12,7 +12,7 @@ import {By} from '@angular/platform-browser'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {dispatchFakeEvent, FakeViewportRuler} from '@angular/cdk/testing'; import {MdCheckbox, MdCheckboxChange, MdCheckboxModule} from './index'; -import {RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION} from '../core/ripple/ripple-renderer'; +import {RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION} from '@angular/material/core'; describe('MdCheckbox', () => { diff --git a/src/lib/checkbox/checkbox.ts b/src/lib/checkbox/checkbox.ts index a243fc40e629..3ad31b7abdae 100644 --- a/src/lib/checkbox/checkbox.ts +++ b/src/lib/checkbox/checkbox.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import { AfterViewInit, ChangeDetectionStrategy, @@ -22,11 +23,19 @@ import { ViewEncapsulation, } from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; -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'; -import {CanDisableRipple, mixinDisableRipple} from '../core/common-behaviors/disable-ripple'; +import { + CanColor, + CanDisable, + CanDisableRipple, + FocusOrigin, + FocusOriginMonitor, + MdRipple, + mixinColor, + mixinDisabled, + mixinDisableRipple, + RippleRef, +} from '@angular/material/core'; + // Increasing integer for generating unique ids for checkbox components. let nextUniqueId = 0; diff --git a/src/lib/checkbox/index.ts b/src/lib/checkbox/index.ts index 103b58e112df..f93e7c31d564 100644 --- a/src/lib/checkbox/index.ts +++ b/src/lib/checkbox/index.ts @@ -6,21 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {ObserversModule} from '@angular/cdk/observers'; -import {MdRippleModule, MdCommonModule, FocusOriginMonitor} from '../core'; -import {MdCheckbox} from './checkbox'; -import {MdCheckboxRequiredValidator} from './checkbox-required-validator'; - -@NgModule({ - imports: [CommonModule, MdRippleModule, MdCommonModule, ObserversModule], - exports: [MdCheckbox, MdCheckboxRequiredValidator, MdCommonModule], - declarations: [MdCheckbox, MdCheckboxRequiredValidator], - providers: [FocusOriginMonitor] -}) -export class MdCheckboxModule {} - - -export * from './checkbox'; -export * from './checkbox-required-validator'; +export * from './public_api'; diff --git a/src/lib/checkbox/public_api.ts b/src/lib/checkbox/public_api.ts new file mode 100644 index 000000000000..0b7668432b5c --- /dev/null +++ b/src/lib/checkbox/public_api.ts @@ -0,0 +1,26 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {ObserversModule} from '@angular/cdk/observers'; +import {MdRippleModule, MdCommonModule, FocusOriginMonitor} from '@angular/material/core'; +import {MdCheckbox} from './checkbox'; +import {MdCheckboxRequiredValidator} from './checkbox-required-validator'; + +@NgModule({ + imports: [CommonModule, MdRippleModule, MdCommonModule, ObserversModule], + exports: [MdCheckbox, MdCheckboxRequiredValidator, MdCommonModule], + declarations: [MdCheckbox, MdCheckboxRequiredValidator], + providers: [FocusOriginMonitor] +}) +export class MdCheckboxModule {} + + +export * from './checkbox'; +export * from './checkbox-required-validator'; diff --git a/src/lib/checkbox/tsconfig-build.json b/src/lib/checkbox/tsconfig-build.json new file mode 100644 index 000000000000..41f11c4177b9 --- /dev/null +++ b/src/lib/checkbox/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/checkbox", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/chips/chip-input.spec.ts b/src/lib/chips/chip-input.spec.ts index 513d7eaf5e5a..827edb24ffd1 100644 --- a/src/lib/chips/chip-input.spec.ts +++ b/src/lib/chips/chip-input.spec.ts @@ -3,10 +3,10 @@ import {MdChipsModule} from './index'; import {Component, DebugElement} from '@angular/core'; import {MdChipInput, MdChipInputEvent} from './chip-input'; import {By} from '@angular/platform-browser'; -import {Directionality} from '../core'; +import {Directionality} from '@angular/material/core'; import {createKeyboardEvent} from '@angular/cdk/testing'; -import {ENTER} from '../core/keyboard/keycodes'; +import {ENTER} from '@angular/material/core'; const COMMA = 188; diff --git a/src/lib/chips/chip-input.ts b/src/lib/chips/chip-input.ts index a42f5e72d275..ed7ac8470e99 100644 --- a/src/lib/chips/chip-input.ts +++ b/src/lib/chips/chip-input.ts @@ -8,7 +8,7 @@ import {Directive, Output, EventEmitter, ElementRef, Input} from '@angular/core'; import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import {ENTER} from '../core/keyboard/keycodes'; +import {ENTER} from '@angular/material/core'; import {MdChipList} from './chip-list'; export interface MdChipInputEvent { diff --git a/src/lib/chips/chip-list.spec.ts b/src/lib/chips/chip-list.spec.ts index c069178ca499..1a080fb4f708 100644 --- a/src/lib/chips/chip-list.spec.ts +++ b/src/lib/chips/chip-list.spec.ts @@ -1,16 +1,23 @@ -import {async, ComponentFixture, TestBed, fakeAsync, tick} from '@angular/core/testing'; +import {FocusKeyManager} from '@angular/cdk/a11y'; +import {createKeyboardEvent} from '@angular/cdk/testing'; import {Component, DebugElement, QueryList} from '@angular/core'; +import {async, ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import { + BACKSPACE, + DELETE, + Directionality, + LEFT_ARROW, + RIGHT_ARROW, + TAB, +} from '@angular/material/core'; +import {MdFormFieldModule} from '@angular/material/form-field'; import {By} from '@angular/platform-browser'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; -import {MdChipList, MdChipsModule} from './index'; -import {FocusKeyManager} from '@angular/cdk/a11y'; -import {createKeyboardEvent} from '@angular/cdk/testing'; import {MdInputModule} from '../input/index'; -import {LEFT_ARROW, RIGHT_ARROW, BACKSPACE, DELETE, TAB} from '../core/keyboard/keycodes'; -import {Directionality} from '../core'; -import {MdFormFieldModule} from '../form-field/index'; import {MdChip} from './chip'; +import {MdChipList, MdChipsModule} from './index'; + describe('MdChipList', () => { let fixture: ComponentFixture; diff --git a/src/lib/chips/chip-list.ts b/src/lib/chips/chip-list.ts index 078fc1cd8e5d..2ce4e3e35043 100644 --- a/src/lib/chips/chip-list.ts +++ b/src/lib/chips/chip-list.ts @@ -22,7 +22,7 @@ import { import {MdChip} from './chip'; import {FocusKeyManager} from '@angular/cdk/a11y'; -import {BACKSPACE, DELETE, LEFT_ARROW, RIGHT_ARROW, UP_ARROW} from '../core/keyboard/keycodes'; +import {BACKSPACE, DELETE, LEFT_ARROW, RIGHT_ARROW, UP_ARROW} from '@angular/material/core'; import {Directionality} from '@angular/cdk/bidi'; import {Subscription} from 'rxjs/Subscription'; import {coerceBooleanProperty} from '@angular/cdk/coercion'; diff --git a/src/lib/chips/chip.spec.ts b/src/lib/chips/chip.spec.ts index 9565c178c56a..90c3bdfa873f 100644 --- a/src/lib/chips/chip.spec.ts +++ b/src/lib/chips/chip.spec.ts @@ -3,8 +3,8 @@ import {Component, DebugElement} from '@angular/core'; import {By} from '@angular/platform-browser'; import {createKeyboardEvent} from '@angular/cdk/testing'; import {MdChipList, MdChip, MdChipEvent, MdChipsModule} from './index'; -import {SPACE, DELETE, BACKSPACE} from '../core/keyboard/keycodes'; -import {Directionality} from '../core'; +import {SPACE, DELETE, BACKSPACE} from '@angular/material/core'; +import {Directionality} from '@angular/material/core'; describe('Chips', () => { let fixture: ComponentFixture; diff --git a/src/lib/chips/chip.ts b/src/lib/chips/chip.ts index a0ec3bc28c5f..3a88bd516064 100644 --- a/src/lib/chips/chip.ts +++ b/src/lib/chips/chip.ts @@ -6,23 +6,29 @@ * found in the LICENSE file at https://angular.io/license */ +import {FocusableOption} from '@angular/cdk/a11y'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import { - Directive, ContentChild, + Directive, ElementRef, EventEmitter, + forwardRef, Input, OnDestroy, Output, Renderer2, - forwardRef, } from '@angular/core'; +import { + BACKSPACE, + CanColor, + CanDisable, + DELETE, + mixinColor, + mixinDisabled, + SPACE, +} from '@angular/material/core'; import {Subject} from 'rxjs/Subject'; -import {FocusableOption} from '../core/a11y/focus-key-manager'; -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'; export interface MdChipEvent { chip: MdChip; diff --git a/src/lib/chips/index.ts b/src/lib/chips/index.ts index 7a3485835088..f93e7c31d564 100644 --- a/src/lib/chips/index.ts +++ b/src/lib/chips/index.ts @@ -6,18 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdChipList} from './chip-list'; -import {MdBasicChip, MdChip, MdChipRemove} from './chip'; -import {MdChipInput} from './chip-input'; - -export * from './chip-list'; -export * from './chip'; -export * from './chip-input'; - -@NgModule({ - imports: [], - exports: [MdChipList, MdChip, MdChipInput, MdChipRemove, MdChipRemove, MdBasicChip], - declarations: [MdChipList, MdChip, MdChipInput, MdChipRemove, MdChipRemove, MdBasicChip] -}) -export class MdChipsModule {} +export * from './public_api'; diff --git a/src/lib/chips/public_api.ts b/src/lib/chips/public_api.ts new file mode 100644 index 000000000000..7a3485835088 --- /dev/null +++ b/src/lib/chips/public_api.ts @@ -0,0 +1,23 @@ +/** + * @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 {MdChipList} from './chip-list'; +import {MdBasicChip, MdChip, MdChipRemove} from './chip'; +import {MdChipInput} from './chip-input'; + +export * from './chip-list'; +export * from './chip'; +export * from './chip-input'; + +@NgModule({ + imports: [], + exports: [MdChipList, MdChip, MdChipInput, MdChipRemove, MdChipRemove, MdBasicChip], + declarations: [MdChipList, MdChip, MdChipInput, MdChipRemove, MdChipRemove, MdBasicChip] +}) +export class MdChipsModule {} diff --git a/src/lib/chips/tsconfig-build.json b/src/lib/chips/tsconfig-build.json new file mode 100644 index 000000000000..1db61d5c0404 --- /dev/null +++ b/src/lib/chips/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/chips", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/core.ts b/src/lib/core.ts deleted file mode 100644 index 442e5925d59d..000000000000 --- a/src/lib/core.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @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 './core/index'; diff --git a/src/lib/core/common-behaviors/index.ts b/src/lib/core/common-behaviors/index.ts index 93bd48368c36..80e6e0c694d1 100644 --- a/src/lib/core/common-behaviors/index.ts +++ b/src/lib/core/common-behaviors/index.ts @@ -6,4 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ +export {MdCommonModule, MATERIAL_SANITY_CHECKS} from './common-module'; export {CanDisable, mixinDisabled} from './disabled'; +export {CanColor, mixinColor, ThemePalette} from './color'; +export {CanDisableRipple, mixinDisableRipple} from './disable-ripple'; +export {HasTabIndex, mixinTabIndex} from './tabindex'; diff --git a/src/lib/core/core.ts b/src/lib/core/core.ts deleted file mode 100644 index 4e480a79ca16..000000000000 --- a/src/lib/core/core.ts +++ /dev/null @@ -1,157 +0,0 @@ -/** - * @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 {A11yModule} from '@angular/cdk/a11y'; -import {BidiModule} from '@angular/cdk/bidi'; -import {ObserversModule} from '@angular/cdk/observers'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {PortalModule} from '@angular/cdk/portal'; -import {MdLineModule} from './line/line'; -import {MdOptionModule} from './option/index'; -import {MdPseudoCheckboxModule} from './selection/index'; -import {MdRippleModule} from './ripple/index'; - -// Re-exports of the CDK to avoid breaking changes. -export { - coerceBooleanProperty, - coerceNumberProperty, -} from '@angular/cdk/coercion'; - -export { - ObserversModule, - ObserveContent, -} from '@angular/cdk/observers'; - -export { - SelectionModel -} from '@angular/cdk/collections'; - -// RTL -export {Dir, Direction, Directionality, BidiModule} from './bidi/index'; - -export * from './option/index'; - -// Portals -export { - Portal, - PortalHost, - BasePortalHost, - ComponentPortal, - TemplatePortal -} from './portal/portal'; -export { - PortalHostDirective, - TemplatePortalDirective, - PortalModule, -} from './portal/portal-directives'; -export {DomPortalHost} from './portal/dom-portal-host'; - -// Platform -export * from '@angular/cdk/platform'; - -// Overlay -export * from '@angular/cdk/overlay'; - -// Gestures -export {GestureConfig} from './gestures/gesture-config'; -// Explicitly specify the interfaces which should be re-exported, because if everything -// is re-exported, module bundlers may run into issues with treeshaking. -export {HammerInput, HammerManager} from './gestures/gesture-annotations'; - -// Ripple -export * from './ripple/index'; - -// a11y -export { - AriaLivePoliteness, - LiveAnnouncer, - LIVE_ANNOUNCER_ELEMENT_TOKEN, - LIVE_ANNOUNCER_PROVIDER, - InteractivityChecker, - FocusTrap, - FocusTrapFactory, - FocusTrapDeprecatedDirective, - FocusTrapDirective, - isFakeMousedownFromScreenReader, - A11yModule, -} from '@angular/cdk/a11y'; - -export { - UniqueSelectionDispatcher, - UniqueSelectionDispatcherListener, - UNIQUE_SELECTION_DISPATCHER_PROVIDER, -} from './coordination/unique-selection-dispatcher'; - -export {MdLineModule, MdLine, MdLineSetter} from './line/line'; - -// Style -export * from './style/index'; - -// Keybindings -export * from './keyboard/keycodes'; - -export * from './compatibility/compatibility'; - -// Animation -export * from './animation/animation'; - -// Selection -export * from './selection/index'; - -// Compatibility -export {CompatibilityModule, NoConflictStyleCompatibilityMode} from './compatibility/compatibility'; - -// Common material module -export {MdCommonModule, MATERIAL_SANITY_CHECKS} from './common-behaviors/common-module'; - -// Datetime -export * from './datetime/index'; - -// Placeholder -export { - FloatPlaceholderType, - PlaceholderOptions, - MD_PLACEHOLDER_GLOBAL_OPTIONS -} from './placeholder/placeholder-options'; - -// Error -export { - ErrorStateMatcher, - ErrorOptions, - MD_ERROR_GLOBAL_OPTIONS, - defaultErrorStateMatcher, - showOnDirtyErrorStateMatcher -} from './error/error-options'; - -/** @deprecated */ -@NgModule({ - imports: [ - MdLineModule, - BidiModule, - MdRippleModule, - ObserversModule, - PortalModule, - OverlayModule, - A11yModule, - MdOptionModule, - MdPseudoCheckboxModule, - ], - exports: [ - MdLineModule, - BidiModule, - MdRippleModule, - ObserversModule, - PortalModule, - OverlayModule, - A11yModule, - MdOptionModule, - MdPseudoCheckboxModule, - ], -}) -export class MdCoreModule {} diff --git a/src/lib/core/index.ts b/src/lib/core/index.ts index 60d0a63c1f2e..f93e7c31d564 100644 --- a/src/lib/core/index.ts +++ b/src/lib/core/index.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './core'; +export * from './public_api'; diff --git a/src/lib/core/option/option.ts b/src/lib/core/option/option.ts index e675ab468615..09730a275466 100644 --- a/src/lib/core/option/option.ts +++ b/src/lib/core/option/option.ts @@ -21,7 +21,7 @@ import { } from '@angular/core'; import {ENTER, SPACE} from '../keyboard/keycodes'; import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import {MATERIAL_COMPATIBILITY_MODE} from '../../core/compatibility/compatibility'; +import {MATERIAL_COMPATIBILITY_MODE} from '../compatibility/compatibility'; import {MdOptgroup} from './optgroup'; /** diff --git a/src/lib/core/public_api.ts b/src/lib/core/public_api.ts new file mode 100644 index 000000000000..b13cbd5df890 --- /dev/null +++ b/src/lib/core/public_api.ts @@ -0,0 +1,36 @@ +/** + * @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 './a11y/index'; +export * from './animation/animation'; +export * from './bidi/index'; +export * from './common-behaviors/index'; +export * from './compatibility/compatibility'; +export * from './coordination/unique-selection-dispatcher'; +export * from './datetime/index'; +export * from './error/error-options'; +export * from './gestures/gesture-annotations'; +export * from './gestures/gesture-config'; +export * from './keyboard/keycodes'; +export * from './line/line'; +export * from './option/index'; +export * from './overlay/index'; +export * from './placeholder/placeholder-options'; +export * from './platform/index'; +export * from './portal/portal'; +export * from './portal/dom-portal-host'; +export * from './portal/portal-directives'; +export * from './portal/portal-injector'; +export * from './ripple/index'; +export * from './rxjs/index'; +export * from './selection/index'; +export * from './style/index'; +export * from './util/object-extend'; + +// TODO: don't have this +export * from './testing/month-constants'; diff --git a/src/lib/core/tsconfig-build.json b/src/lib/core/tsconfig-build.json new file mode 100644 index 000000000000..e053dfc9fea7 --- /dev/null +++ b/src/lib/core/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/core", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/datepicker/calendar.spec.ts b/src/lib/datepicker/calendar.spec.ts index 72ac3cd423a9..867a44c7616a 100644 --- a/src/lib/datepicker/calendar.spec.ts +++ b/src/lib/datepicker/calendar.spec.ts @@ -16,12 +16,12 @@ import { PAGE_UP, RIGHT_ARROW, UP_ARROW -} from '../core/keyboard/keycodes'; +} from '@angular/material/core'; import {MdDatepickerIntl} from './datepicker-intl'; -import {MdNativeDateModule} from '../core/datetime/index'; -import {NoConflictStyleCompatibilityMode} from '../core'; +import {MdNativeDateModule} from '@angular/material/core'; +import {NoConflictStyleCompatibilityMode} from '@angular/material/core'; import {MdButtonModule} from '../button/index'; -import {AUG, DEC, FEB, JAN, JUL, NOV, MAR, MAY, JUN, SEP} from '../core/testing/month-constants'; +import {AUG, DEC, FEB, JAN, JUL, NOV, MAR, MAY, JUN, SEP} from '@angular/material/core'; describe('MdCalendar', () => { beforeEach(async(() => { diff --git a/src/lib/datepicker/calendar.ts b/src/lib/datepicker/calendar.ts index a434e9c0b52d..fd4cb3f5fa1f 100644 --- a/src/lib/datepicker/calendar.ts +++ b/src/lib/datepicker/calendar.ts @@ -6,39 +6,42 @@ * found in the LICENSE file at https://angular.io/license */ +import { + DOWN_ARROW, + END, + ENTER, + HOME, + LEFT_ARROW, + PAGE_DOWN, + PAGE_UP, + RIGHT_ARROW, + UP_ARROW, +} from '@angular/cdk/keycodes'; import { AfterContentInit, ChangeDetectionStrategy, + ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, NgZone, + OnDestroy, Optional, Output, ViewEncapsulation, - ChangeDetectorRef, - OnDestroy, } from '@angular/core'; import { - DOWN_ARROW, - END, - ENTER, - HOME, - LEFT_ARROW, - PAGE_DOWN, - PAGE_UP, - RIGHT_ARROW, - UP_ARROW -} from '../core/keyboard/keycodes'; -import {DateAdapter} from '../core/datetime/index'; -import {MdDatepickerIntl} from './datepicker-intl'; -import {createMissingDateImplError} from './datepicker-errors'; -import {MD_DATE_FORMATS, MdDateFormats} from '../core/datetime/date-formats'; -import {MATERIAL_COMPATIBILITY_MODE} from '../core'; -import {first} from '../core/rxjs/index'; + DateAdapter, + MATERIAL_COMPATIBILITY_MODE, + MD_DATE_FORMATS, + MdDateFormats, +} from '@angular/material/core'; +import {first} from 'rxjs/operator/first'; import {Subscription} from 'rxjs/Subscription'; +import {createMissingDateImplError} from './datepicker-errors'; +import {MdDatepickerIntl} from './datepicker-intl'; /** diff --git a/src/lib/datepicker/datepicker-input.ts b/src/lib/datepicker/datepicker-input.ts index f44fac9d8f90..ab16cdf850b4 100644 --- a/src/lib/datepicker/datepicker-input.ts +++ b/src/lib/datepicker/datepicker-input.ts @@ -6,6 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ +import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {DOWN_ARROW} from '@angular/cdk/keycodes'; import { AfterContentInit, Directive, @@ -17,9 +19,8 @@ import { OnDestroy, Optional, Output, - Renderer2 + Renderer2, } from '@angular/core'; -import {MdDatepicker} from './datepicker'; import { AbstractControl, ControlValueAccessor, @@ -28,15 +29,13 @@ import { ValidationErrors, Validator, ValidatorFn, - Validators + Validators, } from '@angular/forms'; +import {DateAdapter, MD_DATE_FORMATS, MdDateFormats} from '@angular/material/core'; +import {MdFormField} from '@angular/material/form-field'; import {Subscription} from 'rxjs/Subscription'; -import {MdFormField} from '../form-field/index'; -import {DOWN_ARROW} from '../core/keyboard/keycodes'; -import {DateAdapter} from '../core/datetime/index'; +import {MdDatepicker} from './datepicker'; import {createMissingDateImplError} from './datepicker-errors'; -import {MD_DATE_FORMATS, MdDateFormats} from '../core/datetime/date-formats'; -import {coerceBooleanProperty} from '@angular/cdk/coercion'; export const MD_DATEPICKER_VALUE_ACCESSOR: any = { diff --git a/src/lib/datepicker/datepicker.spec.ts b/src/lib/datepicker/datepicker.spec.ts index 02158c0bbc6c..c488d6492710 100644 --- a/src/lib/datepicker/datepicker.spec.ts +++ b/src/lib/datepicker/datepicker.spec.ts @@ -1,21 +1,30 @@ +import {ESCAPE} from '@angular/cdk/keycodes'; +import {OverlayContainer} from '@angular/cdk/overlay'; +import { + createKeyboardEvent, + dispatchEvent, + dispatchFakeEvent, + dispatchMouseEvent, +} from '@angular/cdk/testing'; import {Component, ViewChild} from '@angular/core'; -import {async, ComponentFixture, TestBed, inject} from '@angular/core/testing'; -import {NoopAnimationsModule} from '@angular/platform-browser/animations'; +import {async, ComponentFixture, inject, TestBed} from '@angular/core/testing'; import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; +import { + DEC, + JAN, + MAT_DATE_LOCALE, + MdNativeDateModule, + NativeDateModule, + SEP, +} from '@angular/material/core'; +import {MdFormFieldModule} from '@angular/material/form-field'; import {By} from '@angular/platform-browser'; -import {OverlayContainer} from '@angular/cdk/overlay'; -import {ESCAPE} from '@angular/cdk/keycodes'; -import {dispatchFakeEvent, dispatchMouseEvent} from '@angular/cdk/testing'; -import {MdDatepickerModule, MdDatepickerIntl} from './index'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; +import {MdInputModule} from '../input/index'; import {MdDatepicker} from './datepicker'; import {MdDatepickerInput} from './datepicker-input'; -import {MdInputModule} from '../input/index'; -import {MdNativeDateModule} from '../core/datetime/index'; -import {DEC, JAN, SEP} from '../core/testing/month-constants'; -import {createKeyboardEvent, dispatchEvent} from '@angular/cdk/testing'; -import {MdFormFieldModule} from '../form-field/index'; -import {MAT_DATE_LOCALE} from '../core/datetime/date-adapter'; -import {NativeDateModule} from '../core/datetime/index'; +import {MdDatepickerIntl, MdDatepickerModule} from './index'; + describe('MdDatepicker', () => { afterEach(inject([OverlayContainer], (container: OverlayContainer) => { diff --git a/src/lib/datepicker/datepicker.ts b/src/lib/datepicker/datepicker.ts index 594b5e7bd6bf..df5c6190499e 100644 --- a/src/lib/datepicker/datepicker.ts +++ b/src/lib/datepicker/datepicker.ts @@ -6,6 +6,19 @@ * found in the LICENSE file at https://angular.io/license */ +import {Directionality} from '@angular/cdk/bidi'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {ESCAPE} from '@angular/cdk/keycodes'; +import { + Overlay, + OverlayRef, + OverlayState, + PositionStrategy, + RepositionScrollStrategy, + ScrollStrategy, +} from '@angular/cdk/overlay'; +import {ComponentPortal} from '@angular/cdk/portal'; +import {first} from '@angular/cdk/rxjs'; import { AfterContentInit, ChangeDetectionStrategy, @@ -23,31 +36,14 @@ import { ViewContainerRef, ViewEncapsulation, } from '@angular/core'; +import {DateAdapter} from '@angular/material/core'; +import {MdDialog, MdDialogRef} from '@angular/material/dialog'; import {DOCUMENT} from '@angular/platform-browser'; -import {first} from '@angular/cdk/rxjs'; -import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import { - Overlay, - OverlayRef, - OverlayState, - PositionStrategy, - RepositionScrollStrategy, - // This import is only used to define a generic type. The current TypeScript version incorrectly - // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) - // tslint:disable-next-line:no-unused-variable - ScrollStrategy, -} from '@angular/cdk/overlay'; -import {ComponentPortal} from '@angular/cdk/portal'; -import {Directionality} from '@angular/cdk/bidi'; -import {ESCAPE} from '@angular/cdk/keycodes'; -import {MdDialog} from '../dialog/dialog'; -import {MdDialogRef} from '../dialog/dialog-ref'; -import {MdDatepickerInput} from './datepicker-input'; -import {Subscription} from 'rxjs/Subscription'; import {Subject} from 'rxjs/Subject'; -import {DateAdapter} from '../core/datetime/index'; -import {createMissingDateImplError} from './datepicker-errors'; +import {Subscription} from 'rxjs/Subscription'; import {MdCalendar} from './calendar'; +import {createMissingDateImplError} from './datepicker-errors'; +import {MdDatepickerInput} from './datepicker-input'; /** Used to generate a unique ID for each datepicker instance. */ diff --git a/src/lib/datepicker/index.ts b/src/lib/datepicker/index.ts index e66a1a81b7c6..f93e7c31d564 100644 --- a/src/lib/datepicker/index.ts +++ b/src/lib/datepicker/index.ts @@ -6,74 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdMonthView} from './month-view'; -import {CommonModule} from '@angular/common'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {A11yModule} from '@angular/cdk/a11y'; -import {StyleModule} from '../core'; -import {MdCalendarBody} from './calendar-body'; -import {MdYearView} from './year-view'; -import { - MdDatepicker, - MdDatepickerContent, - MD_DATEPICKER_SCROLL_STRATEGY_PROVIDER, -} from './datepicker'; -import {MdDatepickerInput} from './datepicker-input'; -import {MdDialogModule} from '../dialog/index'; -import {MdCalendar} from './calendar'; -import {MdDatepickerToggle} from './datepicker-toggle'; -import {MdButtonModule} from '../button/index'; -import {MdDatepickerIntl} from './datepicker-intl'; -import {MdIconModule} from '../icon/index'; - - -export * from './calendar'; -export * from './calendar-body'; -export * from './datepicker'; -export * from './datepicker-input'; -export * from './datepicker-intl'; -export * from './datepicker-toggle'; -export * from './month-view'; -export * from './year-view'; - - -@NgModule({ - imports: [ - CommonModule, - MdButtonModule, - MdDialogModule, - MdIconModule, - OverlayModule, - StyleModule, - A11yModule, - ], - exports: [ - MdCalendar, - MdCalendarBody, - MdDatepicker, - MdDatepickerContent, - MdDatepickerInput, - MdDatepickerToggle, - MdMonthView, - MdYearView, - ], - declarations: [ - MdCalendar, - MdCalendarBody, - MdDatepicker, - MdDatepickerContent, - MdDatepickerInput, - MdDatepickerToggle, - MdMonthView, - MdYearView, - ], - providers: [ - MdDatepickerIntl, - MD_DATEPICKER_SCROLL_STRATEGY_PROVIDER, - ], - entryComponents: [ - MdDatepickerContent, - ] -}) -export class MdDatepickerModule {} +export * from './public_api'; diff --git a/src/lib/datepicker/month-view.spec.ts b/src/lib/datepicker/month-view.spec.ts index 224dd0ce0b8b..8b97849a85e8 100644 --- a/src/lib/datepicker/month-view.spec.ts +++ b/src/lib/datepicker/month-view.spec.ts @@ -3,8 +3,8 @@ import {Component} from '@angular/core'; import {By} from '@angular/platform-browser'; import {MdMonthView} from './month-view'; import {MdCalendarBody} from './calendar-body'; -import {MdNativeDateModule} from '../core/datetime/index'; -import {JAN, MAR} from '../core/testing/month-constants'; +import {MdNativeDateModule} from '@angular/material/core'; +import {JAN, MAR} from '@angular/material/core'; describe('MdMonthView', () => { beforeEach(async(() => { diff --git a/src/lib/datepicker/month-view.ts b/src/lib/datepicker/month-view.ts index dcae6a54f400..379d2edc1c18 100644 --- a/src/lib/datepicker/month-view.ts +++ b/src/lib/datepicker/month-view.ts @@ -15,12 +15,11 @@ import { Input, Optional, Output, - ViewEncapsulation + ViewEncapsulation, } from '@angular/core'; +import {DateAdapter, MD_DATE_FORMATS, MdDateFormats} from '@angular/material/core'; import {MdCalendarCell} from './calendar-body'; -import {DateAdapter} from '../core/datetime/index'; import {createMissingDateImplError} from './datepicker-errors'; -import {MD_DATE_FORMATS, MdDateFormats} from '../core/datetime/date-formats'; const DAYS_PER_WEEK = 7; diff --git a/src/lib/datepicker/public_api.ts b/src/lib/datepicker/public_api.ts new file mode 100644 index 000000000000..825e9a14e1cd --- /dev/null +++ b/src/lib/datepicker/public_api.ts @@ -0,0 +1,79 @@ +/** + * @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 {A11yModule} from '@angular/cdk/a11y'; +import {OverlayModule} from '@angular/cdk/overlay'; +import {CommonModule} from '@angular/common'; +import {NgModule} from '@angular/core'; +import {MdButtonModule} from '@angular/material/button'; +import {StyleModule} from '@angular/material/core'; +import {MdDialogModule} from '@angular/material/dialog'; +import {MdIconModule} from '@angular/material/icon'; +import {MdCalendar} from './calendar'; +import {MdCalendarBody} from './calendar-body'; +import { + MD_DATEPICKER_SCROLL_STRATEGY_PROVIDER, + MdDatepicker, + MdDatepickerContent, +} from './datepicker'; +import {MdDatepickerInput} from './datepicker-input'; +import {MdDatepickerIntl} from './datepicker-intl'; +import {MdDatepickerToggle} from './datepicker-toggle'; +import {MdMonthView} from './month-view'; +import {MdYearView} from './year-view'; + + +export * from './calendar'; +export * from './calendar-body'; +export * from './datepicker'; +export * from './datepicker-input'; +export * from './datepicker-intl'; +export * from './datepicker-toggle'; +export * from './month-view'; +export * from './year-view'; + + +@NgModule({ + imports: [ + CommonModule, + MdButtonModule, + MdDialogModule, + MdIconModule, + OverlayModule, + StyleModule, + A11yModule, + ], + exports: [ + MdCalendar, + MdCalendarBody, + MdDatepicker, + MdDatepickerContent, + MdDatepickerInput, + MdDatepickerToggle, + MdMonthView, + MdYearView, + ], + declarations: [ + MdCalendar, + MdCalendarBody, + MdDatepicker, + MdDatepickerContent, + MdDatepickerInput, + MdDatepickerToggle, + MdMonthView, + MdYearView, + ], + providers: [ + MdDatepickerIntl, + MD_DATEPICKER_SCROLL_STRATEGY_PROVIDER, + ], + entryComponents: [ + MdDatepickerContent, + ] +}) +export class MdDatepickerModule {} diff --git a/src/lib/datepicker/tsconfig-build.json b/src/lib/datepicker/tsconfig-build.json new file mode 100644 index 000000000000..97ca0946f88a --- /dev/null +++ b/src/lib/datepicker/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/datepicker", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/datepicker/year-view.spec.ts b/src/lib/datepicker/year-view.spec.ts index f44ec3ac9f91..ee68a91e7134 100644 --- a/src/lib/datepicker/year-view.spec.ts +++ b/src/lib/datepicker/year-view.spec.ts @@ -3,8 +3,8 @@ import {Component, ViewChild} from '@angular/core'; import {By} from '@angular/platform-browser'; import {MdYearView} from './year-view'; import {MdCalendarBody} from './calendar-body'; -import {MdNativeDateModule} from '../core/datetime/index'; -import {FEB, JAN, JUL, JUN, MAR} from '../core/testing/month-constants'; +import {MdNativeDateModule} from '@angular/material/core'; +import {FEB, JAN, JUL, JUN, MAR} from '@angular/material/core'; describe('MdYearView', () => { beforeEach(async(() => { diff --git a/src/lib/datepicker/year-view.ts b/src/lib/datepicker/year-view.ts index e382b1a17d65..81560fbf93ee 100644 --- a/src/lib/datepicker/year-view.ts +++ b/src/lib/datepicker/year-view.ts @@ -15,12 +15,11 @@ import { Input, Optional, Output, - ViewEncapsulation + ViewEncapsulation, } from '@angular/core'; +import {DateAdapter, MD_DATE_FORMATS, MdDateFormats} from '@angular/material/core'; import {MdCalendarCell} from './calendar-body'; -import {DateAdapter} from '../core/datetime/index'; import {createMissingDateImplError} from './datepicker-errors'; -import {MD_DATE_FORMATS, MdDateFormats} from '../core/datetime/date-formats'; /** diff --git a/src/lib/dialog/dialog.ts b/src/lib/dialog/dialog.ts index a398f3dde736..86865578919c 100644 --- a/src/lib/dialog/dialog.ts +++ b/src/lib/dialog/dialog.ts @@ -6,6 +6,17 @@ * found in the LICENSE file at https://angular.io/license */ +import {ESCAPE} from '@angular/cdk/keycodes'; +import { + BlockScrollStrategy, + Overlay, + OverlayRef, + OverlayState, + ScrollStrategy, +} from '@angular/cdk/overlay'; +import {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal'; +import {startWith} from '@angular/cdk/rxjs'; +import {Location} from '@angular/common'; import { ComponentRef, Inject, @@ -16,28 +27,13 @@ import { SkipSelf, TemplateRef, } from '@angular/core'; -import {Location} from '@angular/common'; -import {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal'; -import { - BlockScrollStrategy, - Overlay, - OverlayRef, - OverlayState, - // This import is only used to define a generic type. The current TypeScript version incorrectly - // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) - // tslint:disable-next-line:no-unused-variable - ScrollStrategy, -} from '@angular/cdk/overlay'; -import {ESCAPE} from '@angular/cdk/keycodes'; -import {startWith} from '@angular/cdk/rxjs'; +import {extendObject, PortalInjector} from '@angular/material/core'; import {Observable} from 'rxjs/Observable'; -import {Subject} from 'rxjs/Subject'; import {defer} from 'rxjs/observable/defer'; -import {PortalInjector} from '../core/portal/portal-injector'; -import {extendObject} from '../core/util/object-extend'; +import {Subject} from 'rxjs/Subject'; import {MdDialogConfig} from './dialog-config'; -import {MdDialogRef} from './dialog-ref'; import {MdDialogContainer} from './dialog-container'; +import {MdDialogRef} from './dialog-ref'; export const MD_DIALOG_DATA = new InjectionToken('MdDialogData'); diff --git a/src/lib/dialog/index.ts b/src/lib/dialog/index.ts index ea9468cb3ae7..f93e7c31d564 100644 --- a/src/lib/dialog/index.ts +++ b/src/lib/dialog/index.ts @@ -6,55 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {PortalModule} from '@angular/cdk/portal'; -import {A11yModule} from '@angular/cdk/a11y'; -import {MdCommonModule} from '../core'; -import {MdDialog, MD_DIALOG_SCROLL_STRATEGY_PROVIDER} from './dialog'; -import {MdDialogContainer} from './dialog-container'; -import { - MdDialogClose, - MdDialogContent, - MdDialogTitle, - MdDialogActions -} from './dialog-content-directives'; - - -@NgModule({ - imports: [ - CommonModule, - OverlayModule, - PortalModule, - A11yModule, - MdCommonModule, - ], - exports: [ - MdDialogContainer, - MdDialogClose, - MdDialogTitle, - MdDialogContent, - MdDialogActions, - MdCommonModule, - ], - declarations: [ - MdDialogContainer, - MdDialogClose, - MdDialogTitle, - MdDialogActions, - MdDialogContent, - ], - providers: [ - MdDialog, - MD_DIALOG_SCROLL_STRATEGY_PROVIDER, - ], - entryComponents: [MdDialogContainer], -}) -export class MdDialogModule {} - -export * from './dialog'; -export * from './dialog-container'; -export * from './dialog-content-directives'; -export * from './dialog-config'; -export * from './dialog-ref'; +export * from './public_api'; diff --git a/src/lib/dialog/public_api.ts b/src/lib/dialog/public_api.ts new file mode 100644 index 000000000000..39b5352d1ae2 --- /dev/null +++ b/src/lib/dialog/public_api.ts @@ -0,0 +1,60 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {OverlayModule} from '@angular/cdk/overlay'; +import {PortalModule} from '@angular/cdk/portal'; +import {A11yModule} from '@angular/cdk/a11y'; +import {MdCommonModule} from '@angular/material/core'; +import {MdDialog, MD_DIALOG_SCROLL_STRATEGY_PROVIDER} from './dialog'; +import {MdDialogContainer} from './dialog-container'; +import { + MdDialogClose, + MdDialogContent, + MdDialogTitle, + MdDialogActions +} from './dialog-content-directives'; + + +@NgModule({ + imports: [ + CommonModule, + OverlayModule, + PortalModule, + A11yModule, + MdCommonModule, + ], + exports: [ + MdDialogContainer, + MdDialogClose, + MdDialogTitle, + MdDialogContent, + MdDialogActions, + MdCommonModule, + ], + declarations: [ + MdDialogContainer, + MdDialogClose, + MdDialogTitle, + MdDialogActions, + MdDialogContent, + ], + providers: [ + MdDialog, + MD_DIALOG_SCROLL_STRATEGY_PROVIDER, + ], + entryComponents: [MdDialogContainer], +}) +export class MdDialogModule {} + +export * from './dialog'; +export * from './dialog-container'; +export * from './dialog-content-directives'; +export * from './dialog-config'; +export * from './dialog-ref'; diff --git a/src/lib/dialog/tsconfig-build.json b/src/lib/dialog/tsconfig-build.json new file mode 100644 index 000000000000..09c13c1babf8 --- /dev/null +++ b/src/lib/dialog/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/dialog", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/expansion/accordion-item.ts b/src/lib/expansion/accordion-item.ts index 9354782b7b38..a1a83054aa29 100644 --- a/src/lib/expansion/accordion-item.ts +++ b/src/lib/expansion/accordion-item.ts @@ -15,7 +15,7 @@ import { Optional, ChangeDetectorRef, } from '@angular/core'; -import {UniqueSelectionDispatcher} from '../core'; +import {UniqueSelectionDispatcher} from '@angular/material/core'; import {CdkAccordion} from './accordion'; /** Used to generate unique ID for each expansion panel. */ diff --git a/src/lib/expansion/expansion-panel-header.ts b/src/lib/expansion/expansion-panel-header.ts index 05cc1a2d71b2..d6657d751331 100644 --- a/src/lib/expansion/expansion-panel-header.ts +++ b/src/lib/expansion/expansion-panel-header.ts @@ -25,10 +25,10 @@ import { transition, animate, } from '@angular/animations'; -import {SPACE, ENTER} from '../core/keyboard/keycodes'; +import {SPACE, ENTER} from '@angular/material/core'; import {MdExpansionPanel, EXPANSION_PANEL_ANIMATION_TIMING} from './expansion-panel'; -import {filter} from '../core/rxjs/index'; -import {FocusOriginMonitor} from '../core/style/index'; +import {filter} from '@angular/material/core'; +import {FocusOriginMonitor} from '@angular/material/core'; import {merge} from 'rxjs/observable/merge'; import {Subscription} from 'rxjs/Subscription'; diff --git a/src/lib/expansion/expansion-panel.ts b/src/lib/expansion/expansion-panel.ts index 7ca383bc3f49..8b76f72970ec 100644 --- a/src/lib/expansion/expansion-panel.ts +++ b/src/lib/expansion/expansion-panel.ts @@ -6,32 +6,26 @@ * found in the LICENSE file at https://angular.io/license */ +import {animate, state, style, transition, trigger} from '@angular/animations'; import { + ChangeDetectionStrategy, + ChangeDetectorRef, Component, Directive, + forwardRef, Host, Input, - ViewEncapsulation, - Optional, - forwardRef, - ChangeDetectionStrategy, - ChangeDetectorRef, - SimpleChanges, OnChanges, OnDestroy, + Optional, + SimpleChanges, + ViewEncapsulation, } from '@angular/core'; -import { - trigger, - state, - style, - transition, - animate, -} from '@angular/animations'; +import {CanDisable, mixinDisabled, UniqueSelectionDispatcher} from '@angular/material/core'; +import {Subject} from 'rxjs/Subject'; import {MdAccordion} from './accordion'; import {AccordionItem} from './accordion-item'; -import {UniqueSelectionDispatcher} from '../core'; -import {mixinDisabled, CanDisable} from '../core/common-behaviors/disabled'; -import {Subject} from 'rxjs/Subject'; + // Boilerplate for applying mixins to MdExpansionPanel. /** @docs-private */ diff --git a/src/lib/expansion/index.ts b/src/lib/expansion/index.ts index 0f6b43b2a946..f93e7c31d564 100644 --- a/src/lib/expansion/index.ts +++ b/src/lib/expansion/index.ts @@ -6,60 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {CompatibilityModule, StyleModule, UNIQUE_SELECTION_DISPATCHER_PROVIDER} from '../core'; -import { - MdExpansionPanelHeader, - MdExpansionPanelDescription, - MdExpansionPanelTitle -} from './expansion-panel-header'; -import { - MdExpansionPanel, - MdExpansionPanelActionRow, -} from './expansion-panel'; -import { - CdkAccordion, - MdAccordion, -} from './accordion'; - -@NgModule({ - imports: [CompatibilityModule, CommonModule, StyleModule], - exports: [ - CdkAccordion, - MdAccordion, - MdExpansionPanel, - MdExpansionPanelActionRow, - MdExpansionPanelHeader, - MdExpansionPanelTitle, - MdExpansionPanelDescription - ], - declarations: [ - CdkAccordion, - MdAccordion, - MdExpansionPanel, - MdExpansionPanelActionRow, - MdExpansionPanelHeader, - MdExpansionPanelTitle, - MdExpansionPanelDescription - ], - providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER] -}) -export class MdExpansionModule {} - -export { - CdkAccordion, - MdAccordion, - MdAccordionDisplayMode -} from './accordion'; -export {AccordionItem} from './accordion-item'; -export { - MdExpansionPanel, - MdExpansionPanelState, - MdExpansionPanelActionRow -} from './expansion-panel'; -export { - MdExpansionPanelHeader, - MdExpansionPanelDescription, - MdExpansionPanelTitle -} from './expansion-panel-header'; +export * from './public_api'; diff --git a/src/lib/expansion/public_api.ts b/src/lib/expansion/public_api.ts new file mode 100644 index 000000000000..aea8a512c2f0 --- /dev/null +++ b/src/lib/expansion/public_api.ts @@ -0,0 +1,65 @@ +/** + * @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 { + CompatibilityModule, + StyleModule, + UNIQUE_SELECTION_DISPATCHER_PROVIDER, +} from '@angular/material/core'; +import {CdkAccordion, MdAccordion} from './accordion'; +import {MdExpansionPanel, MdExpansionPanelActionRow} from './expansion-panel'; +import { + MdExpansionPanelDescription, + MdExpansionPanelHeader, + MdExpansionPanelTitle, +} from './expansion-panel-header'; + + +@NgModule({ + imports: [CompatibilityModule, CommonModule, StyleModule], + exports: [ + CdkAccordion, + MdAccordion, + MdExpansionPanel, + MdExpansionPanelActionRow, + MdExpansionPanelHeader, + MdExpansionPanelTitle, + MdExpansionPanelDescription + ], + declarations: [ + CdkAccordion, + MdAccordion, + MdExpansionPanel, + MdExpansionPanelActionRow, + MdExpansionPanelHeader, + MdExpansionPanelTitle, + MdExpansionPanelDescription + ], + providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER] +}) +export class MdExpansionModule {} + +export { + CdkAccordion, + MdAccordion, + MdAccordionDisplayMode +} from './accordion'; +export {AccordionItem} from './accordion-item'; +export { + MdExpansionPanel, + MdExpansionPanelState, + MdExpansionPanelActionRow +} from './expansion-panel'; +export { + MdExpansionPanelHeader, + MdExpansionPanelDescription, + MdExpansionPanelTitle +} from './expansion-panel-header'; + diff --git a/src/lib/expansion/tsconfig-build.json b/src/lib/expansion/tsconfig-build.json new file mode 100644 index 000000000000..e8334a21f70b --- /dev/null +++ b/src/lib/expansion/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/expansion", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/form-field/form-field.ts b/src/lib/form-field/form-field.ts index bf545b58453d..e986fd30d8b2 100644 --- a/src/lib/form-field/form-field.ts +++ b/src/lib/form-field/form-field.ts @@ -6,6 +6,9 @@ * found in the LICENSE file at https://angular.io/license */ +import {animate, state, style, transition, trigger} from '@angular/animations'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {first, startWith} from '@angular/cdk/rxjs'; import { AfterContentChecked, AfterContentInit, @@ -23,26 +26,23 @@ import { ViewChild, ViewEncapsulation, } from '@angular/core'; -import {animate, state, style, transition, trigger} from '@angular/animations'; -import {coerceBooleanProperty} from '../core'; -import { - getMdFormFieldDuplicatedHintError, - getMdFormFieldMissingControlError, - getMdFormFieldPlaceholderConflictError, -} from './form-field-errors'; import { FloatPlaceholderType, MD_PLACEHOLDER_GLOBAL_OPTIONS, - PlaceholderOptions -} from '../core/placeholder/placeholder-options'; -import {startWith, first} from '@angular/cdk/rxjs'; + PlaceholderOptions, +} from '@angular/material/core'; +import {fromEvent} from 'rxjs/observable/fromEvent'; import {MdError} from './error'; import {MdFormFieldControl} from './form-field-control'; +import { + getMdFormFieldDuplicatedHintError, + getMdFormFieldMissingControlError, + getMdFormFieldPlaceholderConflictError, +} from './form-field-errors'; import {MdHint} from './hint'; import {MdPlaceholder} from './placeholder'; import {MdPrefix} from './prefix'; import {MdSuffix} from './suffix'; -import {fromEvent} from 'rxjs/observable/fromEvent'; let nextUniqueId = 0; diff --git a/src/lib/form-field/index.ts b/src/lib/form-field/index.ts index 71d8b6164677..f93e7c31d564 100644 --- a/src/lib/form-field/index.ts +++ b/src/lib/form-field/index.ts @@ -6,48 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdError} from './error'; -import {MdFormField} from './form-field'; -import {MdHint} from './hint'; -import {MdPlaceholder} from './placeholder'; -import {MdPrefix} from './prefix'; -import {MdSuffix} from './suffix'; -import {CommonModule} from '@angular/common'; -import {PlatformModule} from '../core/platform/index'; - - -@NgModule({ - declarations: [ - MdError, - MdHint, - MdFormField, - MdPlaceholder, - MdPrefix, - MdSuffix, - ], - imports: [ - CommonModule, - PlatformModule, - ], - exports: [ - MdError, - MdHint, - MdFormField, - MdPlaceholder, - MdPrefix, - MdSuffix, - ], -}) -export class MdFormFieldModule {} - - -export * from './error'; -export * from './form-field'; -export * from './form-field-control'; -export * from './form-field-errors'; -export * from './hint'; -export * from './placeholder'; -export * from './prefix'; -export * from './suffix'; - +export * from './public_api'; diff --git a/src/lib/form-field/public_api.ts b/src/lib/form-field/public_api.ts new file mode 100644 index 000000000000..eb3047954a48 --- /dev/null +++ b/src/lib/form-field/public_api.ts @@ -0,0 +1,53 @@ +/** + * @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 {MdError} from './error'; +import {MdFormField} from './form-field'; +import {MdHint} from './hint'; +import {MdPlaceholder} from './placeholder'; +import {MdPrefix} from './prefix'; +import {MdSuffix} from './suffix'; +import {CommonModule} from '@angular/common'; +import {PlatformModule} from '@angular/material/core'; + + +@NgModule({ + declarations: [ + MdError, + MdHint, + MdFormField, + MdPlaceholder, + MdPrefix, + MdSuffix, + ], + imports: [ + CommonModule, + PlatformModule, + ], + exports: [ + MdError, + MdHint, + MdFormField, + MdPlaceholder, + MdPrefix, + MdSuffix, + ], +}) +export class MdFormFieldModule {} + + +export * from './error'; +export * from './form-field'; +export * from './form-field-control'; +export * from './form-field-errors'; +export * from './hint'; +export * from './placeholder'; +export * from './prefix'; +export * from './suffix'; + diff --git a/src/lib/form-field/tsconfig-build.json b/src/lib/form-field/tsconfig-build.json new file mode 100644 index 000000000000..b140fb2b357e --- /dev/null +++ b/src/lib/form-field/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/form-field", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/grid-list/grid-tile.ts b/src/lib/grid-list/grid-tile.ts index d2f57a9ef46a..72b1d9427ca6 100644 --- a/src/lib/grid-list/grid-tile.ts +++ b/src/lib/grid-list/grid-tile.ts @@ -18,7 +18,7 @@ import { Directive, ChangeDetectionStrategy, } from '@angular/core'; -import {MdLine, MdLineSetter} from '../core'; +import {MdLine, MdLineSetter} from '@angular/material/core'; import {coerceToNumber} from './grid-list-measure'; @Component({ diff --git a/src/lib/grid-list/index.ts b/src/lib/grid-list/index.ts index 66e84f2b73cb..f93e7c31d564 100644 --- a/src/lib/grid-list/index.ts +++ b/src/lib/grid-list/index.ts @@ -6,38 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdLineModule, MdCommonModule} from '../core'; -import { - MdGridTile, MdGridTileText, MdGridTileFooterCssMatStyler, - MdGridTileHeaderCssMatStyler, MdGridAvatarCssMatStyler -} from './grid-tile'; -import {MdGridList} from './grid-list'; - - -@NgModule({ - imports: [MdLineModule, MdCommonModule], - exports: [ - MdGridList, - MdGridTile, - MdGridTileText, - MdLineModule, - MdCommonModule, - MdGridTileHeaderCssMatStyler, - MdGridTileFooterCssMatStyler, - MdGridAvatarCssMatStyler - ], - declarations: [ - MdGridList, - MdGridTile, - MdGridTileText, - MdGridTileHeaderCssMatStyler, - MdGridTileFooterCssMatStyler, - MdGridAvatarCssMatStyler - ], -}) -export class MdGridListModule {} - - -export * from './grid-list'; -export {MdGridTile} from './grid-tile'; +export * from './public_api'; diff --git a/src/lib/grid-list/public_api.ts b/src/lib/grid-list/public_api.ts new file mode 100644 index 000000000000..78917c713df4 --- /dev/null +++ b/src/lib/grid-list/public_api.ts @@ -0,0 +1,43 @@ +/** + * @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 {MdLineModule, MdCommonModule} from '@angular/material/core'; +import { + MdGridTile, MdGridTileText, MdGridTileFooterCssMatStyler, + MdGridTileHeaderCssMatStyler, MdGridAvatarCssMatStyler +} from './grid-tile'; +import {MdGridList} from './grid-list'; + + +@NgModule({ + imports: [MdLineModule, MdCommonModule], + exports: [ + MdGridList, + MdGridTile, + MdGridTileText, + MdLineModule, + MdCommonModule, + MdGridTileHeaderCssMatStyler, + MdGridTileFooterCssMatStyler, + MdGridAvatarCssMatStyler + ], + declarations: [ + MdGridList, + MdGridTile, + MdGridTileText, + MdGridTileHeaderCssMatStyler, + MdGridTileFooterCssMatStyler, + MdGridAvatarCssMatStyler + ], +}) +export class MdGridListModule {} + + +export * from './grid-list'; +export {MdGridTile} from './grid-tile'; diff --git a/src/lib/grid-list/tsconfig-build.json b/src/lib/grid-list/tsconfig-build.json new file mode 100644 index 000000000000..16701dc99e35 --- /dev/null +++ b/src/lib/grid-list/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/grid-list", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/icon/icon-registry.ts b/src/lib/icon/icon-registry.ts index ccc46cb09148..3507ef0f30f0 100644 --- a/src/lib/icon/icon-registry.ts +++ b/src/lib/icon/icon-registry.ts @@ -6,14 +6,21 @@ * found in the LICENSE file at https://angular.io/license */ -import {Injectable, SecurityContext, Optional, SkipSelf} from '@angular/core'; -import {SafeResourceUrl, DomSanitizer} from '@angular/platform-browser'; +import {Injectable, Optional, SecurityContext, SkipSelf} from '@angular/core'; import {Http} from '@angular/http'; +import { + catchOperator, + doOperator, + finallyOperator, + map, + RxChain, + share, +} from '@angular/material/core'; +import {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser'; import {Observable} from 'rxjs/Observable'; -import {_throw as observableThrow} from 'rxjs/observable/throw'; -import {of as observableOf} from 'rxjs/observable/of'; import {forkJoin} from 'rxjs/observable/forkJoin'; -import {RxChain, map, doOperator, catchOperator, finallyOperator, share} from '../core/rxjs/index'; +import {of as observableOf} from 'rxjs/observable/of'; +import {_throw as observableThrow} from 'rxjs/observable/throw'; /** * Returns an exception to be thrown in the case when attempting to @@ -272,7 +279,7 @@ export class MdIconRegistry { // Not found in any cached icon sets. If there are icon sets with URLs that we haven't // fetched, fetch them now and look for iconName in the results. - const iconSetFetchRequests: Observable[] = iconSetConfigs + const iconSetFetchRequests: Observable[] = iconSetConfigs .filter(iconSetConfig => !iconSetConfig.svgElement) .map(iconSetConfig => { return RxChain.from(this._loadSvgIconSetFromConfig(iconSetConfig)) diff --git a/src/lib/icon/icon.ts b/src/lib/icon/icon.ts index b959b434a2a9..b10ddcf96953 100644 --- a/src/lib/icon/icon.ts +++ b/src/lib/icon/icon.ts @@ -19,8 +19,8 @@ import { Attribute, } from '@angular/core'; import {MdIconRegistry} from './icon-registry'; -import {CanColor, mixinColor} from '../core/common-behaviors/color'; -import {first} from '../core/rxjs/index'; +import {CanColor, mixinColor} from '@angular/material/core'; +import {first} from '@angular/material/core'; // Boilerplate for applying mixins to MdIcon. diff --git a/src/lib/icon/index.ts b/src/lib/icon/index.ts index 12c584996da7..f93e7c31d564 100644 --- a/src/lib/icon/index.ts +++ b/src/lib/icon/index.ts @@ -6,20 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdCommonModule} from '../core'; -import {MdIcon} from './icon'; -import {ICON_REGISTRY_PROVIDER} from './icon-registry'; - - -@NgModule({ - imports: [MdCommonModule], - exports: [MdIcon, MdCommonModule], - declarations: [MdIcon], - providers: [ICON_REGISTRY_PROVIDER], -}) -export class MdIconModule {} - - -export * from './icon'; -export * from './icon-registry'; +export * from './public_api'; diff --git a/src/lib/icon/public_api.ts b/src/lib/icon/public_api.ts new file mode 100644 index 000000000000..94a2329bd913 --- /dev/null +++ b/src/lib/icon/public_api.ts @@ -0,0 +1,25 @@ +/** + * @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 {MdCommonModule} from '@angular/material/core'; +import {MdIcon} from './icon'; +import {ICON_REGISTRY_PROVIDER} from './icon-registry'; + + +@NgModule({ + imports: [MdCommonModule], + exports: [MdIcon, MdCommonModule], + declarations: [MdIcon], + providers: [ICON_REGISTRY_PROVIDER], +}) +export class MdIconModule {} + + +export * from './icon'; +export * from './icon-registry'; diff --git a/src/lib/icon/tsconfig-build.json b/src/lib/icon/tsconfig-build.json new file mode 100644 index 000000000000..34954d67357d --- /dev/null +++ b/src/lib/icon/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/icon", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/input/index.ts b/src/lib/input/index.ts index 495d4e8c37f7..f93e7c31d564 100644 --- a/src/lib/input/index.ts +++ b/src/lib/input/index.ts @@ -6,36 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdInput} from './input'; -import {MdTextareaAutosize} from './autosize'; -import {CommonModule} from '@angular/common'; -import {PlatformModule} from '../core/platform/index'; -import {MdFormFieldModule} from '../form-field/index'; - - -@NgModule({ - declarations: [ - MdInput, - MdTextareaAutosize, - ], - imports: [ - CommonModule, - MdFormFieldModule, - PlatformModule, - ], - exports: [ - // We re-export the `MdFormFieldModule` since `MdInput` will almost always be used together with - // `MdFormField`. - MdFormFieldModule, - MdInput, - MdTextareaAutosize, - ], -}) -export class MdInputModule {} - - -export * from './autosize'; -export * from './input'; -export * from './input-errors'; - +export * from './public_api'; diff --git a/src/lib/input/input.spec.ts b/src/lib/input/input.spec.ts index 1ff06bd7b6eb..a960c88017e3 100644 --- a/src/lib/input/input.spec.ts +++ b/src/lib/input/input.spec.ts @@ -13,8 +13,8 @@ import {By} from '@angular/platform-browser'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {MdInputModule} from './index'; import {MdInput} from './input'; -import {Platform} from '../core/platform/platform'; -import {PlatformModule} from '../core/platform/index'; +import {Platform} from '@angular/material/core'; +import {PlatformModule} from '@angular/material/core'; import {wrappedErrorMessage, dispatchFakeEvent, createFakeEvent} from '@angular/cdk/testing'; import { MdFormField, @@ -22,9 +22,9 @@ import { getMdFormFieldDuplicatedHintError, getMdFormFieldMissingControlError, getMdFormFieldPlaceholderConflictError, -} from '../form-field/index'; -import {MD_PLACEHOLDER_GLOBAL_OPTIONS} from '../core/placeholder/placeholder-options'; -import {MD_ERROR_GLOBAL_OPTIONS, showOnDirtyErrorStateMatcher} from '../core/error/error-options'; +} from '@angular/material/form-field'; +import {MD_PLACEHOLDER_GLOBAL_OPTIONS} from '@angular/material/core'; +import {MD_ERROR_GLOBAL_OPTIONS, showOnDirtyErrorStateMatcher} from '@angular/material/core'; describe('MdInput without forms', function () { beforeEach(async(() => { diff --git a/src/lib/input/input.ts b/src/lib/input/input.ts index ff23a0e4520b..8a3df761e601 100644 --- a/src/lib/input/input.ts +++ b/src/lib/input/input.ts @@ -27,9 +27,9 @@ import { ErrorOptions, ErrorStateMatcher, MD_ERROR_GLOBAL_OPTIONS -} from '../core/error/error-options'; +} from '@angular/material/core'; import {Subject} from 'rxjs/Subject'; -import {MdFormFieldControl} from '../form-field/index'; +import {MdFormFieldControl} from '@angular/material/form-field'; // Invalid input type. Using one of these will throw an MdInputUnsupportedTypeError. const MD_INPUT_INVALID_TYPES = [ diff --git a/src/lib/input/public_api.ts b/src/lib/input/public_api.ts new file mode 100644 index 000000000000..eafbd183b27b --- /dev/null +++ b/src/lib/input/public_api.ts @@ -0,0 +1,41 @@ +/** + * @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 {MdInput} from './input'; +import {MdTextareaAutosize} from './autosize'; +import {CommonModule} from '@angular/common'; +import {PlatformModule} from '@angular/material/core'; +import {MdFormFieldModule} from '@angular/material/form-field'; + + +@NgModule({ + declarations: [ + MdInput, + MdTextareaAutosize, + ], + imports: [ + CommonModule, + MdFormFieldModule, + PlatformModule, + ], + exports: [ + // We re-export the `MdFormFieldModule` since `MdInput` will almost always be used together with + // `MdFormField`. + MdFormFieldModule, + MdInput, + MdTextareaAutosize, + ], +}) +export class MdInputModule {} + + +export * from './autosize'; +export * from './input'; +export * from './input-errors'; + diff --git a/src/lib/input/tsconfig-build.json b/src/lib/input/tsconfig-build.json new file mode 100644 index 000000000000..22083bcdbe92 --- /dev/null +++ b/src/lib/input/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/input", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/list/index.ts b/src/lib/list/index.ts index ad7ed22da623..f93e7c31d564 100644 --- a/src/lib/list/index.ts +++ b/src/lib/list/index.ts @@ -6,56 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdCommonModule, MdLineModule, MdPseudoCheckboxModule, MdRippleModule} from '../core'; -import {CommonModule} from '@angular/common'; -import { - MdDividerCssMatStyler, - MdList, - MdListAvatarCssMatStyler, - MdListCssMatStyler, - MdListDivider, - MdListIconCssMatStyler, - MdListItem, - MdListSubheaderCssMatStyler, - MdNavListCssMatStyler -} from './list'; -import {MdListOption, MdSelectionList} from './selection-list'; - -@NgModule({ - imports: [MdLineModule, MdRippleModule, MdCommonModule, MdPseudoCheckboxModule, CommonModule], - exports: [ - MdList, - MdListItem, - MdListDivider, - MdListAvatarCssMatStyler, - MdLineModule, - MdCommonModule, - MdListIconCssMatStyler, - MdListCssMatStyler, - MdNavListCssMatStyler, - MdDividerCssMatStyler, - MdListSubheaderCssMatStyler, - MdPseudoCheckboxModule, - MdSelectionList, - MdListOption - ], - declarations: [ - MdList, - MdListItem, - MdListDivider, - MdListAvatarCssMatStyler, - MdListIconCssMatStyler, - MdListCssMatStyler, - MdNavListCssMatStyler, - MdDividerCssMatStyler, - MdListSubheaderCssMatStyler, - MdSelectionList, - MdListOption - ], -}) -export class MdListModule {} - - -export * from './list'; -export * from './selection-list'; +export * from './public_api'; diff --git a/src/lib/list/list.ts b/src/lib/list/list.ts index 3b9205e74211..ef345319f1f2 100644 --- a/src/lib/list/list.ts +++ b/src/lib/list/list.ts @@ -19,8 +19,8 @@ import { ViewEncapsulation, ChangeDetectionStrategy, } from '@angular/core'; -import {MdLine, MdLineSetter} from '../core'; -import {CanDisableRipple, mixinDisableRipple} from '../core/common-behaviors/disable-ripple'; +import {MdLine, MdLineSetter} from '@angular/material/core'; +import {CanDisableRipple, mixinDisableRipple} from '@angular/material/core'; // Boilerplate for applying mixins to MdList. /** @docs-private */ diff --git a/src/lib/list/public_api.ts b/src/lib/list/public_api.ts new file mode 100644 index 000000000000..4f88dea8fccd --- /dev/null +++ b/src/lib/list/public_api.ts @@ -0,0 +1,67 @@ +/** + * @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 { + MdCommonModule, + MdLineModule, + MdPseudoCheckboxModule, + MdRippleModule, +} from '@angular/material/core'; +import { + MdDividerCssMatStyler, + MdList, + MdListAvatarCssMatStyler, + MdListCssMatStyler, + MdListDivider, + MdListIconCssMatStyler, + MdListItem, + MdListSubheaderCssMatStyler, + MdNavListCssMatStyler, +} from './list'; +import {MdListOption, MdSelectionList} from './selection-list'; + + +@NgModule({ + imports: [MdLineModule, MdRippleModule, MdCommonModule, MdPseudoCheckboxModule, CommonModule], + exports: [ + MdList, + MdListItem, + MdListDivider, + MdListAvatarCssMatStyler, + MdLineModule, + MdCommonModule, + MdListIconCssMatStyler, + MdListCssMatStyler, + MdNavListCssMatStyler, + MdDividerCssMatStyler, + MdListSubheaderCssMatStyler, + MdPseudoCheckboxModule, + MdSelectionList, + MdListOption + ], + declarations: [ + MdList, + MdListItem, + MdListDivider, + MdListAvatarCssMatStyler, + MdListIconCssMatStyler, + MdListCssMatStyler, + MdNavListCssMatStyler, + MdDividerCssMatStyler, + MdListSubheaderCssMatStyler, + MdSelectionList, + MdListOption + ], +}) +export class MdListModule {} + + +export * from './list'; +export * from './selection-list'; diff --git a/src/lib/list/selection-list.spec.ts b/src/lib/list/selection-list.spec.ts index ed0103933eb4..623cde717a65 100644 --- a/src/lib/list/selection-list.spec.ts +++ b/src/lib/list/selection-list.spec.ts @@ -3,8 +3,8 @@ import {Component, DebugElement} from '@angular/core'; import {By} from '@angular/platform-browser'; import {MdSelectionList, MdListOption, MdListModule} from './index'; import {createKeyboardEvent} from '@angular/cdk/testing'; -import {UP_ARROW, DOWN_ARROW, SPACE} from '../core/keyboard/keycodes'; -import {Platform} from '../core/platform/index'; +import {UP_ARROW, DOWN_ARROW, SPACE} from '@angular/material/core'; +import {Platform} from '@angular/material/core'; describe('MdSelectionList', () => { diff --git a/src/lib/list/selection-list.ts b/src/lib/list/selection-list.ts index c2381d635d37..df76d6ec39e0 100644 --- a/src/lib/list/selection-list.ts +++ b/src/lib/list/selection-list.ts @@ -6,34 +6,42 @@ * found in the LICENSE file at https://angular.io/license */ +import {FocusableOption, FocusKeyManager} from '@angular/cdk/a11y'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {SelectionModel} from '@angular/cdk/collections'; import { AfterContentInit, + ChangeDetectionStrategy, + ChangeDetectorRef, Component, ContentChildren, ElementRef, - Input, - QueryList, - ViewEncapsulation, - Optional, - Renderer2, EventEmitter, - Output, - ChangeDetectionStrategy, - ChangeDetectorRef, - OnDestroy, forwardRef, Inject, + Input, + OnDestroy, + Optional, + Output, + QueryList, + Renderer2, + ViewEncapsulation, } from '@angular/core'; -import {coerceBooleanProperty, SelectionModel, MdLine, MdLineSetter} from '../core'; -import {FocusKeyManager} from '../core/a11y/focus-key-manager'; -import {Subscription} from 'rxjs/Subscription'; -import {SPACE} from '../core/keyboard/keycodes'; -import {FocusableOption} from '../core/a11y/focus-key-manager'; -import {CanDisable, mixinDisabled} from '../core/common-behaviors/disabled'; -import {RxChain, switchMap, startWith} from '../core/rxjs/index'; +import { + CanDisable, + CanDisableRipple, + MATERIAL_COMPATIBILITY_MODE, + MdLine, + MdLineSetter, + mixinDisabled, + mixinDisableRipple, + RxChain, + SPACE, + startWith, + switchMap, +} from '@angular/material/core'; import {merge} from 'rxjs/observable/merge'; -import {CanDisableRipple, mixinDisableRipple} from '../core/common-behaviors/disable-ripple'; -import {MATERIAL_COMPATIBILITY_MODE} from '../core/compatibility/compatibility'; +import {Subscription} from 'rxjs/Subscription'; /** @docs-private */ diff --git a/src/lib/list/tsconfig-build.json b/src/lib/list/tsconfig-build.json new file mode 100644 index 000000000000..21cbaa9d9aa3 --- /dev/null +++ b/src/lib/list/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/list", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/menu/index.ts b/src/lib/menu/index.ts index 06e7c2827980..f93e7c31d564 100644 --- a/src/lib/menu/index.ts +++ b/src/lib/menu/index.ts @@ -6,39 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {MdCommonModule} from '../core'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {MdMenu, MD_MENU_DEFAULT_OPTIONS} from './menu-directive'; -import {MdMenuItem} from './menu-item'; -import {MdMenuTrigger, MD_MENU_SCROLL_STRATEGY_PROVIDER} from './menu-trigger'; -import {MdRippleModule} from '../core/ripple/index'; - - -@NgModule({ - imports: [ - OverlayModule, - CommonModule, - MdRippleModule, - MdCommonModule, - ], - exports: [MdMenu, MdMenuItem, MdMenuTrigger, MdCommonModule], - declarations: [MdMenu, MdMenuItem, MdMenuTrigger], - providers: [ - MD_MENU_SCROLL_STRATEGY_PROVIDER, - { - provide: MD_MENU_DEFAULT_OPTIONS, - useValue: { - overlapTrigger: true, - xPosition: 'after', - yPosition: 'below', - }, - } - ], -}) -export class MdMenuModule {} - - -export * from './menu'; -export {fadeInItems, transformMenu} from './menu-animations'; +export * from './public_api'; diff --git a/src/lib/menu/menu-directive.ts b/src/lib/menu/menu-directive.ts index adfa8565bfac..4c0a43b40d0b 100644 --- a/src/lib/menu/menu-directive.ts +++ b/src/lib/menu/menu-directive.ts @@ -31,7 +31,7 @@ import {FocusKeyManager} from '@angular/cdk/a11y'; import {MdMenuPanel} from './menu-panel'; import {Subscription} from 'rxjs/Subscription'; import {transformMenu, fadeInItems} from './menu-animations'; -import {ESCAPE, LEFT_ARROW, RIGHT_ARROW} from '../core/keyboard/keycodes'; +import {ESCAPE, LEFT_ARROW, RIGHT_ARROW} from '@angular/material/core'; import {merge} from 'rxjs/observable/merge'; import {Observable} from 'rxjs/Observable'; import {Direction} from '@angular/cdk/bidi'; diff --git a/src/lib/menu/menu-item.ts b/src/lib/menu/menu-item.ts index 860a6216643f..fd3b53aefb96 100644 --- a/src/lib/menu/menu-item.ts +++ b/src/lib/menu/menu-item.ts @@ -6,15 +6,15 @@ * found in the LICENSE file at https://angular.io/license */ +import {FocusableOption} from '@angular/cdk/a11y'; import { + ChangeDetectionStrategy, Component, ElementRef, OnDestroy, - ChangeDetectionStrategy, ViewEncapsulation, } from '@angular/core'; -import {FocusableOption} from '../core/a11y/focus-key-manager'; -import {CanDisable, mixinDisabled} from '../core/common-behaviors/disabled'; +import {CanDisable, mixinDisabled} from '@angular/material/core'; import {Subject} from 'rxjs/Subject'; // Boilerplate for applying mixins to MdMenuItem. diff --git a/src/lib/menu/menu-trigger.ts b/src/lib/menu/menu-trigger.ts index 9bceb8282e80..2d296a3e2a0c 100644 --- a/src/lib/menu/menu-trigger.ts +++ b/src/lib/menu/menu-trigger.ts @@ -6,6 +6,21 @@ * found in the LICENSE file at https://angular.io/license */ +import {isFakeMousedownFromScreenReader} from '@angular/cdk/a11y'; +import {Direction, Directionality} from '@angular/cdk/bidi'; +import {LEFT_ARROW, RIGHT_ARROW} from '@angular/cdk/keycodes'; +import { + ConnectedPositionStrategy, + HorizontalConnectionPos, + Overlay, + OverlayRef, + OverlayState, + RepositionScrollStrategy, + ScrollStrategy, + VerticalConnectionPos, +} from '@angular/cdk/overlay'; +import {TemplatePortal} from '@angular/cdk/portal'; +import {filter, RxChain} from '@angular/cdk/rxjs'; import { AfterViewInit, Directive, @@ -20,32 +35,15 @@ import { Self, ViewContainerRef, } from '@angular/core'; -import {Direction, Directionality} from '@angular/cdk/bidi'; -import {isFakeMousedownFromScreenReader} from '@angular/cdk/a11y'; -import {TemplatePortal} from '@angular/cdk/portal'; -import {LEFT_ARROW, RIGHT_ARROW} from '@angular/cdk/keycodes'; -import { - ConnectedPositionStrategy, - HorizontalConnectionPos, - Overlay, - OverlayRef, - OverlayState, - RepositionScrollStrategy, - VerticalConnectionPos, - // This import is only used to define a generic type. The current TypeScript version incorrectly - // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) - // tslint:disable-next-line:no-unused-variable - ScrollStrategy, -} from '@angular/cdk/overlay'; -import {filter, RxChain} from '@angular/cdk/rxjs'; +import {merge} from 'rxjs/observable/merge'; +import {of as observableOf} from 'rxjs/observable/of'; +import {Subscription} from 'rxjs/Subscription'; import {MdMenu} from './menu-directive'; +import {throwMdMenuMissingError} from './menu-errors'; import {MdMenuItem} from './menu-item'; import {MdMenuPanel} from './menu-panel'; import {MenuPositionX, MenuPositionY} from './menu-positions'; -import {throwMdMenuMissingError} from './menu-errors'; -import {of as observableOf} from 'rxjs/observable/of'; -import {merge} from 'rxjs/observable/merge'; -import {Subscription} from 'rxjs/Subscription'; + /** Injection token that determines the scroll handling while the menu is open. */ export const MD_MENU_SCROLL_STRATEGY = diff --git a/src/lib/menu/menu.spec.ts b/src/lib/menu/menu.spec.ts index a9e8086aaa5f..367090c8f942 100644 --- a/src/lib/menu/menu.spec.ts +++ b/src/lib/menu/menu.spec.ts @@ -23,7 +23,7 @@ import { MenuPositionY, } from './index'; import {MENU_PANEL_TOP_PADDING} from './menu-trigger'; -import {extendObject} from '../core/util/object-extend'; +import {extendObject} from '@angular/material/core'; import { dispatchKeyboardEvent, dispatchMouseEvent, diff --git a/src/lib/menu/public_api.ts b/src/lib/menu/public_api.ts new file mode 100644 index 000000000000..e058148b93e2 --- /dev/null +++ b/src/lib/menu/public_api.ts @@ -0,0 +1,45 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {MdCommonModule} from '@angular/material/core'; +import {OverlayModule} from '@angular/cdk/overlay'; +import {MdMenu, MD_MENU_DEFAULT_OPTIONS} from './menu-directive'; +import {MdMenuItem} from './menu-item'; +import {MdMenuTrigger, MD_MENU_SCROLL_STRATEGY_PROVIDER} from './menu-trigger'; +import {MdRippleModule} from '@angular/material/core'; + + +@NgModule({ + imports: [ + OverlayModule, + CommonModule, + MdRippleModule, + MdCommonModule, + ], + exports: [MdMenu, MdMenuItem, MdMenuTrigger, MdCommonModule], + declarations: [MdMenu, MdMenuItem, MdMenuTrigger], + providers: [ + MD_MENU_SCROLL_STRATEGY_PROVIDER, + { + provide: MD_MENU_DEFAULT_OPTIONS, + useValue: { + overlapTrigger: true, + xPosition: 'after', + yPosition: 'below', + }, + } + ], +}) +export class MdMenuModule {} + + +export * from './menu'; +export {MD_MENU_SCROLL_STRATEGY} from './menu-trigger'; +export {fadeInItems, transformMenu} from './menu-animations'; diff --git a/src/lib/menu/tsconfig-build.json b/src/lib/menu/tsconfig-build.json new file mode 100644 index 000000000000..c92044ad4fbb --- /dev/null +++ b/src/lib/menu/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/menu", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/package.json b/src/lib/package.json index d077b8b5d8e2..1e0fbb0f1d4e 100644 --- a/src/lib/package.json +++ b/src/lib/package.json @@ -3,8 +3,8 @@ "version": "0.0.0-PLACEHOLDER", "description": "Angular Material", "main": "./bundles/material.umd.js", - "module": "./@angular/material.es5.js", - "es2015": "./@angular/material.js", + "module": "./esm5/material.es5.js", + "es2015": "./esm2015/material.js", "typings": "./material.d.ts", "repository": { "type": "git", diff --git a/src/lib/paginator/index.ts b/src/lib/paginator/index.ts index f041a209dd8d..f93e7c31d564 100644 --- a/src/lib/paginator/index.ts +++ b/src/lib/paginator/index.ts @@ -6,28 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {MdButtonModule} from '../button/index'; -import {MdSelectModule} from '../select/index'; -import {MdPaginator} from './paginator'; -import {MdPaginatorIntl} from './paginator-intl'; -import {MdTooltipModule} from '../tooltip/index'; - - -@NgModule({ - imports: [ - CommonModule, - MdButtonModule, - MdSelectModule, - MdTooltipModule, - ], - exports: [MdPaginator], - declarations: [MdPaginator], - providers: [MdPaginatorIntl], -}) -export class MdPaginatorModule {} - - -export * from './paginator'; -export * from './paginator-intl'; +export * from './public_api'; diff --git a/src/lib/paginator/paginator.ts b/src/lib/paginator/paginator.ts index 10996698cfe5..b4c04903558f 100644 --- a/src/lib/paginator/paginator.ts +++ b/src/lib/paginator/paginator.ts @@ -12,14 +12,14 @@ import { Component, EventEmitter, Input, + OnDestroy, OnInit, Output, ViewEncapsulation, - OnDestroy, } from '@angular/core'; -import {MdPaginatorIntl} from './paginator-intl'; -import {MATERIAL_COMPATIBILITY_MODE} from '../core'; +import {MATERIAL_COMPATIBILITY_MODE} from '@angular/material/core'; import {Subscription} from 'rxjs/Subscription'; +import {MdPaginatorIntl} from './paginator-intl'; /** The default page size if there is no page size and there are no provided page size options. */ const DEFAULT_PAGE_SIZE = 50; diff --git a/src/lib/paginator/public_api.ts b/src/lib/paginator/public_api.ts new file mode 100644 index 000000000000..a3d7cd62f646 --- /dev/null +++ b/src/lib/paginator/public_api.ts @@ -0,0 +1,33 @@ +/** + * @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 {MdButtonModule} from '@angular/material/button'; +import {MdSelectModule} from '@angular/material/select'; +import {MdTooltipModule} from '@angular/material/tooltip'; +import {MdPaginator} from './paginator'; +import {MdPaginatorIntl} from './paginator-intl'; + + +@NgModule({ + imports: [ + CommonModule, + MdButtonModule, + MdSelectModule, + MdTooltipModule, + ], + exports: [MdPaginator], + declarations: [MdPaginator], + providers: [MdPaginatorIntl], +}) +export class MdPaginatorModule {} + + +export * from './paginator'; +export * from './paginator-intl'; diff --git a/src/lib/paginator/tsconfig-build.json b/src/lib/paginator/tsconfig-build.json new file mode 100644 index 000000000000..dc0ef8a23eca --- /dev/null +++ b/src/lib/paginator/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/paginator", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/progress-bar/index.ts b/src/lib/progress-bar/index.ts index c9a403119cd1..f93e7c31d564 100644 --- a/src/lib/progress-bar/index.ts +++ b/src/lib/progress-bar/index.ts @@ -6,18 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {MdCommonModule} from '../core'; -import {MdProgressBar} from './progress-bar'; - - -@NgModule({ - imports: [CommonModule, MdCommonModule], - exports: [MdProgressBar, MdCommonModule], - declarations: [MdProgressBar], -}) -export class MdProgressBarModule {} - - -export * from './progress-bar'; +export * from './public_api'; diff --git a/src/lib/progress-bar/public_api.ts b/src/lib/progress-bar/public_api.ts new file mode 100644 index 000000000000..40218edb4439 --- /dev/null +++ b/src/lib/progress-bar/public_api.ts @@ -0,0 +1,23 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {MdCommonModule} from '@angular/material/core'; +import {MdProgressBar} from './progress-bar'; + + +@NgModule({ + imports: [CommonModule, MdCommonModule], + exports: [MdProgressBar, MdCommonModule], + declarations: [MdProgressBar], +}) +export class MdProgressBarModule {} + + +export * from './progress-bar'; diff --git a/src/lib/progress-bar/tsconfig-build.json b/src/lib/progress-bar/tsconfig-build.json new file mode 100644 index 000000000000..ec367b48b5b2 --- /dev/null +++ b/src/lib/progress-bar/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/progress-bar", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/progress-spinner/index.ts b/src/lib/progress-spinner/index.ts index 159ca80fc4d2..f93e7c31d564 100644 --- a/src/lib/progress-spinner/index.ts +++ b/src/lib/progress-spinner/index.ts @@ -6,30 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdCommonModule} from '../core'; -import { - MdProgressSpinner, - MdSpinner, - MdProgressSpinnerCssMatStyler, -} from './progress-spinner'; - - -@NgModule({ - imports: [MdCommonModule], - exports: [ - MdProgressSpinner, - MdSpinner, - MdCommonModule, - MdProgressSpinnerCssMatStyler - ], - declarations: [ - MdProgressSpinner, - MdSpinner, - MdProgressSpinnerCssMatStyler - ], -}) -class MdProgressSpinnerModule {} - -export {MdProgressSpinnerModule}; -export * from './progress-spinner'; +export * from './public_api'; diff --git a/src/lib/progress-spinner/progress-spinner.ts b/src/lib/progress-spinner/progress-spinner.ts index a4fe0ee2d986..ee4ec891a231 100644 --- a/src/lib/progress-spinner/progress-spinner.ts +++ b/src/lib/progress-spinner/progress-spinner.ts @@ -18,7 +18,7 @@ import { ViewChild, ViewEncapsulation, } from '@angular/core'; -import {CanColor, mixinColor} from '../core/common-behaviors/color'; +import {CanColor, mixinColor} from '@angular/material/core'; // TODO(josephperrott): Benchpress tests. diff --git a/src/lib/progress-spinner/public_api.ts b/src/lib/progress-spinner/public_api.ts new file mode 100644 index 000000000000..94453fd891ed --- /dev/null +++ b/src/lib/progress-spinner/public_api.ts @@ -0,0 +1,35 @@ +/** + * @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 {MdCommonModule} from '@angular/material/core'; +import { + MdProgressSpinner, + MdSpinner, + MdProgressSpinnerCssMatStyler, +} from './progress-spinner'; + + +@NgModule({ + imports: [MdCommonModule], + exports: [ + MdProgressSpinner, + MdSpinner, + MdCommonModule, + MdProgressSpinnerCssMatStyler + ], + declarations: [ + MdProgressSpinner, + MdSpinner, + MdProgressSpinnerCssMatStyler + ], +}) +class MdProgressSpinnerModule {} + +export {MdProgressSpinnerModule}; +export * from './progress-spinner'; diff --git a/src/lib/progress-spinner/tsconfig-build.json b/src/lib/progress-spinner/tsconfig-build.json new file mode 100644 index 000000000000..dc6e5bd5dbf4 --- /dev/null +++ b/src/lib/progress-spinner/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/progress-spinner", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/public_api.ts b/src/lib/public_api.ts index 84a7802d0425..44c3e6a600e2 100644 --- a/src/lib/public_api.ts +++ b/src/lib/public_api.ts @@ -13,36 +13,36 @@ */ export * from './version'; -export * from './core'; -export * from './autocomplete/index'; -export * from './button/index'; -export * from './button-toggle/index'; -export * from './card/index'; -export * from './chips/index'; -export * from './checkbox/index'; -export * from './datepicker/index'; -export * from './dialog/index'; -export * from './expansion/index'; -export * from './form-field/index'; -export * from './grid-list/index'; -export * from './icon/index'; -export * from './input/index'; -export * from './list/index'; -export * from './menu/index'; -export * from './paginator/index'; -export * from './progress-bar/index'; -export * from './progress-spinner/index'; -export * from './radio/index'; -export * from './select/index'; -export * from './sidenav/index'; -export * from './slider/index'; -export * from './slide-toggle/index'; -export * from './snack-bar/index'; -export * from './sort/index'; -export * from './table/index'; -export * from './tabs/index'; -export * from './tabs/tab-nav-bar/index'; -export * from './toolbar/index'; -export * from './tooltip/index'; -export * from './stepper/index'; + +export * from '@angular/material/autocomplete'; +export * from '@angular/material/button'; +export * from '@angular/material/button-toggle'; +export * from '@angular/material/card'; +export * from '@angular/material/checkbox'; +export * from '@angular/material/chips'; +export * from '@angular/material/core'; +export * from '@angular/material/datepicker'; +export * from '@angular/material/dialog'; +export * from '@angular/material/expansion'; +export * from '@angular/material/form-field'; +export * from '@angular/material/grid-list'; +export * from '@angular/material/icon'; +export * from '@angular/material/input'; +export * from '@angular/material/list'; +export * from '@angular/material/menu'; +export * from '@angular/material/paginator'; +export * from '@angular/material/progress-bar'; +export * from '@angular/material/progress-spinner'; +export * from '@angular/material/radio'; +export * from '@angular/material/select'; +export * from '@angular/material/sidenav'; +export * from '@angular/material/slide-toggle'; +export * from '@angular/material/slider'; +export * from '@angular/material/snack-bar'; +export * from '@angular/material/sort'; +export * from '@angular/material/stepper'; +export * from '@angular/material/table'; +export * from '@angular/material/tabs'; +export * from '@angular/material/toolbar'; +export * from '@angular/material/tooltip'; diff --git a/src/lib/radio/index.ts b/src/lib/radio/index.ts index 990836c1bea0..f93e7c31d564 100644 --- a/src/lib/radio/index.ts +++ b/src/lib/radio/index.ts @@ -6,25 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {VIEWPORT_RULER_PROVIDER} from '@angular/cdk/overlay'; -import { - MdRippleModule, - MdCommonModule, - UNIQUE_SELECTION_DISPATCHER_PROVIDER, - FocusOriginMonitor, -} from '../core'; -import {MdRadioGroup, MdRadioButton} from './radio'; - - -@NgModule({ - imports: [CommonModule, MdRippleModule, MdCommonModule], - exports: [MdRadioGroup, MdRadioButton, MdCommonModule], - providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER, VIEWPORT_RULER_PROVIDER, FocusOriginMonitor], - declarations: [MdRadioGroup, MdRadioButton], -}) -export class MdRadioModule {} - - -export * from './radio'; +export * from './public_api'; diff --git a/src/lib/radio/public_api.ts b/src/lib/radio/public_api.ts new file mode 100644 index 000000000000..2e9590b72913 --- /dev/null +++ b/src/lib/radio/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 {CommonModule} from '@angular/common'; +import {VIEWPORT_RULER_PROVIDER} from '@angular/cdk/overlay'; +import { + MdRippleModule, + MdCommonModule, + UNIQUE_SELECTION_DISPATCHER_PROVIDER, + FocusOriginMonitor, +} from '@angular/material/core'; +import {MdRadioGroup, MdRadioButton} from './radio'; + + +@NgModule({ + imports: [CommonModule, MdRippleModule, MdCommonModule], + exports: [MdRadioGroup, MdRadioButton, MdCommonModule], + providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER, VIEWPORT_RULER_PROVIDER, FocusOriginMonitor], + declarations: [MdRadioGroup, MdRadioButton], +}) +export class MdRadioModule {} + + +export * from './radio'; diff --git a/src/lib/radio/radio.spec.ts b/src/lib/radio/radio.spec.ts index 0e03603d646d..d87f5a623271 100644 --- a/src/lib/radio/radio.spec.ts +++ b/src/lib/radio/radio.spec.ts @@ -4,7 +4,7 @@ import {Component, DebugElement} from '@angular/core'; import {By} from '@angular/platform-browser'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {dispatchFakeEvent, FakeViewportRuler} from '@angular/cdk/testing'; -import {RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION} from '../core/ripple/ripple-renderer'; +import {RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION} from '@angular/material/core'; import {MdRadioButton, MdRadioChange, MdRadioGroup, MdRadioModule} from './index'; describe('MdRadio', () => { diff --git a/src/lib/radio/radio.ts b/src/lib/radio/radio.ts index 3d9fbe38d454..229d800272e4 100644 --- a/src/lib/radio/radio.ts +++ b/src/lib/radio/radio.ts @@ -34,11 +34,11 @@ import { MdRipple, FocusOriginMonitor, FocusOrigin, -} from '../core'; +} from '@angular/material/core'; 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'; +import {mixinDisabled, CanDisable} from '@angular/material/core'; +import {CanColor, mixinColor} from '@angular/material/core'; +import {CanDisableRipple, mixinDisableRipple} from '@angular/material/core'; // Increasing integer for generating unique ids for radio components. let nextUniqueId = 0; diff --git a/src/lib/radio/tsconfig-build.json b/src/lib/radio/tsconfig-build.json new file mode 100644 index 000000000000..463d0fc3554b --- /dev/null +++ b/src/lib/radio/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/radio", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/select/index.ts b/src/lib/select/index.ts index bd79179836f8..f93e7c31d564 100644 --- a/src/lib/select/index.ts +++ b/src/lib/select/index.ts @@ -6,26 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {MdSelect, MdSelectTrigger, MD_SELECT_SCROLL_STRATEGY_PROVIDER} from './select'; -import {MdCommonModule, MdOptionModule} from '../core'; -import {OverlayModule} from '@angular/cdk/overlay'; - - -@NgModule({ - imports: [ - CommonModule, - OverlayModule, - MdOptionModule, - MdCommonModule, - ], - exports: [MdSelect, MdSelectTrigger, MdOptionModule, MdCommonModule], - declarations: [MdSelect, MdSelectTrigger], - providers: [MD_SELECT_SCROLL_STRATEGY_PROVIDER] -}) -export class MdSelectModule {} - - -export * from './select'; -export {fadeInContent, transformPanel, transformPlaceholder} from './select-animations'; +export * from './public_api'; diff --git a/src/lib/select/public_api.ts b/src/lib/select/public_api.ts new file mode 100644 index 000000000000..71d19e278024 --- /dev/null +++ b/src/lib/select/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 {CommonModule} from '@angular/common'; +import {MdSelect, MdSelectTrigger, MD_SELECT_SCROLL_STRATEGY_PROVIDER} from './select'; +import {MdCommonModule, MdOptionModule} from '@angular/material/core'; +import {OverlayModule} from '@angular/cdk/overlay'; + + +@NgModule({ + imports: [ + CommonModule, + OverlayModule, + MdOptionModule, + MdCommonModule, + ], + exports: [MdSelect, MdSelectTrigger, MdOptionModule, MdCommonModule], + declarations: [MdSelect, MdSelectTrigger], + providers: [MD_SELECT_SCROLL_STRATEGY_PROVIDER] +}) +export class MdSelectModule {} + + +export * from './select'; +export {fadeInContent, transformPanel, transformPlaceholder} from './select-animations'; diff --git a/src/lib/select/select.spec.ts b/src/lib/select/select.spec.ts index 18a6b6b90bfb..b774081a9c11 100644 --- a/src/lib/select/select.spec.ts +++ b/src/lib/select/select.spec.ts @@ -34,12 +34,12 @@ import { getMdSelectNonArrayValueError, getMdSelectNonFunctionValueError } from './select-errors'; -import {MdOption} from '../core/option/option'; +import {MdOption} from '@angular/material/core'; import { FloatPlaceholderType, MD_PLACEHOLDER_GLOBAL_OPTIONS -} from '../core/placeholder/placeholder-options'; -import {extendObject} from '../core/util/object-extend'; +} from '@angular/material/core'; +import {extendObject} from '@angular/material/core'; describe('MdSelect', () => { diff --git a/src/lib/select/select.ts b/src/lib/select/select.ts index 8e6f4695ffe7..5ff27f2855a7 100644 --- a/src/lib/select/select.ts +++ b/src/lib/select/select.ts @@ -6,6 +6,20 @@ * found in the LICENSE file at https://angular.io/license */ +import {FocusKeyManager} from '@angular/cdk/a11y'; +import {Directionality} from '@angular/cdk/bidi'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {SelectionModel} from '@angular/cdk/collections'; +import {DOWN_ARROW, END, ENTER, HOME, SPACE, UP_ARROW} from '@angular/cdk/keycodes'; +import { + ConnectedOverlayDirective, + Overlay, + RepositionScrollStrategy, + ScrollStrategy, + ViewportRuler, +} from '@angular/cdk/overlay'; +import {Platform} from '@angular/cdk/platform'; +import {filter, startWith} from '@angular/cdk/rxjs'; import { AfterContentInit, Attribute, @@ -14,11 +28,13 @@ import { Component, ContentChild, ContentChildren, + Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, + isDevMode, OnDestroy, OnInit, Optional, @@ -28,45 +44,31 @@ import { Self, ViewChild, ViewEncapsulation, - Directive, - isDevMode, } from '@angular/core'; import {ControlValueAccessor, FormGroupDirective, NgControl, NgForm} from '@angular/forms'; -import {DOWN_ARROW, END, ENTER, HOME, SPACE, UP_ARROW} from '@angular/cdk/keycodes'; -import {FocusKeyManager} from '@angular/cdk/a11y'; -import {Directionality} from '@angular/cdk/bidi'; -import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import {filter, startWith} from '@angular/cdk/rxjs'; import { - ConnectedOverlayDirective, - Overlay, - RepositionScrollStrategy, - // This import is only used to define a generic type. The current TypeScript version incorrectly - // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) - // tslint:disable-next-line:no-unused-variable - ScrollStrategy, - ViewportRuler -} from '@angular/cdk/overlay'; -import {merge} from 'rxjs/observable/merge'; + CanColor, + CanDisable, + FloatPlaceholderType, + HasTabIndex, + MD_PLACEHOLDER_GLOBAL_OPTIONS, + MdOptgroup, + MdOption, + MdOptionSelectionChange, + mixinColor, + mixinDisabled, + mixinTabIndex, + PlaceholderOptions, +} from '@angular/material/core'; import {Observable} from 'rxjs/Observable'; +import {merge} from 'rxjs/observable/merge'; import {Subscription} from 'rxjs/Subscription'; import {fadeInContent, transformPanel, transformPlaceholder} from './select-animations'; -import {SelectionModel} from '@angular/cdk/collections'; import { getMdSelectDynamicMultipleError, getMdSelectNonArrayValueError, - getMdSelectNonFunctionValueError + getMdSelectNonFunctionValueError, } from './select-errors'; -import {CanColor, mixinColor} from '../core/common-behaviors/color'; -import {CanDisable, mixinDisabled} from '../core/common-behaviors/disabled'; -import {MdOptgroup, MdOption, MdOptionSelectionChange} from '../core/option/index'; -import { - FloatPlaceholderType, - MD_PLACEHOLDER_GLOBAL_OPTIONS, - PlaceholderOptions -} from '../core/placeholder/placeholder-options'; -import {Platform} from '@angular/cdk/platform'; -import {HasTabIndex, mixinTabIndex} from '../core/common-behaviors/tabindex'; /** * The following style constants are necessary to save here in order diff --git a/src/lib/select/tsconfig-build.json b/src/lib/select/tsconfig-build.json new file mode 100644 index 000000000000..e763b501c047 --- /dev/null +++ b/src/lib/select/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/select", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/sidenav/drawer.ts b/src/lib/sidenav/drawer.ts index 909fe6a0a38f..ea4d0af73d96 100644 --- a/src/lib/sidenav/drawer.ts +++ b/src/lib/sidenav/drawer.ts @@ -6,29 +6,29 @@ * found in the LICENSE file at https://angular.io/license */ +import {animate, AnimationEvent, state, style, transition, trigger} from '@angular/animations'; +import {FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y'; +import {Directionality} from '@angular/cdk/bidi'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; import { AfterContentInit, + ChangeDetectionStrategy, + ChangeDetectorRef, Component, ContentChildren, ElementRef, + EventEmitter, + Inject, Input, + NgZone, + OnDestroy, Optional, Output, QueryList, - ChangeDetectionStrategy, - EventEmitter, Renderer2, ViewEncapsulation, - NgZone, - OnDestroy, - Inject, - ChangeDetectorRef, } from '@angular/core'; -import {animate, state, style, transition, trigger, AnimationEvent} from '@angular/animations'; -import {Directionality, coerceBooleanProperty} from '../core'; -import {FocusTrapFactory, FocusTrap} from '../core/a11y/focus-trap'; -import {ESCAPE} from '../core/keyboard/keycodes'; -import {first, takeUntil, startWith} from '../core/rxjs/index'; +import {ESCAPE, first, startWith, takeUntil} from '@angular/material/core'; import {DOCUMENT} from '@angular/platform-browser'; import {merge} from 'rxjs/observable/merge'; import {Subscription} from 'rxjs/Subscription'; diff --git a/src/lib/sidenav/index.ts b/src/lib/sidenav/index.ts index dca718a9fca1..f93e7c31d564 100644 --- a/src/lib/sidenav/index.ts +++ b/src/lib/sidenav/index.ts @@ -6,22 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {A11yModule} from '@angular/cdk/a11y'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {MdCommonModule} from '../core'; -import {MdDrawer, MdDrawerContainer} from './drawer'; -import {MdSidenav, MdSidenavContainer} from './sidenav'; - - -@NgModule({ - imports: [CommonModule, MdCommonModule, A11yModule, OverlayModule], - exports: [MdDrawerContainer, MdDrawer, MdSidenavContainer, MdSidenav, MdCommonModule], - declarations: [MdDrawerContainer, MdDrawer, MdSidenavContainer, MdSidenav], -}) -export class MdSidenavModule {} - - -export * from './drawer'; -export * from './sidenav'; +export * from './public_api'; diff --git a/src/lib/sidenav/public_api.ts b/src/lib/sidenav/public_api.ts new file mode 100644 index 000000000000..948fed606daa --- /dev/null +++ b/src/lib/sidenav/public_api.ts @@ -0,0 +1,27 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {A11yModule} from '@angular/cdk/a11y'; +import {OverlayModule} from '@angular/cdk/overlay'; +import {MdCommonModule} from '@angular/material/core'; +import {MdDrawer, MdDrawerContainer} from './drawer'; +import {MdSidenav, MdSidenavContainer} from './sidenav'; + + +@NgModule({ + imports: [CommonModule, MdCommonModule, A11yModule, OverlayModule], + exports: [MdDrawerContainer, MdDrawer, MdSidenavContainer, MdSidenav, MdCommonModule], + declarations: [MdDrawerContainer, MdDrawer, MdSidenavContainer, MdSidenav], +}) +export class MdSidenavModule {} + + +export * from './drawer'; +export * from './sidenav'; diff --git a/src/lib/sidenav/tsconfig-build.json b/src/lib/sidenav/tsconfig-build.json new file mode 100644 index 000000000000..68f4c0a51b27 --- /dev/null +++ b/src/lib/sidenav/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/sidenav", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/slide-toggle/index.ts b/src/lib/slide-toggle/index.ts index 6c81e7460d4e..f93e7c31d564 100644 --- a/src/lib/slide-toggle/index.ts +++ b/src/lib/slide-toggle/index.ts @@ -6,29 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; -import {PlatformModule} from '@angular/cdk/platform'; -import {ObserversModule} from '@angular/cdk/observers'; -import {MdSlideToggle} from './slide-toggle'; -import { - FOCUS_ORIGIN_MONITOR_PROVIDER, - GestureConfig, - MdCommonModule, - MdRippleModule, -} from '../core'; - - -@NgModule({ - imports: [MdRippleModule, MdCommonModule, PlatformModule, ObserversModule], - exports: [MdSlideToggle, MdCommonModule], - declarations: [MdSlideToggle], - providers: [ - FOCUS_ORIGIN_MONITOR_PROVIDER, - {provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig} - ], -}) -export class MdSlideToggleModule {} - - -export * from './slide-toggle'; +export * from './public_api'; diff --git a/src/lib/slide-toggle/public_api.ts b/src/lib/slide-toggle/public_api.ts new file mode 100644 index 000000000000..af02957e433a --- /dev/null +++ b/src/lib/slide-toggle/public_api.ts @@ -0,0 +1,34 @@ +/** + * @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 {ObserversModule} from '@angular/cdk/observers'; +import {PlatformModule} from '@angular/cdk/platform'; +import {NgModule} from '@angular/core'; +import { + FOCUS_ORIGIN_MONITOR_PROVIDER, + GestureConfig, + MdCommonModule, + MdRippleModule, +} from '@angular/material/core'; +import {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; +import {MdSlideToggle} from './slide-toggle'; + + +@NgModule({ + imports: [MdRippleModule, MdCommonModule, PlatformModule, ObserversModule], + exports: [MdSlideToggle, MdCommonModule], + declarations: [MdSlideToggle], + providers: [ + FOCUS_ORIGIN_MONITOR_PROVIDER, + {provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig} + ], +}) +export class MdSlideToggleModule {} + + +export * from './slide-toggle'; diff --git a/src/lib/slide-toggle/slide-toggle.spec.ts b/src/lib/slide-toggle/slide-toggle.spec.ts index 345dcb5e418c..14794ab96555 100644 --- a/src/lib/slide-toggle/slide-toggle.spec.ts +++ b/src/lib/slide-toggle/slide-toggle.spec.ts @@ -8,7 +8,7 @@ import {NgModel, FormsModule, ReactiveFormsModule, FormControl} from '@angular/f import {MdSlideToggle, MdSlideToggleChange, MdSlideToggleModule} from './index'; import {TestGestureConfig} from '../slider/test-gesture-config'; import {dispatchFakeEvent} from '@angular/cdk/testing'; -import {RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION} from '../core/ripple/ripple-renderer'; +import {RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION} from '@angular/material/core'; describe('MdSlideToggle without forms', () => { let gestureConfig: TestGestureConfig; diff --git a/src/lib/slide-toggle/slide-toggle.ts b/src/lib/slide-toggle/slide-toggle.ts index 8b5d13de0d04..cfdc881a01d5 100644 --- a/src/lib/slide-toggle/slide-toggle.ts +++ b/src/lib/slide-toggle/slide-toggle.ts @@ -31,12 +31,12 @@ import { HammerInput, MdRipple, RippleRef, -} from '../core'; +} from '@angular/material/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; -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'; -import {HasTabIndex, mixinTabIndex} from '../core/common-behaviors/tabindex'; +import {mixinDisabled, CanDisable} from '@angular/material/core'; +import {CanColor, mixinColor} from '@angular/material/core'; +import {CanDisableRipple, mixinDisableRipple} from '@angular/material/core'; +import {HasTabIndex, mixinTabIndex} from '@angular/material/core'; // Increasing integer for generating unique ids for slide-toggle components. let nextUniqueId = 0; diff --git a/src/lib/slide-toggle/tsconfig-build.json b/src/lib/slide-toggle/tsconfig-build.json new file mode 100644 index 000000000000..ec866d061861 --- /dev/null +++ b/src/lib/slide-toggle/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/slide-toggle", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/slider/index.ts b/src/lib/slider/index.ts index 508cd636e6c3..f93e7c31d564 100644 --- a/src/lib/slider/index.ts +++ b/src/lib/slider/index.ts @@ -6,21 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; -import {CommonModule} from '@angular/common'; -import {MdCommonModule, GestureConfig, StyleModule} from '../core'; -import {MdSlider} from './slider'; -import {BidiModule} from '../core/bidi/index'; - - -@NgModule({ - imports: [CommonModule, MdCommonModule, StyleModule, BidiModule], - exports: [MdSlider, MdCommonModule], - declarations: [MdSlider], - providers: [{provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig}] -}) -export class MdSliderModule {} - - -export * from './slider'; +export * from './public_api'; diff --git a/src/lib/slider/public_api.ts b/src/lib/slider/public_api.ts new file mode 100644 index 000000000000..f7cc6fb8acd1 --- /dev/null +++ b/src/lib/slider/public_api.ts @@ -0,0 +1,26 @@ +/** + * @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 {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; +import {CommonModule} from '@angular/common'; +import {MdCommonModule, GestureConfig, StyleModule} from '@angular/material/core'; +import {MdSlider} from './slider'; +import {BidiModule} from '@angular/material/core'; + + +@NgModule({ + imports: [CommonModule, MdCommonModule, StyleModule, BidiModule], + exports: [MdSlider, MdCommonModule], + declarations: [MdSlider], + providers: [{provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig}] +}) +export class MdSliderModule {} + + +export * from './slider'; diff --git a/src/lib/slider/slider.spec.ts b/src/lib/slider/slider.spec.ts index 676929861740..e8962601f00b 100644 --- a/src/lib/slider/slider.spec.ts +++ b/src/lib/slider/slider.spec.ts @@ -4,7 +4,7 @@ import {Component, DebugElement, ViewChild} from '@angular/core'; import {By, HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; import {MdSlider, MdSliderModule} from './index'; import {TestGestureConfig} from './test-gesture-config'; -import {BidiModule} from '../core/bidi/index'; +import {BidiModule} from '@angular/material/core'; import { DOWN_ARROW, END, @@ -15,7 +15,7 @@ import { RIGHT_ARROW, UP_ARROW, BACKSPACE -} from '../core/keyboard/keycodes'; +} from '@angular/material/core'; import {dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent} from '@angular/cdk/testing'; describe('MdSlider without forms', () => { diff --git a/src/lib/slider/slider.ts b/src/lib/slider/slider.ts index 3bcb41ac02d0..a564ce51d447 100644 --- a/src/lib/slider/slider.ts +++ b/src/lib/slider/slider.ts @@ -6,6 +6,18 @@ * found in the LICENSE file at https://angular.io/license */ +import {Directionality} from '@angular/cdk/bidi'; +import {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion'; +import { + DOWN_ARROW, + END, + HOME, + LEFT_ARROW, + PAGE_DOWN, + PAGE_UP, + RIGHT_ARROW, + UP_ARROW, +} from '@angular/cdk/keycodes'; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -15,29 +27,23 @@ import { forwardRef, Input, OnDestroy, + OnInit, Optional, Output, Renderer2, + ViewChild, ViewEncapsulation, - ViewChild, OnInit, } from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; -import {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion'; -import {Directionality} from '@angular/cdk/bidi'; import { - DOWN_ARROW, - END, - HOME, - LEFT_ARROW, - PAGE_DOWN, - PAGE_UP, - RIGHT_ARROW, - UP_ARROW, -} from '@angular/cdk/keycodes'; -import {HammerInput} from '../core'; -import {FocusOrigin, FocusOriginMonitor} from '../core/style/focus-origin-monitor'; -import {CanDisable, mixinDisabled} from '../core/common-behaviors/disabled'; -import {CanColor, mixinColor} from '../core/common-behaviors/color'; + CanColor, + CanDisable, + FocusOrigin, + FocusOriginMonitor, + HammerInput, + mixinColor, + mixinDisabled, +} from '@angular/material/core'; import {Subscription} from 'rxjs/Subscription'; /** diff --git a/src/lib/slider/test-gesture-config.ts b/src/lib/slider/test-gesture-config.ts index 693f7cf9b3e2..486ff3fd252b 100644 --- a/src/lib/slider/test-gesture-config.ts +++ b/src/lib/slider/test-gesture-config.ts @@ -7,7 +7,7 @@ */ import {Injectable} from '@angular/core'; -import {GestureConfig, HammerManager} from '../core'; +import {GestureConfig, HammerManager} from '@angular/material/core'; /** * An extension of GestureConfig that exposes the underlying HammerManager instances. diff --git a/src/lib/slider/tsconfig-build.json b/src/lib/slider/tsconfig-build.json new file mode 100644 index 000000000000..dc10c8d1a735 --- /dev/null +++ b/src/lib/slider/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/slider", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/snack-bar/index.ts b/src/lib/snack-bar/index.ts index 12082fa3c625..f93e7c31d564 100644 --- a/src/lib/snack-bar/index.ts +++ b/src/lib/snack-bar/index.ts @@ -6,34 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {PortalModule} from '@angular/cdk/portal'; -import {LIVE_ANNOUNCER_PROVIDER} from '@angular/cdk/a11y'; -import {MdCommonModule} from '../core'; -import {MdSnackBar} from './snack-bar'; -import {MdSnackBarContainer} from './snack-bar-container'; -import {SimpleSnackBar} from './simple-snack-bar'; - - -@NgModule({ - imports: [ - OverlayModule, - PortalModule, - CommonModule, - MdCommonModule, - ], - exports: [MdSnackBarContainer, MdCommonModule], - declarations: [MdSnackBarContainer, SimpleSnackBar], - entryComponents: [MdSnackBarContainer, SimpleSnackBar], - providers: [MdSnackBar, LIVE_ANNOUNCER_PROVIDER] -}) -export class MdSnackBarModule {} - - -export * from './snack-bar'; -export * from './snack-bar-container'; -export * from './snack-bar-config'; -export * from './snack-bar-ref'; -export * from './simple-snack-bar'; +export * from './public_api'; diff --git a/src/lib/snack-bar/public_api.ts b/src/lib/snack-bar/public_api.ts new file mode 100644 index 000000000000..db641fd145ad --- /dev/null +++ b/src/lib/snack-bar/public_api.ts @@ -0,0 +1,39 @@ +/** + * @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 {CommonModule} from '@angular/common'; +import {OverlayModule} from '@angular/cdk/overlay'; +import {PortalModule} from '@angular/cdk/portal'; +import {LIVE_ANNOUNCER_PROVIDER} from '@angular/cdk/a11y'; +import {MdCommonModule} from '@angular/material/core'; +import {MdSnackBar} from './snack-bar'; +import {MdSnackBarContainer} from './snack-bar-container'; +import {SimpleSnackBar} from './simple-snack-bar'; + + +@NgModule({ + imports: [ + OverlayModule, + PortalModule, + CommonModule, + MdCommonModule, + ], + exports: [MdSnackBarContainer, MdCommonModule], + declarations: [MdSnackBarContainer, SimpleSnackBar], + entryComponents: [MdSnackBarContainer, SimpleSnackBar], + providers: [MdSnackBar, LIVE_ANNOUNCER_PROVIDER] +}) +export class MdSnackBarModule {} + + +export * from './snack-bar'; +export * from './snack-bar-container'; +export * from './snack-bar-config'; +export * from './snack-bar-ref'; +export * from './simple-snack-bar'; diff --git a/src/lib/snack-bar/snack-bar.ts b/src/lib/snack-bar/snack-bar.ts index 8696895c04ad..a4ed737b2add 100644 --- a/src/lib/snack-bar/snack-bar.ts +++ b/src/lib/snack-bar/snack-bar.ts @@ -10,8 +10,8 @@ import {ComponentRef, Injectable, Injector, Optional, SkipSelf } from '@angular/ import {Overlay, OverlayRef, OverlayState} from '@angular/cdk/overlay'; import {ComponentPortal, ComponentType} from '@angular/cdk/portal'; import {LiveAnnouncer} from '@angular/cdk/a11y'; -import {PortalInjector} from '../core/portal/portal-injector'; -import {extendObject} from '../core/util/object-extend'; +import {PortalInjector} from '@angular/material/core'; +import {extendObject} from '@angular/material/core'; import {MD_SNACK_BAR_DATA, MdSnackBarConfig} from './snack-bar-config'; import {MdSnackBarRef} from './snack-bar-ref'; import {MdSnackBarContainer} from './snack-bar-container'; diff --git a/src/lib/snack-bar/tsconfig-build.json b/src/lib/snack-bar/tsconfig-build.json new file mode 100644 index 000000000000..d359903ccc29 --- /dev/null +++ b/src/lib/snack-bar/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/snack-bar", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/sort/index.ts b/src/lib/sort/index.ts index 7d1ed5454b68..f93e7c31d564 100644 --- a/src/lib/sort/index.ts +++ b/src/lib/sort/index.ts @@ -6,21 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdSortHeader} from './sort-header'; -import {MdSort} from './sort'; -import {MdSortHeaderIntl} from './sort-header-intl'; -import {CommonModule} from '@angular/common'; - -export * from './sort-direction'; -export * from './sort-header'; -export * from './sort-header-intl'; -export * from './sort'; - -@NgModule({ - imports: [CommonModule], - exports: [MdSort, MdSortHeader], - declarations: [MdSort, MdSortHeader], - providers: [MdSortHeaderIntl] -}) -export class MdSortModule {} +export * from './public_api'; diff --git a/src/lib/sort/public_api.ts b/src/lib/sort/public_api.ts new file mode 100644 index 000000000000..7d1ed5454b68 --- /dev/null +++ b/src/lib/sort/public_api.ts @@ -0,0 +1,26 @@ +/** + * @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 {MdSortHeader} from './sort-header'; +import {MdSort} from './sort'; +import {MdSortHeaderIntl} from './sort-header-intl'; +import {CommonModule} from '@angular/common'; + +export * from './sort-direction'; +export * from './sort-header'; +export * from './sort-header-intl'; +export * from './sort'; + +@NgModule({ + imports: [CommonModule], + exports: [MdSort, MdSortHeader], + declarations: [MdSort, MdSortHeader], + providers: [MdSortHeaderIntl] +}) +export class MdSortModule {} diff --git a/src/lib/sort/sort.spec.ts b/src/lib/sort/sort.spec.ts index 803abb0333f4..57ff5f347081 100644 --- a/src/lib/sort/sort.spec.ts +++ b/src/lib/sort/sort.spec.ts @@ -12,7 +12,7 @@ import { getMdSortHeaderNotContainedWithinMdSortError } from './sort-errors'; import {wrappedErrorMessage, dispatchMouseEvent} from '@angular/cdk/testing'; -import {map} from '../core/rxjs/index'; +import {map} from '@angular/material/core'; import {MdTableModule} from '../table/index'; describe('MdSort', () => { diff --git a/src/lib/sort/tsconfig-build.json b/src/lib/sort/tsconfig-build.json new file mode 100644 index 000000000000..ec944587d015 --- /dev/null +++ b/src/lib/sort/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/sort", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/stepper/index.ts b/src/lib/stepper/index.ts index 46ba69495ace..f93e7c31d564 100644 --- a/src/lib/stepper/index.ts +++ b/src/lib/stepper/index.ts @@ -6,44 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {PortalModule} from '@angular/cdk/portal'; -import {MdButtonModule} from '../button/index'; -import {MdStep, MdStepper, MdHorizontalStepper, MdVerticalStepper} from './stepper'; -import {CdkStepperModule} from '@angular/cdk/stepper'; -import {MdCommonModule} from '../core'; -import {MdStepLabel} from './step-label'; -import {MdStepperNext, MdStepperPrevious} from './stepper-button'; -import {MdIconModule} from '../icon/index'; -import {MdStepHeader} from './step-header'; - -@NgModule({ - imports: [ - MdCommonModule, - CommonModule, - PortalModule, - MdButtonModule, - CdkStepperModule, - MdIconModule - ], - exports: [ - MdCommonModule, - MdHorizontalStepper, - MdVerticalStepper, - MdStep, - MdStepLabel, - MdStepper, - MdStepperNext, - MdStepperPrevious, - MdStepHeader - ], - declarations: [MdHorizontalStepper, MdVerticalStepper, MdStep, MdStepLabel, MdStepper, - MdStepperNext, MdStepperPrevious, MdStepHeader], -}) -export class MdStepperModule {} - -export * from './step-label'; -export * from './stepper'; -export * from './stepper-button'; -export * from './step-header'; +export * from './public_api'; diff --git a/src/lib/stepper/public_api.ts b/src/lib/stepper/public_api.ts new file mode 100644 index 000000000000..298427d9eb63 --- /dev/null +++ b/src/lib/stepper/public_api.ts @@ -0,0 +1,50 @@ +/** + * @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 {PortalModule} from '@angular/cdk/portal'; +import {CdkStepperModule} from '@angular/cdk/stepper'; +import {CommonModule} from '@angular/common'; +import {NgModule} from '@angular/core'; +import {MdButtonModule} from '@angular/material/button'; +import {MdCommonModule} from '@angular/material/core'; +import {MdIconModule} from '@angular/material/icon'; +import {MdStepHeader} from './step-header'; +import {MdStepLabel} from './step-label'; +import {MdHorizontalStepper, MdStep, MdStepper, MdVerticalStepper} from './stepper'; +import {MdStepperNext, MdStepperPrevious} from './stepper-button'; + + +@NgModule({ + imports: [ + MdCommonModule, + CommonModule, + PortalModule, + MdButtonModule, + CdkStepperModule, + MdIconModule + ], + exports: [ + MdCommonModule, + MdHorizontalStepper, + MdVerticalStepper, + MdStep, + MdStepLabel, + MdStepper, + MdStepperNext, + MdStepperPrevious, + MdStepHeader + ], + declarations: [MdHorizontalStepper, MdVerticalStepper, MdStep, MdStepLabel, MdStepper, + MdStepperNext, MdStepperPrevious, MdStepHeader], +}) +export class MdStepperModule {} + +export * from './step-label'; +export * from './stepper'; +export * from './stepper-button'; +export * from './step-header'; diff --git a/src/lib/stepper/step-header.ts b/src/lib/stepper/step-header.ts index e25369d35c87..10176b3c2424 100644 --- a/src/lib/stepper/step-header.ts +++ b/src/lib/stepper/step-header.ts @@ -6,10 +6,11 @@ * found in the LICENSE file at https://angular.io/license */ -import {Component, Input, ViewEncapsulation} from '@angular/core'; import {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion'; +import {Component, Input, ViewEncapsulation} from '@angular/core'; +import {MATERIAL_COMPATIBILITY_MODE} from '@angular/material/core'; import {MdStepLabel} from './step-label'; -import {MATERIAL_COMPATIBILITY_MODE} from '../core/compatibility/compatibility'; + @Component({ moduleId: module.id, diff --git a/src/lib/stepper/stepper.spec.ts b/src/lib/stepper/stepper.spec.ts index 13c357d80b62..db0f539358e1 100644 --- a/src/lib/stepper/stepper.spec.ts +++ b/src/lib/stepper/stepper.spec.ts @@ -8,7 +8,7 @@ import {MdStepperNext, MdStepperPrevious} from './stepper-button'; import {dispatchKeyboardEvent} from '@angular/cdk/testing'; import {ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE} from '@angular/cdk/keycodes'; import {MdStepper, MdHorizontalStepper, MdVerticalStepper} from './stepper'; -import {Directionality} from '../core'; +import {Directionality} from '@angular/material/core'; const VALID_REGEX = /valid/; diff --git a/src/lib/stepper/stepper.ts b/src/lib/stepper/stepper.ts index 6f40496d2cef..3ffab445a85b 100644 --- a/src/lib/stepper/stepper.ts +++ b/src/lib/stepper/stepper.ts @@ -6,14 +6,13 @@ * found in the LICENSE file at https://angular.io/license */ +import {animate, state, style, transition, trigger} from '@angular/animations'; import {CdkStep, CdkStepper} from '@angular/cdk/stepper'; import { Component, ContentChild, - ContentChildren, Directive, - // This import is only used to define a generic type. The current TypeScript version incorrectly - // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) - // tslint:disable-next-line:no-unused-variable + ContentChildren, + Directive, ElementRef, forwardRef, Inject, @@ -21,18 +20,17 @@ import { QueryList, SkipSelf, ViewChildren, - ViewEncapsulation + ViewEncapsulation, } from '@angular/core'; -import {MdStepLabel} from './step-label'; +import {FormControl, FormGroupDirective, NgForm} from '@angular/forms'; import { defaultErrorStateMatcher, ErrorOptions, + ErrorStateMatcher, MD_ERROR_GLOBAL_OPTIONS, - ErrorStateMatcher -} from '../core/error/error-options'; -import {FormControl, FormGroupDirective, NgForm} from '@angular/forms'; +} from '@angular/material/core'; import {MdStepHeader} from './step-header'; -import {state, style, transition, trigger, animate} from '@angular/animations'; +import {MdStepLabel} from './step-label'; /** Workaround for https://github.com/angular/angular/issues/17849 */ export const _MdStep = CdkStep; diff --git a/src/lib/stepper/tsconfig-build.json b/src/lib/stepper/tsconfig-build.json new file mode 100644 index 000000000000..09793c4ded61 --- /dev/null +++ b/src/lib/stepper/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/stepper", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/table/index.ts b/src/lib/table/index.ts index 7976a84b62ec..f93e7c31d564 100644 --- a/src/lib/table/index.ts +++ b/src/lib/table/index.ts @@ -6,27 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdTable} from './table'; -import {CdkTableModule} from '@angular/cdk/table'; -import {MdCell, MdHeaderCell, MdCellDef, MdHeaderCellDef, MdColumnDef} from './cell'; -import {MdHeaderRow, MdRow, MdHeaderRowDef, MdRowDef, MatHeaderRowDef, MatRowDef} from './row'; -import {CommonModule} from '@angular/common'; -import {MdCommonModule} from '../core'; - -export * from './cell'; -export * from './table'; -export * from './row'; - -@NgModule({ - imports: [CdkTableModule, CommonModule, MdCommonModule], - exports: [MdTable, MdCellDef, MdHeaderCellDef, MdColumnDef, - MdHeaderRowDef, MdRowDef, - MdHeaderCell, MdCell, MdHeaderRow, MdRow, - MatHeaderRowDef, MatRowDef], - declarations: [MdTable, MdCellDef, MdHeaderCellDef, MdColumnDef, - MdHeaderRowDef, MdRowDef, - MdHeaderCell, MdCell, MdHeaderRow, MdRow, - MatHeaderRowDef, MatRowDef], -}) -export class MdTableModule {} +export * from './public_api'; diff --git a/src/lib/table/public_api.ts b/src/lib/table/public_api.ts new file mode 100644 index 000000000000..80517d4dde91 --- /dev/null +++ b/src/lib/table/public_api.ts @@ -0,0 +1,32 @@ +/** + * @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 {MdTable} from './table'; +import {CdkTableModule} from '@angular/cdk/table'; +import {MdCell, MdHeaderCell, MdCellDef, MdHeaderCellDef, MdColumnDef} from './cell'; +import {MdHeaderRow, MdRow, MdHeaderRowDef, MdRowDef, MatHeaderRowDef, MatRowDef} from './row'; +import {CommonModule} from '@angular/common'; +import {MdCommonModule} from '@angular/material/core'; + +export * from './cell'; +export * from './table'; +export * from './row'; + +@NgModule({ + imports: [CdkTableModule, CommonModule, MdCommonModule], + exports: [MdTable, MdCellDef, MdHeaderCellDef, MdColumnDef, + MdHeaderRowDef, MdRowDef, + MdHeaderCell, MdCell, MdHeaderRow, MdRow, + MatHeaderRowDef, MatRowDef], + declarations: [MdTable, MdCellDef, MdHeaderCellDef, MdColumnDef, + MdHeaderRowDef, MdRowDef, + MdHeaderCell, MdCell, MdHeaderRow, MdRow, + MatHeaderRowDef, MatRowDef], +}) +export class MdTableModule {} diff --git a/src/lib/table/tsconfig-build.json b/src/lib/table/tsconfig-build.json new file mode 100644 index 000000000000..1f0b7ce0ec35 --- /dev/null +++ b/src/lib/table/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/table", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/tabs/index.ts b/src/lib/tabs/index.ts index fec6353800b1..f93e7c31d564 100644 --- a/src/lib/tabs/index.ts +++ b/src/lib/tabs/index.ts @@ -6,61 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {PortalModule} from '@angular/cdk/portal'; -import {ObserversModule} from '@angular/cdk/observers'; -import {ScrollDispatchModule, VIEWPORT_RULER_PROVIDER} from '@angular/cdk/scrolling'; -import {MdCommonModule, MdRippleModule} from '../core'; -import {MdTab} from './tab'; -import {MdTabGroup} from './tab-group'; -import {MdTabLabel} from './tab-label'; -import {MdTabLabelWrapper} from './tab-label-wrapper'; -import {MdTabLink, MdTabNav} from './tab-nav-bar/tab-nav-bar'; -import {MdInkBar} from './ink-bar'; -import {MdTabBody} from './tab-body'; -import {MdTabHeader} from './tab-header'; - - -@NgModule({ - imports: [ - CommonModule, - MdCommonModule, - PortalModule, - MdRippleModule, - ObserversModule, - ScrollDispatchModule, - ], - // Don't export all components because some are only to be used internally. - exports: [ - MdCommonModule, - MdTabGroup, - MdTabLabel, - MdTab, - MdTabNav, - MdTabLink, - ], - declarations: [ - MdTabGroup, - MdTabLabel, - MdTab, - MdInkBar, - MdTabLabelWrapper, - MdTabNav, - MdTabLink, - MdTabBody, - MdTabHeader - ], - providers: [VIEWPORT_RULER_PROVIDER], -}) -export class MdTabsModule {} - - -export * from './tab-group'; -export {MdInkBar} from './ink-bar'; -export {MdTabBody, MdTabBodyOriginState, MdTabBodyPositionState} from './tab-body'; -export {MdTabHeader, ScrollDirection} from './tab-header'; -export {MdTabLabelWrapper} from './tab-label-wrapper'; -export {MdTab} from './tab'; -export {MdTabLabel} from './tab-label'; -export {MdTabNav, MdTabLink} from './tab-nav-bar/index'; +export * from './public_api'; diff --git a/src/lib/tabs/public_api.ts b/src/lib/tabs/public_api.ts new file mode 100644 index 000000000000..1821ae41243e --- /dev/null +++ b/src/lib/tabs/public_api.ts @@ -0,0 +1,67 @@ +/** + * @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 {ObserversModule} from '@angular/cdk/observers'; +import {PortalModule} from '@angular/cdk/portal'; +import {ScrollDispatchModule, VIEWPORT_RULER_PROVIDER} from '@angular/cdk/scrolling'; +import {CommonModule} from '@angular/common'; +import {NgModule} from '@angular/core'; +import {MdCommonModule, MdRippleModule} from '@angular/material/core'; +import {MdInkBar} from './ink-bar'; +import {MdTab} from './tab'; +import {MdTabBody} from './tab-body'; +import {MdTabGroup} from './tab-group'; +import {MdTabHeader} from './tab-header'; +import {MdTabLabel} from './tab-label'; +import {MdTabLabelWrapper} from './tab-label-wrapper'; +import {MdTabLink, MdTabNav} from './tab-nav-bar/tab-nav-bar'; + + +@NgModule({ + imports: [ + CommonModule, + MdCommonModule, + PortalModule, + MdRippleModule, + ObserversModule, + ScrollDispatchModule, + ], + // Don't export all components because some are only to be used internally. + exports: [ + MdCommonModule, + MdTabGroup, + MdTabLabel, + MdTab, + MdTabNav, + MdTabLink, + ], + declarations: [ + MdTabGroup, + MdTabLabel, + MdTab, + MdInkBar, + MdTabLabelWrapper, + MdTabNav, + MdTabLink, + MdTabBody, + MdTabHeader + ], + providers: [VIEWPORT_RULER_PROVIDER], +}) +export class MdTabsModule {} + + +export * from './tab-group'; +export {MdInkBar} from './ink-bar'; +export {MdTabBody, MdTabBodyOriginState, MdTabBodyPositionState} from './tab-body'; +export {MdTabHeader, ScrollDirection} from './tab-header'; +export {MdTabLabelWrapper} from './tab-label-wrapper'; +export {MdTab} from './tab'; +export {MdTabLabel} from './tab-label'; +export {MdTabNav, MdTabLink} from './tab-nav-bar/index'; + diff --git a/src/lib/tabs/tab-body.spec.ts b/src/lib/tabs/tab-body.spec.ts index e5f459ec12fb..bd7592f97a36 100644 --- a/src/lib/tabs/tab-body.spec.ts +++ b/src/lib/tabs/tab-body.spec.ts @@ -3,10 +3,10 @@ import {CommonModule} from '@angular/common'; import {PortalModule} from '@angular/cdk/portal'; import {async, ComponentFixture, TestBed, flushMicrotasks, fakeAsync} from '@angular/core/testing'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; -import {Direction, Directionality} from '../core/bidi/index'; -import {TemplatePortal} from '../core/portal/portal'; +import {Direction, Directionality} from '@angular/material/core'; +import {TemplatePortal} from '@angular/material/core'; import {MdTabBody} from './tab-body'; -import {MdRippleModule} from '../core/ripple/index'; +import {MdRippleModule} from '@angular/material/core'; describe('MdTabBody', () => { diff --git a/src/lib/tabs/tab-group.ts b/src/lib/tabs/tab-group.ts index 749e9d6c661c..1521c92382ac 100644 --- a/src/lib/tabs/tab-group.ts +++ b/src/lib/tabs/tab-group.ts @@ -28,8 +28,8 @@ import {coerceBooleanProperty} from '@angular/cdk/coercion'; import {Subscription} from 'rxjs/Subscription'; import {MdTab} from './tab'; import {merge} from 'rxjs/observable/merge'; -import {CanDisableRipple, mixinDisableRipple} from '../core/common-behaviors/disable-ripple'; -import {CanColor, mixinColor, ThemePalette} from '../core/common-behaviors/color'; +import {CanDisableRipple, mixinDisableRipple} from '@angular/material/core'; +import {CanColor, mixinColor, ThemePalette} from '@angular/material/core'; /** Used to generate unique ID's for each tab component */ diff --git a/src/lib/tabs/tab-header.spec.ts b/src/lib/tabs/tab-header.spec.ts index 64239dfc60a2..d3a2aceea4e2 100644 --- a/src/lib/tabs/tab-header.spec.ts +++ b/src/lib/tabs/tab-header.spec.ts @@ -10,7 +10,7 @@ import {ViewportRuler} from '@angular/cdk/scrolling'; import {Direction, Directionality} from '@angular/cdk/bidi'; import {dispatchFakeEvent, dispatchKeyboardEvent, FakeViewportRuler} from '@angular/cdk/testing'; import {MdTabHeader} from './tab-header'; -import {MdRippleModule} from '../core/ripple/index'; +import {MdRippleModule} from '@angular/material/core'; import {MdInkBar} from './ink-bar'; import {MdTabLabelWrapper} from './tab-label-wrapper'; import {Subject} from 'rxjs/Subject'; diff --git a/src/lib/tabs/tab-header.ts b/src/lib/tabs/tab-header.ts index 00f0987bc69e..638c53a268f7 100644 --- a/src/lib/tabs/tab-header.ts +++ b/src/lib/tabs/tab-header.ts @@ -6,34 +6,35 @@ * found in the LICENSE file at https://angular.io/license */ +import {Direction, Directionality} from '@angular/cdk/bidi'; +import {ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE} from '@angular/cdk/keycodes'; +import {auditTime, startWith} from '@angular/cdk/rxjs'; import { - ViewChild, + AfterContentChecked, + AfterContentInit, + ChangeDetectionStrategy, + ChangeDetectorRef, Component, - Input, - QueryList, - ElementRef, - ViewEncapsulation, ContentChildren, - Output, + ElementRef, EventEmitter, - Optional, - AfterContentChecked, - AfterContentInit, + Input, OnDestroy, + Optional, + Output, + QueryList, Renderer2, - ChangeDetectionStrategy, - ChangeDetectorRef, + ViewChild, + ViewEncapsulation, } from '@angular/core'; -import {Directionality, Direction} from '@angular/cdk/bidi'; -import {RIGHT_ARROW, LEFT_ARROW, ENTER, SPACE} from '@angular/cdk/keycodes'; -import {auditTime, startWith} from '@angular/cdk/rxjs'; -import {Subscription} from 'rxjs/Subscription'; -import {of as observableOf} from 'rxjs/observable/of'; -import {merge} from 'rxjs/observable/merge'; +import {CanDisableRipple, mixinDisableRipple} from '@angular/material/core'; import {fromEvent} from 'rxjs/observable/fromEvent'; -import {MdTabLabelWrapper} from './tab-label-wrapper'; +import {merge} from 'rxjs/observable/merge'; +import {of as observableOf} from 'rxjs/observable/of'; +import {Subscription} from 'rxjs/Subscription'; import {MdInkBar} from './ink-bar'; -import {CanDisableRipple, mixinDisableRipple} from '../core/common-behaviors/disable-ripple'; +import {MdTabLabelWrapper} from './tab-label-wrapper'; + /** * The directions that scrolling can go in when the header's tabs exceed the header width. 'After' diff --git a/src/lib/tabs/tab-label-wrapper.ts b/src/lib/tabs/tab-label-wrapper.ts index 4ce986a27dff..6dcc39f556bf 100644 --- a/src/lib/tabs/tab-label-wrapper.ts +++ b/src/lib/tabs/tab-label-wrapper.ts @@ -7,7 +7,7 @@ */ import {Directive, ElementRef} from '@angular/core'; -import {CanDisable, mixinDisabled} from '../core/common-behaviors/disabled'; +import {CanDisable, mixinDisabled} from '@angular/material/core'; // Boilerplate for applying mixins to MdTabLabelWrapper. /** @docs-private */ diff --git a/src/lib/tabs/tab-nav-bar/tab-nav-bar.ts b/src/lib/tabs/tab-nav-bar/tab-nav-bar.ts index d247017fe418..44a22aa7b18c 100644 --- a/src/lib/tabs/tab-nav-bar/tab-nav-bar.ts +++ b/src/lib/tabs/tab-nav-bar/tab-nav-bar.ts @@ -6,38 +6,46 @@ * found in the LICENSE file at https://angular.io/license */ +import {Directionality} from '@angular/cdk/bidi'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {Platform} from '@angular/cdk/platform'; +import {auditTime, takeUntil} from '@angular/cdk/rxjs'; +import {ViewportRuler} from '@angular/cdk/scrolling'; import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, + ContentChildren, Directive, ElementRef, + forwardRef, Inject, Input, NgZone, OnDestroy, Optional, + QueryList, Renderer2, ViewChild, ViewEncapsulation, - ContentChildren, - QueryList, - forwardRef, } from '@angular/core'; -import {ViewportRuler} from '@angular/cdk/scrolling'; -import {Directionality} from '@angular/cdk/bidi'; -import {Platform} from '@angular/cdk/platform'; -import {auditTime, takeUntil} from '@angular/cdk/rxjs'; -import {Subject} from 'rxjs/Subject'; -import {of as observableOf} from 'rxjs/observable/of'; -import {merge} from 'rxjs/observable/merge'; +import { + CanColor, + CanDisable, + CanDisableRipple, + MD_RIPPLE_GLOBAL_OPTIONS, + MdRipple, + mixinColor, + mixinDisabled, + mixinDisableRipple, + RippleGlobalOptions, + ThemePalette, +} from '@angular/material/core'; import {fromEvent} from 'rxjs/observable/fromEvent'; -import {CanDisableRipple, mixinDisableRipple} from '../../core/common-behaviors/disable-ripple'; -import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import {CanDisable, mixinDisabled} from '../../core/common-behaviors/disabled'; -import {MD_RIPPLE_GLOBAL_OPTIONS, MdRipple, RippleGlobalOptions} from '../../core'; -import {CanColor, mixinColor, ThemePalette} from '../../core/common-behaviors/color'; +import {merge} from 'rxjs/observable/merge'; +import {of as observableOf} from 'rxjs/observable/of'; +import {Subject} from 'rxjs/Subject'; import {MdInkBar} from '../ink-bar'; diff --git a/src/lib/tabs/tab.ts b/src/lib/tabs/tab.ts index 306593ae0b71..2031d0716541 100644 --- a/src/lib/tabs/tab.ts +++ b/src/lib/tabs/tab.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {TemplatePortal} from '../core/portal/portal'; +import {TemplatePortal} from '@angular/material/core'; import { ChangeDetectionStrategy, Component, @@ -21,7 +21,7 @@ import { ViewContainerRef, ViewEncapsulation, } from '@angular/core'; -import {CanDisable, mixinDisabled} from '../core/common-behaviors/disabled'; +import {CanDisable, mixinDisabled} from '@angular/material/core'; import {MdTabLabel} from './tab-label'; import {Subject} from 'rxjs/Subject'; diff --git a/src/lib/tabs/tsconfig-build.json b/src/lib/tabs/tsconfig-build.json new file mode 100644 index 000000000000..b86c725d3b37 --- /dev/null +++ b/src/lib/tabs/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/tabs", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/toolbar/index.ts b/src/lib/toolbar/index.ts index eb66854ca316..f93e7c31d564 100644 --- a/src/lib/toolbar/index.ts +++ b/src/lib/toolbar/index.ts @@ -6,17 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {MdCommonModule} from '../core'; -import {MdToolbar, MdToolbarRow} from './toolbar'; - - -@NgModule({ - imports: [MdCommonModule], - exports: [MdToolbar, MdToolbarRow, MdCommonModule], - declarations: [MdToolbar, MdToolbarRow], -}) -export class MdToolbarModule {} - - -export * from './toolbar'; +export * from './public_api'; diff --git a/src/lib/toolbar/public_api.ts b/src/lib/toolbar/public_api.ts new file mode 100644 index 000000000000..011492c6388f --- /dev/null +++ b/src/lib/toolbar/public_api.ts @@ -0,0 +1,22 @@ +/** + * @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 {MdCommonModule} from '@angular/material/core'; +import {MdToolbar, MdToolbarRow} from './toolbar'; + + +@NgModule({ + imports: [MdCommonModule], + exports: [MdToolbar, MdToolbarRow, MdCommonModule], + declarations: [MdToolbar, MdToolbarRow], +}) +export class MdToolbarModule {} + + +export * from './toolbar'; diff --git a/src/lib/toolbar/toolbar.ts b/src/lib/toolbar/toolbar.ts index 772869c8fadb..19bdad5ff463 100644 --- a/src/lib/toolbar/toolbar.ts +++ b/src/lib/toolbar/toolbar.ts @@ -14,7 +14,7 @@ import { ElementRef, Renderer2, } from '@angular/core'; -import {CanColor, mixinColor} from '../core/common-behaviors/color'; +import {CanColor, mixinColor} from '@angular/material/core'; @Directive({ diff --git a/src/lib/toolbar/tsconfig-build.json b/src/lib/toolbar/tsconfig-build.json new file mode 100644 index 000000000000..5cb7948f310d --- /dev/null +++ b/src/lib/toolbar/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/toolbar", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/tooltip/index.ts b/src/lib/tooltip/index.ts index f16ad06caff9..f93e7c31d564 100644 --- a/src/lib/tooltip/index.ts +++ b/src/lib/tooltip/index.ts @@ -6,29 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; -import {OverlayModule} from '@angular/cdk/overlay'; -import {PlatformModule} from '@angular/cdk/platform'; -import {MdCommonModule} from '../core'; -import {MdTooltip, TooltipComponent, MD_TOOLTIP_SCROLL_STRATEGY_PROVIDER} from './tooltip'; -import {A11yModule, ARIA_DESCRIBER_PROVIDER} from '@angular/cdk/a11y'; - - -@NgModule({ - imports: [ - CommonModule, - OverlayModule, - MdCommonModule, - PlatformModule, - A11yModule, - ], - exports: [MdTooltip, TooltipComponent, MdCommonModule], - declarations: [MdTooltip, TooltipComponent], - entryComponents: [TooltipComponent], - providers: [MD_TOOLTIP_SCROLL_STRATEGY_PROVIDER, ARIA_DESCRIBER_PROVIDER], -}) -export class MdTooltipModule {} - - -export * from './tooltip'; +export * from './public_api'; diff --git a/src/lib/tooltip/public_api.ts b/src/lib/tooltip/public_api.ts new file mode 100644 index 000000000000..db8e168c0701 --- /dev/null +++ b/src/lib/tooltip/public_api.ts @@ -0,0 +1,34 @@ +/** + * @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 {A11yModule, ARIA_DESCRIBER_PROVIDER} from '@angular/cdk/a11y'; +import {OverlayModule} from '@angular/cdk/overlay'; +import {PlatformModule} from '@angular/cdk/platform'; +import {CommonModule} from '@angular/common'; +import {NgModule} from '@angular/core'; +import {MdCommonModule} from '@angular/material/core'; +import {MD_TOOLTIP_SCROLL_STRATEGY_PROVIDER, MdTooltip, TooltipComponent} from './tooltip'; + + +@NgModule({ + imports: [ + CommonModule, + OverlayModule, + MdCommonModule, + PlatformModule, + A11yModule, + ], + exports: [MdTooltip, TooltipComponent, MdCommonModule], + declarations: [MdTooltip, TooltipComponent], + entryComponents: [TooltipComponent], + providers: [MD_TOOLTIP_SCROLL_STRATEGY_PROVIDER, ARIA_DESCRIBER_PROVIDER], +}) +export class MdTooltipModule {} + + +export * from './tooltip'; diff --git a/src/lib/tooltip/tooltip.ts b/src/lib/tooltip/tooltip.ts index 9dddf7387c6d..7cca6e1c9fb9 100644 --- a/src/lib/tooltip/tooltip.ts +++ b/src/lib/tooltip/tooltip.ts @@ -6,6 +6,24 @@ * found in the LICENSE file at https://angular.io/license */ +import {animate, AnimationEvent, state, style, transition, trigger} from '@angular/animations'; +import {AriaDescriber} from '@angular/cdk/a11y'; +import {Directionality} from '@angular/cdk/bidi'; +import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {ESCAPE} from '@angular/cdk/keycodes'; +import { + OriginConnectionPosition, + Overlay, + OverlayConnectionPosition, + OverlayRef, + OverlayState, + RepositionScrollStrategy, + ScrollStrategy, +} from '@angular/cdk/overlay'; +import {Platform} from '@angular/cdk/platform'; +import {ComponentPortal} from '@angular/cdk/portal'; +import {first} from '@angular/cdk/rxjs'; +import {ScrollDispatcher} from '@angular/cdk/scrolling'; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -22,29 +40,8 @@ import { ViewContainerRef, ViewEncapsulation, } from '@angular/core'; -import {animate, AnimationEvent, state, style, transition, trigger} from '@angular/animations'; -import {ComponentPortal} from '@angular/cdk/portal'; -import {ScrollDispatcher} from '@angular/cdk/scrolling'; import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; -import {Directionality} from '@angular/cdk/bidi'; -import {Platform} from '@angular/cdk/platform'; -import {first} from '@angular/cdk/rxjs'; -import { - OriginConnectionPosition, - Overlay, - OverlayConnectionPosition, - OverlayRef, - OverlayState, - RepositionScrollStrategy, - // This import is only used to define a generic type. The current TypeScript version incorrectly - // considers such imports as unused (https://github.com/Microsoft/TypeScript/issues/14953) - // tslint:disable-next-line:no-unused-variable - ScrollStrategy, -} from '@angular/cdk/overlay'; -import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import {ESCAPE} from '@angular/cdk/keycodes'; -import {AriaDescriber} from '@angular/cdk/a11y'; export type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after'; diff --git a/src/lib/tooltip/tsconfig-build.json b/src/lib/tooltip/tsconfig-build.json new file mode 100644 index 000000000000..1a9490324e1f --- /dev/null +++ b/src/lib/tooltip/tsconfig-build.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig-build", + "files": [ + "public_api.ts", + "../typings.d.ts" + ], + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "strictMetadataEmit": true, + "flatModuleOutFile": "index.js", + "flatModuleId": "@angular/material/tooltip", + "skipTemplateCodegen": true + } +} diff --git a/src/lib/tsconfig-build.json b/src/lib/tsconfig-build.json index baba3f5ba82d..8da26353210e 100644 --- a/src/lib/tsconfig-build.json +++ b/src/lib/tsconfig-build.json @@ -21,7 +21,8 @@ "types": [], "baseUrl": ".", "paths": { - "@angular/cdk/*": ["../../dist/packages/cdk/*/public_api"] + "@angular/cdk/*": ["../../dist/packages/cdk/*/public_api"], + "@angular/material/*": ["../../dist/packages/material/*/public_api"] } }, "files": [ diff --git a/src/lib/tsconfig-tests.json b/src/lib/tsconfig-tests.json index 161d5a28c2d4..6a405806a69d 100644 --- a/src/lib/tsconfig-tests.json +++ b/src/lib/tsconfig-tests.json @@ -7,7 +7,11 @@ "importHelpers": false, "module": "commonjs", "target": "es5", - "types": ["jasmine"] + "types": ["jasmine"], + "paths": { + "@angular/material/*": ["./*"], + "@angular/cdk/*": ["../../dist/packages/cdk/*/public_api"] + } }, "include": [ "**/*.spec.ts", diff --git a/src/lib/tsconfig.json b/src/lib/tsconfig.json new file mode 100644 index 000000000000..d5174fe9611c --- /dev/null +++ b/src/lib/tsconfig.json @@ -0,0 +1,13 @@ +// Configuration for IDEs only. +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "..", + "baseUrl": ".", + "paths": { + "@angular/cdk/*": ["../cdk/*"], + "@angular/material/*": ["./*"] + } + }, + "include": ["./**/*.ts"] +} diff --git a/src/material-examples/package.json b/src/material-examples/package.json index e4f029d0dfa4..dc2080808034 100644 --- a/src/material-examples/package.json +++ b/src/material-examples/package.json @@ -3,8 +3,8 @@ "version": "0.0.0-PLACEHOLDER", "description": "Angular Material Examples", "main": "./bundles/material-examples.umd.js", - "module": "./@angular/material-examples.es5.js", - "es2015": "./@angular/material-examples.js", + "module": "./esm5/material-examples.es5.js", + "es2015": "./esm2015/material-examples.js", "typings": "./material-examples.d.ts", "private": true, "repository": { diff --git a/src/material-examples/table-http/table-http-example.ts b/src/material-examples/table-http/table-http-example.ts index 34389b71561e..60c10fa515b6 100644 --- a/src/material-examples/table-http/table-http-example.ts +++ b/src/material-examples/table-http/table-http-example.ts @@ -109,7 +109,7 @@ export class ExampleDataSource extends DataSource { this.isLoadingResults = false; // Catch if the GitHub API has reached its rate limit. Return empty data. this.isRateLimitReached = true; - return Observable.of(null); + return Observable.of([]); }); } diff --git a/src/material-examples/tsconfig-build.json b/src/material-examples/tsconfig-build.json index 312490abaec9..4d04613664e0 100644 --- a/src/material-examples/tsconfig-build.json +++ b/src/material-examples/tsconfig-build.json @@ -20,6 +20,7 @@ "types": [], "baseUrl": ".", "paths": { + "@angular/material/*": ["../../dist/packages/material/*/public_api"], "@angular/material": ["../../dist/packages/material/public_api"], "@angular/cdk/*": ["../../dist/packages/cdk/*/public_api"] } diff --git a/src/material-examples/tsconfig.json b/src/material-examples/tsconfig.json new file mode 100644 index 000000000000..3e4fa9c6417d --- /dev/null +++ b/src/material-examples/tsconfig.json @@ -0,0 +1,14 @@ +// Configuration for IDEs only. +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "..", + "baseUrl": ".", + "paths": { + "@angular/cdk/*": ["../cdk/*"], + "@angular/material/*": ["../lib/*"], + "@angular/material": ["../lib/public_api.ts"] + } + }, + "include": ["./**/*.ts"] +} diff --git a/src/material-examples/typings.d.ts b/src/material-examples/typings.d.ts new file mode 100644 index 000000000000..bf6ef74f4b61 --- /dev/null +++ b/src/material-examples/typings.d.ts @@ -0,0 +1 @@ +declare const module: {id: string}; diff --git a/src/material-moment-adapter/package.json b/src/material-moment-adapter/package.json index 8e50eeac9aa7..7e1141586f4f 100644 --- a/src/material-moment-adapter/package.json +++ b/src/material-moment-adapter/package.json @@ -3,8 +3,8 @@ "version": "0.0.0-PLACEHOLDER", "description": "Angular Material Moment Adapter", "main": "./bundles/material-moment-adapter.umd.js", - "module": "./@angular/material-moment-adapter.es5.js", - "es2015": "./@angular/material-moment-adapter.js", + "module": "./esm5/material-moment-adapter.es5.js", + "es2015": "./esm2015/material-moment-adapter.js", "typings": "./material-moment-adapter.d.ts", "repository": { "type": "git", diff --git a/src/material-moment-adapter/tsconfig-build.json b/src/material-moment-adapter/tsconfig-build.json index e964dd29752b..8aeaea2f87d6 100644 --- a/src/material-moment-adapter/tsconfig-build.json +++ b/src/material-moment-adapter/tsconfig-build.json @@ -23,7 +23,9 @@ "skipLibCheck": true, "types": [], "paths": { - "@angular/material": ["../../dist/packages/material/public_api"] + "@angular/material/*": ["../../dist/packages/material/*/public_api"], + "@angular/material": ["../../dist/packages/material/public_api"], + "@angular/cdk/*": ["../../dist/packages/cdk/*/public_api"] } }, "files": [ diff --git a/src/material-moment-adapter/tsconfig.json b/src/material-moment-adapter/tsconfig.json new file mode 100644 index 000000000000..3e4fa9c6417d --- /dev/null +++ b/src/material-moment-adapter/tsconfig.json @@ -0,0 +1,14 @@ +// Configuration for IDEs only. +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "..", + "baseUrl": ".", + "paths": { + "@angular/cdk/*": ["../cdk/*"], + "@angular/material/*": ["../lib/*"], + "@angular/material": ["../lib/public_api.ts"] + } + }, + "include": ["./**/*.ts"] +} diff --git a/src/universal-app/tsconfig-build.json b/src/universal-app/tsconfig-build.json index b51d28668fc0..adf897b7aba4 100644 --- a/src/universal-app/tsconfig-build.json +++ b/src/universal-app/tsconfig-build.json @@ -19,7 +19,8 @@ "baseUrl": ".", "paths": { "@angular/material": ["./material"], - "@angular/cdk/*": ["./cdk/*"] + "@angular/cdk/*": ["./cdk/*"], + "@angular/material/*": ["./material/*"] } }, "files": [ diff --git a/src/universal-app/tsconfig-prerender.json b/src/universal-app/tsconfig-prerender.json index b93ecc292994..1d43000eef9e 100644 --- a/src/universal-app/tsconfig-prerender.json +++ b/src/universal-app/tsconfig-prerender.json @@ -19,7 +19,8 @@ "baseUrl": ".", "paths": { "@angular/material": ["./material"], - "@angular/cdk/*": ["./cdk/*"] + "@angular/cdk/*": ["./cdk/*"], + "@angular/material/*": ["./material/*"] } }, "files": [ diff --git a/test/karma-test-shim.js b/test/karma-test-shim.js index 51fb7450022c..685ad98cefd7 100644 --- a/test/karma-test-shim.js +++ b/test/karma-test-shim.js @@ -64,6 +64,38 @@ System.config({ '@angular/cdk/stepper': 'dist/packages/cdk/stepper/index.js', '@angular/cdk/table': 'dist/packages/cdk/table/index.js', '@angular/cdk/testing': 'dist/packages/cdk/testing/index.js', + + '@angular/material/autocomplete': 'dist/packages/material/autocomplete/index.js', + '@angular/material/button': 'dist/packages/material/button/index.js', + '@angular/material/button-toggle': 'dist/packages/material/button-toggle/index.js', + '@angular/material/card': 'dist/packages/material/card/index.js', + '@angular/material/checkbox': 'dist/packages/material/checkbox/index.js', + '@angular/material/chips': 'dist/packages/material/chips/index.js', + '@angular/material/core': 'dist/packages/material/core/index.js', + '@angular/material/datepicker': 'dist/packages/material/datepicker/index.js', + '@angular/material/dialog': 'dist/packages/material/dialog/index.js', + '@angular/material/expansion': 'dist/packages/material/expansion/index.js', + '@angular/material/form-field': 'dist/packages/material/form-field/index.js', + '@angular/material/grid-list': 'dist/packages/material/grid-list/index.js', + '@angular/material/icon': 'dist/packages/material/icon/index.js', + '@angular/material/input': 'dist/packages/material/input/index.js', + '@angular/material/list': 'dist/packages/material/list/index.js', + '@angular/material/menu': 'dist/packages/material/menu/index.js', + '@angular/material/paginator': 'dist/packages/material/paginator/index.js', + '@angular/material/progress-bar': 'dist/packages/material/progress-bar/index.js', + '@angular/material/progress-spinner': 'dist/packages/material/progress-spinner/index.js', + '@angular/material/radio': 'dist/packages/material/radio/index.js', + '@angular/material/select': 'dist/packages/material/select/index.js', + '@angular/material/sidenav': 'dist/packages/material/sidenav/index.js', + '@angular/material/slide-toggle': 'dist/packages/material/slide-toggle/index.js', + '@angular/material/slider': 'dist/packages/material/slider/index.js', + '@angular/material/snack-bar': 'dist/packages/material/snack-bar/index.js', + '@angular/material/sort': 'dist/packages/material/sort/index.js', + '@angular/material/stepper': 'dist/packages/material/stepper/index.js', + '@angular/material/table': 'dist/packages/material/table/index.js', + '@angular/material/tabs': 'dist/packages/material/tabs/index.js', + '@angular/material/toolbar': 'dist/packages/material/toolbar/index.js', + '@angular/material/tooltip': 'dist/packages/material/tooltip/index.js', }, packages: { // Thirdparty barrels. diff --git a/tools/gulp/packages.ts b/tools/gulp/packages.ts index 40ce3463fd9a..890c435f52ad 100644 --- a/tools/gulp/packages.ts +++ b/tools/gulp/packages.ts @@ -7,5 +7,9 @@ export const examplesPackage = new BuildPackage('material-examples', [materialPa export const momentAdapterPackage = new BuildPackage('material-moment-adapter', [materialPackage, cdkPackage]); +// The material package re-exports its secondary entry-points at the root so that all of the +// components can still be imported through `@angular/material`. +materialPackage.exportsSecondaryEntryPointsAtRoot = true; + // To avoid refactoring of the project the material package will map to the source path `lib/`. -materialPackage.packageRoot = join(buildConfig.packagesDir, 'lib'); +materialPackage.sourceDir = join(buildConfig.packagesDir, 'lib'); diff --git a/tools/gulp/tasks/development.ts b/tools/gulp/tasks/development.ts index 313a74239129..cb3cec505951 100644 --- a/tools/gulp/tasks/development.ts +++ b/tools/gulp/tasks/development.ts @@ -17,7 +17,7 @@ const appDir = join(packagesDir, 'demo-app'); const outDir = join(outputDir, 'packages', 'demo-app'); /** Path to the output of the Material package. */ -const materialOutPath = join(outputDir, 'packages', 'material'); +const materialOutPath = join(outDir, 'packages', 'material'); /** Array of vendors that are required to serve the demo-app. */ const appVendors = [ diff --git a/tools/gulp/tasks/material-release.ts b/tools/gulp/tasks/material-release.ts index 183cf0bea501..201ab1c17991 100644 --- a/tools/gulp/tasks/material-release.ts +++ b/tools/gulp/tasks/material-release.ts @@ -8,22 +8,22 @@ import {materialPackage} from '../packages'; // There are no type definitions available for these imports. const gulpRename = require('gulp-rename'); -const {outputDir} = buildConfig; -const {packageRoot, packageOut} = materialPackage; +const distDir = buildConfig.outputDir; +const {sourceDir, outputDir} = materialPackage; /** Path to the directory where all releases are created. */ -const releasesDir = join(outputDir, 'releases'); +const releasesDir = join(distDir, 'releases'); // Path to the release output of material. const releasePath = join(releasesDir, 'material'); // The entry-point for the scss theming bundle. -const themingEntryPointPath = join(packageRoot, 'core', 'theming', '_all-theme.scss'); +const themingEntryPointPath = join(sourceDir, 'core', 'theming', '_all-theme.scss'); // Output path for the scss theming bundle. const themingBundlePath = join(releasePath, '_theming.scss'); // Matches all pre-built theme css files -const prebuiltThemeGlob = join(packageOut, '**/theming/prebuilt/*.css?(.map)'); +const prebuiltThemeGlob = join(outputDir, '**/theming/prebuilt/*.css?(.map)'); // Matches all SCSS files in the library. -const allScssGlob = join(packageRoot, '**/*.scss'); +const allScssGlob = join(sourceDir, '**/*.scss'); /** * Overwrite the release task for the material package. The material release will include special diff --git a/tools/package-tools/build-bundles.ts b/tools/package-tools/build-bundles.ts index ab84af91386c..d65c3fe2dd70 100644 --- a/tools/package-tools/build-bundles.ts +++ b/tools/package-tools/build-bundles.ts @@ -1,80 +1,181 @@ -import {join} from 'path'; +import {join, dirname} from 'path'; 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 {BuildPackage} from './build-package'; +import {rollupRemoveLicensesPlugin} from './rollup-remove-licenses'; +import {rollupGlobals} from './rollup-globals'; + +// There are no type definitions available for these imports. +const rollup = require('rollup'); +const rollupNodeResolutionPlugin = require('rollup-plugin-node-resolve'); +const rollupAlias = require('rollup-plugin-alias'); /** Directory where all bundles will be created in. */ const bundlesDir = join(buildConfig.outputDir, 'bundles'); -/** 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 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`), - }); -} +/** Utility for creating bundles from raw ngc output. */ +export class PackageBundler { + constructor(private buildPackage: BuildPackage) {} + + /** Creates all bundles for the package and all associated entry points (UMD, ES5, ES2015). */ + async createBundles() { + for (const entryPoint of this.buildPackage.secondaryEntryPoints) { + await this.bundleSecondaryEntryPoint(entryPoint); + } + + await this.bundlePrimaryEntryPoint(); + } + + /** Bundles the primary entry-point w/ given entry file, e.g. @angular/cdk */ + private async bundlePrimaryEntryPoint() { + const packageName = this.buildPackage.name; + + return this.bundleEntryPoint({ + entryFile: this.buildPackage.entryFilePath, + moduleName: `ng.${this.buildPackage.name}`, + esm2015Dest: join(bundlesDir, `${packageName}.js`), + esm5Dest: join(bundlesDir, `${packageName}.es5.js`), + umdDest: join(bundlesDir, `${packageName}.umd.js`), + umdMinDest: join(bundlesDir, `${packageName}.umd.min.js`), + }); + } + + /** Bundles a single secondary entry-point w/ given entry file, e.g. @angular/cdk/a11y */ + private async bundleSecondaryEntryPoint(entryPoint: string) { + const packageName = this.buildPackage.name; + const entryFile = join(this.buildPackage.outputDir, entryPoint, 'index.js'); + + return this.bundleEntryPoint({ + entryFile, + moduleName: `ng.${packageName}.${entryPoint}`, + esm2015Dest: join(bundlesDir, `${packageName}`, `${entryPoint}.js`), + esm5Dest: join(bundlesDir, `${packageName}`, `${entryPoint}.es5.js`), + umdDest: join(bundlesDir, `${packageName}-${entryPoint}.umd.js`), + umdMinDest: join(bundlesDir, `${packageName}-${entryPoint}.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. + */ + private async bundleEntryPoint(config: BundlesConfig) { + // Build FESM-2015 bundle file. + await this.createRollupBundle({ + moduleName: config.moduleName, + entry: config.entryFile, + dest: config.esm2015Dest, + format: 'es', + }); + + await remapSourcemap(config.esm2015Dest); + + // Downlevel ES2015 bundle to ES5. + transpileFile(config.esm2015Dest, config.esm5Dest, { + importHelpers: true, + target: ScriptTarget.ES5, + module: ModuleKind.ES2015, + allowJs: true, + newLine: NewLineKind.LineFeed + }); + + await remapSourcemap(config.esm5Dest); + + // Create UMD bundle of ES5 output. + await this.createRollupBundle({ + moduleName: config.moduleName, + entry: config.esm5Dest, + dest: config.umdDest, + format: 'umd' + }); + + await remapSourcemap(config.umdDest); -/** - * 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: config.moduleName, - entry: config.entryFile, - dest: config.fesm2015Dest, - format: 'es', - }); - - await remapSourcemap(config.fesm2015Dest); - - // Downlevel FESM-2015 file to ES5. - transpileFile(config.fesm2015Dest, config.fesm2014Dest, { - importHelpers: true, - target: ScriptTarget.ES5, - module: ModuleKind.ES2015, - allowJs: true, - newLine: NewLineKind.LineFeed - }); - - await remapSourcemap(config.fesm2014Dest); - - // Create UMD bundle of FESM-2014 output. - await createRollupBundle({ - moduleName: config.moduleName, - entry: config.fesm2014Dest, - dest: config.umdDest, - format: 'umd' - }); - - await remapSourcemap(config.umdDest); - - // Create a minified UMD bundle using UglifyJS - uglifyJsFile(config.umdDest, config.umdMinDest); - - await remapSourcemap(config.umdMinDest); + // Create a minified UMD bundle using UglifyJS + uglifyJsFile(config.umdDest, config.umdMinDest); + + await remapSourcemap(config.umdMinDest); + } + + /** Creates a rollup bundle of a specified JavaScript file.*/ + private async createRollupBundle(config: RollupBundleConfig) { + const bundleOptions = { + context: 'this', + external: Object.keys(rollupGlobals), + entry: config.entry, + onwarn: (message: string) => { + // TODO(jelbourn): figure out *why* rollup warns about certain symbols not being found + // when those symbols don't appear to be in the input file in the first place. + if (/but never used/.test(message)) { + return false; + } + + console.warn(message); + }, + plugins: [ + rollupRemoveLicensesPlugin, + ] + }; + + const writeOptions = { + // Keep the moduleId empty because we don't want to force developers to a specific moduleId. + moduleId: '', + moduleName: config.moduleName || 'ng.material', + banner: buildConfig.licenseBanner, + format: config.format, + dest: config.dest, + globals: rollupGlobals, + sourceMap: true + }; + + // For UMD bundles, we need to adjust the `external` bundle option in order to include + // all necessary code in the bundle. + if (config.format === 'umd') { + bundleOptions.plugins.push(rollupNodeResolutionPlugin()); + + // For all UMD bundles, we want to exclude tslib from the `external` bundle option so that + // it is inlined into the bundle. + let external = Object.keys(rollupGlobals); + external.splice(external.indexOf('tslib'), 1); + + // If each secondary entry-point is re-exported at the root, we want to exlclude those + // secondary entry-points from the rollup globals because we want the UMD for this package + // to include *all* of the sources for those entry-points. + if (this.buildPackage.exportsSecondaryEntryPointsAtRoot) { + const importRegex = new RegExp(`@angular/${this.buildPackage.name}/.+`, 'g'); + external = external.filter(e => !importRegex.test(e)); + + // Use the rollup-alias plugin to map imports of the form `@angular/material/button` + // to the actual file location so that rollup can resolve the imports (otherwise they + // will be treated as external dependencies and not included in the bundle). + bundleOptions.plugins.push( + rollupAlias(this.getResolvedSecondaryEntryPointImportPaths(config.dest))); + } + + bundleOptions.external = external; + } + + return rollup.rollup(bundleOptions).then((bundle: any) => bundle.write(writeOptions)); + } + + /** + * Gets mapping of import aliases (e.g. `@angular/material/button`) to the path of the es5 + * bundle output. + * @param bundleOutputDir Path to the bundle output directory. + * @returns Map of alias to resolved path. + */ + private getResolvedSecondaryEntryPointImportPaths(bundleOutputDir: string) { + return this.buildPackage.secondaryEntryPoints.reduce((map, p) => { + map[`@angular/${this.buildPackage.name}/${p}`] = + join(dirname(bundleOutputDir), 'material', `${p}.es5`); + return map; + }, {} as {[key: string]: string}); + } } @@ -82,8 +183,16 @@ async function createBundlesForEntryPoint(config: BundlesConfig) { interface BundlesConfig { entryFile: string; moduleName: string; - fesm2015Dest: string; - fesm2014Dest: string; + esm2015Dest: string; + esm5Dest: string; umdDest: string; umdMinDest: string; } + +/** Configuration for creating a bundle via rollup. */ +interface RollupBundleConfig { + entry: string; + dest: string; + format: string; + moduleName: string; +} diff --git a/tools/package-tools/build-package.ts b/tools/package-tools/build-package.ts index d90af0899736..616d8b0e68eb 100644 --- a/tools/package-tools/build-package.ts +++ b/tools/package-tools/build-package.ts @@ -1,8 +1,10 @@ +import {main as ngc} from '@angular/tsc-wrapped'; +import {readFileSync, writeFileSync} from 'fs'; +import {sync as glob} from 'glob'; import {join} from 'path'; -import {main as tsc} from '@angular/tsc-wrapped'; import {buildConfig} from './build-config'; import {getSecondaryEntryPointsForPackage} from './secondary-entry-points'; -import {buildPrimaryEntryPointBundles, buildSecondaryEntryPointBundles} from './build-bundles'; +import {PackageBundler} from './build-bundles'; const {packagesDir, outputDir} = buildConfig; @@ -13,22 +15,29 @@ const buildTsconfigName = 'tsconfig-build.json'; /** Name of the tsconfig file that is responsible for building the tests. */ const testsTsconfigName = 'tsconfig-tests.json'; -export class BuildPackage { +/** Incrementing ID counter. */ +let nextId = 0; +export class BuildPackage { /** Path to the package sources. */ - packageRoot: string; + sourceDir: string; /** Path to the package output. */ - packageOut: string; + outputDir: string; + + /** Whether this package will re-export its secondary-entry points at the root module. */ + exportsSecondaryEntryPointsAtRoot = false; /** Path to the entry file of the package in the output directory. */ - private entryFilePath: string; + readonly entryFilePath: string; /** Path to the tsconfig file, which will be used to build the package. */ - private tsconfigBuild: string; + private readonly tsconfigBuild: string; /** Path to the tsconfig file, which will be used to build the tests. */ - private tsconfigTests: string; + private readonly tsconfigTests: string; + + private readonly bundler = new PackageBundler(this); /** Secondary entry points for the package. */ get secondaryEntryPoints(): string[] { @@ -41,24 +50,25 @@ export class BuildPackage { private _secondaryEntryPoints: string[]; - constructor(public packageName: string, public dependencies: BuildPackage[] = []) { - this.packageRoot = join(packagesDir, packageName); - this.packageOut = join(outputDir, 'packages', packageName); + constructor(public readonly name: string, public readonly dependencies: BuildPackage[] = []) { + this.sourceDir = join(packagesDir, name); + this.outputDir = join(outputDir, 'packages', name); - this.tsconfigBuild = join(this.packageRoot, buildTsconfigName); - this.tsconfigTests = join(this.packageRoot, testsTsconfigName); + this.tsconfigBuild = join(this.sourceDir, buildTsconfigName); + this.tsconfigTests = join(this.sourceDir, testsTsconfigName); - this.entryFilePath = join(this.packageOut, 'index.js'); + this.entryFilePath = join(this.outputDir, 'index.js'); } /** Compiles the package sources with all secondary entry points. */ async compile() { - await this._compileEntryPoint(buildTsconfigName); - // Walk through every secondary entry point and build the TypeScript sources sequentially. for (const entryPoint of this.secondaryEntryPoints) { await this._compileEntryPoint(buildTsconfigName, entryPoint); } + + // Compile the primary entry-point. + await this._compileEntryPoint(buildTsconfigName); } /** Compiles the TypeScript test source files for the package. */ @@ -68,19 +78,33 @@ export class BuildPackage { /** Creates all bundles for the package and all associated entry points. */ async createBundles() { - await buildPrimaryEntryPointBundles(this.entryFilePath, this.packageName); - - for (const entryPoint of this.secondaryEntryPoints) { - const entryPointEntryFilePath = join(this.packageOut, entryPoint, 'index.js'); - await buildSecondaryEntryPointBundles(entryPointEntryFilePath, this.packageName, entryPoint); - } + await this.bundler.createBundles(); } /** Compiles the TypeScript sources of a primary or secondary entry point. */ - private async _compileEntryPoint(tsconfigName: string, secondaryEntryPoint?: string) { - const entryPointPath = join(this.packageRoot, secondaryEntryPoint || ''); + private async _compileEntryPoint(tsconfigName: string, secondaryEntryPoint = '') { + const entryPointPath = join(this.sourceDir, secondaryEntryPoint); const entryPointTsconfigPath = join(entryPointPath, tsconfigName); - await tsc(entryPointTsconfigPath, {basePath: entryPointPath}); + await ngc(entryPointTsconfigPath, {basePath: entryPointPath}); + this.renamePrivateReExportsToBeUnique(secondaryEntryPoint); + } + + /** Renames `ɵa`-style re-exports generated by Angular to be unique across compilation units. */ + private renamePrivateReExportsToBeUnique(secondaryEntryPoint = '') { + // When we compiled the typescript sources with ngc, we do entry-point individually. + // If the root-level module re-exports multiple of these entry-points, the private-export + // identifiers (e.g., `ɵa`) generated by ngc will collide. We work around this by suffixing + // each of these identifiers with an ID specific to this entry point. We make this + // replacement in the js, d.ts, and metadata output. + if (this.exportsSecondaryEntryPointsAtRoot && secondaryEntryPoint) { + const entryPointId = nextId++; + const outputPath = join(this.outputDir, secondaryEntryPoint); + glob(join(outputPath, '**/*.+(js|d.ts|metadata.json)')).forEach(filePath => { + let fileContent = readFileSync(filePath, 'utf-8'); + fileContent = fileContent.replace(/(ɵ[a-z]+)/g, `$1${entryPointId}`); + writeFileSync(filePath, fileContent, 'utf-8'); + }); + } } } diff --git a/tools/package-tools/build-release.ts b/tools/package-tools/build-release.ts index d9e8b08110ae..9ddb0150f538 100644 --- a/tools/package-tools/build-release.ts +++ b/tools/package-tools/build-release.ts @@ -1,14 +1,14 @@ -import {join} from 'path'; +import {appendFileSync} from 'fs'; import {mkdirpSync} from 'fs-extra'; +import {join} from 'path'; +import {buildConfig} from './build-config'; +import {BuildPackage} from './build-package'; import {copyFiles} from './copy-files'; -import {replaceVersionPlaceholders} from './version-placeholders'; +import {createEntryPointPackageJson} from './entry-point-package-json'; 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'; -import {BuildPackage} from './build-package'; +import {createTypingsReexportFile} from './typings-reexport'; +import {replaceVersionPlaceholders} from './version-placeholders'; const {packagesDir, outputDir, projectDir} = buildConfig; @@ -21,33 +21,61 @@ const bundlesDir = join(outputDir, 'bundles'); * file. Additionally the package will be Closure Compiler and AOT compatible. */ export function composeRelease(buildPackage: BuildPackage) { - const {packageName, packageOut, packageRoot} = buildPackage; - const releasePath = join(outputDir, 'releases', packageName); + const {name, sourceDir} = buildPackage; + const packageOut = buildPackage.outputDir; + const releasePath = join(outputDir, 'releases', name); inlinePackageMetadataFiles(packageOut); + // Copy all d.ts and metadata files to the `typings/` directory copyFiles(packageOut, '**/*.+(d.ts|metadata.json)', join(releasePath, 'typings')); - copyFiles(bundlesDir, `${packageName}?(-*).umd?(.min).js?(.map)`, join(releasePath, 'bundles')); - copyFiles(bundlesDir, `${packageName}?(.es5).js?(.map)`, join(releasePath, '@angular')); - copyFiles(join(bundlesDir, packageName), '**', join(releasePath, '@angular', packageName)); + + // Copy UMD bundles. + copyFiles(bundlesDir, `${name}?(-*).umd?(.min).js?(.map)`, join(releasePath, 'bundles')); + + // Copy ES5 bundles. + copyFiles(bundlesDir, `${name}.es5.js?(.map)`, join(releasePath, 'esm5')); + copyFiles(join(bundlesDir, name), `*.es5.js?(.map)`, join(releasePath, 'esm5')); + + // Copy ES2015 bundles + copyFiles(bundlesDir, `${name}.js?(.map)`, join(releasePath, 'esm2015')); + copyFiles(join(bundlesDir, name), `!(*.es5|*.umd).js?(.map)`, join(releasePath, 'esm2015')); + + // Copy any additional files that belong in the package. copyFiles(projectDir, 'LICENSE', releasePath); copyFiles(packagesDir, 'README.md', releasePath); - copyFiles(packageRoot, 'package.json', releasePath); + copyFiles(sourceDir, 'package.json', releasePath); replaceVersionPlaceholders(releasePath); - createTypingsReexportFile(releasePath, './typings/index', packageName); - createMetadataReexportFile(releasePath, './typings/index', packageName); + createTypingsReexportFile(releasePath, './typings/index', name); + createMetadataReexportFile(releasePath, './typings/index', name); if (buildPackage.secondaryEntryPoints.length) { createFilesForSecondaryEntryPoint(buildPackage, releasePath); } + + if (buildPackage.exportsSecondaryEntryPointsAtRoot) { + // Add re-exports to the root d.ts file to prevent errors of the form + // "@angular/material/material has no exported member 'MATERIAL_SANITY_CHECKS." + const es2015Exports = buildPackage.secondaryEntryPoints + .map(p => `export * from './${p}';`).join('\n'); + appendFileSync(join(releasePath, `${name}.d.ts`), es2015Exports, 'utf-8'); + + // When re-exporting secondary entry-points, we need to manually create a metadata file that + // re-exports everything. + createMetadataReexportFile( + releasePath, + buildPackage.secondaryEntryPoints.map(p => `./${p}`), + name); + } } /** Creates files necessary for a secondary entry-point. */ function createFilesForSecondaryEntryPoint(buildPackage: BuildPackage, releasePath: string) { - const {packageName, packageOut} = buildPackage; + const {name} = buildPackage; + const packageOut = buildPackage.outputDir; - getSecondaryEntryPointsForPackage(buildPackage).forEach(entryPointName => { + buildPackage.secondaryEntryPoints.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 @@ -55,7 +83,7 @@ function createFilesForSecondaryEntryPoint(buildPackage: BuildPackage, releasePa const entryPointDir = join(releasePath, entryPointName); mkdirpSync(entryPointDir); - createEntryPointPackageJson(entryPointDir, packageName, entryPointName); + createEntryPointPackageJson(entryPointDir, name, entryPointName); // Copy typings and metadata from tsc output location into the entry-point. copyFiles( diff --git a/tools/package-tools/entry-point-package-json.ts b/tools/package-tools/entry-point-package-json.ts index f804be61719e..68307a97277f 100644 --- a/tools/package-tools/entry-point-package-json.ts +++ b/tools/package-tools/entry-point-package-json.ts @@ -8,8 +8,8 @@ export function createEntryPointPackageJson(destDir: string, packageName: string 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`, + module: `../esm5/${entryPointName}.es5.js`, + es2015: `../esm2015/${entryPointName}.js`, }; writeFileSync(join(destDir, 'package.json'), JSON.stringify(content, null, 2), 'utf-8'); diff --git a/tools/package-tools/gulp/build-tasks-gulp.ts b/tools/package-tools/gulp/build-tasks-gulp.ts index 11edecc745fc..94e610891175 100644 --- a/tools/package-tools/gulp/build-tasks-gulp.ts +++ b/tools/package-tools/gulp/build-tasks-gulp.ts @@ -7,6 +7,7 @@ import {sequenceTask} from './sequence-task'; import {watchFiles} from './watch-files'; import {BuildPackage} from '../build-package'; + // There are no type definitions available for these imports. const htmlmin = require('gulp-htmlmin'); @@ -20,19 +21,19 @@ const htmlMinifierOptions = { /** Creates a set of gulp tasks that can build the specified package. */ export function createPackageBuildTasks(buildPackage: BuildPackage) { // Name of the package build tasks for Gulp. - const taskName = buildPackage.packageName; + const taskName = buildPackage.name; // Name of all dependencies of the current package. - const dependencyNames = buildPackage.dependencies.map(p => p.packageName); + const dependencyNames = buildPackage.dependencies.map(p => p.name); // Glob that matches all style files that need to be copied to the package output. - const stylesGlob = join(buildPackage.packageRoot, '**/*.+(scss|css)'); + const stylesGlob = join(buildPackage.sourceDir, '**/*.+(scss|css)'); // Glob that matches every HTML file in the current package. - const htmlGlob = join(buildPackage.packageRoot, '**/*.html'); + const htmlGlob = join(buildPackage.sourceDir, '**/*.html'); // List of watch tasks that need run together with the watch task of the current package. - const dependentWatchTasks = buildPackage.dependencies.map(p => `${p.packageName}:watch`); + const dependentWatchTasks = buildPackage.dependencies.map(p => `${p.name}:watch`); /** * Main tasks for the package building. Tasks execute the different sub-tasks in the correct @@ -86,22 +87,22 @@ export function createPackageBuildTasks(buildPackage: BuildPackage) { ]); task(`${taskName}:assets:scss`, buildScssTask( - buildPackage.packageOut, buildPackage.packageRoot, true) + buildPackage.outputDir, buildPackage.sourceDir, true) ); task(`${taskName}:assets:copy-styles`, () => { - return src(stylesGlob).pipe(dest(buildPackage.packageOut)); + return src(stylesGlob).pipe(dest(buildPackage.outputDir)); }); task(`${taskName}:assets:html`, () => { - return src(htmlGlob).pipe(htmlmin(htmlMinifierOptions)).pipe(dest(buildPackage.packageOut)); + return src(htmlGlob).pipe(htmlmin(htmlMinifierOptions)).pipe(dest(buildPackage.outputDir)); }); - task(`${taskName}:assets:inline`, () => inlineResourcesForDirectory(buildPackage.packageOut)); + task(`${taskName}:assets:inline`, () => inlineResourcesForDirectory(buildPackage.outputDir)); /** * Watch tasks, that will rebuild the package whenever TS, SCSS, or HTML files change. */ task(`${taskName}:watch`, dependentWatchTasks, () => { - watchFiles(join(buildPackage.packageRoot, '**/*.+(ts|scss|html)'), [`${taskName}:build`]); + watchFiles(join(buildPackage.sourceDir, '**/*.+(ts|scss|html)'), [`${taskName}:build`]); }); } diff --git a/tools/package-tools/metadata-reexport.ts b/tools/package-tools/metadata-reexport.ts index cd79e86c6cad..6f61ce8ddd65 100644 --- a/tools/package-tools/metadata-reexport.ts +++ b/tools/package-tools/metadata-reexport.ts @@ -2,12 +2,14 @@ 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(destDir: string, from: string, name: string) { +export function createMetadataReexportFile(destDir: string, from: string|string[], name: string) { + from = Array.isArray(from) ? from : [from]; + const metadataJsonContent = JSON.stringify({ __symbolic: 'module', version: 3, metadata: {}, - exports: [{from}], + exports: from.map(f => ({from: f})), flatModuleIndexRedirect: true }, null, 2); diff --git a/tools/package-tools/rollup-globals.ts b/tools/package-tools/rollup-globals.ts index 7800d3530c51..419afdf7d2cd 100644 --- a/tools/package-tools/rollup-globals.ts +++ b/tools/package-tools/rollup-globals.ts @@ -5,15 +5,24 @@ import {buildConfig} from './build-config'; /** Method that converts dash-case strings to a camel-based string. */ const dashCaseToCamelCase = (str: string) => str.replace(/-([a-z])/g, (g) => g[1].toUpperCase()); -/** List of potential secondary entry-points for the CDK package. */ +/** List of potential secondary entry-points for the cdk package. */ const cdkSecondaryEntryPoints = getSubdirectoryNames(join(buildConfig.packagesDir, 'cdk')); -/** Object with all CDK entry points in the format of Rollup globals. */ +/** List of potential secondary entry-points for the material package. */ +const matSecondaryEntryPoints = getSubdirectoryNames(join(buildConfig.packagesDir, 'lib')); + +/** Object with all cdk entry points in the format of Rollup globals. */ const rollupCdkEntryPoints = cdkSecondaryEntryPoints.reduce((globals: any, entryPoint: string) => { globals[`@angular/cdk/${entryPoint}`] = `ng.cdk.${dashCaseToCamelCase(entryPoint)}`; return globals; }, {}); +/** Object with all material entry points in the format of Rollup globals. */ +const rollupMatEntryPoints = matSecondaryEntryPoints.reduce((globals: any, entryPoint: string) => { + globals[`@angular/material/${entryPoint}`] = `ng.mat.${dashCaseToCamelCase(entryPoint)}`; + return globals; +}, {}); + /** Map of globals that are used inside of the different packages. */ export const rollupGlobals = { 'tslib': 'tslib', @@ -37,8 +46,9 @@ export const rollupGlobals = { '@angular/material': 'ng.material', '@angular/cdk': 'ng.cdk', - // Include secondary entry-points of the CDK package + // Include secondary entry-points of the cdk and material packages ...rollupCdkEntryPoints, + ...rollupMatEntryPoints, // Some packages are not really needed for the UMD bundles, but for the missingRollupGlobals rule. // TODO(devversion): remove by adding minimatch and better globbing to rules diff --git a/tools/package-tools/rollup-helpers.ts b/tools/package-tools/rollup-helpers.ts deleted file mode 100644 index 515a2382584e..000000000000 --- a/tools/package-tools/rollup-helpers.ts +++ /dev/null @@ -1,47 +0,0 @@ -import {buildConfig} from './build-config'; -import {rollupRemoveLicensesPlugin} from './rollup-remove-licenses'; -import {rollupGlobals} from './rollup-globals'; - -// There are no type definitions available for these imports. -const rollup = require('rollup'); -const rollupNodeResolutionPlugin = require('rollup-plugin-node-resolve'); - -export type BundleConfig = { - entry: string; - dest: string; - format: string; - moduleName: string; -}; - -/** Creates a rollup bundle of a specified JavaScript file.*/ -export function createRollupBundle(config: BundleConfig): Promise { - const bundleOptions = { - context: 'this', - external: Object.keys(rollupGlobals), - entry: config.entry, - plugins: [rollupRemoveLicensesPlugin] - }; - - const writeOptions = { - // Keep the moduleId empty because we don't want to force developers to a specific moduleId. - moduleId: '', - moduleName: config.moduleName || 'ng.material', - banner: buildConfig.licenseBanner, - format: config.format, - dest: config.dest, - globals: rollupGlobals, - sourceMap: true - }; - - // When creating a UMD, we want to exclude tslib from the `external` bundle option so that it - // is inlined into the bundle. - if (config.format === 'umd') { - bundleOptions.plugins.push(rollupNodeResolutionPlugin()); - - const external = Object.keys(rollupGlobals); - external.splice(external.indexOf('tslib'), 1); - bundleOptions.external = external; - } - - return rollup.rollup(bundleOptions).then((bundle: any) => bundle.write(writeOptions)); -} diff --git a/tools/package-tools/secondary-entry-points.ts b/tools/package-tools/secondary-entry-points.ts index 935877d12eec..0e6bcedea35b 100644 --- a/tools/package-tools/secondary-entry-points.ts +++ b/tools/package-tools/secondary-entry-points.ts @@ -15,8 +15,8 @@ import {platform} from 'os'; * @returns An array of secondary entry-points names, e.g., ['a11y', 'bidi', ...] */ export function getSecondaryEntryPointsForPackage(pkg: BuildPackage) { - const packageName = pkg.packageName; - const packageDir = pkg.packageRoot; + const packageName = pkg.name; + const packageDir = pkg.sourceDir; // Get the list of all entry-points as the list of directories in the package that have a // tsconfig-build.json diff --git a/tools/package-tools/typescript-transpile.ts b/tools/package-tools/typescript-transpile.ts index cf10e5bd7a96..b22195f384e8 100644 --- a/tools/package-tools/typescript-transpile.ts +++ b/tools/package-tools/typescript-transpile.ts @@ -25,7 +25,7 @@ function formatDiagnostics(diagnostics: ts.Diagnostic[], baseDir = ''): string { let res = `• ${chalk.red(`TS${diagnostic.code}`)} - `; if (diagnostic.file) { - const {line, character} = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); + const {line, character} = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start!); const filePath = path.relative(baseDir, diagnostic.file.fileName); res += `${filePath}(${line + 1},${character + 1}): `; diff --git a/tsconfig.json b/tsconfig.json index e06d166854ce..8bf992e61bb6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,27 +2,18 @@ // IDEs and TSLint. For IDEs it ensures that `experimentalDecorator` warnings are not showing up. { "compilerOptions": { + "outDir": "./dist/packages/all", // Needed for Moment.js since it doesn't have a default export. "allowSyntheticDefaultImports": true, - "rootDir": ".", "experimentalDecorators": true, "module": "es2015", "moduleResolution": "node", "noUnusedParameters": true, "strictNullChecks": true, "skipLibCheck": true, - "outDir": "./dist/packages/all", "target": "es2015", "lib": ["es5", "es2015", "dom"], - "types": ["jasmine"], - "baseUrl": ".", - "paths": { - "@angular/material": ["./src/lib/public_api.ts"], - "@angular/cdk/*": ["./src/cdk/*"], - "@angular/material-moment-adapter": ["./src/material-moment-adapter"], - "@angular/material-examples": ["./src/material-examples"], - "material2-build-tools": ["./tools/package-tools"] - } + "types": ["jasmine"] }, "include": [ "src/**/*.ts",