A fully generic, customizable and fluent modal window implementation for Angular.
angular2-modal
is UI platform/framework agnostic, plugins** are used to describe a UI implementation (e.g: Bootstrap)
This means virtually any modal implementation out there can be ported into angular2-modal
.
angular2-modal
will come with some built in UI platforms, external UI platform can be added in the future or externally used using NPM modules.
See the DEMO: shlomiassaf.github.io/angular2-modal
Take 5 minutes to read a quick walk through with samples of how to use Angular 2 Modal
- Bootstrap
- Vex
- POC implementation of JS Native modal (window.alert/prompt/confirm) to demonstrate a hostile takeover :)
- Easy to use API via Fluent API Presets (alert, propmt, confirm)
- Extendable via plugins.
- Customizable with components, Presets and more...
- Select cancel/quit key.
- Cascading modals.
- Element blocking.
- Blocking / Non blocking modal.
- Modal as a component, replace the content by supplying a custom component.
That's how easy it is:
modal.alert()
.title('Hello World')
.body('In Angular 2')
.open();
Click HERE for a quick walkthrough
Click for the Demo Make sure to check the code generator!
Use this plunker for quick showcasing and issue reports.
http://plnkr.co/edit/9HYPPK?p=preview
See src/demo for demo app with examples.
npm install angular2-modal --save
Demo application is built with Webpack
and SystemJS
.
The only difference is the index.html
file.
The deployed demo site is in SystemJS
, development is done with Webpack
Plugins serve as a concrete UI implementation for a modal. It can be an implementation for a known library (e.g: bootstrap) or something unique.
While angular2-modal
has some built in plugins it is also possible to use external plugins from NPM, if someone decide to build one.
git clone https://github.com/shlomiassaf/angular2-modal.git
npm install
typings install
npm run start
browse to localhost:3000
You can apply custom modals based on components.
Publishing is done using the TypeScript compiler directly (no webpack)
The process involves compiling into a directory called dist
Webpack is using the build
directory.
Since I didn't find a way to instruct tsc
what config file to use (i.e: a different tsconfig.json)
I created a publish
directory instead and set the --project
argument accordingly.
Not so complicated but not in angular 2 at the moment.
Switch to material2 overlay implementation when done.
Build a umd bundle.
Provide base classes for generic components
Add tests...
Test against universal-starter
to enable universal support.
Support OnPush
with an observable api model (fluent observables)
ref issue#111
To avoid this problem use event.stopPropagation();
or put the element removal inside a setTimeout
call