diff --git a/src/lib/autocomplete/autocomplete-trigger.ts b/src/lib/autocomplete/autocomplete-trigger.ts index 391505afb55f..4fd5d3340764 100644 --- a/src/lib/autocomplete/autocomplete-trigger.ts +++ b/src/lib/autocomplete/autocomplete-trigger.ts @@ -13,17 +13,17 @@ import { } from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; import {DOCUMENT} from '@angular/platform-browser'; -import {Overlay, OverlayRef, OverlayState, TemplatePortal} from '../core'; import {MdAutocomplete} from './autocomplete'; -import {PositionStrategy} from '../core/overlay/position/position-strategy'; -import {ConnectedPositionStrategy} from '../core/overlay/position/connected-position-strategy'; import {Observable} from 'rxjs/Observable'; -import {MdOptionSelectionChange, MdOption} from '../core/option/option'; -import {ENTER, UP_ARROW, DOWN_ARROW} from '../core/keyboard/keycodes'; import {Dir} from '../core/rtl/dir'; -import {MdInputContainer} from '../input/input-container'; -import {ScrollDispatcher} from '../core/overlay/scroll/scroll-dispatcher'; import {Subscription} from 'rxjs/Subscription'; + +import {MdInputContainer} from '@angular/material/input'; +import { + ScrollDispatcher, PositionStrategy, MdOption, MdOptionSelectionChange, ConnectedPositionStrategy, + ENTER, UP_ARROW, DOWN_ARROW, Overlay, OverlayRef, OverlayState, TemplatePortal +} from '@angular/material/core'; + import 'rxjs/add/observable/merge'; import 'rxjs/add/observable/fromEvent'; import 'rxjs/add/operator/filter'; diff --git a/src/lib/autocomplete/autocomplete.ts b/src/lib/autocomplete/autocomplete.ts index 520a0aa33329..1d2b2905589a 100644 --- a/src/lib/autocomplete/autocomplete.ts +++ b/src/lib/autocomplete/autocomplete.ts @@ -10,8 +10,7 @@ import { ViewEncapsulation, ChangeDetectorRef, } from '@angular/core'; -import {MdOption} from '../core'; -import {ActiveDescendantKeyManager} from '../core/a11y/activedescendant-key-manager'; +import {MdOption, _ActiveDescendantKeyManager} from '@angular/material/core'; /** * Autocomplete IDs need to be unique across components, so this counter exists outside of @@ -35,7 +34,7 @@ export type AutocompletePositionY = 'above' | 'below'; export class MdAutocomplete implements AfterContentInit { /** Manages active item in option list based on key events. */ - _keyManager: ActiveDescendantKeyManager; + _keyManager: _ActiveDescendantKeyManager; /** Whether the autocomplete panel displays above or below its trigger. */ positionY: AutocompletePositionY = 'below'; @@ -56,7 +55,7 @@ export class MdAutocomplete implements AfterContentInit { constructor(private _changeDetectorRef: ChangeDetectorRef) { } ngAfterContentInit() { - this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap(); + this._keyManager = new _ActiveDescendantKeyManager(this.options).withWrap(); } /** diff --git a/src/lib/autocomplete/index.ts b/src/lib/autocomplete/index.ts index 960b3eebb029..4d729e949657 100644 --- a/src/lib/autocomplete/index.ts +++ b/src/lib/autocomplete/index.ts @@ -1,5 +1,5 @@ import {NgModule} from '@angular/core'; -import {MdOptionModule, OverlayModule, MdCommonModule} from '../core'; +import {MdOptionModule, OverlayModule, MdCommonModule} from '@angular/material/core'; import {CommonModule} from '@angular/common'; import {MdAutocomplete} from './autocomplete'; import {MdAutocompleteTrigger} from './autocomplete-trigger'; diff --git a/src/lib/button-toggle/button-toggle.ts b/src/lib/button-toggle/button-toggle.ts index d704dec3c9e6..fb64fe241065 100644 --- a/src/lib/button-toggle/button-toggle.ts +++ b/src/lib/button-toggle/button-toggle.ts @@ -17,8 +17,9 @@ import { AfterViewInit, } from '@angular/core'; import {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms'; -import {Observable} from 'rxjs/Observable'; -import {UniqueSelectionDispatcher, coerceBooleanProperty, FocusOriginMonitor} from '../core'; +import { + UniqueSelectionDispatcher, coerceBooleanProperty, FocusOriginMonitor +} 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 f9ea9ef40935..9115ea2008ca 100644 --- a/src/lib/button-toggle/index.ts +++ b/src/lib/button-toggle/index.ts @@ -5,7 +5,7 @@ import { UNIQUE_SELECTION_DISPATCHER_PROVIDER, MdCommonModule, FocusOriginMonitor, -} from '../core'; +} from '@angular/material/core'; @NgModule({ diff --git a/src/lib/button/button.ts b/src/lib/button/button.ts index ab29c24704dd..ecbfa231ee25 100644 --- a/src/lib/button/button.ts +++ b/src/lib/button/button.ts @@ -9,8 +9,9 @@ import { Renderer2, ViewEncapsulation } from '@angular/core'; -import {coerceBooleanProperty, FocusOriginMonitor} from '../core'; -import {mixinDisabled, CanDisable} from '../core/common-behaviors/disabled'; +import { + _mixinDisabled, _CanDisable, coerceBooleanProperty, FocusOriginMonitor +} from '@angular/material/core'; // TODO(kara): Convert attribute selectors to classes when attr maps become available @@ -82,7 +83,7 @@ export class MdMiniFabCssMatStyler {} // Boilerplate for applying mixins to MdButton. export class MdButtonBase { } -export const _MdButtonMixinBase = mixinDisabled(MdButtonBase); +export const _MdButtonMixinBase = _mixinDisabled(MdButtonBase); /** @@ -103,7 +104,7 @@ export const _MdButtonMixinBase = mixinDisabled(MdButtonBase); encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) -export class MdButton extends _MdButtonMixinBase implements OnDestroy, CanDisable { +export class MdButton extends _MdButtonMixinBase implements OnDestroy, _CanDisable { private _color: string; /** Whether the button is round. */ diff --git a/src/lib/button/index.ts b/src/lib/button/index.ts index ff2fbc04e3f9..c01659b04d2b 100644 --- a/src/lib/button/index.ts +++ b/src/lib/button/index.ts @@ -1,6 +1,6 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {MdCommonModule, MdRippleModule, StyleModule} from '../core'; +import {MdCommonModule, MdRippleModule, StyleModule} from '@angular/material/core'; import { MdAnchor, MdButton, diff --git a/src/lib/card/index.ts b/src/lib/card/index.ts index 7e21eb8b2e0f..c0ae0ad03b5a 100644 --- a/src/lib/card/index.ts +++ b/src/lib/card/index.ts @@ -1,5 +1,5 @@ import {NgModule} from '@angular/core'; -import {MdCommonModule} from '../core'; +import {MdCommonModule} from '@angular/material/core'; import { MdCard, MdCardHeader, diff --git a/src/lib/checkbox/checkbox.ts b/src/lib/checkbox/checkbox.ts index 9874e7697b47..aed190889c46 100644 --- a/src/lib/checkbox/checkbox.ts +++ b/src/lib/checkbox/checkbox.ts @@ -14,9 +14,10 @@ import { ViewEncapsulation, } from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; -import {FocusOrigin, FocusOriginMonitor, MdRipple, RippleRef} from '../core'; -import {mixinDisabled, CanDisable} from '../core/common-behaviors/disabled'; +import { + FocusOrigin, FocusOriginMonitor, MdRipple, RippleRef, coerceBooleanProperty, + _mixinDisabled, _CanDisable +} from '@angular/material/core'; /** Monotonically increasing integer used to auto-generate unique ids for checkbox components. */ @@ -58,7 +59,7 @@ export class MdCheckboxChange { // Boilerplate for applying mixins to MdCheckbox. export class MdCheckboxBase { } -export const _MdCheckboxMixinBase = mixinDisabled(MdCheckboxBase); +export const _MdCheckboxMixinBase = _mixinDisabled(MdCheckboxBase); /** @@ -87,7 +88,7 @@ export const _MdCheckboxMixinBase = mixinDisabled(MdCheckboxBase); changeDetection: ChangeDetectionStrategy.OnPush }) export class MdCheckbox extends _MdCheckboxMixinBase - implements ControlValueAccessor, AfterViewInit, OnDestroy, CanDisable { + implements ControlValueAccessor, AfterViewInit, OnDestroy, _CanDisable { /** * Attached to the aria-label attribute of the host element. In most cases, arial-labelledby will * take precedence so this may be omitted. diff --git a/src/lib/checkbox/index.ts b/src/lib/checkbox/index.ts index 1987bac28630..a8a5621f236e 100644 --- a/src/lib/checkbox/index.ts +++ b/src/lib/checkbox/index.ts @@ -1,6 +1,6 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {MdRippleModule, MdCommonModule, FocusOriginMonitor} from '../core'; +import {MdRippleModule, MdCommonModule, FocusOriginMonitor} from '@angular/material/core'; import {MdCheckbox} from './checkbox'; diff --git a/src/lib/chips/chip-list.ts b/src/lib/chips/chip-list.ts index 7c4a396cf84c..4ce1f2cdb116 100644 --- a/src/lib/chips/chip-list.ts +++ b/src/lib/chips/chip-list.ts @@ -10,9 +10,9 @@ import { } from '@angular/core'; import {MdChip} from './chip'; -import {FocusKeyManager} from '../core/a11y/focus-key-manager'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; -import {SPACE, LEFT_ARROW, RIGHT_ARROW} from '../core/keyboard/keycodes'; +import { + _FocusKeyManager, coerceBooleanProperty, SPACE, LEFT_ARROW, RIGHT_ARROW +} from '@angular/material/core'; /** * A material design chips component (named ChipList for it's similarity to the List component). @@ -54,7 +54,7 @@ export class MdChipList implements AfterContentInit { protected _selectable: boolean = true; /** The FocusKeyManager which handles focus. */ - _keyManager: FocusKeyManager; + _keyManager: _FocusKeyManager; /** The chip components contained within this chip list. */ chips: QueryList; @@ -62,7 +62,7 @@ export class MdChipList implements AfterContentInit { constructor(private _elementRef: ElementRef) { } ngAfterContentInit(): void { - this._keyManager = new FocusKeyManager(this.chips).withWrap(); + this._keyManager = new _FocusKeyManager(this.chips).withWrap(); // Go ahead and subscribe all of the initial chips this._subscribeChips(this.chips); diff --git a/src/lib/chips/chip.ts b/src/lib/chips/chip.ts index 5e06c3839994..187ff9d6600c 100644 --- a/src/lib/chips/chip.ts +++ b/src/lib/chips/chip.ts @@ -9,8 +9,7 @@ import { Renderer2, } from '@angular/core'; -import {Focusable} from '../core/a11y/focus-key-manager'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; +import {_Focusable, coerceBooleanProperty} from '@angular/material/core'; export interface MdChipEvent { chip: MdChip; @@ -35,7 +34,7 @@ export interface MdChipEvent { '(click)': '_handleClick($event)' } }) -export class MdChip implements Focusable, OnInit, OnDestroy { +export class MdChip implements _Focusable, OnInit, OnDestroy { /** Whether or not the chip is disabled. Disabled chips cannot be focused. */ protected _disabled: boolean = null; diff --git a/src/lib/core.ts b/src/lib/core.ts deleted file mode 100644 index 65c514e92521..000000000000 --- a/src/lib/core.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './core/index'; diff --git a/src/lib/core/a11y/activedescendant-key-manager.ts b/src/lib/core/a11y/activedescendant-key-manager.ts index 8a688a193999..162ebaa379b7 100644 --- a/src/lib/core/a11y/activedescendant-key-manager.ts +++ b/src/lib/core/a11y/activedescendant-key-manager.ts @@ -1,4 +1,3 @@ -import {QueryList} from '@angular/core'; import {ListKeyManager, CanDisable} from './list-key-manager'; /** diff --git a/src/lib/core/core.ts b/src/lib/core/core.ts index 206d3411aa59..0774baf65806 100644 --- a/src/lib/core/core.ts +++ b/src/lib/core/core.ts @@ -47,6 +47,7 @@ export { OverlayOrigin, OverlayModule, } from './overlay/overlay-directives'; +export * from './overlay/position/position-strategy'; export * from './overlay/position/global-position-strategy'; export * from './overlay/position/connected-position-strategy'; export * from './overlay/position/connected-position'; diff --git a/src/lib/core/core_private_exports.ts b/src/lib/core/core_private_exports.ts new file mode 100644 index 000000000000..7ac2bed2f421 --- /dev/null +++ b/src/lib/core/core_private_exports.ts @@ -0,0 +1,16 @@ +// tslint:disable max-line-length + +/** + * This file contains exports that are used by other packages of Material. Exports are re-exported + * with another name. In angular/angular those exports will be prefixed with Ɵ. + */ + +// TODO(paul): currently we use a normal underscore instead of Ɵ. (Due to TSLint) + +export {ActiveDescendantKeyManager as _ActiveDescendantKeyManager} from './a11y/activedescendant-key-manager'; +export {CanDisable as _CanDisable, mixinDisabled as _mixinDisabled} from './common-behaviors/index'; +export {Focusable as _Focusable, FocusKeyManager as _FocusKeyManager} from './a11y/focus-key-manager'; +export {extendObject as _extendObject} from './util/object-extend'; +export {VIEWPORT_RULER_PROVIDER as _VIEWPORT_RULER_PROVIDER, ViewportRuler as _ViewportRuler} from './overlay/position/viewport-ruler'; +export {LIVE_ANNOUNCER_PROVIDER as _LIVE_ANNOUNCER_PROVIDER} from './a11y/live-announcer'; +export {SCROLL_DISPATCHER_PROVIDER as _SCROLL_DISPATCHER_PROVIDER} from './overlay/scroll/scroll-dispatcher'; diff --git a/src/lib/core/index.ts b/src/lib/core/index.ts index 4b0e04137627..5cf751f02ddd 100644 --- a/src/lib/core/index.ts +++ b/src/lib/core/index.ts @@ -1 +1,2 @@ +export * from './core_private_exports'; export * from './core'; diff --git a/src/lib/dialog/dialog-container.ts b/src/lib/dialog/dialog-container.ts index 2d5f984229b2..fb25da3f9037 100644 --- a/src/lib/dialog/dialog-container.ts +++ b/src/lib/dialog/dialog-container.ts @@ -4,7 +4,6 @@ import { ViewChild, ViewEncapsulation, NgZone, - OnDestroy, ElementRef, EventEmitter, Inject, @@ -19,10 +18,11 @@ import { AnimationEvent, } from '@angular/animations'; import {DOCUMENT} from '@angular/platform-browser'; -import {BasePortalHost, ComponentPortal, PortalHostDirective, TemplatePortal} from '../core'; import {MdDialogConfig} from './dialog-config'; import {MdDialogContentAlreadyAttachedError} from './dialog-errors'; -import {FocusTrapFactory, FocusTrap} from '../core/a11y/focus-trap'; +import { + FocusTrapFactory, FocusTrap, BasePortalHost, ComponentPortal, PortalHostDirective, TemplatePortal +} from '@angular/material/core'; /** diff --git a/src/lib/dialog/dialog-errors.ts b/src/lib/dialog/dialog-errors.ts index 4dc7428af9d6..b2a3253ef16a 100644 --- a/src/lib/dialog/dialog-errors.ts +++ b/src/lib/dialog/dialog-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '../core'; +import {MdError} from '@angular/material/core'; /** * Exception thrown when a ComponentPortal is attached to a DomPortalHost without an origin. diff --git a/src/lib/dialog/dialog-ref.ts b/src/lib/dialog/dialog-ref.ts index c7fbcdbdb142..af72fc61d7d6 100644 --- a/src/lib/dialog/dialog-ref.ts +++ b/src/lib/dialog/dialog-ref.ts @@ -1,9 +1,10 @@ -import {OverlayRef, GlobalPositionStrategy} from '../core'; import {AnimationEvent} from '@angular/animations'; import {DialogPosition} from './dialog-config'; import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; import {MdDialogContainer} from './dialog-container'; +import {OverlayRef, GlobalPositionStrategy} from '@angular/material/core'; + import 'rxjs/add/operator/filter'; diff --git a/src/lib/dialog/dialog.ts b/src/lib/dialog/dialog.ts index 147352792449..c968c5e7c4cc 100644 --- a/src/lib/dialog/dialog.ts +++ b/src/lib/dialog/dialog.ts @@ -2,14 +2,16 @@ import {Injector, ComponentRef, Injectable, Optional, SkipSelf, TemplateRef} fro import {Location} from '@angular/common'; import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; -import {Overlay, OverlayRef, ComponentType, OverlayState, ComponentPortal} from '../core'; -import {extendObject} from '../core/util/object-extend'; -import {ESCAPE} from '../core/keyboard/keycodes'; import {DialogInjector} from './dialog-injector'; import {MdDialogConfig} from './dialog-config'; import {MdDialogRef} from './dialog-ref'; import {MdDialogContainer} from './dialog-container'; -import {TemplatePortal} from '../core/portal/portal'; + +import { + TemplatePortal, ESCAPE, Overlay, OverlayRef, ComponentType, OverlayState, ComponentPortal, + _extendObject +} from '@angular/material/core'; + import 'rxjs/add/operator/first'; @@ -226,5 +228,5 @@ export class MdDialog { * @returns The new configuration object. */ function _applyConfigDefaults(config: MdDialogConfig): MdDialogConfig { - return extendObject(new MdDialogConfig(), config); + return _extendObject(new MdDialogConfig(), config); } diff --git a/src/lib/dialog/index.ts b/src/lib/dialog/index.ts index bd9fa9e334db..bcfebc3d7223 100644 --- a/src/lib/dialog/index.ts +++ b/src/lib/dialog/index.ts @@ -5,7 +5,7 @@ import { PortalModule, A11yModule, MdCommonModule, -} from '../core'; +} from '@angular/material/core'; import {MdDialog} from './dialog'; import {MdDialogContainer} from './dialog-container'; import { diff --git a/src/lib/grid-list/grid-list-errors.ts b/src/lib/grid-list/grid-list-errors.ts index 9f8b955da30b..d07554636028 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 '../core'; +import {MdError} from '@angular/material/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 458974280888..cc149c3252e4 100644 --- a/src/lib/grid-list/grid-list.ts +++ b/src/lib/grid-list/grid-list.ts @@ -14,11 +14,8 @@ import {MdGridTile} from './grid-tile'; import {TileCoordinator} from './tile-coordinator'; import {TileStyler, FitTileStyler, RatioTileStyler, FixedTileStyler} from './tile-styler'; import {MdGridListColsError} from './grid-list-errors'; -import {Dir} from '../core'; -import { - coerceToString, - coerceToNumber, -} from './grid-list-measure'; +import {coerceToString, coerceToNumber} from './grid-list-measure'; +import {Dir} from '@angular/material/core'; // 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 b40b8f14bb3e..599bc632a907 100644 --- a/src/lib/grid-list/grid-tile.ts +++ b/src/lib/grid-list/grid-tile.ts @@ -8,7 +8,7 @@ import { QueryList, AfterContentInit, Directive } 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 88129a173572..10ba76ee35b6 100644 --- a/src/lib/grid-list/index.ts +++ b/src/lib/grid-list/index.ts @@ -1,5 +1,5 @@ import {NgModule} from '@angular/core'; -import {MdLineModule, MdCommonModule} from '../core'; +import {MdLineModule, MdCommonModule} from '@angular/material/core'; import { MdGridTile, MdGridTileText, MdGridTileFooterCssMatStyler, MdGridTileHeaderCssMatStyler, MdGridAvatarCssMatStyler diff --git a/src/lib/icon/icon-registry.ts b/src/lib/icon/icon-registry.ts index a10e93b04ec7..faba51b6b69f 100644 --- a/src/lib/icon/icon-registry.ts +++ b/src/lib/icon/icon-registry.ts @@ -1,7 +1,7 @@ import {Injectable, SecurityContext} from '@angular/core'; import {SafeResourceUrl, DomSanitizer} from '@angular/platform-browser'; import {Http} from '@angular/http'; -import {MdError} from '../core'; +import {MdError} from '@angular/material/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 7b4522632329..d1add749ff63 100644 --- a/src/lib/icon/icon.ts +++ b/src/lib/icon/icon.ts @@ -14,7 +14,7 @@ import { } from '@angular/core'; import {Http} from '@angular/http'; import {DomSanitizer} from '@angular/platform-browser'; -import {MdError} from '../core'; +import {MdError} from '@angular/material/core'; import {MdIconRegistry, MdIconNameNotFoundError} from './icon-registry'; /** Exception thrown when an invalid icon name is passed to an md-icon component. */ diff --git a/src/lib/icon/index.ts b/src/lib/icon/index.ts index 16217e94a3a7..89f08a8df416 100644 --- a/src/lib/icon/index.ts +++ b/src/lib/icon/index.ts @@ -1,6 +1,6 @@ import {NgModule} from '@angular/core'; import {HttpModule} from '@angular/http'; -import {MdCommonModule} from '../core'; +import {MdCommonModule} from '@angular/material/core'; import {MdIcon, ICON_REGISTRY_PROVIDER} from './icon'; diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 000000000000..6d3d5f15be74 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1,32 @@ +/** + * @module + * @description + * Entry point for all public APIs of Angular Material. + */ + +export * from './module'; + +export * from '@angular/material/core'; +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/chips'; +export * from '@angular/material/checkbox'; +export * from '@angular/material/dialog'; +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/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/slider'; +export * from '@angular/material/slide-toggle'; +export * from '@angular/material/snack-bar'; +export * from '@angular/material/tabs'; +export * from '@angular/material/toolbar'; +export * from '@angular/material/tooltip'; diff --git a/src/lib/input/index.ts b/src/lib/input/index.ts index f9e09470e688..8c2d4a6db49d 100644 --- a/src/lib/input/index.ts +++ b/src/lib/input/index.ts @@ -11,7 +11,7 @@ import { import {MdTextareaAutosize} from './autosize'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; -import {PlatformModule} from '../core/platform/index'; +import {PlatformModule} from '@angular/material/core'; @NgModule({ diff --git a/src/lib/input/input-container-errors.ts b/src/lib/input/input-container-errors.ts index 90a9337b2a65..dcdfa263bf5e 100644 --- a/src/lib/input/input-container-errors.ts +++ b/src/lib/input/input-container-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '../core/errors/error'; +import {MdError} from '@angular/material/core'; /** @docs-private */ export class MdInputContainerPlaceholderConflictError extends MdError { diff --git a/src/lib/input/input-container.ts b/src/lib/input/input-container.ts index 1bcc91da400b..52f553781a9e 100644 --- a/src/lib/input/input-container.ts +++ b/src/lib/input/input-container.ts @@ -17,9 +17,8 @@ import { ViewEncapsulation } from '@angular/core'; import {animate, state, style, transition, trigger} from '@angular/animations'; -import {coerceBooleanProperty} from '../core'; import {FormGroupDirective, NgControl, NgForm} from '@angular/forms'; -import {getSupportedInputTypes} from '../core/platform/features'; +import {coerceBooleanProperty, getSupportedInputTypes} from '@angular/material/core'; import { MdInputContainerDuplicatedHintError, MdInputContainerMissingMdInputError, diff --git a/src/lib/list/index.ts b/src/lib/list/index.ts index 4d547ae4323f..697f6ce23ced 100644 --- a/src/lib/list/index.ts +++ b/src/lib/list/index.ts @@ -1,5 +1,5 @@ import {NgModule} from '@angular/core'; -import {MdLineModule, MdRippleModule, MdCommonModule} from '../core'; +import {MdLineModule, MdRippleModule, MdCommonModule} from '@angular/material/core'; import { MdList, MdListItem, diff --git a/src/lib/list/list.ts b/src/lib/list/list.ts index f188934696d6..6922c31462e5 100644 --- a/src/lib/list/list.ts +++ b/src/lib/list/list.ts @@ -11,7 +11,7 @@ import { Renderer2, AfterContentInit, } from '@angular/core'; -import {MdLine, MdLineSetter, coerceBooleanProperty} from '../core'; +import {MdLine, MdLineSetter, coerceBooleanProperty} from '@angular/material/core'; @Directive({ selector: 'md-divider, mat-divider' diff --git a/src/lib/menu/index.ts b/src/lib/menu/index.ts index e4cd4ee8f876..d2fafd53893d 100644 --- a/src/lib/menu/index.ts +++ b/src/lib/menu/index.ts @@ -1,10 +1,9 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {OverlayModule, MdCommonModule} from '../core'; +import {OverlayModule, MdCommonModule, MdRippleModule} from '@angular/material/core'; import {MdMenu} from './menu-directive'; import {MdMenuItem} from './menu-item'; import {MdMenuTrigger} from './menu-trigger'; -import {MdRippleModule} from '../core/ripple/index'; @NgModule({ diff --git a/src/lib/menu/menu-directive.ts b/src/lib/menu/menu-directive.ts index 502f490c02fe..3cacedd9db9c 100644 --- a/src/lib/menu/menu-directive.ts +++ b/src/lib/menu/menu-directive.ts @@ -17,7 +17,7 @@ import { import {MenuPositionX, MenuPositionY} from './menu-positions'; import {MdMenuInvalidPositionX, MdMenuInvalidPositionY} from './menu-errors'; import {MdMenuItem} from './menu-item'; -import {FocusKeyManager} from '../core/a11y/focus-key-manager'; +import {_FocusKeyManager} from '@angular/material/core'; import {MdMenuPanel} from './menu-panel'; import {Subscription} from 'rxjs/Subscription'; import {transformMenu, fadeInItems} from './menu-animations'; @@ -36,7 +36,7 @@ import {transformMenu, fadeInItems} from './menu-animations'; exportAs: 'mdMenu' }) export class MdMenu implements AfterContentInit, MdMenuPanel, OnDestroy { - private _keyManager: FocusKeyManager; + private _keyManager: _FocusKeyManager; /** Subscription to tab events on the menu panel */ private _tabSubscription: Subscription; @@ -69,7 +69,7 @@ export class MdMenu implements AfterContentInit, MdMenuPanel, OnDestroy { } ngAfterContentInit() { - this._keyManager = new FocusKeyManager(this.items).withWrap(); + this._keyManager = new _FocusKeyManager(this.items).withWrap(); this._tabSubscription = this._keyManager.tabOut.subscribe(() => { this._emitCloseEvent(); }); diff --git a/src/lib/menu/menu-errors.ts b/src/lib/menu/menu-errors.ts index 069dfabd5333..1fd0389d70d7 100644 --- a/src/lib/menu/menu-errors.ts +++ b/src/lib/menu/menu-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '../core'; +import {MdError} from '@angular/material/core'; /** * Exception thrown when menu trigger doesn't have a valid md-menu instance diff --git a/src/lib/menu/menu-item.ts b/src/lib/menu/menu-item.ts index 1f453302bf81..b0c4e7ae9408 100644 --- a/src/lib/menu/menu-item.ts +++ b/src/lib/menu/menu-item.ts @@ -1,6 +1,5 @@ import {Component, ElementRef, Input} from '@angular/core'; -import {Focusable} from '../core/a11y/focus-key-manager'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; +import {_Focusable, coerceBooleanProperty} from '@angular/material/core'; /** * This directive is intended to be used inside an md-menu tag. @@ -20,7 +19,7 @@ import {coerceBooleanProperty} from '../core/coercion/boolean-property'; templateUrl: 'menu-item.html', exportAs: 'mdMenuItem' }) -export class MdMenuItem implements Focusable { +export class MdMenuItem implements _Focusable { /** Whether the menu item is disabled */ private _disabled: boolean = false; diff --git a/src/lib/menu/menu-trigger.ts b/src/lib/menu/menu-trigger.ts index de18f2936790..319b0b5ff946 100644 --- a/src/lib/menu/menu-trigger.ts +++ b/src/lib/menu/menu-trigger.ts @@ -22,7 +22,7 @@ import { ConnectedPositionStrategy, HorizontalConnectionPos, VerticalConnectionPos, -} from '../core'; +} from '@angular/material/core'; import {Subscription} from 'rxjs/Subscription'; import {MenuPositionX, MenuPositionY} from './menu-positions'; diff --git a/src/lib/module.ts b/src/lib/module.ts index 3e93c3e4db19..511f4e313783 100644 --- a/src/lib/module.ts +++ b/src/lib/module.ts @@ -8,33 +8,32 @@ import { OverlayModule, A11yModule, MdCommonModule, -} from './core/index'; +} from '@angular/material/core'; -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 {MdChipsModule} from './chips/index'; -import {MdIconModule} from './icon/index'; -import {MdProgressSpinnerModule} from './progress-spinner/index'; -import {MdProgressBarModule} from './progress-bar/index'; -import {MdInputModule} from './input/index'; -import {MdSnackBarModule} from './snack-bar/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'; -import {PlatformModule} from './core/platform/index'; -import {MdAutocompleteModule} from './autocomplete/index'; -import {StyleModule} from './core/style/index'; +import {PlatformModule, StyleModule} from '@angular/material/core'; +import {MdButtonToggleModule} from '@angular/material/button-toggle'; +import {MdButtonModule} from '@angular/material/button'; +import {MdCheckboxModule} from '@angular/material/checkbox'; +import {MdRadioModule} from '@angular/material/radio'; +import {MdSelectModule} from '@angular/material/select'; +import {MdSlideToggleModule} from '@angular/material/slide-toggle'; +import {MdSliderModule} from '@angular/material/slider'; +import {MdSidenavModule} from '@angular/material/sidenav'; +import {MdListModule} from '@angular/material/list'; +import {MdGridListModule} from '@angular/material/grid-list'; +import {MdCardModule} from '@angular/material/card'; +import {MdChipsModule} from '@angular/material/chips'; +import {MdIconModule} from '@angular/material/icon'; +import {MdProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MdProgressBarModule} from '@angular/material/progress-bar'; +import {MdInputModule} from '@angular/material/input'; +import {MdSnackBarModule} from '@angular/material/snack-bar'; +import {MdTabsModule} from '@angular/material/tabs'; +import {MdToolbarModule} from '@angular/material/toolbar'; +import {MdTooltipModule} from '@angular/material/tooltip'; +import {MdMenuModule} from '@angular/material/menu'; +import {MdDialogModule} from '@angular/material/dialog'; +import {MdAutocompleteModule} from '@angular/material/autocomplete'; const MATERIAL_MODULES = [ MdAutocompleteModule, diff --git a/src/lib/progress-bar/index.ts b/src/lib/progress-bar/index.ts index ccfe247228c4..9e96068db458 100644 --- a/src/lib/progress-bar/index.ts +++ b/src/lib/progress-bar/index.ts @@ -1,6 +1,6 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {MdCommonModule} from '../core'; +import {MdCommonModule} from '@angular/material/core'; import {MdProgressBar} from './progress-bar'; diff --git a/src/lib/progress-spinner/index.ts b/src/lib/progress-spinner/index.ts index a86596d01eed..9c3efcd51ede 100644 --- a/src/lib/progress-spinner/index.ts +++ b/src/lib/progress-spinner/index.ts @@ -1,5 +1,5 @@ import {NgModule} from '@angular/core'; -import {MdCommonModule} from '../core'; +import {MdCommonModule} from '@angular/material/core'; import { MdProgressSpinner, MdSpinner, diff --git a/src/lib/public_api.ts b/src/lib/public_api.ts deleted file mode 100644 index cb2f324e643f..000000000000 --- a/src/lib/public_api.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * @module - * @description - * Entry point for all public APIs of Angular Material. - */ - -export * from './core'; -export * from './module'; - -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 './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-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 './tabs/index'; -export * from './tabs/tab-nav-bar/index'; -export * from './toolbar/index'; -export * from './tooltip/index'; diff --git a/src/lib/radio/index.ts b/src/lib/radio/index.ts index 2be276835c90..0c38673cebf9 100644 --- a/src/lib/radio/index.ts +++ b/src/lib/radio/index.ts @@ -1,19 +1,19 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {VIEWPORT_RULER_PROVIDER} from '../core/overlay/position/viewport-ruler'; import { MdRippleModule, MdCommonModule, UNIQUE_SELECTION_DISPATCHER_PROVIDER, FocusOriginMonitor, -} from '../core'; + _VIEWPORT_RULER_PROVIDER +} 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], + providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER, _VIEWPORT_RULER_PROVIDER, FocusOriginMonitor], declarations: [MdRadioGroup, MdRadioButton], }) export class MdRadioModule {} diff --git a/src/lib/radio/radio.ts b/src/lib/radio/radio.ts index 803380aeed5e..23c9a5a6618f 100644 --- a/src/lib/radio/radio.ts +++ b/src/lib/radio/radio.ts @@ -24,10 +24,10 @@ import { MdRipple, FocusOriginMonitor, FocusOrigin, -} from '../core'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; -import {mixinDisabled, CanDisable} from '../core/common-behaviors/disabled'; - + coerceBooleanProperty, + _mixinDisabled, + _CanDisable +} from '@angular/material/core'; /** * Provider Expression that allows md-radio-group to register as a ControlValueAccessor. This @@ -53,7 +53,7 @@ export class MdRadioChange { // Boilerplate for applying mixins to MdRadioGroup. export class MdRadioGroupBase { } -export const _MdRadioGroupMixinBase = mixinDisabled(MdRadioGroupBase); +export const _MdRadioGroupMixinBase = _mixinDisabled(MdRadioGroupBase); /** * A group of radio buttons. May contain one or more `` elements. @@ -68,7 +68,7 @@ export const _MdRadioGroupMixinBase = mixinDisabled(MdRadioGroupBase); inputs: ['disabled'], }) export class MdRadioGroup extends _MdRadioGroupMixinBase - implements AfterContentInit, ControlValueAccessor, CanDisable { + implements AfterContentInit, ControlValueAccessor, _CanDisable { /** * Selected value for group. Should equal the value of the selected radio button if there *is* * a corresponding radio button with a matching value. If there is *not* such a corresponding diff --git a/src/lib/select/index.ts b/src/lib/select/index.ts index 49b7f44f3fd7..d87543c60fc9 100644 --- a/src/lib/select/index.ts +++ b/src/lib/select/index.ts @@ -1,8 +1,7 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {MdSelect} from './select'; -import {MdOptionModule} from '../core/option/option'; -import {MdCommonModule, OverlayModule} from '../core'; +import {MdCommonModule, OverlayModule, MdOptionModule} from '@angular/material/core'; @NgModule({ diff --git a/src/lib/select/select-errors.ts b/src/lib/select/select-errors.ts index fcfb2f7ed597..62c5741a13d7 100644 --- a/src/lib/select/select-errors.ts +++ b/src/lib/select/select-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '../core/errors/error'; +import {MdError} from '@angular/material/core'; /** * Exception thrown when attempting to change a select's `multiple` option after initialization. diff --git a/src/lib/select/select.ts b/src/lib/select/select.ts index 8738c844da2e..fe4b6eb065b5 100644 --- a/src/lib/select/select.ts +++ b/src/lib/select/select.ts @@ -17,20 +17,27 @@ import { Attribute, OnInit, } from '@angular/core'; -import {MdOption, MdOptionSelectionChange} from '../core/option/option'; -import {ENTER, SPACE, UP_ARROW, DOWN_ARROW} from '../core/keyboard/keycodes'; -import {FocusKeyManager} from '../core/a11y/focus-key-manager'; +import { + MdOption, + MdOptionSelectionChange, + ConnectedOverlayDirective, + ScrollDispatcher, + SelectionModel, + ENTER, + SPACE, + UP_ARROW, + DOWN_ARROW, + coerceBooleanProperty, + _FocusKeyManager, + _ViewportRuler, +} from '@angular/material/core'; import {Dir} from '../core/rtl/dir'; import {Observable} from 'rxjs/Observable'; import {Subscription} from 'rxjs/Subscription'; import {transformPlaceholder, transformPanel, fadeInContent} from './select-animations'; import {ControlValueAccessor, NgControl} from '@angular/forms'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; -import {ConnectedOverlayDirective} from '../core/overlay/overlay-directives'; -import {ViewportRuler} from '../core/overlay/position/viewport-ruler'; -import {SelectionModel} from '../core/selection/selection'; -import {ScrollDispatcher} from '../core/overlay/scroll/scroll-dispatcher'; import {MdSelectDynamicMultipleError, MdSelectNonArrayValueError} from './select-errors'; + import 'rxjs/add/observable/merge'; import 'rxjs/add/operator/startWith'; @@ -177,7 +184,7 @@ export class MdSelect implements AfterContentInit, OnDestroy, OnInit, ControlVal _selectedValueWidth: number; /** Manages keyboard events for options in the panel. */ - _keyManager: FocusKeyManager; + _keyManager: _FocusKeyManager; /** View -> model callback called when value changes */ _onChange = (value: any) => {}; @@ -313,7 +320,7 @@ export class MdSelect implements AfterContentInit, OnDestroy, OnInit, ControlVal @Output() change: EventEmitter = new EventEmitter(); constructor(private _element: ElementRef, private _renderer: Renderer2, - private _viewportRuler: ViewportRuler, private _changeDetectorRef: ChangeDetectorRef, + private _viewportRuler: _ViewportRuler, private _changeDetectorRef: ChangeDetectorRef, private _scrollDispatcher: ScrollDispatcher, @Optional() private _dir: Dir, @Self() @Optional() public _control: NgControl, @Attribute('tabindex') tabIndex: string) { @@ -608,7 +615,7 @@ export class MdSelect implements AfterContentInit, OnDestroy, OnInit, ControlVal /** Sets up a key manager to listen to keyboard events on the overlay panel. */ private _initKeyManager() { - this._keyManager = new FocusKeyManager(this.options); + this._keyManager = new _FocusKeyManager(this.options); this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.close()); } diff --git a/src/lib/sidenav/index.ts b/src/lib/sidenav/index.ts index 9fb2b83154ce..708984646a35 100644 --- a/src/lib/sidenav/index.ts +++ b/src/lib/sidenav/index.ts @@ -1,8 +1,6 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {MdCommonModule} from '../core'; -import {A11yModule} from '../core/a11y/index'; -import {OverlayModule} from '../core/overlay/overlay-directives'; +import {MdCommonModule, A11yModule, OverlayModule} from '@angular/material/core'; import {MdSidenav, MdSidenavContainer} from './sidenav'; diff --git a/src/lib/sidenav/sidenav.ts b/src/lib/sidenav/sidenav.ts index fa1acb75f05d..8725781c9c72 100644 --- a/src/lib/sidenav/sidenav.ts +++ b/src/lib/sidenav/sidenav.ts @@ -14,9 +14,10 @@ import { NgZone, OnDestroy, } from '@angular/core'; -import {Dir, MdError, coerceBooleanProperty} from '../core'; -import {FocusTrapFactory, FocusTrap} from '../core/a11y/focus-trap'; -import {ESCAPE} from '../core/keyboard/keycodes'; +import { + FocusTrapFactory, FocusTrap, ESCAPE, Dir, MdError, coerceBooleanProperty +} from '@angular/material/core'; + import 'rxjs/add/operator/first'; diff --git a/src/lib/slide-toggle/index.ts b/src/lib/slide-toggle/index.ts index 0cede00126cb..c127cb307380 100644 --- a/src/lib/slide-toggle/index.ts +++ b/src/lib/slide-toggle/index.ts @@ -4,7 +4,7 @@ import {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; import {MdSlideToggle} from './slide-toggle'; import { GestureConfig, MdCommonModule, MdRippleModule, FOCUS_ORIGIN_MONITOR_PROVIDER -} from '../core'; +} from '@angular/material/core'; @NgModule({ imports: [FormsModule, MdRippleModule, MdCommonModule], diff --git a/src/lib/slide-toggle/slide-toggle.ts b/src/lib/slide-toggle/slide-toggle.ts index 0de98cbb0bcc..e9bbaa69def2 100644 --- a/src/lib/slide-toggle/slide-toggle.ts +++ b/src/lib/slide-toggle/slide-toggle.ts @@ -19,10 +19,11 @@ import { FocusOriginMonitor, HammerInput, MdRipple, - RippleRef -} from '../core'; + RippleRef, + _mixinDisabled, + _CanDisable +} from '@angular/material/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; -import {mixinDisabled, CanDisable} from '../core/common-behaviors/disabled'; export const MD_SLIDE_TOGGLE_VALUE_ACCESSOR: any = { @@ -44,7 +45,7 @@ let nextId = 0; // Boilerplate for applying mixins to MdSlideToggle. export class MdSlideToggleBase { } -export const _MdSlideToggleMixinBase = mixinDisabled(MdSlideToggleBase); +export const _MdSlideToggleMixinBase = _mixinDisabled(MdSlideToggleBase); /** Represents a slidable "switch" toggle that can be moved between on and off. */ @Component({ @@ -64,7 +65,7 @@ export const _MdSlideToggleMixinBase = mixinDisabled(MdSlideToggleBase); changeDetection: ChangeDetectionStrategy.OnPush }) export class MdSlideToggle extends _MdSlideToggleMixinBase - implements OnDestroy, AfterContentInit, ControlValueAccessor, CanDisable { + implements OnDestroy, AfterContentInit, ControlValueAccessor, _CanDisable { private onChange = (_: any) => {}; private onTouched = () => {}; diff --git a/src/lib/slider/index.ts b/src/lib/slider/index.ts index a01a1936b0f8..69fc113a046e 100644 --- a/src/lib/slider/index.ts +++ b/src/lib/slider/index.ts @@ -2,9 +2,8 @@ import {NgModule} from '@angular/core'; import {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; -import {MdCommonModule, GestureConfig, StyleModule} from '../core'; +import {MdCommonModule, GestureConfig, StyleModule, RtlModule} from '@angular/material/core'; import {MdSlider} from './slider'; -import {RtlModule} from '../core/rtl/dir'; @NgModule({ diff --git a/src/lib/slider/slider.ts b/src/lib/slider/slider.ts index bb54d732cfc0..0480eba22bbf 100644 --- a/src/lib/slider/slider.ts +++ b/src/lib/slider/slider.ts @@ -11,8 +11,6 @@ import { ViewEncapsulation } from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; -import {coerceBooleanProperty, coerceNumberProperty, HammerInput} from '../core'; -import {Dir} from '../core/rtl/dir'; import { DOWN_ARROW, END, @@ -21,10 +19,16 @@ import { PAGE_DOWN, PAGE_UP, RIGHT_ARROW, - UP_ARROW -} from '../core/keyboard/keycodes'; -import {FocusOrigin, FocusOriginMonitor} from '../core/style/focus-origin-monitor'; -import {mixinDisabled, CanDisable} from '../core/common-behaviors/disabled'; + UP_ARROW, + Dir, + coerceBooleanProperty, + coerceNumberProperty, + HammerInput, + FocusOrigin, + FocusOriginMonitor, + _mixinDisabled, + _CanDisable +} from '@angular/material/core'; /** @@ -64,7 +68,7 @@ export class MdSliderChange { // Boilerplate for applying mixins to MdSlider. export class MdSliderBase { } -export const _MdSliderMixinBase = mixinDisabled(MdSliderBase); +export const _MdSliderMixinBase = _mixinDisabled(MdSliderBase); /** * Allows users to select from a range of values by moving the slider thumb. It is similar in @@ -110,7 +114,7 @@ export const _MdSliderMixinBase = mixinDisabled(MdSliderBase); encapsulation: ViewEncapsulation.None, }) export class MdSlider extends _MdSliderMixinBase - implements ControlValueAccessor, OnDestroy, CanDisable { + implements ControlValueAccessor, OnDestroy, _CanDisable { /** Whether the slider is inverted. */ @Input() get invert() { return this._invert; } diff --git a/src/lib/slider/test-gesture-config.ts b/src/lib/slider/test-gesture-config.ts index 4efd37318381..58c15cc87f25 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 {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/snack-bar/index.ts b/src/lib/snack-bar/index.ts index 1ad1ce36d376..2df3b6784b10 100644 --- a/src/lib/snack-bar/index.ts +++ b/src/lib/snack-bar/index.ts @@ -1,9 +1,11 @@ import {NgModule} from '@angular/core'; -import {OverlayModule, PortalModule, MdCommonModule, LIVE_ANNOUNCER_PROVIDER} from '../core'; import {CommonModule} from '@angular/common'; import {MdSnackBar} from './snack-bar'; import {MdSnackBarContainer} from './snack-bar-container'; import {SimpleSnackBar} from './simple-snack-bar'; +import { + OverlayModule, PortalModule, MdCommonModule, _LIVE_ANNOUNCER_PROVIDER +} from '@angular/material/core'; @NgModule({ @@ -16,7 +18,7 @@ import {SimpleSnackBar} from './simple-snack-bar'; exports: [MdSnackBarContainer, MdCommonModule], declarations: [MdSnackBarContainer, SimpleSnackBar], entryComponents: [MdSnackBarContainer, SimpleSnackBar], - providers: [MdSnackBar, LIVE_ANNOUNCER_PROVIDER] + providers: [MdSnackBar, _LIVE_ANNOUNCER_PROVIDER] }) export class MdSnackBarModule {} diff --git a/src/lib/snack-bar/snack-bar-config.ts b/src/lib/snack-bar/snack-bar-config.ts index ed59f8a88bb2..c4d9bd73d5d2 100644 --- a/src/lib/snack-bar/snack-bar-config.ts +++ b/src/lib/snack-bar/snack-bar-config.ts @@ -1,5 +1,5 @@ import {ViewContainerRef} from '@angular/core'; -import {AriaLivePoliteness} from '../core'; +import {AriaLivePoliteness} from '@angular/material/core'; /** * Configuration used when opening a snack-bar. diff --git a/src/lib/snack-bar/snack-bar-container.ts b/src/lib/snack-bar/snack-bar-container.ts index 5378d327da19..6c079bcf65c3 100644 --- a/src/lib/snack-bar/snack-bar-container.ts +++ b/src/lib/snack-bar/snack-bar-container.ts @@ -20,7 +20,7 @@ import { ComponentPortal, TemplatePortal, PortalHostDirective, -} from '../core'; +} from '@angular/material/core'; import {MdSnackBarConfig} from './snack-bar-config'; import {MdSnackBarContentAlreadyAttached} from './snack-bar-errors'; import {Observable} from 'rxjs/Observable'; diff --git a/src/lib/snack-bar/snack-bar-errors.ts b/src/lib/snack-bar/snack-bar-errors.ts index 44b2ed84a178..5cbfc9ddc9f6 100644 --- a/src/lib/snack-bar/snack-bar-errors.ts +++ b/src/lib/snack-bar/snack-bar-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '../core'; +import {MdError} from '@angular/material/core'; /** * Error that is thrown when attempting to attach a snack bar that is already attached. diff --git a/src/lib/snack-bar/snack-bar-ref.ts b/src/lib/snack-bar/snack-bar-ref.ts index c4e45c59a67f..c80f8097eba5 100644 --- a/src/lib/snack-bar/snack-bar-ref.ts +++ b/src/lib/snack-bar/snack-bar-ref.ts @@ -1,4 +1,4 @@ -import {OverlayRef} from '../core'; +import {OverlayRef} from '@angular/material/core'; import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; import {MdSnackBarContainer} from './snack-bar-container'; diff --git a/src/lib/snack-bar/snack-bar.ts b/src/lib/snack-bar/snack-bar.ts index 4572069083d2..869f79369ae8 100644 --- a/src/lib/snack-bar/snack-bar.ts +++ b/src/lib/snack-bar/snack-bar.ts @@ -6,12 +6,12 @@ import { OverlayRef, OverlayState, LiveAnnouncer, -} from '../core'; + _extendObject +} from '@angular/material/core'; import {MdSnackBarConfig} from './snack-bar-config'; import {MdSnackBarRef} from './snack-bar-ref'; import {MdSnackBarContainer} from './snack-bar-container'; import {SimpleSnackBar} from './simple-snack-bar'; -import {extendObject} from '../core/util/object-extend'; /** @@ -155,5 +155,5 @@ export class MdSnackBar { * @returns The new configuration object with defaults applied. */ function _applyConfigDefaults(config: MdSnackBarConfig): MdSnackBarConfig { - return extendObject(new MdSnackBarConfig(), config); + return _extendObject(new MdSnackBarConfig(), config); } diff --git a/src/lib/tabs/index.ts b/src/lib/tabs/index.ts index e523c6826f70..af148c009de2 100644 --- a/src/lib/tabs/index.ts +++ b/src/lib/tabs/index.ts @@ -1,8 +1,5 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {PortalModule} from '../core'; -import {MdRippleModule} from '../core/ripple/index'; -import {ObserveContentModule} from '../core/observe-content/observe-content'; import {MdTab} from './tab'; import {MdTabGroup} from './tab-group'; import {MdTabLabel} from './tab-label'; @@ -10,9 +7,14 @@ import {MdTabLabelWrapper} from './tab-label-wrapper'; import {MdTabNavBar, MdTabLink, MdTabLinkRipple} from './tab-nav-bar/tab-nav-bar'; import {MdInkBar} from './ink-bar'; import {MdTabBody} from './tab-body'; -import {VIEWPORT_RULER_PROVIDER} from '../core/overlay/position/viewport-ruler'; import {MdTabHeader} from './tab-header'; -import {SCROLL_DISPATCHER_PROVIDER} from '../core/overlay/scroll/scroll-dispatcher'; +import { + PortalModule, + MdRippleModule, + ObserveContentModule, + _VIEWPORT_RULER_PROVIDER, + _SCROLL_DISPATCHER_PROVIDER +} from '@angular/material/core'; @NgModule({ @@ -43,12 +45,13 @@ import {SCROLL_DISPATCHER_PROVIDER} from '../core/overlay/scroll/scroll-dispatch MdTabLinkRipple, MdTabHeader ], - providers: [VIEWPORT_RULER_PROVIDER, SCROLL_DISPATCHER_PROVIDER], + providers: [_VIEWPORT_RULER_PROVIDER, _SCROLL_DISPATCHER_PROVIDER], }) export class MdTabsModule {} export * from './tab-group'; +export {MdTabLink, MdTabNavBar} from './tab-nav-bar'; export {MdInkBar} from './ink-bar'; export {MdTabBody, MdTabBodyOriginState, MdTabBodyPositionState} from './tab-body'; export {MdTabHeader, ScrollDirection} from './tab-header'; diff --git a/src/lib/tabs/tab-body.ts b/src/lib/tabs/tab-body.ts index 4a34f03ce789..2ab851d8894e 100644 --- a/src/lib/tabs/tab-body.ts +++ b/src/lib/tabs/tab-body.ts @@ -17,7 +17,7 @@ import { transition, AnimationEvent, } from '@angular/animations'; -import {TemplatePortal, PortalHostDirective, Dir, LayoutDirection} from '../core'; +import {TemplatePortal, PortalHostDirective, Dir, LayoutDirection} from '@angular/material/core'; import 'rxjs/add/operator/map'; /** diff --git a/src/lib/tabs/tab-group.ts b/src/lib/tabs/tab-group.ts index 7c1403cdfd9a..6cc26e5d42c9 100644 --- a/src/lib/tabs/tab-group.ts +++ b/src/lib/tabs/tab-group.ts @@ -9,7 +9,7 @@ import { ElementRef, Renderer2, } from '@angular/core'; -import {coerceBooleanProperty} from '../core'; +import {coerceBooleanProperty} from '@angular/material/core'; import {Observable} from 'rxjs/Observable'; import {MdTab} from './tab'; import 'rxjs/add/operator/map'; diff --git a/src/lib/tabs/tab-header.ts b/src/lib/tabs/tab-header.ts index bbaea86d2beb..875cfdbaff86 100644 --- a/src/lib/tabs/tab-header.ts +++ b/src/lib/tabs/tab-header.ts @@ -14,12 +14,13 @@ import { OnDestroy, NgZone, } from '@angular/core'; -import {RIGHT_ARROW, LEFT_ARROW, ENTER, Dir, LayoutDirection} from '../core'; +import { + RIGHT_ARROW, LEFT_ARROW, ENTER, Dir, LayoutDirection, applyCssTransform +} from '@angular/material/core'; import {MdTabLabelWrapper} from './tab-label-wrapper'; import {MdInkBar} from './ink-bar'; import {Subscription} from 'rxjs/Subscription'; import {Observable} from 'rxjs/Observable'; -import {applyCssTransform} from '../core/style/apply-transform'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/auditTime'; import 'rxjs/add/observable/of'; diff --git a/src/lib/tabs/tab-label-wrapper.ts b/src/lib/tabs/tab-label-wrapper.ts index f7c2988c7aa8..3edb645950b1 100644 --- a/src/lib/tabs/tab-label-wrapper.ts +++ b/src/lib/tabs/tab-label-wrapper.ts @@ -1,5 +1,5 @@ import {Directive, ElementRef, Input} from '@angular/core'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; +import {coerceBooleanProperty} from '@angular/material/core'; /** diff --git a/src/lib/tabs/tab-label.ts b/src/lib/tabs/tab-label.ts index 5b2efe2da2a0..e9ed471440d6 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 '../core'; +import {TemplatePortalDirective} from '@angular/material/core'; /** Used to flag tab labels for use with the portal directive */ @Directive({ 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 76c363d108b9..70c737c25d2d 100644 --- a/src/lib/tabs/tab-nav-bar/tab-nav-bar.ts +++ b/src/lib/tabs/tab-nav-bar/tab-nav-bar.ts @@ -11,10 +11,14 @@ import { OnDestroy, AfterContentInit, } from '@angular/core'; +import { + MdRipple, + MD_RIPPLE_GLOBAL_OPTIONS, + RippleGlobalOptions, + Dir, + _ViewportRuler +} from '@angular/material/core'; import {MdInkBar} from '../ink-bar'; -import {MdRipple} from '../../core/ripple/index'; -import {ViewportRuler} from '../../core/overlay/position/viewport-ruler'; -import {MD_RIPPLE_GLOBAL_OPTIONS, RippleGlobalOptions, Dir} from '../../core'; import {Observable} from 'rxjs/Observable'; import {Subscription} from 'rxjs/Subscription'; import 'rxjs/add/operator/auditTime'; @@ -122,7 +126,7 @@ export class MdTabLink { }, }) export class MdTabLinkRipple extends MdRipple { - constructor(elementRef: ElementRef, ngZone: NgZone, ruler: ViewportRuler, + constructor(elementRef: ElementRef, ngZone: NgZone, ruler: _ViewportRuler, @Optional() @Inject(MD_RIPPLE_GLOBAL_OPTIONS) globalOptions: RippleGlobalOptions) { super(elementRef, ngZone, ruler, globalOptions); } diff --git a/src/lib/tabs/tab.ts b/src/lib/tabs/tab.ts index 530075c7d8af..5ef69ca5ff03 100644 --- a/src/lib/tabs/tab.ts +++ b/src/lib/tabs/tab.ts @@ -1,9 +1,8 @@ -import {TemplatePortal} from '../core/portal/portal'; +import {TemplatePortal, coerceBooleanProperty} from '@angular/material/core'; import { ViewContainerRef, Input, TemplateRef, ViewChild, OnInit, ContentChild, Component } from '@angular/core'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; import {MdTabLabel} from './tab-label'; diff --git a/src/lib/toolbar/index.ts b/src/lib/toolbar/index.ts index 6bf3f7e86d1b..3c9b6d49f9f1 100644 --- a/src/lib/toolbar/index.ts +++ b/src/lib/toolbar/index.ts @@ -1,5 +1,5 @@ import {NgModule} from '@angular/core'; -import {MdCommonModule} from '../core'; +import {MdCommonModule} from '@angular/material/core'; import {MdToolbar, MdToolbarRow} from './toolbar'; diff --git a/src/lib/tooltip/index.ts b/src/lib/tooltip/index.ts index 968a4334c6fa..e2b6372724ae 100644 --- a/src/lib/tooltip/index.ts +++ b/src/lib/tooltip/index.ts @@ -1,6 +1,5 @@ import {NgModule} from '@angular/core'; -import {OverlayModule, MdCommonModule} from '../core'; -import {PlatformModule} from '../core/platform/index'; +import {OverlayModule, MdCommonModule, PlatformModule} from '@angular/material/core'; import {MdTooltip, TooltipComponent} from './tooltip'; diff --git a/src/lib/tooltip/tooltip-errors.ts b/src/lib/tooltip/tooltip-errors.ts index 58f9ca0c925d..16c949f5ad11 100644 --- a/src/lib/tooltip/tooltip-errors.ts +++ b/src/lib/tooltip/tooltip-errors.ts @@ -1,4 +1,4 @@ -import {MdError} from '../core'; +import {MdError} from '@angular/material/core'; /** * Exception thrown when a tooltip has an invalid position. diff --git a/src/lib/tooltip/tooltip.ts b/src/lib/tooltip/tooltip.ts index 594e05cf5d8f..ed191d007ebc 100644 --- a/src/lib/tooltip/tooltip.ts +++ b/src/lib/tooltip/tooltip.ts @@ -26,16 +26,17 @@ import { ComponentPortal, OverlayConnectionPosition, OriginConnectionPosition, -} from '../core'; + Platform, + ScrollDispatcher, + coerceBooleanProperty, + Dir +} from '@angular/material/core'; import {MdTooltipInvalidPositionError} from './tooltip-errors'; import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; -import {Dir} from '../core/rtl/dir'; -import {Platform} from '../core/platform/index'; -import 'rxjs/add/operator/first'; -import {ScrollDispatcher} from '../core/overlay/scroll/scroll-dispatcher'; import {Subscription} from 'rxjs/Subscription'; -import {coerceBooleanProperty} from '../core/coercion/boolean-property'; + +import 'rxjs/add/operator/first'; export type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after'; diff --git a/src/lib/tsconfig-build.json b/src/lib/tsconfig-build.json index a8ec71d3c30b..0fe2ca94e618 100644 --- a/src/lib/tsconfig-build.json +++ b/src/lib/tsconfig-build.json @@ -17,18 +17,16 @@ "types": [], "baseUrl": ".", "paths": { - "@angular/cdk": ["../../dist/packages/cdk/public_api"] + "@angular/cdk": ["../../dist/packages/cdk"], + "@angular/material/*": ["./*/index"] } }, - "files": [ - "public_api.ts", - "typings.d.ts" + "exclude": [ + "**/*.spec.ts" ], "angularCompilerOptions": { "annotateForClosureCompiler": true, "strictMetadataEmit": true, - "flatModuleOutFile": "index.js", - "flatModuleId": "@angular/material", "skipTemplateCodegen": true } } diff --git a/src/tsconfig.json b/src/tsconfig.json index f72a4a0509e2..d69f497dbd61 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -13,8 +13,10 @@ "types": ["jasmine"], "baseUrl": ".", "paths": { - "@angular/material": ["./lib/public_api.ts"], - "@angular/cdk": ["./cdk/public_api.ts"] + "@angular/material/*": ["./lib/*/index"], + "@angular/material": ["./lib/public_api"], + "@angular/cdk/*": ["./cdk/*/index"], + "@angular/cdk": ["./cdk/public_api"] } } } diff --git a/tools/gulp/util/package-build.ts b/tools/gulp/util/package-build.ts index c4b0b97c1534..ec10b96838ef 100644 --- a/tools/gulp/util/package-build.ts +++ b/tools/gulp/util/package-build.ts @@ -23,34 +23,61 @@ const sorcery = require('sorcery'); */ export function composeRelease(packageName: string) { // To avoid refactoring of the project the package material will map to the source path `lib/`. - let sourcePath = join(SOURCE_ROOT, packageName === 'material' ? 'lib' : packageName); - let packagePath = join(DIST_ROOT, 'packages', packageName); - let releasePath = join(DIST_ROOT, 'releases', packageName); + const sourcePath = join(SOURCE_ROOT, packageName === 'material' ? 'lib' : packageName); + const packagePath = join(DIST_ROOT, 'packages', packageName); + const releasePath = join(DIST_ROOT, 'releases', packageName); + + const umdOutput = join(releasePath, 'bundles'); + const fesmOutput = join(releasePath, '@angular'); inlinePackageMetadataFiles(packagePath); + // Copy primary entry point bundles + copyFiles(DIST_BUNDLES, `${packageName}.umd?(.min).js?(.map)`, umdOutput); + copyFiles(DIST_BUNDLES, `${packageName}?(.es5).js?(.map)`, fesmOutput); + + // Copy secondary entry point bundles. + copyFiles(DIST_BUNDLES, `${packageName}/!(*.umd)?(.min).js?(.map)`, fesmOutput); + copyFiles(join(DIST_BUNDLES, packageName), `*.umd?(.min).js?(.map)`, umdOutput); + copyFiles(packagePath, '**/*.+(d.ts|metadata.json)', join(releasePath, 'typings')); - copyFiles(DIST_BUNDLES, `${packageName}.umd?(.min).js?(.map)`, join(releasePath, 'bundles')); - copyFiles(DIST_BUNDLES, `${packageName}?(.es5).js?(.map)`, join(releasePath, '@angular')); copyFiles(PROJECT_ROOT, 'LICENSE', releasePath); copyFiles(SOURCE_ROOT, 'README.md', releasePath); copyFiles(sourcePath, 'package.json', releasePath); + // Build secondary entry points for the package. + glob('*/', {cwd: packagePath}) + .map(entryPath => basename(entryPath)) + .forEach(entryName => createSecondaryEntryPoint(packageName, entryName)); + updatePackageVersion(releasePath); createTypingFile(releasePath, packageName); createMetadataFile(releasePath, packageName); - addPureAnnotationCommentsToEs5Bundle(releasePath, packageName); +} + +export async function buildPackage(entryFile: string, packagePath: string, packageName: string) { + let packageTasks = [buildPackageBundles(entryFile, packageName)]; + + glob(join(packagePath, '*/')).forEach(subPackagePath => { + const subPackageName = basename(subPackagePath); + const subPackageEntry = join(subPackagePath, 'index.js'); + + packageTasks.push(buildPackageBundles(subPackageEntry, subPackageName, packageName)); + }); + + + await Promise.all(packageTasks); } /** Builds the bundles for the specified package. */ -export async function buildPackageBundles(entryFile: string, packageName: string) { - let moduleName = `ng.material.${packageName}`; +async function buildPackageBundles(entryFile: string, packageName: string, parentPackage = '') { + let moduleName = parentPackage ? `ng.${parentPackage}.${packageName}` : `ng.${packageName}`; // List of paths to the package bundles. - let fesm2015File = join(DIST_BUNDLES, `${packageName}.js`); - let fesm2014File = join(DIST_BUNDLES, `${packageName}.es5.js`); - let umdFile = join(DIST_BUNDLES, `${packageName}.umd.js`); - let umdMinFile = join(DIST_BUNDLES, `${packageName}.umd.min.js`); + let fesm2015File = join(DIST_BUNDLES, parentPackage, `${packageName}.js`); + let fesm2014File = join(DIST_BUNDLES, parentPackage, `${packageName}.es5.js`); + let umdFile = join(DIST_BUNDLES, parentPackage, `${packageName}.umd.js`); + let umdMinFile = join(DIST_BUNDLES, parentPackage, `${packageName}.umd.min.js`); // Build FESM-2015 bundle file. await createRollupBundle({ @@ -69,6 +96,9 @@ export async function buildPackageBundles(entryFile: string, packageName: string allowJs: true }); + // Add pure annotation to ES5 bundles. + addPureAnnotationCommentsToEs5Bundle(fesm2014File); + await remapSourcemap(fesm2014File); // Create UMD bundle of FESM-2014 output. @@ -161,10 +191,28 @@ function inlinePackageMetadataFiles(packagePath: string) { } /** Adds Uglify "@__PURE__" decorations to the generated ES5 bundle. */ -function addPureAnnotationCommentsToEs5Bundle(outputDir: string, entryName: string) { - const es5BundlePath = join(outputDir, '@angular', `${entryName}.es5.js`); - const originalContent = readFileSync(es5BundlePath, 'utf-8'); +function addPureAnnotationCommentsToEs5Bundle(inputFile: string) { + const originalContent = readFileSync(inputFile, 'utf-8'); const annotatedContent = addPureAnnotations(originalContent); - writeFileSync(es5BundlePath, annotatedContent, 'utf-8'); + writeFileSync(inputFile, annotatedContent, 'utf-8'); +} + +/** Creates a secondary entry point for a given package. */ +function createSecondaryEntryPoint(mainPackageName: string, secondaryPackageName: string) { + const releasePath = join(DIST_ROOT, 'releases', mainPackageName); + const entryPath = join(releasePath, secondaryPackageName); + + const packageJson = { + name: `@angular/${mainPackageName}/${secondaryPackageName}`, + typings: `../typings/${secondaryPackageName}/index.d.ts`, + main: `../bundles/${secondaryPackageName}.umd.js`, + module: `../@angular/${mainPackageName}/${secondaryPackageName}.es5.js`, + es2015: `../@angular/${mainPackageName}/${secondaryPackageName}.js` + }; + + // Create the secondary entry point folder. + mkdirpSync(entryPath); + + writeFileSync(join(entryPath, 'package.json'), JSON.stringify(packageJson, null, 2)); } diff --git a/tools/gulp/util/package-tasks.ts b/tools/gulp/util/package-tasks.ts index 224b7d522915..f80d669abfcf 100644 --- a/tools/gulp/util/package-tasks.ts +++ b/tools/gulp/util/package-tasks.ts @@ -3,7 +3,7 @@ import {join} from 'path'; import {main as tsc} from '@angular/tsc-wrapped'; import {SOURCE_ROOT, DIST_ROOT} from '../constants'; import {sequenceTask, sassBuildTask, copyTask, triggerLivereload} from './task_helpers'; -import {buildPackageBundles, composeRelease} from './package-build'; +import {composeRelease, buildPackage} from './package-build'; // There are no type definitions available for these imports. const inlineResources = require('../../../scripts/release/inline-resources'); @@ -55,7 +55,7 @@ export function createPackageBuildTasks(packageName: string, requiredPackages: s task(`${packageName}:build:esm`, () => tsc(tsconfigBuild, {basePath: packageRoot})); task(`${packageName}:build:esm:tests`, () => tsc(tsconfigTests, {basePath: packageRoot})); - task(`${packageName}:build:bundles`, () => buildPackageBundles(esmMainFile, packageName)); + task(`${packageName}:build:bundles`, () => buildPackage(esmMainFile, packageOut, packageName)); /** * Asset tasks. Building SASS files and inlining CSS, HTML files into the ESM output. diff --git a/tools/gulp/util/rollup-helper.ts b/tools/gulp/util/rollup-helper.ts index 32f85561bb43..bf2170edbaa3 100644 --- a/tools/gulp/util/rollup-helper.ts +++ b/tools/gulp/util/rollup-helper.ts @@ -1,9 +1,19 @@ -import {LICENSE_BANNER} from '../constants'; +import {LICENSE_BANNER, COMPONENTS_DIR} from '../constants'; +import {sync as glob} from 'glob'; +import {basename, dirname} from 'path'; // There are no type definitions available for these imports. const rollup = require('rollup'); -const ROLLUP_GLOBALS = { +/** Resolves all sub packages for the material package. */ +const materialSubPackages = glob('*/', {cwd: COMPONENTS_DIR}) + .map(packagePath => basename(packagePath)) + .reduce((map: any, packageName: string) => { + map[`@angular/material/${packageName}`] = `ng.material.${packageName}`; + return map; + }, {}); + +export const ROLLUP_GLOBALS = { // Angular dependencies '@angular/animations': 'ng.animations', '@angular/core': 'ng.core', @@ -18,6 +28,9 @@ const ROLLUP_GLOBALS = { '@angular/material': 'ng.material', '@angular/cdk': 'ng.cdk', + // Include all Material sub packages. + ...materialSubPackages, + // Rxjs dependencies 'rxjs/Subject': 'Rx', 'rxjs/add/observable/fromEvent': 'Rx.Observable', @@ -39,6 +52,9 @@ const ROLLUP_GLOBALS = { 'rxjs/Observable': 'Rx' }; +/** Modules that will be treated as external dependencies. Those won't be included in the bundle. */ +export const ROLLUP_EXTERNALS = Object.keys(ROLLUP_GLOBALS); + export type BundleConfig = { entry: string; dest: string; @@ -50,8 +66,9 @@ export type BundleConfig = { export function createRollupBundle(config: BundleConfig): Promise { let bundleOptions = { context: 'this', - external: Object.keys(ROLLUP_GLOBALS), - entry: config.entry + entry: config.entry, + external: isExternalImport, + paths: rewriteConvertedImports }; let writeOptions = { @@ -67,3 +84,27 @@ export function createRollupBundle(config: BundleConfig): Promise { return rollup.rollup(bundleOptions).then((bundle: any) => bundle.write(writeOptions)); } + +/** + * Function that will be used by rollup to detect imports that should be treated as external + * dependencies. This function also ignores the import shorthands from the NGC (tsickle) + **/ +function isExternalImport(moduleId: string): boolean { + return ROLLUP_EXTERNALS.indexOf(rewriteConvertedImports(moduleId)) !== -1; +} + +/** + * When compiling with @angular/tsc-wrapped, shorthand imports will be converted into more + * explicit paths. This function rewrites all expanded imports to their original import. + * This is important, because when composing releases, the directories won't be present anymore. + */ +function rewriteConvertedImports(moduleId: string): string { + if (moduleId.endsWith('index')) { + const shorthandImport = dirname(moduleId); + + // Only remove the path expansion if it is necessary for recognizing it as an external. + return ROLLUP_EXTERNALS.indexOf(shorthandImport) !== 1 ? shorthandImport : moduleId; + } + + return moduleId; +}