From e4bbcc4c23b2f36396f20e7430ceda090279169b Mon Sep 17 00:00:00 2001 From: "Shlomi Assaf (shlassaf)" Date: Thu, 11 Aug 2016 00:41:09 +0300 Subject: [PATCH] feat(core): support Angular RC5 feat(bootstrap): support Angular RC5 misc: disable plugins that does not support RC5 --- package.json | 8 +- src/bootstrap.ts | 22 +-- .../angular2-modal/angular2-modal.module.ts | 20 ++ .../angular2-modal/angular2-modal.ts | 7 +- .../angular2-modal/models/tokens.ts | 2 +- .../angular2-modal/platform-browser/index.ts | 12 -- .../plugins/bootstrap/bootstrap.module.ts | 44 +++++ .../angular2-modal/plugins/bootstrap/index.ts | 26 +-- .../plugins/bootstrap/message-modal.ts | 1 - .../plugins/bootstrap/modal-backdrop.ts | 5 +- .../plugins/bootstrap/modal-container.ts | 35 ++-- .../providers/dom-modal-renderer.ts | 69 ++++--- .../angular2-modal/providers/modal.ts | 11 +- .../outside-event-plugin.ts | 176 +++++++++--------- src/demo/app/app.module.ts | 25 +++ src/demo/app/app.routes.ts | 20 +- src/demo/app/app.ts | 3 - .../bootstrap-demo/bootstrap-demo.module.ts | 15 ++ .../bootstrap-demo/bootstrap-demo.routes.ts | 15 +- src/demo/app/bootstrap-demo/bootstrap-demo.ts | 26 ++- src/demo/app/home/home.ts | 28 +-- 21 files changed, 317 insertions(+), 253 deletions(-) create mode 100644 src/components/angular2-modal/angular2-modal.module.ts delete mode 100644 src/components/angular2-modal/platform-browser/index.ts create mode 100644 src/components/angular2-modal/plugins/bootstrap/bootstrap.module.ts rename src/components/angular2-modal/{platform-browser => providers}/outside-event-plugin.ts (97%) create mode 100644 src/demo/app/app.module.ts create mode 100644 src/demo/app/bootstrap-demo/bootstrap-demo.module.ts diff --git a/package.json b/package.json index 9a9dd75b..3942914f 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,6 @@ "server": "npm run server:dev", "server:dev": "webpack-dev-server --config webpack.config.js --hot --inline --progress --profile --colors --watch --display-error-details --display-cached --content-base src/", "build": "exec ./scripts/build_release.sh", - "preinstall": "node install_angular.js --preinstall", - "postinstall": "node install_angular.js --postinstall", "start": "npm run server:dev" }, "peerDependencies": { @@ -36,6 +34,12 @@ "zone.js": "^0.6.12" }, "devDependencies": { + "@angular/core": "2.0.0-rc.5", + "@angular/compiler": "2.0.0-rc.5", + "@angular/common": "2.0.0-rc.5", + "@angular/platform-browser": "2.0.0-rc.5", + "@angular/platform-browser-dynamic": "2.0.0-rc.5", + "@angular/router": "3.0.0-rc.1", "angular-cli": "0.0.31", "async": "^1.5.2", "bootstrap": "^3.3.6", diff --git a/src/bootstrap.ts b/src/bootstrap.ts index 6e111fd0..89ad7003 100644 --- a/src/bootstrap.ts +++ b/src/bootstrap.ts @@ -1,28 +1,18 @@ -import { ComponentRef, PLATFORM_DIRECTIVES } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { LocationStrategy, HashLocationStrategy } from '@angular/common'; -import { ROUTER_DIRECTIVES } from '@angular/router'; +import { NgModuleRef } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import { MODAL_BROWSER_PROVIDERS } from './components/angular2-modal/platform-browser'; +// The app module +import { AppModule } from './demo/app/app.module'; -// Register providers for browser, this is mandatory. - -import { App } from './demo/app/app'; -import { APP_ROUTER_PROVIDERS } from './demo/app/app.routes'; let _bootstrapped = false; -export function main(): Promise> { +export function main(): Promise> { if (_bootstrapped) { return Promise.reject(null); } else { _bootstrapped = true; - return bootstrap(App, [ - ...MODAL_BROWSER_PROVIDERS, - {provide: PLATFORM_DIRECTIVES, multi: true, useValue: ROUTER_DIRECTIVES}, - APP_ROUTER_PROVIDERS, - {provide: LocationStrategy, useClass: HashLocationStrategy}, - ]) + return platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err)); } } diff --git a/src/components/angular2-modal/angular2-modal.module.ts b/src/components/angular2-modal/angular2-modal.module.ts new file mode 100644 index 00000000..c13f3fe9 --- /dev/null +++ b/src/components/angular2-modal/angular2-modal.module.ts @@ -0,0 +1,20 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser'; +import { DOMOutsideEventPlugin } from './providers/outside-event-plugin'; +import { ModalRenderer, DOMModalRenderer } from '../angular2-modal'; + +@NgModule({ + +}) +export class ModalModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: ModalModule, + providers: [ + { provide: ModalRenderer, useClass: DOMModalRenderer }, + { provide: EVENT_MANAGER_PLUGINS, useClass: DOMOutsideEventPlugin, multi: true }, + ] + }; + } +} diff --git a/src/components/angular2-modal/angular2-modal.ts b/src/components/angular2-modal/angular2-modal.ts index b2af03f8..926974c7 100644 --- a/src/components/angular2-modal/angular2-modal.ts +++ b/src/components/angular2-modal/angular2-modal.ts @@ -24,8 +24,5 @@ export { export { ModalOpenContext, ModalOpenContextBuilder } from './models/modal-open-context'; -/** - * Deprecated, use platform based providers. - * @type {Array} - */ -export const MODAL_PROVIDERS: any[] = []; + +export { ModalModule } from './angular2-modal.module'; diff --git a/src/components/angular2-modal/models/tokens.ts b/src/components/angular2-modal/models/tokens.ts index 540785cd..4c512cfa 100644 --- a/src/components/angular2-modal/models/tokens.ts +++ b/src/components/angular2-modal/models/tokens.ts @@ -39,7 +39,7 @@ export abstract class ModalRenderer { viewContainer: ViewContainerRef, bindings: ResolvedReflectiveProvider[], dialog: DialogRef - ): Promise>; + ): DialogRef; } export abstract class ModalBackdropComponent extends Type {} diff --git a/src/components/angular2-modal/platform-browser/index.ts b/src/components/angular2-modal/platform-browser/index.ts deleted file mode 100644 index 6b6feb4b..00000000 --- a/src/components/angular2-modal/platform-browser/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { provide, Provider } from '@angular/core'; - -import { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser'; -import { DOMOutsideEventPlugin } from './outside-event-plugin'; -import { ModalRenderer, DOMModalRenderer } from '../angular2-modal'; - -export { DOMOutsideEventPlugin } from './outside-event-plugin'; - -export const MODAL_BROWSER_PROVIDERS: Provider[] = [ - provide(ModalRenderer, {useClass: DOMModalRenderer}), - provide(EVENT_MANAGER_PLUGINS, { multi: true, useClass: DOMOutsideEventPlugin}) -]; diff --git a/src/components/angular2-modal/plugins/bootstrap/bootstrap.module.ts b/src/components/angular2-modal/plugins/bootstrap/bootstrap.module.ts new file mode 100644 index 00000000..6499a8b1 --- /dev/null +++ b/src/components/angular2-modal/plugins/bootstrap/bootstrap.module.ts @@ -0,0 +1,44 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { Modal } from './modal'; +import { BSModalBackdrop } from './modal-backdrop'; +import { BSMessageModal } from './message-modal'; +import { BSModalContainer } from './modal-container'; +import { BSModalFooter } from './modal-footer'; + + +import { OneButtonPresetBuilder } from './presets/one-button-preset'; +import { TwoButtonPresetBuilder } from './presets/two-button-preset'; + +import { + Modal as BaseModal, + ModalBackdropComponent, + ModalDropInFactory +} from '../../angular2-modal'; + +@NgModule({ + imports: [ CommonModule ], + declarations: [ + BSModalBackdrop, + BSMessageModal, + BSModalContainer, + BSModalFooter + ], + providers: [ + { provide: BaseModal, useClass: Modal }, + { provide: Modal, useClass: Modal }, + { provide: ModalBackdropComponent, useValue: BSModalBackdrop }, + { provide: ModalDropInFactory, useValue: { + alert: modal => new OneButtonPresetBuilder(modal, {isBlocking: false}), + prompt: modal => new OneButtonPresetBuilder(modal, {isBlocking: true, keyboard: null}), + confirm: modal => new TwoButtonPresetBuilder(modal, {isBlocking: true, keyboard: null}) + }} + ], + entryComponents: [ + BSModalBackdrop, + BSMessageModal + ] +}) +export class BootstrapModalModule {} + diff --git a/src/components/angular2-modal/plugins/bootstrap/index.ts b/src/components/angular2-modal/plugins/bootstrap/index.ts index 0062731b..76bf3e91 100644 --- a/src/components/angular2-modal/plugins/bootstrap/index.ts +++ b/src/components/angular2-modal/plugins/bootstrap/index.ts @@ -1,17 +1,3 @@ -import { Provider } from '@angular/core'; - -import { Modal } from './modal'; -import { BSModalBackdrop } from './modal-backdrop'; -import { OneButtonPresetBuilder } from './presets/one-button-preset'; -import { TwoButtonPresetBuilder } from './presets/two-button-preset'; - -import { - Modal as BaseModal, - ModalBackdropComponent, - ModalDropInFactory, - MODAL_PROVIDERS -} from '../../angular2-modal'; - export { BootstrapModalSize, BSModalContext, BSModalContextBuilder } from './modal-context'; export { BSModalBackdrop } from './modal-backdrop'; export { BSModalContainer } from './modal-container'; @@ -28,14 +14,4 @@ export { OneButtonPreset, OneButtonPresetBuilder } from './presets/one-button-pr export { TwoButtonPreset, TwoButtonPresetBuilder } from './presets/two-button-preset'; export { BSModal, Modal } from './modal'; -export const BS_MODAL_PROVIDERS: any[] = [ - ...MODAL_PROVIDERS, - new Provider(BaseModal, { useClass: Modal }), - new Provider(Modal, { useClass: Modal }), - new Provider(ModalBackdropComponent, { useValue: BSModalBackdrop }), - new Provider(ModalDropInFactory, { useValue: { - alert: modal => new OneButtonPresetBuilder(modal, {isBlocking: false}), - prompt: modal => new OneButtonPresetBuilder(modal, {isBlocking: true, keyboard: null}), - confirm: modal => new TwoButtonPresetBuilder(modal, {isBlocking: true, keyboard: null}) - }}) -]; +export { BootstrapModalModule } from './bootstrap.module'; diff --git a/src/components/angular2-modal/plugins/bootstrap/message-modal.ts b/src/components/angular2-modal/plugins/bootstrap/message-modal.ts index 2cb229db..c6b4466e 100644 --- a/src/components/angular2-modal/plugins/bootstrap/message-modal.ts +++ b/src/components/angular2-modal/plugins/bootstrap/message-modal.ts @@ -37,7 +37,6 @@ export interface BSMessageModalButtonConfig { */ @Component({ selector: 'modal-content', - directives: [BSModalFooter], encapsulation: ViewEncapsulation.None, template: `
diff --git a/src/components/angular2-modal/plugins/bootstrap/modal-backdrop.ts b/src/components/angular2-modal/plugins/bootstrap/modal-backdrop.ts index 1ae7aad4..4a4f9650 100644 --- a/src/components/angular2-modal/plugins/bootstrap/modal-backdrop.ts +++ b/src/components/angular2-modal/plugins/bootstrap/modal-backdrop.ts @@ -11,8 +11,6 @@ import { } from '@angular/core'; import { DialogRef } from '../../angular2-modal'; - -import { BSModalContainer } from './modal-container'; import { BSModalContext } from './modal-context'; let dialogRefCount = 0; @@ -31,7 +29,6 @@ let dialogRefCount = 0; '[style.right]': 'hs.pt', '[style.bottom]': 'hs.pt' }, - directives: [BSModalContainer], animations: [ trigger('fade', [ transition('void => in', [ @@ -54,7 +51,7 @@ let dialogRefCount = 0; ]) ], encapsulation: ViewEncapsulation.None, - template: ` + template: ` ` }) export class BSModalBackdrop implements OnDestroy { diff --git a/src/components/angular2-modal/plugins/bootstrap/modal-container.ts b/src/components/angular2-modal/plugins/bootstrap/modal-container.ts index 11a56473..73cf90ac 100644 --- a/src/components/angular2-modal/plugins/bootstrap/modal-container.ts +++ b/src/components/angular2-modal/plugins/bootstrap/modal-container.ts @@ -1,6 +1,6 @@ import { Component, - ComponentResolver, + ComponentFactoryResolver, ViewContainerRef, ReflectiveInjector, ViewChild, @@ -61,7 +61,7 @@ import { BSModalContext } from './modal-context'; template: `
+ [@fade]="fadeState">