diff --git a/WORKSPACE b/WORKSPACE index ca67ed9c19c..dfe16a16202 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,15 +1,18 @@ workspace(name = "angular_material") # Add nodejs rules -git_repository( +http_archive( name = "build_bazel_rules_nodejs", - remote = "https://github.com/bazelbuild/rules_nodejs.git", - commit = "0.5.1", + url = "https://github.com/bazelbuild/rules_nodejs/archive/0.5.3.zip", + strip_prefix = "rules_nodejs-0.5.3", + sha256 = "17a5515f59777b00cb25dbc710017a14273f825029b2ec60e0969d28914870be", ) # NOTE: this rule installs nodejs, npm, and yarn, but does NOT install # your npm dependencies. You must still run the package manager. -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") +load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_repositories") + +check_bazel_version("0.9.0") node_repositories(package_json = ["//:package.json"]) # Add sass rules @@ -23,10 +26,11 @@ load("@io_bazel_rules_sass//sass:sass.bzl", "sass_repositories") sass_repositories() # Add TypeScript rules -git_repository( +http_archive( name = "build_bazel_rules_typescript", - remote = "https://github.com/bazelbuild/rules_typescript.git", - tag = "0.11.1", + url = "https://github.com/bazelbuild/rules_typescript/archive/0.11.1.zip", + strip_prefix = "rules_typescript-0.11.1", + sha256 = "7406bea7954e1c906f075115dfa176551a881119f6820b126ea1eacb09f34a1a", ) # Setup TypeScript Bazel workspace diff --git a/package-lock.json b/package-lock.json index a7bf587e303..376bdd94d74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,9 +35,9 @@ } }, "@angular/bazel": { - "version": "6.0.0-beta.8", - "resolved": "https://registry.npmjs.org/@angular/bazel/-/bazel-6.0.0-beta.8.tgz", - "integrity": "sha512-uC84HaX8/Fuazqv//pn3ZKMHPgPIT2vv+cEEJ7Jli0/H00Tt5LV06lv5qMB1fEBL4Dmn+pHEodjEZoRkJmagrw==", + "version": "6.0.0-rc.0", + "resolved": "https://registry.npmjs.org/@angular/bazel/-/bazel-6.0.0-rc.0.tgz", + "integrity": "sha512-4K98Zx8TYE0QqY5wLtNS+aBje3pnu/HGkyaYWM6GNZckTfiDz3Z2e6dZcgxaGVI1CqJZAx+sUYcGZrkI0wjIhQ==", "dev": true, "requires": { "@bazel/typescript": "0.11.1", @@ -72,9 +72,9 @@ } }, "@angular/compiler-cli": { - "version": "6.0.0-beta.8", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.0-beta.8.tgz", - "integrity": "sha512-oDftaCQHSGJLJjVvRplI+pU3aazM287+Mr+m1xAKRrOAU6zY4kBcTB9EYECFv9t9T84/1fJy3gng1QcN14kMaA==", + "version": "6.0.0-rc.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.0-rc.0.tgz", + "integrity": "sha512-BTCZEAc/XSywiesuVS1mxRxryvngdG6hjNV396qas61+h/D9JItOTZ5nb0oHs81IPMUZg5Gv53uUG4GdrTuu0g==", "dev": true, "requires": { "chokidar": "1.7.0", diff --git a/package.json b/package.json index 802206651d0..45605cc4a29 100644 --- a/package.json +++ b/package.json @@ -42,8 +42,8 @@ "devDependencies": { "@angular-devkit/core": "^0.4.5", "@angular-devkit/schematics": "^0.4.5", - "@angular/bazel": "6.0.0-beta.8", - "@angular/compiler-cli": "6.0.0-beta.8", + "@angular/bazel": "6.0.0-rc.0", + "@angular/compiler-cli": "6.0.0-rc.0", "@angular/http": "6.0.0-beta.8", "@angular/platform-browser-dynamic": "6.0.0-beta.8", "@angular/platform-server": "6.0.0-beta.8", diff --git a/components.bzl b/packages.bzl similarity index 71% rename from components.bzl rename to packages.bzl index 53a3486c34f..c8e7504a47f 100644 --- a/components.bzl +++ b/packages.bzl @@ -1,4 +1,22 @@ # List of all @angular/material components / subpackages. +CDK_PACKAGES = [ + "coercion", + "keycodes", + "scrolling", + "accordion", + "observers", + "a11y", + "overlay", + "platform", + "bidi", + "table", + "tree", + "portal", + "layout", + "stepper", + "collections", +] + MATERIAL_PACKAGES = [ "autocomplete", "badge", diff --git a/src/cdk/BUILD.bazel b/src/cdk/BUILD.bazel index fef81c85a1b..50c5f56e8cc 100644 --- a/src/cdk/BUILD.bazel +++ b/src/cdk/BUILD.bazel @@ -1,8 +1,14 @@ package(default_visibility=["//visibility:public"]) load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_config") +load("@angular//:index.bzl", "ng_package") +load("//:packages.bzl", "CDK_PACKAGES") +load("//src/cdk:rollup_globals.bzl", "CDK_ROLLUP_GLOBALS") + +# Export the CDK tsconfig so that subpackages can reference it directly. exports_files(["tsconfig-build.json"]) +# Root "@angular/cdk" entry-point that does not re-export individual entry-points. ts_library( name = "cdk", srcs = glob(["*.ts"], exclude=["**/*.spec.ts"]), @@ -11,8 +17,11 @@ ts_library( tsconfig = ":tsconfig-build.json", ) -ts_config( - name ="tsconfig_tests", - src = "tsconfig-tests.json", - deps = ["tsconfig-build.json"], +# Creates the @angular/cdk package published to npm. +ng_package( + name = "npm_package", + srcs = ["package.json"], + entry_point = "src/cdk/public_api.js", + globals = CDK_ROLLUP_GLOBALS, + deps = [":cdk"] + ["//src/cdk/%s" % p for p in CDK_PACKAGES] ) diff --git a/src/cdk/a11y/BUILD.bazel b/src/cdk/a11y/BUILD.bazel index 36ef8cc40be..c673d613245 100644 --- a/src/cdk/a11y/BUILD.bazel +++ b/src/cdk/a11y/BUILD.bazel @@ -14,7 +14,7 @@ ng_module( "//src/cdk/platform", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) # TODO(jelbourn): remove this when sass_library acts like a filegroup @@ -39,7 +39,7 @@ ts_library( "//src/cdk/testing", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/accordion/BUILD.bazel b/src/cdk/accordion/BUILD.bazel index 51c7e95311e..5b6b6001e4d 100644 --- a/src/cdk/accordion/BUILD.bazel +++ b/src/cdk/accordion/BUILD.bazel @@ -11,7 +11,7 @@ ng_module( "//src/cdk/coercion", "//src/cdk/collections", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( @@ -22,7 +22,7 @@ ts_library( ":accordion", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/bidi/BUILD.bazel b/src/cdk/bidi/BUILD.bazel index 89253157936..0439ace36d0 100644 --- a/src/cdk/bidi/BUILD.bazel +++ b/src/cdk/bidi/BUILD.bazel @@ -8,7 +8,7 @@ ng_module( srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]), module_name = "@angular/cdk/bidi", deps = ["@rxjs"], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( @@ -19,7 +19,7 @@ ts_library( ":bidi", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/coercion/BUILD.bazel b/src/cdk/coercion/BUILD.bazel index 0119bf57a6f..a78f31f94ef 100644 --- a/src/cdk/coercion/BUILD.bazel +++ b/src/cdk/coercion/BUILD.bazel @@ -1,14 +1,15 @@ package(default_visibility=["//visibility:public"]) load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_web_test") +load("@angular//:index.bzl", "ng_module") -# Note: this will need to ng_module if any Angular-specific stuff is added to coercion. -ts_library( + +ng_module( name = "coercion", srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]), module_name = "@angular/cdk/coercion", - deps = [], - tsconfig = ":tsconfig-build.json", + deps = ["@rxjs"], + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( diff --git a/src/cdk/collections/BUILD.bazel b/src/cdk/collections/BUILD.bazel index 6683c2529d4..7f68d9892a0 100644 --- a/src/cdk/collections/BUILD.bazel +++ b/src/cdk/collections/BUILD.bazel @@ -8,7 +8,7 @@ ng_module( srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]), module_name = "@angular/cdk/collections", deps = ["@rxjs"], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( @@ -19,7 +19,7 @@ ts_library( ":collections", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/keycodes/BUILD.bazel b/src/cdk/keycodes/BUILD.bazel index f4857161e95..dc89a13e67e 100644 --- a/src/cdk/keycodes/BUILD.bazel +++ b/src/cdk/keycodes/BUILD.bazel @@ -1,11 +1,12 @@ package(default_visibility=["//visibility:public"]) load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@angular//:index.bzl", "ng_module") -# Note: this will need to ng_module if any Angular-specific stuff is added to coercion. -ts_library( + +ng_module( name = "keycodes", srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]), module_name = "@angular/cdk/keycodes", - deps = [], - tsconfig = ":tsconfig-build.json", + deps = ["@rxjs"], + tsconfig = "//src/cdk:tsconfig-build.json", ) diff --git a/src/cdk/layout/BUILD.bazel b/src/cdk/layout/BUILD.bazel index 0bf9388a33f..24f2fde341c 100644 --- a/src/cdk/layout/BUILD.bazel +++ b/src/cdk/layout/BUILD.bazel @@ -12,7 +12,7 @@ ng_module( "//src/cdk/platform", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( @@ -24,7 +24,7 @@ ts_library( "//src/cdk/platform", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/observers/BUILD.bazel b/src/cdk/observers/BUILD.bazel index 1920c4c13fb..6864585d07b 100644 --- a/src/cdk/observers/BUILD.bazel +++ b/src/cdk/observers/BUILD.bazel @@ -7,8 +7,11 @@ ng_module( name = "observers", srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]), module_name = "@angular/cdk/observers", - deps = ["@rxjs", "//src/cdk/coercion"], - tsconfig = ":tsconfig-build.json", + deps = [ + "@rxjs", + "//src/cdk/coercion", + ], + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( @@ -19,7 +22,7 @@ ts_library( ":observers", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/overlay/BUILD.bazel b/src/cdk/overlay/BUILD.bazel index 1be5f2b7de8..463bf45133a 100644 --- a/src/cdk/overlay/BUILD.bazel +++ b/src/cdk/overlay/BUILD.bazel @@ -15,7 +15,7 @@ ng_module( "//src/cdk/scrolling", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) # TODO(jelbourn): replace this w/ sass_library when it supports acting like a filegroup @@ -38,7 +38,7 @@ ts_library( "//src/cdk/testing", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/platform/BUILD.bazel b/src/cdk/platform/BUILD.bazel index 87965dddb62..095c02204dc 100644 --- a/src/cdk/platform/BUILD.bazel +++ b/src/cdk/platform/BUILD.bazel @@ -6,5 +6,5 @@ ng_module( srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]), module_name = "@angular/cdk/platform", deps = ["@rxjs"], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) diff --git a/src/cdk/portal/BUILD.bazel b/src/cdk/portal/BUILD.bazel index c1fdd7ee3f9..1bb6f2bd7ea 100644 --- a/src/cdk/portal/BUILD.bazel +++ b/src/cdk/portal/BUILD.bazel @@ -8,7 +8,7 @@ ng_module( srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]), module_name = "@angular/cdk/portal", deps = ["@rxjs"], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( @@ -19,7 +19,7 @@ ts_library( ":portal", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/rollup_globals.bzl b/src/cdk/rollup_globals.bzl new file mode 100644 index 00000000000..e12e02f484c --- /dev/null +++ b/src/cdk/rollup_globals.bzl @@ -0,0 +1,12 @@ +load("//:packages.bzl", "CDK_PACKAGES") + +# Base rollup globals for dependencies and the root entry-point. +CDK_ROLLUP_GLOBALS = { + 'tslib': 'tslib', + '@angular/cdk': 'ng.cdk', +} + +# Rollup globals for subpackages in the form of, e.g., {"@angular/cdk/table": "ng.cdk.table"} +CDK_ROLLUP_GLOBALS.update({ + "@angular/cdk/%s" % p: "ng.cdk.%s" % p for p in CDK_PACKAGES +}) diff --git a/src/cdk/scrolling/BUILD.bazel b/src/cdk/scrolling/BUILD.bazel index 9fd2db96de2..45bbde4868e 100644 --- a/src/cdk/scrolling/BUILD.bazel +++ b/src/cdk/scrolling/BUILD.bazel @@ -11,7 +11,7 @@ ng_module( "//src/cdk/platform", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( @@ -23,7 +23,7 @@ ts_library( "//src/cdk/testing", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/stepper/BUILD.bazel b/src/cdk/stepper/BUILD.bazel index e44edabdbfb..1a0bfa530c4 100644 --- a/src/cdk/stepper/BUILD.bazel +++ b/src/cdk/stepper/BUILD.bazel @@ -12,5 +12,5 @@ ng_module( "//src/cdk/keycodes", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) diff --git a/src/cdk/stepper/step.html b/src/cdk/stepper/step.html deleted file mode 100644 index cd48c06b991..00000000000 --- a/src/cdk/stepper/step.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/cdk/stepper/stepper.ts b/src/cdk/stepper/stepper.ts index b0eb99f9c12..46aa0b7c41d 100644 --- a/src/cdk/stepper/stepper.ts +++ b/src/cdk/stepper/stepper.ts @@ -67,7 +67,7 @@ export class StepperSelectionEvent { moduleId: module.id, selector: 'cdk-step', exportAs: 'cdkStep', - templateUrl: 'step.html', + template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) diff --git a/src/cdk/table/BUILD.bazel b/src/cdk/table/BUILD.bazel index 1e714a6718d..f2e1a3dc540 100644 --- a/src/cdk/table/BUILD.bazel +++ b/src/cdk/table/BUILD.bazel @@ -11,7 +11,7 @@ ng_module( "//src/cdk/collections", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_library( @@ -23,7 +23,7 @@ ts_library( "//src/cdk/collections", "@rxjs", ], - tsconfig = ":tsconfig-build.json", + tsconfig = "//src/cdk:tsconfig-build.json", ) ts_web_test( diff --git a/src/cdk/tree/BUILD.bazel b/src/cdk/tree/BUILD.bazel new file mode 100644 index 00000000000..630e5e34a7e --- /dev/null +++ b/src/cdk/tree/BUILD.bazel @@ -0,0 +1,45 @@ +package(default_visibility=["//visibility:public"]) +load("@angular//:index.bzl", "ng_module") +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_web_test") + + +ng_module( + name = "tree", + srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]), + module_name = "@angular/cdk/tree", + deps = [ + "//src/cdk/a11y", + "//src/cdk/bidi", + "//src/cdk/coercion", + "//src/cdk/collections", + "@rxjs", + ], + tsconfig = "//src/cdk:tsconfig-build.json", +) + +ts_library( + name = "tree_test_sources", + testonly = 1, + srcs = glob(["**/*.spec.ts"]), + deps = [ + ":tree", + "//src/cdk/collections", + "@rxjs", + ], + tsconfig = "//src/cdk:tsconfig-build.json", +) + +ts_web_test( + name = "unit_tests", + bootstrap = ["//:web_test_bootstrap_scripts"], + # TODO(tinagao): get these tests passing + tags = ["manual"], + # Do not sort + deps = [ + "//:tslib_bundle", + "//:angular_bundles", + "//:angular_test_bundles", + "//test:angular_test_init", + ":tree_test_sources", + ], +) diff --git a/src/cdk/tree/typings.d.ts b/src/cdk/tree/typings.d.ts new file mode 100644 index 00000000000..ce4ae9b66cf --- /dev/null +++ b/src/cdk/tree/typings.d.ts @@ -0,0 +1 @@ +declare var module: {id: string}; diff --git a/src/lib/BUILD.bazel b/src/lib/BUILD.bazel index 729d7ec57f0..170f713dfab 100644 --- a/src/lib/BUILD.bazel +++ b/src/lib/BUILD.bazel @@ -1,5 +1,6 @@ load("//tools:sass_bundle.bzl", "sass_bundle") -load("//:components.bzl", "MATERIAL_PACKAGES") +load("//:packages.bzl", "MATERIAL_PACKAGES") +load("@angular//:index.bzl", "ng_package") sass_bundle( diff --git a/tools/package-tools/rollup-globals.ts b/tools/package-tools/rollup-globals.ts index 0707dfac8d4..9faa0e8b9cc 100644 --- a/tools/package-tools/rollup-globals.ts +++ b/tools/package-tools/rollup-globals.ts @@ -55,21 +55,21 @@ export const rollupGlobals = { 'rxjs/BehaviorSubject': 'Rx', 'rxjs/Observable': 'Rx', - 'rxjs/Subject': 'Rx', - 'rxjs/Subscription': 'Rx', 'rxjs/Observer': 'Rx', - 'rxjs/Subscriber': 'Rx', 'rxjs/Scheduler': 'Rx', + 'rxjs/Subject': 'Rx', + 'rxjs/Subscriber': 'Rx', + 'rxjs/Subscription': 'Rx', 'rxjs/observable/combineLatest': 'Rx.Observable', + 'rxjs/observable/defer': 'Rx.Observable', + 'rxjs/observable/empty': 'Rx.Observable', 'rxjs/observable/forkJoin': 'Rx.Observable', 'rxjs/observable/fromEvent': 'Rx.Observable', + 'rxjs/observable/fromEventPattern': 'Rx.Observable', 'rxjs/observable/merge': 'Rx.Observable', 'rxjs/observable/of': 'Rx.Observable', 'rxjs/observable/throw': 'Rx.Observable', - 'rxjs/observable/defer': 'Rx.Observable', - 'rxjs/observable/fromEventPattern': 'Rx.Observable', - 'rxjs/observable/empty': 'Rx.Observable', 'rxjs/operators/debounceTime': 'Rx.operators', 'rxjs/operators/takeUntil': 'Rx.operators',