diff --git a/scripts/ci/forbidden-identifiers.js b/scripts/ci/forbidden-identifiers.js index b08b60c5af21..26dbe0d48d0e 100755 --- a/scripts/ci/forbidden-identifiers.js +++ b/scripts/ci/forbidden-identifiers.js @@ -29,7 +29,7 @@ const blocked_statements = [ ]; const sourceFolders = ['./src', './e2e']; -const scopePackages = glob('src/lib/*'); +const libRoot = 'src/lib'; const blockedRegex = new RegExp(blocked_statements.join('|'), 'g'); const importRegex = /from\s+'(.*)';/g; @@ -58,7 +58,9 @@ findTestFiles() lineCount++; let matches = line.match(blockedRegex); - let scopeImport = isRelativeScopeImport(fileName, line); + let scopeImport = path.relative(libRoot, fileName).startsWith('..') + ? isRelativeScopeImport(fileName, line) + : false; if (matches || scopeImport) { @@ -155,6 +157,10 @@ function findChangedFiles() { * @param line Line to be checked. */ function isRelativeScopeImport(fileName, line) { + if (fileName.startsWith(libRoot)) { + return false; + } + let importMatch = importRegex.exec(line); // We have to reset the last index of the import regex, otherwise we @@ -184,8 +190,7 @@ function isRelativeScopeImport(fileName, line) { if (fileScope.path !== importScope.path) { // Creates a valid import statement, which uses the correct scope package. - let importFilePath = path.relative(importScope.path, importPath); - let validImportPath = `@angular2-material/${importScope.name}/${importFilePath}`; + let validImportPath = `@angular/material`; return { fileScope: fileScope.name, @@ -200,9 +205,7 @@ function isRelativeScopeImport(fileName, line) { filePath = path.normalize(filePath); // Iterate through all scope paths and try to find them inside of the file path. - var scopePath = scopePackages - .filter(scope => filePath.indexOf(path.normalize(scope)) !== -1) - .pop(); + var scopePath = filePath.indexOf(path.normalize(libRoot)) == -1 ? libRoot : filePath; // Return an object containing the name of the scope and the associated path. return { diff --git a/scripts/release/inline-resources.js b/scripts/release/inline-resources.js index 930dcd97f587..45e9ef137e40 100644 --- a/scripts/release/inline-resources.js +++ b/scripts/release/inline-resources.js @@ -30,10 +30,14 @@ const writeFile = promiseify(fs.writeFile); function inlineResources(globs) { + if (typeof globs == 'string') { + globs = [globs]; + } + /** * For every argument, inline the templates and styles under it and write the new file. */ - for (let pattern of globs) { + return Promise.all(globs.map(pattern => { if (pattern.indexOf('*') < 0) { // Argument is a directory target, add glob patterns to include every files. pattern = path.join(pattern, '**', '*'); @@ -43,17 +47,32 @@ function inlineResources(globs) { .filter(name => /\.js$/.test(name)); // Matches only JavaScript files. // Generate all files content with inlined templates. - files.forEach(filePath => { - readFile(filePath, 'utf-8') - .then(content => inlineTemplate(filePath, content)) - .then(content => inlineStyle(filePath, content)) - .then(content => removeModuleId(filePath, content)) + return Promise.all(files.map(filePath => { + return readFile(filePath, 'utf-8') + .then(content => inlineResourcesFromString(content, url => { + return path.join(path.dirname(filePath), url); + })) .then(content => writeFile(filePath, content)) .catch(err => { console.error('An error occured: ', err); }); - }); - } + })); + })); +} + +/** + * Inline resources from a string content. + * @param content {string} The source file's content. + * @param urlResolver {Function} A resolver that takes a URL and return a path. + * @returns {string} The content with resources inlined. + */ +function inlineResourcesFromString(content, urlResolver) { + // Curry through the inlining functions. + return [ + inlineTemplate, + inlineStyle, + removeModuleId + ].reduce((content, fn) => fn(content, urlResolver), content); } if (require.main === module) { @@ -64,13 +83,13 @@ if (require.main === module) { /** * Inline the templates for a source file. Simply search for instances of `templateUrl: ...` and * replace with `template: ...` (with the content of the file included). - * @param filePath {string} The path of the source file. * @param content {string} The source file's content. + * @param urlResolver {Function} A resolver that takes a URL and return a path. * @return {string} The content with all templates inlined. */ -function inlineTemplate(filePath, content) { +function inlineTemplate(content, urlResolver) { return content.replace(/templateUrl:\s*'([^']+?\.html)'/g, function(m, templateUrl) { - const templateFile = path.join(path.dirname(filePath), templateUrl); + const templateFile = urlResolver(templateUrl); const templateContent = fs.readFileSync(templateFile, 'utf-8'); const shortenedTemplate = templateContent .replace(/([\n\r]\s*)+/gm, ' ') @@ -83,16 +102,16 @@ function inlineTemplate(filePath, content) { /** * Inline the styles for a source file. Simply search for instances of `styleUrls: [...]` and * replace with `styles: [...]` (with the content of the file included). - * @param filePath {string} The path of the source file. + * @param urlResolver {Function} A resolver that takes a URL and return a path. * @param content {string} The source file's content. * @return {string} The content with all styles inlined. */ -function inlineStyle(filePath, content) { +function inlineStyle(content, urlResolver) { return content.replace(/styleUrls:\s*(\[[\s\S]*?\])/gm, function(m, styleUrls) { const urls = eval(styleUrls); return 'styles: [' + urls.map(styleUrl => { - const styleFile = path.join(path.dirname(filePath), styleUrl); + const styleFile = urlResolver(styleUrl); const styleContent = fs.readFileSync(styleFile, 'utf-8'); const shortenedStyle = styleContent .replace(/([\n\r]\s*)+/gm, ' ') @@ -107,13 +126,13 @@ function inlineStyle(filePath, content) { /** * Remove every mention of `moduleId: module.id`. - * @param _ {string} The file path of the source file, currently ignored. * @param content {string} The source file's content. * @returns {string} The content with all moduleId: mentions removed. */ -function removeModuleId(_, content) { +function removeModuleId(content) { return content.replace(/\s*moduleId:\s*module\.id\s*,?\s*/gm, ''); } module.exports = inlineResources; +module.exports.inlineResourcesFromString = inlineResourcesFromString; diff --git a/src/demo-app/button-toggle/button-toggle-demo.ts b/src/demo-app/button-toggle/button-toggle-demo.ts index de862cb47b57..e2b184db4c56 100644 --- a/src/demo-app/button-toggle/button-toggle-demo.ts +++ b/src/demo-app/button-toggle/button-toggle-demo.ts @@ -1,5 +1,5 @@ import {Component} from '@angular/core'; -import {MdUniqueSelectionDispatcher} from '@angular2-material/core'; +import {MdUniqueSelectionDispatcher} from '@angular/material'; @Component({ moduleId: module.id, diff --git a/src/demo-app/demo-app-module.ts b/src/demo-app/demo-app-module.ts index d0a14dfd475f..4d20d1ee3047 100644 --- a/src/demo-app/demo-app-module.ts +++ b/src/demo-app/demo-app-module.ts @@ -4,7 +4,7 @@ import {HttpModule} from '@angular/http'; import {FormsModule} from '@angular/forms'; import {DemoApp, Home} from './demo-app/demo-app'; import {RouterModule} from '@angular/router'; -import {MaterialModule} from '@angular2-material/all'; +import {MaterialModule} from '@angular/material'; import {DEMO_APP_ROUTES} from './demo-app/routes'; import {ProgressBarDemo} from './progress-bar/progress-bar-demo'; import {JazzDialog, DialogDemo} from './dialog/dialog-demo'; diff --git a/src/demo-app/dialog/dialog-demo.ts b/src/demo-app/dialog/dialog-demo.ts index dbb32ed25b6e..6fb4e994c7ef 100644 --- a/src/demo-app/dialog/dialog-demo.ts +++ b/src/demo-app/dialog/dialog-demo.ts @@ -1,5 +1,5 @@ import {Component, ViewContainerRef} from '@angular/core'; -import {MdDialog, MdDialogConfig, MdDialogRef} from '@angular2-material/dialog'; +import {MdDialog, MdDialogConfig, MdDialogRef} from '@angular/material'; @Component({ moduleId: module.id, diff --git a/src/demo-app/grid-list/grid-list-demo.ts b/src/demo-app/grid-list/grid-list-demo.ts index 7ca17f45cd74..8e68cda8b96b 100644 --- a/src/demo-app/grid-list/grid-list-demo.ts +++ b/src/demo-app/grid-list/grid-list-demo.ts @@ -1,5 +1,5 @@ import {Component} from '@angular/core'; -import {MdIconRegistry} from '@angular2-material/icon'; +import {MdIconRegistry} from '@angular/material'; @Component({ diff --git a/src/demo-app/icon/icon-demo.ts b/src/demo-app/icon/icon-demo.ts index 882f228ad22e..8f6a1dc9f9b2 100644 --- a/src/demo-app/icon/icon-demo.ts +++ b/src/demo-app/icon/icon-demo.ts @@ -1,5 +1,5 @@ import {Component, ViewEncapsulation} from '@angular/core'; -import {MdIconRegistry} from '@angular2-material/icon'; +import {MdIconRegistry} from '@angular/material'; @Component({ moduleId: module.id, diff --git a/src/demo-app/index.html b/src/demo-app/index.html index 45384eb6713f..8498715397d1 100644 --- a/src/demo-app/index.html +++ b/src/demo-app/index.html @@ -8,7 +8,7 @@ - + diff --git a/src/demo-app/live-announcer/live-announcer-demo.ts b/src/demo-app/live-announcer/live-announcer-demo.ts index 22b3a50fe8ac..d0538ad3ed01 100644 --- a/src/demo-app/live-announcer/live-announcer-demo.ts +++ b/src/demo-app/live-announcer/live-announcer-demo.ts @@ -1,5 +1,5 @@ import {Component} from '@angular/core'; -import {MdLiveAnnouncer} from '@angular2-material/core'; +import {MdLiveAnnouncer} from '@angular/material'; @Component({ moduleId: module.id, diff --git a/src/demo-app/overlay/overlay-demo.ts b/src/demo-app/overlay/overlay-demo.ts index c57b2e13961c..f3164777657c 100644 --- a/src/demo-app/overlay/overlay-demo.ts +++ b/src/demo-app/overlay/overlay-demo.ts @@ -13,7 +13,7 @@ import { ComponentPortal, Portal, TemplatePortalDirective, -} from '@angular2-material/core'; +} from '@angular/material'; @Component({ diff --git a/src/demo-app/portal/portal-demo.ts b/src/demo-app/portal/portal-demo.ts index 7016c7313c68..b00a1789ff86 100644 --- a/src/demo-app/portal/portal-demo.ts +++ b/src/demo-app/portal/portal-demo.ts @@ -3,7 +3,7 @@ import { Portal, ComponentPortal, TemplatePortalDirective, -} from '@angular2-material/core'; +} from '@angular/material'; @Component({ diff --git a/src/demo-app/ripple/ripple-demo.ts b/src/demo-app/ripple/ripple-demo.ts index fee4a6f22022..c1fc3675b423 100644 --- a/src/demo-app/ripple/ripple-demo.ts +++ b/src/demo-app/ripple/ripple-demo.ts @@ -1,5 +1,5 @@ import {Component, ViewChild} from '@angular/core'; -import {MdRipple} from '@angular2-material/core'; +import {MdRipple} from '@angular/material'; @Component({ diff --git a/src/demo-app/system-config.ts b/src/demo-app/system-config.ts index 1ad0109145b7..a067613be96e 100644 --- a/src/demo-app/system-config.ts +++ b/src/demo-app/system-config.ts @@ -1,104 +1,34 @@ -/*********************************************************************************************** - * User Configuration. - **********************************************************************************************/ - -const components = [ - 'all', - 'button', - 'card', - 'checkbox', - 'dialog', - 'grid-list', - 'icon', - 'input', - 'list', - 'menu', - 'progress-bar', - 'progress-circle', - 'radio', - 'select', - 'sidenav', - 'slider', - 'slide-toggle', - 'button-toggle', - 'tabs', - 'toolbar', - 'tooltip', -]; - - -/** User packages configuration. */ -const packages: any = { - '@angular2-material/core': { - format: 'cjs', - main: 'core.umd.js' - }, - // Set the default extension for the root package, because otherwise the demo-app can't - // be built within the production mode. Due to missing file extensions. - '.': { - defaultExtension: 'js' - } -}; -components.forEach(name => { - packages[`@angular2-material/${name}`] = { - format: 'cjs', - main: `${name}.umd.js` - }; -}); - - -//////////////////////////////////////////////////////////////////////////////////////////////// -/*********************************************************************************************** - * Everything underneath this line is managed by the CLI. - **********************************************************************************************/ -const angularPackages = { - // Angular specific barrels. - '@angular/core': { main: 'bundles/core.umd.js'}, - '@angular/core/testing': { main: 'bundles/core-testing.umd.js'}, - '@angular/common': { main: 'bundles/common.umd.js'}, - '@angular/compiler': { main: 'bundles/compiler.umd.js'}, - '@angular/http': { main: 'bundles/http.umd.js'}, - '@angular/forms': { main: 'bundles/forms.umd.js'}, - '@angular/router': { main: 'bundles/router.umd.js'}, - '@angular/platform-browser': { main: 'bundles/platform-browser.umd.js'}, - '@angular/platform-browser-dynamic': { main: 'bundles/platform-browser-dynamic.umd.js'}, - '@angular/platform-browser-dynamic/testing': { - main: 'bundles/platform-browser-dynamic-testing.umd.js' - }, -}; - -const barrels: string[] = [ - // Thirdparty barrels. - 'rxjs', - - // App specific barrels. - 'demo-app', - 'button-toggle', - 'gestures', - 'live-announcer', - 'portal', - 'overlay', - ...components - /** @cli-barrel */ -]; - -const _cliSystemConfig: any = angularPackages; -barrels.forEach((barrelName: string) => { - _cliSystemConfig[barrelName] = { main: 'index' }; -}); - /** Type declaration for ambient System. */ declare var System: any; // Apply the CLI SystemJS configuration. System.config({ map: { - '@angular': 'vendor/@angular', 'rxjs': 'vendor/rxjs', - 'main': 'main.js' + 'main': 'main.js', + + // Angular specific mappings. + '@angular/core': 'vendor/@angular/core/bundles/core.umd.js', + '@angular/common': 'vendor/@angular/common/bundles/common.umd.js', + '@angular/compiler': 'vendor/@angular/compiler/bundles/compiler.umd.js', + '@angular/http': 'vendor/@angular/http/bundles/http.umd.js', + '@angular/forms': 'vendor/@angular/forms/bundles/forms.umd.js', + '@angular/router': 'vendor/@angular/router/bundles/router.umd.js', + '@angular/platform-browser': 'vendor/@angular/platform-browser/bundles/platform-browser.umd.js', + '@angular/platform-browser-dynamic': + 'vendor/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', }, - packages: _cliSystemConfig + packages: { + // Thirdparty barrels. + 'rxjs': { main: 'index' }, + '@angular/material': { + format: 'cjs', + main: 'material.umd.js' + }, + // Set the default extension for the root package, because otherwise the demo-app can't + // be built within the production mode. Due to missing file extensions. + '.': { + defaultExtension: 'js' + } + } }); - -// Apply the user's configuration. -System.config({ packages }); diff --git a/src/demo-app/tooltip/tooltip-demo.ts b/src/demo-app/tooltip/tooltip-demo.ts index 72e4bddced76..48b01283939c 100644 --- a/src/demo-app/tooltip/tooltip-demo.ts +++ b/src/demo-app/tooltip/tooltip-demo.ts @@ -1,5 +1,5 @@ import {Component} from '@angular/core'; -import {TooltipPosition} from '@angular2-material/tooltip'; +import {TooltipPosition} from '@angular/material'; @Component({ diff --git a/src/demo-app/tsconfig.json b/src/demo-app/tsconfig.json index 9adf574b20fb..fd28b81478f9 100644 --- a/src/demo-app/tsconfig.json +++ b/src/demo-app/tsconfig.json @@ -15,12 +15,11 @@ "stripInternal": true, "baseUrl": "", "typeRoots": [ - "../../node_modules/@types", - "../../node_modules" + "../../node_modules/@types" ], "paths": { - "@angular2-material/*": [ - "../../dist/@angular2-material/*" + "@angular/material": [ + "../../dist/@angular/material" ] }, "types": [ diff --git a/src/e2e-app/e2e-app-module.ts b/src/e2e-app/e2e-app-module.ts index cf2e0a41d475..7c30a9e0f02d 100644 --- a/src/e2e-app/e2e-app-module.ts +++ b/src/e2e-app/e2e-app-module.ts @@ -6,7 +6,7 @@ import {IconE2E} from './icon/icon-e2e'; import {ButtonE2E} from './button/button-e2e'; import {MenuE2E} from './menu/menu-e2e'; import {BasicTabs} from './tabs/tabs-e2e'; -import {MaterialModule} from '@angular2-material/all'; +import {MaterialModule} from '@angular/material'; import {E2E_APP_ROUTES} from './e2e-app/routes'; diff --git a/src/e2e-app/index.html b/src/e2e-app/index.html index 60bf8b923f8d..33f6caabcb10 100644 --- a/src/e2e-app/index.html +++ b/src/e2e-app/index.html @@ -8,7 +8,7 @@ - + diff --git a/src/e2e-app/system-config.ts b/src/e2e-app/system-config.ts index 1ef123b00edc..a067613be96e 100644 --- a/src/e2e-app/system-config.ts +++ b/src/e2e-app/system-config.ts @@ -1,104 +1,34 @@ -/*********************************************************************************************** - * User Configuration. - **********************************************************************************************/ - -const components = [ - 'all', - 'button', - 'card', - 'checkbox', - 'dialog', - 'grid-list', - 'icon', - 'input', - 'list', - 'menu', - 'progress-bar', - 'progress-circle', - 'radio', - 'select', - 'sidenav', - 'slider', - 'slide-toggle', - 'button-toggle', - 'tabs', - 'toolbar', - 'tooltip', -]; - - -/** User packages configuration. */ -const packages: any = { - '@angular2-material/core': { - format: 'cjs', - main: 'core.umd.js' - }, - // Set the default extension for the root package, because otherwise the demo-app can't - // be built within the production mode. Due to missing file extensions. - '.': { - defaultExtension: 'js' - } -}; -components.forEach(name => { - packages[`@angular2-material/${name}`] = { - format: 'cjs', - main: `${name}.umd.js` - }; -}); - - -//////////////////////////////////////////////////////////////////////////////////////////////// -/*********************************************************************************************** - * Everything underneath this line is managed by the CLI. - **********************************************************************************************/ -const angularPackages = { - // Angular specific barrels. - '@angular/core': { main: 'bundles/core.umd.js'}, - '@angular/core/testing': { main: 'bundles/core-testing.umd.js'}, - '@angular/common': { main: 'bundles/common.umd.js'}, - '@angular/compiler': { main: 'bundles/compiler.umd.js'}, - '@angular/http': { main: 'bundles/http.umd.js'}, - '@angular/forms': { main: 'bundles/forms.umd.js'}, - '@angular/router': { main: 'bundles/router.umd.js'}, - '@angular/platform-browser': { main: 'bundles/platform-browser.umd.js'}, - '@angular/platform-browser-dynamic': { main: 'bundles/platform-browser-dynamic.umd.js'}, - '@angular/platform-browser-dynamic/testing': { - main: 'bundles/platform-browser-dynamic-testing.umd.js' - }, -}; - -const barrels: string[] = [ - // Thirdparty barrels. - 'rxjs', - - // App specific barrels. - 'demo-app', - 'button-toggle', - 'gestures', - 'live-announcer', - 'portal', - 'overlay', - ...components - /** @cli-barrel */ -]; - -const _cliSystemConfig = angularPackages; -barrels.forEach((barrelName: string) => { - ( _cliSystemConfig)[barrelName] = { main: 'index' }; -}); - /** Type declaration for ambient System. */ declare var System: any; // Apply the CLI SystemJS configuration. System.config({ map: { - '@angular': 'vendor/@angular', 'rxjs': 'vendor/rxjs', - 'main': 'main.js' + 'main': 'main.js', + + // Angular specific mappings. + '@angular/core': 'vendor/@angular/core/bundles/core.umd.js', + '@angular/common': 'vendor/@angular/common/bundles/common.umd.js', + '@angular/compiler': 'vendor/@angular/compiler/bundles/compiler.umd.js', + '@angular/http': 'vendor/@angular/http/bundles/http.umd.js', + '@angular/forms': 'vendor/@angular/forms/bundles/forms.umd.js', + '@angular/router': 'vendor/@angular/router/bundles/router.umd.js', + '@angular/platform-browser': 'vendor/@angular/platform-browser/bundles/platform-browser.umd.js', + '@angular/platform-browser-dynamic': + 'vendor/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', }, - packages: _cliSystemConfig + packages: { + // Thirdparty barrels. + 'rxjs': { main: 'index' }, + '@angular/material': { + format: 'cjs', + main: 'material.umd.js' + }, + // Set the default extension for the root package, because otherwise the demo-app can't + // be built within the production mode. Due to missing file extensions. + '.': { + defaultExtension: 'js' + } + } }); - -// Apply the user's configuration. -System.config({ packages }); diff --git a/src/e2e-app/tsconfig.json b/src/e2e-app/tsconfig.json index c1db83cd29fb..e6c34fe73258 100644 --- a/src/e2e-app/tsconfig.json +++ b/src/e2e-app/tsconfig.json @@ -19,8 +19,8 @@ "../../node_modules" ], "paths": { - "@angular2-material/*": [ - "../../dist/@angular2-material/*" + "@angular/material": [ + "../../dist/@angular/material" ] }, "types": [ diff --git a/src/lib/all/_all-theme.scss b/src/lib/all/_all-theme.scss deleted file mode 100644 index 368e5851f1cb..000000000000 --- a/src/lib/all/_all-theme.scss +++ /dev/null @@ -1,44 +0,0 @@ -@import '../core/core'; -@import '../button/button-theme'; -@import '../button-toggle/button-toggle-theme'; -@import '../card/card-theme'; -@import '../checkbox/checkbox-theme'; -@import '../dialog/dialog-theme'; -@import '../grid-list/grid-list-theme'; -@import '../icon/icon-theme'; -@import '../input/input-theme'; -@import '../list/list-theme'; -@import '../menu/menu-theme'; -@import '../progress-bar/progress-bar-theme'; -@import '../progress-circle/progress-circle-theme'; -@import '../radio/radio-theme'; -@import '../sidenav/sidenav-theme'; -@import '../slide-toggle/slide-toggle-theme'; -@import '../slider/slider-theme'; -@import '../tabs/tabs-theme'; -@import '../toolbar/toolbar-theme'; -@import '../tooltip/tooltip-theme'; - - -@mixin angular-material-theme($theme) { - @include md-core-theme($theme); - @include md-button-theme($theme); - @include md-button-toggle-theme($theme); - @include md-card-theme($theme); - @include md-checkbox-theme($theme); - @include md-dialog-theme($theme); - @include md-grid-list-theme($theme); - @include md-icon-theme($theme); - @include md-input-theme($theme); - @include md-list-theme($theme); - @include md-menu-theme($theme); - @include md-progress-bar-theme($theme); - @include md-progress-circle-theme($theme); - @include md-radio-theme($theme); - @include md-sidenav-theme($theme); - @include md-slide-toggle-theme($theme); - @include md-slider-theme($theme); - @include md-tabs-theme($theme); - @include md-toolbar-theme($theme); - @include md-tooltip-theme($theme); -} diff --git a/src/lib/all/index.ts b/src/lib/all/index.ts deleted file mode 100644 index 73508fe9b5e1..000000000000 --- a/src/lib/all/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './all'; diff --git a/src/lib/button-toggle/button-toggle.ts b/src/lib/button-toggle/button-toggle.ts index 918d48945c37..ca1698cb9351 100644 --- a/src/lib/button-toggle/button-toggle.ts +++ b/src/lib/button-toggle/button-toggle.ts @@ -21,7 +21,7 @@ import { FormsModule, } from '@angular/forms'; import {Observable} from 'rxjs/Observable'; -import {BooleanFieldValue, MdUniqueSelectionDispatcher} from '@angular2-material/core'; +import {BooleanFieldValue, MdUniqueSelectionDispatcher} from '../core'; export type ToggleType = 'checkbox' | 'radio'; diff --git a/src/lib/button-toggle/package.json b/src/lib/button-toggle/package.json deleted file mode 100644 index 38a84ef81119..000000000000 --- a/src/lib/button-toggle/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@angular2-material/button-toggle", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material Button Toggle", - "main": "./button-toggle.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "button-toggle", - "button", - "toggle" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2", - "@angular/forms": "^2.0.0" - } -} diff --git a/src/lib/button/button.ts b/src/lib/button/button.ts index df523a339b9d..03ac5438f1a3 100644 --- a/src/lib/button/button.ts +++ b/src/lib/button/button.ts @@ -10,8 +10,7 @@ import { ModuleWithProviders, } from '@angular/core'; import {CommonModule} from '@angular/common'; -import {BooleanFieldValue} from '@angular2-material/core'; -import {MdRippleModule} from '@angular2-material/core'; +import {BooleanFieldValue, MdRippleModule} from '../core'; // TODO(jelbourn): Make the `isMouseDown` stuff done with one global listener. // TODO(kara): Convert attribute selectors to classes when attr maps become available diff --git a/src/lib/button/package.json b/src/lib/button/package.json deleted file mode 100644 index c2a28a13b43d..000000000000 --- a/src/lib/button/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "@angular2-material/button", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material button", - "main": "./button.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "button", - "anchor", - "linkbutton" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/card/package.json b/src/lib/card/package.json deleted file mode 100644 index 1e33c75d6bd8..000000000000 --- a/src/lib/card/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@angular2-material/card", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material card", - "main": "./card.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "card" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/checkbox/package.json b/src/lib/checkbox/package.json deleted file mode 100644 index 261cb8345923..000000000000 --- a/src/lib/checkbox/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@angular2-material/checkbox", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material checkbox", - "main": "./checkbox.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "checkbox" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2", - "@angular/forms": "^2.0.0" - } -} diff --git a/src/lib/core.ts b/src/lib/core.ts new file mode 100644 index 000000000000..65c514e92521 --- /dev/null +++ b/src/lib/core.ts @@ -0,0 +1 @@ +export * from './core/index'; diff --git a/src/lib/core/theming/_all-theme.scss b/src/lib/core/theming/_all-theme.scss new file mode 100644 index 000000000000..a4a03a561dc5 --- /dev/null +++ b/src/lib/core/theming/_all-theme.scss @@ -0,0 +1,46 @@ +// Import all the theming functionality. +@import '../core'; +@import '../../button/button-theme'; +@import '../../button-toggle/button-toggle-theme'; +@import '../../card/card-theme'; +@import '../../checkbox/checkbox-theme'; +@import '../../dialog/dialog-theme'; +@import '../../grid-list/grid-list-theme'; +@import '../../icon/icon-theme'; +@import '../../input/input-theme'; +@import '../../list/list-theme'; +@import '../../menu/menu-theme'; +@import '../../progress-bar/progress-bar-theme'; +@import '../../progress-circle/progress-circle-theme'; +@import '../../radio/radio-theme'; +@import '../../sidenav/sidenav-theme'; +@import '../../slide-toggle/slide-toggle-theme'; +@import '../../slider/slider-theme'; +@import '../../tabs/tabs-theme'; +@import '../../toolbar/toolbar-theme'; +@import '../../tooltip/tooltip-theme'; + + +// Create a theme. +@mixin angular-material-theme($theme) { + @include md-core-theme($theme); + @include md-button-theme($theme); + @include md-button-toggle-theme($theme); + @include md-card-theme($theme); + @include md-checkbox-theme($theme); + @include md-dialog-theme($theme); + @include md-grid-list-theme($theme); + @include md-icon-theme($theme); + @include md-input-theme($theme); + @include md-list-theme($theme); + @include md-menu-theme($theme); + @include md-progress-bar-theme($theme); + @include md-progress-circle-theme($theme); + @include md-radio-theme($theme); + @include md-sidenav-theme($theme); + @include md-slide-toggle-theme($theme); + @include md-slider-theme($theme); + @include md-tabs-theme($theme); + @include md-toolbar-theme($theme); + @include md-tooltip-theme($theme); +} diff --git a/src/lib/core/theming/prebuilt/deeppurple-amber.scss b/src/lib/core/theming/prebuilt/deeppurple-amber.scss index dac3949f1c19..ef5d2aa394b3 100644 --- a/src/lib/core/theming/prebuilt/deeppurple-amber.scss +++ b/src/lib/core/theming/prebuilt/deeppurple-amber.scss @@ -1,7 +1,7 @@ @import '../theming'; +@import '../all-theme'; @import '../palette'; @import '../../core'; -@import '../../../all/all-theme'; $primary: md-palette($md-deep-purple); diff --git a/src/lib/core/theming/prebuilt/indigo-pink.scss b/src/lib/core/theming/prebuilt/indigo-pink.scss index 6ef380548323..a7b9c1d9498b 100644 --- a/src/lib/core/theming/prebuilt/indigo-pink.scss +++ b/src/lib/core/theming/prebuilt/indigo-pink.scss @@ -1,8 +1,7 @@ - @import '../theming'; +@import '../all-theme'; @import '../palette'; @import '../../core'; -@import '../../../all/all-theme'; $primary: md-palette($md-indigo); diff --git a/src/lib/core/theming/prebuilt/purple-green.scss b/src/lib/core/theming/prebuilt/purple-green.scss index 39d0c764ec07..b994144f6eb2 100644 --- a/src/lib/core/theming/prebuilt/purple-green.scss +++ b/src/lib/core/theming/prebuilt/purple-green.scss @@ -1,7 +1,7 @@ @import '../theming'; +@import '../all-theme'; @import '../palette'; @import '../../core'; -@import '../../../all/all-theme'; $primary: md-palette($md-purple, 700, 500, 800); diff --git a/src/lib/dialog/dialog-container.ts b/src/lib/dialog/dialog-container.ts index 43ec0f390ba5..8f7345a87f28 100644 --- a/src/lib/dialog/dialog-container.ts +++ b/src/lib/dialog/dialog-container.ts @@ -4,7 +4,7 @@ import { ComponentPortal, PortalHostDirective, TemplatePortal -} from '@angular2-material/core'; +} from '../core'; import {MdDialogConfig} from './dialog-config'; import {MdDialogContentAlreadyAttachedError} from './dialog-errors'; diff --git a/src/lib/dialog/dialog-errors.ts b/src/lib/dialog/dialog-errors.ts index 87ddc0938182..08f1172f62b9 100644 --- a/src/lib/dialog/dialog-errors.ts +++ b/src/lib/dialog/dialog-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '@angular2-material/core'; +import {MdError} from '../core'; /** Exception thrown when a ComponentPortal is attached to a DomPortalHost without an origin. */ export class MdDialogContentAlreadyAttachedError extends MdError { diff --git a/src/lib/dialog/dialog-ref.ts b/src/lib/dialog/dialog-ref.ts index 927ba71a6032..4c2a03c87ba8 100644 --- a/src/lib/dialog/dialog-ref.ts +++ b/src/lib/dialog/dialog-ref.ts @@ -1,4 +1,4 @@ -import {OverlayRef} from '@angular2-material/core'; +import {OverlayRef} from '../core'; import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; diff --git a/src/lib/dialog/dialog.spec.ts b/src/lib/dialog/dialog.spec.ts index feaa57d52ee5..a1465652680e 100644 --- a/src/lib/dialog/dialog.spec.ts +++ b/src/lib/dialog/dialog.spec.ts @@ -1,7 +1,7 @@ import {inject, async, ComponentFixture, TestBed} from '@angular/core/testing'; import {NgModule, Component, Directive, ViewChild, ViewContainerRef} from '@angular/core'; import {MdDialog, MdDialogModule} from './dialog'; -import {OverlayContainer} from '@angular2-material/core'; +import {OverlayContainer} from '../core'; import {MdDialogConfig} from './dialog-config'; import {MdDialogRef} from './dialog-ref'; diff --git a/src/lib/dialog/dialog.ts b/src/lib/dialog/dialog.ts index 48d76e0e72f7..cace47f1cf53 100644 --- a/src/lib/dialog/dialog.ts +++ b/src/lib/dialog/dialog.ts @@ -7,8 +7,8 @@ import { OverlayState, ComponentPortal, OVERLAY_PROVIDERS, -} from '@angular2-material/core'; -import {ComponentType} from '@angular2-material/core'; +} from '../core'; +import {ComponentType} from '../core'; import {MdDialogConfig} from './dialog-config'; import {MdDialogRef} from './dialog-ref'; import {DialogInjector} from './dialog-injector'; diff --git a/src/lib/grid-list/grid-list-errors.ts b/src/lib/grid-list/grid-list-errors.ts index 559c7fa25cd3..5a48520c5479 100644 --- a/src/lib/grid-list/grid-list-errors.ts +++ b/src/lib/grid-list/grid-list-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '@angular2-material/core'; +import {MdError} from '../core'; /** * Exception thrown when cols property is missing from grid-list diff --git a/src/lib/grid-list/grid-list.ts b/src/lib/grid-list/grid-list.ts index 49295de0cc92..7b9ba5a8c18d 100644 --- a/src/lib/grid-list/grid-list.ts +++ b/src/lib/grid-list/grid-list.ts @@ -21,7 +21,7 @@ import { FixedTileStyler } from './tile-styler'; import {MdGridListColsError} from './grid-list-errors'; -import {Dir, MdLineModule} from '@angular2-material/core'; +import {Dir, MdLineModule} from '../core'; import {coerceToString, coerceToNumber} from './grid-list-measure'; // TODO(kara): Conditional (responsive) column count / row size. diff --git a/src/lib/grid-list/grid-tile.ts b/src/lib/grid-list/grid-tile.ts index afb30c287ba6..f6d2a26bffd4 100644 --- a/src/lib/grid-list/grid-tile.ts +++ b/src/lib/grid-list/grid-tile.ts @@ -8,7 +8,7 @@ import { QueryList, AfterContentInit } from '@angular/core'; -import { MdLine, MdLineSetter } from '@angular2-material/core'; +import { MdLine, MdLineSetter } from '../core'; import {coerceToNumber} from './grid-list-measure'; @Component({ diff --git a/src/lib/grid-list/package.json b/src/lib/grid-list/package.json deleted file mode 100644 index 222f75a9d323..000000000000 --- a/src/lib/grid-list/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "@angular2-material/grid-list", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material grid list", - "main": "./grid-list.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "grid-list", - "list", - "tiles" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/icon/icon-registry.ts b/src/lib/icon/icon-registry.ts index 7cdb4ecd4ba7..44e03c31cb2b 100644 --- a/src/lib/icon/icon-registry.ts +++ b/src/lib/icon/icon-registry.ts @@ -1,6 +1,6 @@ import {Injectable} from '@angular/core'; import {Http} from '@angular/http'; -import {MdError} from '@angular2-material/core'; +import {MdError} from '../core'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/observable/forkJoin'; import 'rxjs/add/observable/of'; diff --git a/src/lib/icon/icon.ts b/src/lib/icon/icon.ts index ee9a7dcca5f9..53692cd5b648 100644 --- a/src/lib/icon/icon.ts +++ b/src/lib/icon/icon.ts @@ -13,7 +13,7 @@ import { AfterViewChecked } from '@angular/core'; import {HttpModule} from '@angular/http'; -import {MdError} from '@angular2-material/core'; +import {MdError} from '../core'; import {MdIconRegistry} from './icon-registry'; export {MdIconRegistry} from './icon-registry'; diff --git a/src/lib/icon/package.json b/src/lib/icon/package.json deleted file mode 100644 index 1a370d1f7722..000000000000 --- a/src/lib/icon/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@angular2-material/icon", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material icon", - "main": "./icon.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "icon" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular/http": "^2.0.0", - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 000000000000..ead3f4846688 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1,23 @@ +export * from './core'; +export * from './module'; + +export * from './button/index'; +export * from './button-toggle/index'; +export * from './card/index'; +export * from './checkbox/index'; +export * from './dialog/index'; +export * from './grid-list/index'; +export * from './icon/index'; +export * from './input/index'; +export * from './list/index'; +export * from './menu/index'; +export * from './progress-bar/index'; +export * from './progress-circle/index'; +export * from './radio/index'; +export * from './select/index'; +export * from './sidenav/index'; +export * from './slider/index'; +export * from './slide-toggle/index'; +export * from './tabs/index'; +export * from './toolbar/index'; +export * from './tooltip/index'; diff --git a/src/lib/input/input.ts b/src/lib/input/input.ts index e90a76d64d00..66c4fbe4bec4 100644 --- a/src/lib/input/input.ts +++ b/src/lib/input/input.ts @@ -24,7 +24,7 @@ import { FormsModule, } from '@angular/forms'; import {CommonModule} from '@angular/common'; -import {BooleanFieldValue, MdError} from '@angular2-material/core'; +import {BooleanFieldValue, MdError} from '../core'; import {Observable} from 'rxjs/Observable'; diff --git a/src/lib/input/package.json b/src/lib/input/package.json deleted file mode 100644 index 2d4f19f40067..000000000000 --- a/src/lib/input/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@angular2-material/input", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material input", - "main": "./input.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "input", - "text", - "textarea" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2", - "@angular/forms": "^2.0.0" - } -} diff --git a/src/lib/list/list.ts b/src/lib/list/list.ts index 81e8a85aa7f6..755b40ed0721 100644 --- a/src/lib/list/list.ts +++ b/src/lib/list/list.ts @@ -11,7 +11,7 @@ import { NgModule, ModuleWithProviders, } from '@angular/core'; -import {MdLine, MdLineSetter, MdLineModule} from '@angular2-material/core'; +import {MdLine, MdLineSetter, MdLineModule} from '../core'; @Directive({ selector: 'md-divider' diff --git a/src/lib/list/package.json b/src/lib/list/package.json deleted file mode 100644 index 7fa20d51a5a8..000000000000 --- a/src/lib/list/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@angular2-material/list", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material list", - "main": "./list.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "list" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/menu/menu-directive.ts b/src/lib/menu/menu-directive.ts index 7306d031a652..51c038f83383 100644 --- a/src/lib/menu/menu-directive.ts +++ b/src/lib/menu/menu-directive.ts @@ -15,7 +15,7 @@ import { import {MenuPositionX, MenuPositionY} from './menu-positions'; import {MdMenuInvalidPositionX, MdMenuInvalidPositionY} from './menu-errors'; import {MdMenuItem} from './menu-item'; -import {UP_ARROW, DOWN_ARROW, TAB} from '@angular2-material/core'; +import {UP_ARROW, DOWN_ARROW, TAB} from '../core'; @Component({ moduleId: module.id, diff --git a/src/lib/menu/menu-errors.ts b/src/lib/menu/menu-errors.ts index 7e1f1704172d..5d3bb1d56c0b 100644 --- a/src/lib/menu/menu-errors.ts +++ b/src/lib/menu/menu-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '@angular2-material/core'; +import {MdError} from '../core'; /** * Exception thrown when menu trigger doesn't have a valid md-menu instance diff --git a/src/lib/menu/menu-trigger.ts b/src/lib/menu/menu-trigger.ts index a4ba1973d1bc..419d8a827d09 100644 --- a/src/lib/menu/menu-trigger.ts +++ b/src/lib/menu/menu-trigger.ts @@ -21,7 +21,7 @@ import { ConnectedPositionStrategy, HorizontalConnectionPos, VerticalConnectionPos -} from '@angular2-material/core'; +} from '../core'; /** * This directive is intended to be used in conjunction with an md-menu tag. It is diff --git a/src/lib/menu/menu.ts b/src/lib/menu/menu.ts index 0c90a96d4d32..8f54ae91cb95 100644 --- a/src/lib/menu/menu.ts +++ b/src/lib/menu/menu.ts @@ -1,6 +1,6 @@ import {NgModule, ModuleWithProviders} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {OverlayModule, OVERLAY_PROVIDERS} from '@angular2-material/core'; +import {OverlayModule, OVERLAY_PROVIDERS} from '../core'; import {MdMenu} from './menu-directive'; import {MdMenuItem} from './menu-item'; import {MdMenuTrigger} from './menu-trigger'; diff --git a/src/lib/menu/package.json b/src/lib/menu/package.json deleted file mode 100644 index 8f842ba0218c..000000000000 --- a/src/lib/menu/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@angular2-material/menu", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material menu", - "main": "./menu.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "menu" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/module.d.ts b/src/lib/module.d.ts deleted file mode 100644 index ce4ae9b66cf0..000000000000 --- a/src/lib/module.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare var module: {id: string}; diff --git a/src/lib/all/all.ts b/src/lib/module.ts similarity index 58% rename from src/lib/all/all.ts rename to src/lib/module.ts index 784156e2d7c5..4a13daae74a9 100644 --- a/src/lib/all/all.ts +++ b/src/lib/module.ts @@ -1,31 +1,33 @@ import {NgModule, ModuleWithProviders} from '@angular/core'; -import {MdButtonToggleModule} from '@angular2-material/button-toggle'; -import {MdButtonModule} from '@angular2-material/button'; -import {MdCheckboxModule} from '@angular2-material/checkbox'; -import {MdRadioModule} from '@angular2-material/radio'; -import {MdSelectModule} from '@angular2-material/select'; -import {MdSlideToggleModule} from '@angular2-material/slide-toggle'; -import {MdSliderModule} from '@angular2-material/slider'; -import {MdSidenavModule} from '@angular2-material/sidenav'; -import {MdListModule} from '@angular2-material/list'; -import {MdGridListModule} from '@angular2-material/grid-list'; -import {MdCardModule} from '@angular2-material/card'; -import {MdIconModule} from '@angular2-material/icon'; -import {MdProgressCircleModule} from '@angular2-material/progress-circle'; -import {MdProgressBarModule} from '@angular2-material/progress-bar'; -import {MdInputModule} from '@angular2-material/input'; -import {MdTabsModule} from '@angular2-material/tabs'; -import {MdToolbarModule} from '@angular2-material/toolbar'; -import {MdTooltipModule} from '@angular2-material/tooltip'; + import { MdLiveAnnouncer, MdRippleModule, RtlModule, PortalModule, OverlayModule -} from '@angular2-material/core'; -import {MdMenuModule} from '@angular2-material/menu'; -import {MdDialogModule} from '@angular2-material/dialog'; +} from './core/index'; + +import {MdButtonToggleModule} from './button-toggle/index'; +import {MdButtonModule} from './button/index'; +import {MdCheckboxModule} from './checkbox/index'; +import {MdRadioModule} from './radio/index'; +import {MdSelectModule} from './select/index'; +import {MdSlideToggleModule} from './slide-toggle/index'; +import {MdSliderModule} from './slider/index'; +import {MdSidenavModule} from './sidenav/index'; +import {MdListModule} from './list/index'; +import {MdGridListModule} from './grid-list/index'; +import {MdCardModule} from './card/index'; +import {MdIconModule} from './icon/index'; +import {MdProgressCircleModule} from './progress-circle/index'; +import {MdProgressBarModule} from './progress-bar/index'; +import {MdInputModule} from './input/index'; +import {MdTabsModule} from './tabs/index'; +import {MdToolbarModule} from './toolbar/index'; +import {MdTooltipModule} from './tooltip/index'; +import {MdMenuModule} from './menu/index'; +import {MdDialogModule} from './dialog/index'; const MATERIAL_MODULES = [ diff --git a/src/lib/core/package.json b/src/lib/package.json similarity index 77% rename from src/lib/core/package.json rename to src/lib/package.json index 4446dc40cc85..59f510fbb852 100644 --- a/src/lib/core/package.json +++ b/src/lib/package.json @@ -1,8 +1,8 @@ { - "name": "@angular2-material/core", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material core", - "main": "./core.umd.js", + "name": "@angular/material", + "version": "2.0.0-alpha.9", + "description": "Angular 2 Material", + "main": "./material.umd.js", "module": "./index.js", "typings": "./index.d.ts", "repository": { diff --git a/src/lib/progress-bar/package.json b/src/lib/progress-bar/package.json deleted file mode 100644 index 7e6436fed8b2..000000000000 --- a/src/lib/progress-bar/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "@angular2-material/progress-bar", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material progress-bar", - "main": "./progress-bar.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "progress", - "progressbar", - "loading" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/progress-circle/package.json b/src/lib/progress-circle/package.json deleted file mode 100644 index 96db01ebbb05..000000000000 --- a/src/lib/progress-circle/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@angular2-material/progress-circle", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material progress-circle", - "main": "./progress-circle.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "progress", - "spinner" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/radio/package.json b/src/lib/radio/package.json deleted file mode 100644 index 2b8340aa0876..000000000000 --- a/src/lib/radio/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@angular2-material/radio", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material radio", - "main": "./radio.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "radio" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2", - "@angular/forms": "^2.0.0" - } -} diff --git a/src/lib/radio/radio.ts b/src/lib/radio/radio.ts index 1f9db8306946..125943f9589e 100644 --- a/src/lib/radio/radio.ts +++ b/src/lib/radio/radio.ts @@ -19,11 +19,7 @@ import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms'; -import {MdUniqueSelectionDispatcher} from '@angular2-material/core'; - - -// Re-exports. -export {MdUniqueSelectionDispatcher} from '@angular2-material/core'; +import {MdUniqueSelectionDispatcher} from '../core'; diff --git a/src/lib/sidenav/package.json b/src/lib/sidenav/package.json deleted file mode 100644 index 417412940f90..000000000000 --- a/src/lib/sidenav/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@angular2-material/sidenav", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material sidenav", - "main": "./sidenav.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "sidenav", - "sidepane", - "navigation", - "drawer" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/sidenav/sidenav.ts b/src/lib/sidenav/sidenav.ts index 1d566cad0577..de1315043efc 100644 --- a/src/lib/sidenav/sidenav.ts +++ b/src/lib/sidenav/sidenav.ts @@ -16,7 +16,7 @@ import { ViewEncapsulation, } from '@angular/core'; import {CommonModule} from '@angular/common'; -import {Dir, MdError} from '@angular2-material/core'; +import {Dir, MdError} from '../core'; /** Exception thrown when two MdSidenav are matching the same side. */ export class MdDuplicatedSidenavError extends MdError { diff --git a/src/lib/slide-toggle/package.json b/src/lib/slide-toggle/package.json deleted file mode 100644 index fa15f107a54b..000000000000 --- a/src/lib/slide-toggle/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@angular2-material/slide-toggle", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material Slide Toggle", - "main": "./slide-toggle.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "slide-toggle", - "switch", - "toggle" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2", - "@angular/forms": "^2.0.0" - } -} diff --git a/src/lib/slide-toggle/slide-toggle.ts b/src/lib/slide-toggle/slide-toggle.ts index 1b5ea011ca33..36ba7635ec8e 100644 --- a/src/lib/slide-toggle/slide-toggle.ts +++ b/src/lib/slide-toggle/slide-toggle.ts @@ -17,9 +17,9 @@ import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; -import {BooleanFieldValue, applyCssTransform} from '@angular2-material/core'; +import {BooleanFieldValue, applyCssTransform} from '../core'; import {Observable} from 'rxjs/Observable'; -import {MdGestureConfig} from '@angular2-material/core'; +import {MdGestureConfig} from '../core'; export const MD_SLIDE_TOGGLE_VALUE_ACCESSOR: any = { diff --git a/src/lib/slider/package.json b/src/lib/slider/package.json deleted file mode 100644 index 4078036d3f9b..000000000000 --- a/src/lib/slider/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@angular2-material/slider", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material Slider", - "main": "./slider.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "slider" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/slider/slider.ts b/src/lib/slider/slider.ts index ef3c1e937138..8c80ee4ad7ee 100644 --- a/src/lib/slider/slider.ts +++ b/src/lib/slider/slider.ts @@ -15,7 +15,7 @@ import { FormsModule, } from '@angular/forms'; import {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; -import {BooleanFieldValue, MdGestureConfig, applyCssTransform} from '@angular2-material/core'; +import {BooleanFieldValue, MdGestureConfig, applyCssTransform} from '../core'; import {Input as HammerInput} from 'hammerjs'; /** diff --git a/src/lib/slider/test-gesture-config.ts b/src/lib/slider/test-gesture-config.ts index e7c99e678929..78040bb665f1 100644 --- a/src/lib/slider/test-gesture-config.ts +++ b/src/lib/slider/test-gesture-config.ts @@ -1,5 +1,5 @@ import {Injectable} from '@angular/core'; -import {MdGestureConfig} from '@angular2-material/core'; +import {MdGestureConfig} from '../core'; /** * An extension of MdGestureConfig that exposes the underlying HammerManager instances. diff --git a/src/lib/system-config-spec.ts b/src/lib/system-config-spec.ts index 0490942f8fd9..acf90f93b5ba 100644 --- a/src/lib/system-config-spec.ts +++ b/src/lib/system-config-spec.ts @@ -1,109 +1,44 @@ -/*********************************************************************************************** - * User Configuration. - **********************************************************************************************/ - -const components = [ - 'all', - 'button', - 'card', - 'checkbox', - 'dialog', - 'grid-list', - 'icon', - 'input', - 'list', - 'menu', - 'progress-bar', - 'progress-circle', - 'radio', - 'select', - 'sidenav', - 'slider', - 'slide-toggle', - 'button-toggle', - 'tabs', - 'toolbar', - 'tooltip', -]; - - -/** User packages configuration. */ -const packages: any = { - '@angular2-material/core': { - format: 'cjs', - defaultExtension: 'js', - main: 'index' - }, - // Set the default extension for the root package, because otherwise the demo-app can't - // be built within the production mode. Due to missing file extensions. - '.': { - defaultExtension: 'js' - } -}; -components.forEach(name => { - packages[`@angular2-material/${name}`] = { - format: 'cjs', - defaultExtension: 'js', - main: 'index' - }; -}); - - -//////////////////////////////////////////////////////////////////////////////////////////////// -/*********************************************************************************************** - * Everything underneath this line is managed by the CLI. - **********************************************************************************************/ -const angularPackages = { - // Angular specific barrels. - '@angular/core': { main: 'bundles/core.umd.js'}, - '@angular/core/testing': { main: '../bundles/core-testing.umd.js'}, - '@angular/common': { main: 'bundles/common.umd.js'}, - '@angular/compiler': { main: 'bundles/compiler.umd.js'}, - '@angular/compiler/testing': { main: '../bundles/compiler-testing.umd.js'}, - '@angular/http': { main: 'bundles/http.umd.js'}, - '@angular/http/testing': { main: '../bundles/http-testing.umd.js'}, - '@angular/forms': { main: 'bundles/forms.umd.js'}, - '@angular/router': { main: 'bundles/router.umd.js'}, - '@angular/platform-browser': { main: 'bundles/platform-browser.umd.js'}, - '@angular/platform-browser/testing': { main: '../bundles/platform-browser-testing.umd.js'}, - '@angular/platform-browser-dynamic': { main: 'bundles/platform-browser-dynamic.umd.js'}, - '@angular/platform-browser-dynamic/testing': { - main: '../bundles/platform-browser-dynamic-testing.umd.js' - }, -}; - -const barrels: string[] = [ - // Thirdparty barrels. - 'rxjs', - - // App specific barrels. - 'demo-app', - 'button-toggle', - 'gestures', - 'live-announcer', - 'portal', - 'overlay', - ...components - /** @cli-barrel */ -]; - -const _cliSystemConfig = angularPackages; -barrels.forEach((barrelName: string) => { - ( _cliSystemConfig)[barrelName] = { main: 'index' }; -}); - /** Type declaration for ambient System. */ declare var System: any; // Apply the CLI SystemJS configuration. System.config({ map: { - '@angular': 'vendor/@angular', 'rxjs': 'vendor/rxjs', - 'main': 'main.js' + 'main': 'main.js', + + // Angular specific mappings. + '@angular/core': 'vendor/@angular/core/bundles/core.umd.js', + '@angular/core/testing': 'vendor/@angular/core/bundles/core-testing.umd.js', + '@angular/common': 'vendor/@angular/common/bundles/common.umd.js', + '@angular/common/testing': 'vendor/@angular/common/bundles/common-testing.umd.js', + '@angular/compiler': 'vendor/@angular/compiler/bundles/compiler.umd.js', + '@angular/compiler/testing': 'vendor/@angular/compiler/bundles/compiler-testing.umd.js', + '@angular/http': 'vendor/@angular/http/bundles/http.umd.js', + '@angular/http/testing': 'vendor/@angular/http/bundles/http-testing.umd.js', + '@angular/forms': 'vendor/@angular/forms/bundles/forms.umd.js', + '@angular/forms/testing': 'vendor/@angular/forms/bundles/forms-testing.umd.js', + '@angular/router': 'vendor/@angular/router/bundles/router.umd.js', + '@angular/router/testing': 'vendor/@angular/router/bundles/router-testing.umd.js', + '@angular/platform-browser': 'vendor/@angular/platform-browser/bundles/platform-browser.umd.js', + '@angular/platform-browser/testing': + 'vendor/@angular/platform-browser/bundles/platform-browser-testing.umd.js', + '@angular/platform-browser-dynamic': + 'vendor/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', + '@angular/platform-browser-dynamic/testing': + 'vendor/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js', }, - packages: _cliSystemConfig + packages: { + // Thirdparty barrels. + 'rxjs': { main: 'index' }, + '@angular/material': { + format: 'cjs', + main: 'material.umd.js' + }, + // Set the default extension for the root package, because otherwise the demo-app can't + // be built within the production mode. Due to missing file extensions. + '.': { + defaultExtension: 'js' + } + } }); - -// Apply the user's configuration. -System.config({ packages }); diff --git a/src/lib/tabs/package.json b/src/lib/tabs/package.json deleted file mode 100644 index 4078fa2cbc02..000000000000 --- a/src/lib/tabs/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@angular2-material/tabs", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material Tabs", - "main": "./tabs.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "tabs" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/tabs/tab-content.ts b/src/lib/tabs/tab-content.ts index fd392daeb058..9ea780e3d3b2 100644 --- a/src/lib/tabs/tab-content.ts +++ b/src/lib/tabs/tab-content.ts @@ -1,5 +1,5 @@ import {Directive, TemplateRef, ViewContainerRef} from '@angular/core'; -import {TemplatePortalDirective} from '@angular2-material/core'; +import {TemplatePortalDirective} from '../core'; /** Used to flag tab contents for use with the portal directive */ @Directive({ diff --git a/src/lib/tabs/tab-label.ts b/src/lib/tabs/tab-label.ts index 8096b14ec82a..99603975d587 100644 --- a/src/lib/tabs/tab-label.ts +++ b/src/lib/tabs/tab-label.ts @@ -1,5 +1,5 @@ import {Directive, TemplateRef, ViewContainerRef} from '@angular/core'; -import {TemplatePortalDirective} from '@angular2-material/core'; +import {TemplatePortalDirective} from '../core'; /** Used to flag tab labels for use with the portal directive */ @Directive({ diff --git a/src/lib/tabs/tabs.ts b/src/lib/tabs/tabs.ts index 7d7bacce2502..ee77040a63d1 100644 --- a/src/lib/tabs/tabs.ts +++ b/src/lib/tabs/tabs.ts @@ -13,14 +13,14 @@ import { ContentChildren } from '@angular/core'; import {CommonModule} from '@angular/common'; -import {PortalModule} from '@angular2-material/core'; +import {PortalModule} from '../core'; import {MdTabLabel} from './tab-label'; import {MdTabContent} from './tab-content'; import {MdTabLabelWrapper} from './tab-label-wrapper'; import {MdInkBar} from './ink-bar'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/map'; -import {RIGHT_ARROW, LEFT_ARROW, ENTER} from '@angular2-material/core'; +import {RIGHT_ARROW, LEFT_ARROW, ENTER} from '../core'; /** Used to generate unique ID's for each tab component */ let nextId = 0; diff --git a/src/lib/toolbar/package.json b/src/lib/toolbar/package.json deleted file mode 100644 index fa7c54593afd..000000000000 --- a/src/lib/toolbar/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@angular2-material/toolbar", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material toolbar", - "main": "./toolbar.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "toolbar", - "header" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/tooltip/package.json b/src/lib/tooltip/package.json deleted file mode 100644 index a29d0b6483b5..000000000000 --- a/src/lib/tooltip/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@angular2-material/tooltip", - "version": "2.0.0-alpha.8-2", - "description": "Angular 2 Material tooltip", - "main": "./tooltip.umd.js", - "module": "./index.js", - "typings": "./index.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/angular/material2.git" - }, - "keywords": [ - "angular", - "material", - "material design", - "components", - "tooltip" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/material2/issues" - }, - "homepage": "https://github.com/angular/material2#readme", - "peerDependencies": { - "@angular2-material/core": "2.0.0-alpha.8-2" - } -} diff --git a/src/lib/tooltip/tooltip.spec.ts b/src/lib/tooltip/tooltip.spec.ts index 821047b28601..74cbc6a15051 100644 --- a/src/lib/tooltip/tooltip.spec.ts +++ b/src/lib/tooltip/tooltip.spec.ts @@ -1,8 +1,8 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing'; import {Component, DebugElement} from '@angular/core'; import {By} from '@angular/platform-browser'; -import {TooltipPosition, MdTooltip} from '@angular2-material/tooltip'; -import {OverlayContainer} from '@angular2-material/core'; +import {TooltipPosition, MdTooltip} from './tooltip'; +import {OverlayContainer} from '../core'; import {MdTooltipModule} from './tooltip'; diff --git a/src/lib/tooltip/tooltip.ts b/src/lib/tooltip/tooltip.ts index 2b7df8b93cea..d48dd81ba200 100644 --- a/src/lib/tooltip/tooltip.ts +++ b/src/lib/tooltip/tooltip.ts @@ -17,7 +17,7 @@ import { OverlayConnectionPosition, OriginConnectionPosition, OVERLAY_PROVIDERS, -} from '@angular2-material/core'; +} from '../core'; export type TooltipPosition = 'before' | 'after' | 'above' | 'below'; diff --git a/src/lib/tsconfig-spec.json b/src/lib/tsconfig-spec.json index 3646ff4eb4ee..616568e24c79 100644 --- a/src/lib/tsconfig-spec.json +++ b/src/lib/tsconfig-spec.json @@ -9,7 +9,7 @@ "moduleResolution": "node", "noEmitOnError": true, "noImplicitAny": true, - "outDir": "../../dist/@angular2-material", + "outDir": "../../dist/@angular/material", "rootDir": ".", "sourceMap": true, "target": "es5", @@ -17,9 +17,6 @@ "stripInternal": true, "baseUrl": "", "paths": { - "@angular2-material/*": [ - "./*" - ] }, "typeRoots": [ "../../node_modules/@types" diff --git a/src/lib/tsconfig.json b/src/lib/tsconfig.json index 162f98c006cc..126d417299d2 100644 --- a/src/lib/tsconfig.json +++ b/src/lib/tsconfig.json @@ -9,18 +9,12 @@ "moduleResolution": "node", "noEmitOnError": true, "noImplicitAny": true, - "outDir": "../../dist/@angular2-material", + "outDir": "../../dist/@angular/material", "rootDir": ".", "sourceMap": true, "target": "es5", "inlineSources": true, "stripInternal": true, - "baseUrl": "", - "paths": { - "@angular2-material/*": [ - "./*" - ] - }, "typeRoots": [ "../../node_modules/@types" ], @@ -29,10 +23,10 @@ }, "exclude": [ "**/*.spec.*", - "system-config-spec" + "system-config-spec.ts" ], "angularCompilerOptions": { - "genDir": "../../dist", + "genDir": "../../dist/@angular/material", "skipTemplateCodegen": true, "debug": true } diff --git a/src/lib/typings.d.ts b/src/lib/typings.d.ts new file mode 100644 index 000000000000..bf6ef74f4b61 --- /dev/null +++ b/src/lib/typings.d.ts @@ -0,0 +1 @@ +declare const module: {id: string}; diff --git a/test/karma-test-shim.js b/test/karma-test-shim.js index 93eb900938cf..d19e7eca1acf 100644 --- a/test/karma-test-shim.js +++ b/test/karma-test-shim.js @@ -28,7 +28,7 @@ System.config({ baseURL: distPath }); -System.import(distPath + '@angular2-material/system-config-spec.js').then(function() { +System.import(distPath + '@angular/material/system-config-spec.js').then(function() { // Load and configure the TestComponentBuilder. return Promise.all([ System.import('@angular/core/testing'), diff --git a/tools/gulp/constants.ts b/tools/gulp/constants.ts index 7038bf26594f..408b44fd14c2 100644 --- a/tools/gulp/constants.ts +++ b/tools/gulp/constants.ts @@ -4,7 +4,7 @@ export const PROJECT_ROOT = join(__dirname, '../..'); export const SOURCE_ROOT = join(PROJECT_ROOT, 'src'); export const DIST_ROOT = join(PROJECT_ROOT, 'dist'); -export const DIST_COMPONENTS_ROOT = join(DIST_ROOT, '@angular2-material'); +export const DIST_COMPONENTS_ROOT = join(DIST_ROOT, '@angular/material'); export const NPM_VENDOR_FILES = [ diff --git a/tools/gulp/tasks/components.ts b/tools/gulp/tasks/components.ts index 03a359f2ff92..90e4f0283d39 100644 --- a/tools/gulp/tasks/components.ts +++ b/tools/gulp/tasks/components.ts @@ -1,9 +1,10 @@ import {task, watch} from 'gulp'; -import {readdirSync, statSync, writeFileSync} from 'fs'; +import {readdirSync, statSync, readFileSync} from 'fs'; import * as path from 'path'; import {SOURCE_ROOT, DIST_COMPONENTS_ROOT, PROJECT_ROOT} from '../constants'; import {sassBuildTask, tsBuildTask, execNodeTask, copyTask, sequenceTask} from '../task_helpers'; +import {writeFileSync} from 'fs'; // No typings for these. const inlineResources = require('../../../scripts/release/inline-resources'); @@ -12,13 +13,6 @@ const rollup = require('rollup').rollup; const componentsDir = path.join(SOURCE_ROOT, 'lib'); -function camelCase(str: string) { - return str.replace(/-(\w)/g, (_: any, letter: string) => { - return letter.toUpperCase(); - }) -} - - task(':watch:components', () => { watch(path.join(componentsDir, '**/*.ts'), [':build:components:ts']); watch(path.join(componentsDir, '**/*.scss'), [':build:components:scss']); @@ -39,10 +33,7 @@ task(':build:components:assets', task(':build:components:scss', sassBuildTask( DIST_COMPONENTS_ROOT, componentsDir, [path.join(componentsDir, 'core/style')] )); -task(':build:components:rollup', [':build:components:ts'], () => { - const components = readdirSync(componentsDir) - .filter(componentName => (statSync(path.join(componentsDir, componentName))).isDirectory()); - +task(':build:components:rollup', [':build:components:inline'], () => { const globals: {[name: string]: string} = { // Angular dependencies '@angular/core': 'ng.core', @@ -65,46 +56,45 @@ task(':build:components:rollup', [':build:components:ts'], () => { 'rxjs/add/operator/catch': 'Rx.Observable.prototype', 'rxjs/Observable': 'Rx' }; - components.forEach(name => { - globals[`@angular2-material/${name}`] = `md.${camelCase(name)}` + + // Rollup the @angular/material UMD bundle from all ES5 + imports JavaScript files built. + return rollup({ + entry: path.join(DIST_COMPONENTS_ROOT, 'index.js'), + context: 'this', + external: Object.keys(globals) + }).then((bundle: { generate: any }) => { + const result = bundle.generate({ + moduleName: 'ng.material', + format: 'umd', + globals, + sourceMap: true, + dest: path.join(DIST_COMPONENTS_ROOT, 'material.umd.js') + }); + + // Add source map URL to the code. + result.code += '\n\n//# sourceMappingURL=./material.umd.js.map\n'; + // Format mapping to show properly in the browser. Rollup by default will put the path + // as relative to the file, and since that path is in src/lib and the file is in + // dist/@angular/material, we need to kill a few `../`. + result.map.sources = result.map.sources.map((s: string) => s.replace(/^(\.\.\/)+/, '')); + + writeFileSync(path.join(DIST_COMPONENTS_ROOT, 'material.umd.js'), result.code, 'utf8'); + writeFileSync(path.join(DIST_COMPONENTS_ROOT, 'material.umd.js.map'), result.map, 'utf8'); }); +}); - // Build all of them asynchronously. - return components.reduce((previous, name) => { - return previous - .then(() => { - return rollup({ - entry: path.join(DIST_COMPONENTS_ROOT, name, 'index.js'), - context: 'window', - external: [ - ...Object.keys(globals), - ...components.map(name => `@angular2-material/${name}`) - ] - }); - }) - .then((bundle: any) => { - const result = bundle.generate({ - moduleName: `md.${camelCase(name)}`, - format: 'umd', - globals - }); - const outputPath = path.join(DIST_COMPONENTS_ROOT, name, `${name}.umd.js`); - writeFileSync( outputPath, result.code ); - }); - }, Promise.resolve()); +task(':build:components:inline', [ + ':build:components:ts', + ':build:components:scss', + ':build:components:assets' +], () => { + return inlineResources(DIST_COMPONENTS_ROOT); }); task('build:components', sequenceTask( ':build:components:rollup', - ':build:components:assets', - ':build:components:scss', - ':inline-resources', )); task(':build:components:ngc', ['build:components'], execNodeTask( '@angular/compiler-cli', 'ngc', ['-p', path.relative(PROJECT_ROOT, path.join(componentsDir, 'tsconfig.json'))] )); - -task(':inline-resources', () => { - inlineResources([DIST_COMPONENTS_ROOT]); -}); diff --git a/tools/gulp/tasks/e2e.ts b/tools/gulp/tasks/e2e.ts index 3383bdc230f4..064dd4b59912 100644 --- a/tools/gulp/tasks/e2e.ts +++ b/tools/gulp/tasks/e2e.ts @@ -41,7 +41,6 @@ let stopE2eServer: () => void = null; task(':serve:e2eapp', serverTask(false, (stream) => { stopE2eServer = () => stream.emit('kill') })); task(':serve:e2eapp:stop', () => stopE2eServer()); task('serve:e2eapp', ['build:e2eapp'], sequenceTask([ - ':inline-resources', ':serve:e2eapp', ':watch:components', ])); diff --git a/tools/gulp/tasks/release.ts b/tools/gulp/tasks/release.ts index 0b5e152bb806..c8cb3819910f 100644 --- a/tools/gulp/tasks/release.ts +++ b/tools/gulp/tasks/release.ts @@ -34,40 +34,41 @@ task(':publish:whoami', execTask('npm', ['whoami'], { task(':publish:logout', execTask('npm', ['logout'])); -function _execNpmPublish(componentName: string, label: string): Promise { - const componentPath = path.join(DIST_COMPONENTS_ROOT, componentName); - const stat = statSync(componentPath); - - if (!stat.isDirectory()) { +function _execNpmPublish(label: string): Promise { + const packageDir = DIST_COMPONENTS_ROOT; + if (!statSync(packageDir).isDirectory()) { return; } - if (!existsSync(path.join(componentPath, 'package.json'))) { - console.log(`Skipping ${componentPath} as it does not have a package.json.`); - return; + if (!existsSync(path.join(packageDir, 'package.json'))) { + throw new Error(`"${packageDir}" does not have a package.json.`); } - process.chdir(componentPath); - console.log(`Publishing ${componentName}...`); + process.chdir(packageDir); + console.log(`Publishing material...`); const command = 'npm'; const args = ['publish', '--access', 'public', label ? `--tag` : undefined, label || undefined]; return new Promise((resolve, reject) => { - console.log(`Executing "${command} ${args.join(' ')}"...`); + console.log(` Executing "${command} ${args.join(' ')}"...`); + if (argv['dry']) { + resolve(); + return; + } const childProcess = spawn(command, args); childProcess.stdout.on('data', (data: Buffer) => { - console.log(`stdout: ${data.toString().split(/[\n\r]/g).join('\n ')}`); + console.log(` stdout: ${data.toString().split(/[\n\r]/g).join('\n ')}`); }); childProcess.stderr.on('data', (data: Buffer) => { - console.error(`stderr: ${data.toString().split(/[\n\r]/g).join('\n ')}`); + console.error(` stderr: ${data.toString().split(/[\n\r]/g).join('\n ')}`); }); childProcess.on('close', (code: number) => { if (code == 0) { resolve(); } else { - reject(new Error(`Component ${componentName} did not publish, status: ${code}.`)); + reject(new Error(`Material did not publish, status: ${code}.`)); } }); }); @@ -85,9 +86,8 @@ task(':publish', function(done: (err?: any) => void) { } console.log('\n\n'); - // Build a promise chain that publish each component. - readdirSync(DIST_COMPONENTS_ROOT) - .reduce((prev, dirName) => prev.then(() => _execNpmPublish(dirName, label)), Promise.resolve()) + // Publish only the material package. + return _execNpmPublish(label) .then(() => done()) .catch((err: Error) => done(err)) .then(() => process.chdir(currentDir)); diff --git a/tools/gulp/tasks/unit-test.ts b/tools/gulp/tasks/unit-test.ts index a1bec5947bbb..32b5792dbec0 100644 --- a/tools/gulp/tasks/unit-test.ts +++ b/tools/gulp/tasks/unit-test.ts @@ -26,8 +26,8 @@ gulp.task(':test:deps', sequenceTask( [ ':build:test:vendor', ':build:components:assets', - ':build:components:scss', ':build:components:spec', + ':build:components:inline', ':watch:components:spec', ] )); @@ -39,12 +39,8 @@ gulp.task('test', [':test:deps'], (done: () => void) => { }); gulp.task('test:single-run', [':test:deps'], (done: () => void) => { - runSequence( - ':inline-resources', - () => { - new karma.Server({ - configFile: path.join(PROJECT_ROOT, 'test/karma.conf.js'), - singleRun: true - }, done).start(); - }); + new karma.Server({ + configFile: path.join(PROJECT_ROOT, 'test/karma.conf.js'), + singleRun: true + }, done).start(); });