🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

Simple-modal is a lightweight, reusable Angular 2.3.0 compatible solution that will create a modal dialog, add it to the DOM, and then remove the modal from the DOM when it is dismissed. The modal returns a promise indicating which button was pressed to dismiss the modal that then optionally can be used for further processing.

Modal_Popup Plugins

Documentation

npm version

Angular Basic Modal

The angular-basic-modal is a lightweight, extendable Angular 2+ (2.3.0 and beyond) modal solution that will programatically create a modal, add it to the DOM, and then delete it from the DOM when the modal is dismissed. The modal returns a promise that indicates how the modal dismissed that can then be used for further processing.

A default modal style is provided that can be extended to create modals with any style sheet, including Bootstrap. A working demo shows the basic modal and two extended version (icon and Bootstrap 3) in action with user adjustable customizations.

Angular Basic Modal

How to use?

$ npm i angular-basic-modal --save 

Integration

The angular-basic-modal should work as-is with webpack/angular-cli. Just add the AngularBasicModalModule:

import { AngularBasicModalModule } from 'angular-basic-modal';  @NgModule({   imports: [ AngularBasicModalModule ],   ... }) export class AppModule { }

Usage

Basic usage is:

  bmc = new BaseModalConfig();    constructor(private modal:BasicModalService) { }    ...    ngOnInit() {     this.bmc.title = 'Hi There!';     this.bmc.message = "This is Eddie, your shipboard computer, and I'm " +       "feeling just great, guys, and I know I'm just going to get a " +       "bundle of kicks out of any program you care to run through me.";     this.bmc.width = 400;     this.bmc.height = 160;     this.bmc.cancelBtn = 'Great!';      setTimeout( () => {       this.modal.show(this.bmc, BaseModal).then( res => {         console.log(res);       });     }, 1500);   }

The BaseModalConfig contains the settings for the modal and is injected when the modal is created by calling show(config:BaseModalConfig, modal:Type<BaseModal>) on the BasicModalService. The modal loaded can either be the default BaseModal component or a component extending it. See the IconModal and BootstrapModal component in the demo for examples.

The following parameters are settable on the BaseModalConfig:

  • title - HTML or text for the modal's title.
  • message - HTML or text for the modal's body.
  • blocking - whether or not the modal can be dismissed by clicking the overlay.
  • confirmBtn - label of the optional confirm button. The confirmButton is associated with the confirm() function, which may optionally take a string to return via the modal's promise if clicked ( for example click('foo') would return 'foo' ). If no string is given for the confirm() function's parameter, then the confirmBtn label will be returned.
  • cancelBtn - label of the cancel button, which is optional if not blocking. The cancelButton is associated with the cancel() function, which may optionally take a string to return via the modal's promise if clicked ( for example: click('bar') ). If no string is given for the cancel() function's parameter, then the cancelBtn label will be returned.
  • width/height - (size) For the Bootstrap demo, the [ngClass] attribute on <div class="modal-dialog"> element uses the width to adjust the size according.

Extending

As noted above, the BaseModal can be extended. Here is a Webpack example for a Bootstrap styled modal.

The component:

import { Component } from '@angular/core'; import { BaseModal } from 'angular-basic-modal/base-modal.component'; import { BaseModalConfig } form 'angular-basic-modal/base-modal-config';  @Component({   selector: 'bs-modal',   templateUrl: './bootstrap-modal.component.html' }) export class BootstrapModalComponent extends BaseModal {   constructor(bmc:BaseModalConfig) {     super(bmc);   } }

The template:

<div class="modal" tabindex="-1" role="dialog" style="display:inherit;" (click)="dismiss('Dismiss')">   <div class="modal-dialog" (click)="$event.stopPropagation()">     <div class="modal-content">       <div class="modal-header">         <button type="button" class="close" data-dismiss="modal" (click)="cancel('Cancel')">           <span>&times;</span><span class="sr-only">Close</span>         </button>         <h4 class="modal-title" style="display:inline-block;" id="modal-title" [innerHTML]="title"></h4>       </div>       <div class="modal-body" [innerHTML]="message"></div>       <div class="modal-footer">         <button *ngIf="confirmBtn" type="button" class="btn btn-default" (click)="confirm()">           {{confirmBtn}}         </button>         <button *ngIf="cancelBtn" type="button" class="btn btn-primary" (click)="cancel()">           {{cancelBtn}}         </button>       </div>     </div>   </div> </div> <div class="modal-backdrop fade in"></div>`

The demo has an example for SystemJS. Namely the difference is in how BaseModalConfig and BaseModal are imported.

import { BaseModalConfig, BaseModal } from 'angular-basic-modal';

License

MIT

Author


You May Also Like