UNPKG

ngx-modialog-11

Version:
124 lines (116 loc) 3.88 kB
import { Injectable, NgModule } from '@angular/core'; import { ModalOpenContext, DROP_IN_TYPE, ModalOpenContextBuilder, arrayUnion, Modal as Modal$1, Overlay } from 'ngx-modialog-11'; const DEFAULT_SETTERS = [ 'promptDefault' ]; class JSNativeModalContext extends ModalOpenContext { normalize() { if (!this.message) this.message = ''; if (this.dialogType === undefined) this.dialogType = DROP_IN_TYPE.alert; } } class JSNativeModalContextBuilder extends ModalOpenContextBuilder { constructor(defaultValues = undefined, initialSetters = undefined, baseType = undefined) { super(defaultValues || {}, arrayUnion(DEFAULT_SETTERS, initialSetters || []), baseType || JSNativeModalContext // https://github.com/Microsoft/TypeScript/issues/7234 ); } } class JSNativeModalRenderer { render(dialog, vcRef) { let result; switch (dialog.context.dialogType) { case DROP_IN_TYPE.alert: window.alert(dialog.context.message); result = true; break; case DROP_IN_TYPE.prompt: result = window.prompt(dialog.context.message, dialog.context.promptDefault); break; case DROP_IN_TYPE.confirm: result = window.confirm(dialog.context.message); break; } dialog.destroy = () => { }; if (result === false) { dialog.dismiss(); } else { dialog.close(result); } // we need to return ComponentRef<ModalOverlay> but a native dialog does'nt have that // so we resolve an empty promise, the user of this renderer should expect that. return {}; } } JSNativeModalRenderer.decorators = [ { type: Injectable } ]; class JSNativePresetBuilder extends JSNativeModalContextBuilder { constructor(modal, dialogType) { super({ modal, dialogType }); } /** * Open a modal window based on the configuration of this config instance. * @param viewContainer If set opens the modal inside the supplied viewContainer */ open(viewContainer) { let context = this.toJSON(); if (!(context.modal instanceof Modal)) { return Promise.reject(new Error('Configuration Error: modal service not set.')); } this.$$beforeOpen(context); let overlayConfig = { context: context, renderer: new JSNativeModalRenderer(), viewContainer: viewContainer }; return context.modal.open(context.component, overlayConfig); } } class Modal extends Modal$1 { constructor(overlay) { super(overlay); } alert() { return new JSNativePresetBuilder(this, DROP_IN_TYPE.alert); } prompt() { return new JSNativePresetBuilder(this, DROP_IN_TYPE.prompt); } confirm() { return new JSNativePresetBuilder(this, DROP_IN_TYPE.confirm); } create(dialogRef, type) { return dialogRef; } } Modal.decorators = [ { type: Injectable } ]; /** @nocollapse */ Modal.ctorParameters = () => [ { type: Overlay } ]; const providers = [ { provide: Modal$1, useClass: Modal }, { provide: Modal, useClass: Modal } ]; class JSNativeModalModule { static getProviders() { return providers; } } JSNativeModalModule.decorators = [ { type: NgModule, args: [{ providers },] } ]; /** * Generated bundle index. Do not edit. */ export { JSNativeModalContext, JSNativeModalContextBuilder, JSNativeModalModule, JSNativeModalRenderer, JSNativePresetBuilder, Modal, providers }; //# sourceMappingURL=ngx-modialog-11-plugins-js-native.js.map