Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/maxfisher05/ng2-bs4-modal

Angular2 Bootstrap4 Modal Component
https://github.com/maxfisher05/ng2-bs4-modal

Last synced: about 1 month ago
JSON representation

Angular2 Bootstrap4 Modal Component

Awesome Lists containing this project

README

        

# ng2-bs4-modal [![npm version](https://badge.fury.io/js/ng2-bs3-modal.svg)](http://badge.fury.io/js/ng2-bs3-modal) [![npm downloads](https://img.shields.io/npm/dm/ng2-bs3-modal.svg)](https://npmjs.org/ng2-bs3-modal) [![Build Status](https://travis-ci.org/dougludlow/ng2-bs3-modal.svg?branch=master)](https://travis-ci.org/dougludlow/ng2-bs3-modal)
Angular2 Bootstrap4 Modal Component

## Demo
http://maxfisher05.github.io/ng2-bs4-modal/

## Dependencies

`ng2-bs4-modal` depends on bootstrap which depends on jquery, you'll need to include both scripts before ng2-bs4-modal:

```html

```

Or, if you're using [SystemJS](https://github.com/systemjs/systemjs), configure it to load them. And import them in your typscript.

## Install

```bash
> npm install --save ng2-bs4-modal
```

Include a reference to the bundle in your html:

```html

```

Or, if you're using [SystemJS](https://github.com/systemjs/systemjs), add a mapping to your System.config:

```javascript
System.config({
defaultJSExtensions: true,
map: {
'ng2-bs4-modal': 'node_modules/ng2-bs4-modal'
}
});
```

Then import into your application or component's module:

```typescript
import {ModalModule} from 'ng2-bs4-modal/ng2-bs4-modal';

@NgModule({
imports: [
...
ModalModule,
]
...
})
export class AppModule {
}
```

See examples for [npm](https://github.com/dougludlow/ng2-bs3-modal-demo-npm), [SystemJS](https://github.com/dougludlow/ng2-bs3-modal-demo-systemjs), [jspm](https://github.com/dougludlow/ng2-bs3-modal-demo-jspm), and [angular-cli](https://github.com/dougludlow/ng2-bs3-modal/issues/31).

## API

### ModalComponent

#### Inputs

- `animation: boolean`, default: `true`

Specify `false` to simply show the modal rather than having it fade in/out of view.

- `backdrop: string | boolean`, default: `true`

Specify `'static'` for a backdrop which doesn't close the modal on click or `false` for no backdrop.

- `keyboard: boolean`, default: `true`

Closes the modal when escape key is pressed. Specify `false` to disable.

- `size: string`, default: `undefined`

Specify `'sm'` for small and `'lg'` for large.

#### Outputs

- `onClose: EventEmitter`

Emits when `ModalComponent.close()` is called.

- `onDismiss: EventEmitter`

Emits when `ModalComponent.dismiss()` is called, or when the modal is dismissed with the keyboard or backdrop.

- `onOpen: EventEmitter`

Emits when `ModalComponent.open()` is called.

#### Methods

- `open(size?: string): Promise`

Opens the modal. Size is optional. Specify `'sm'` for small and `'lg'` for large to override size. Returns a promise that resolves when the modal is completely shown.

- `close(): Promise`

Closes the modal. Causes `onClose` to be emitted. Returns a promise that resolves when the modal is completely hidden.

- `dismiss(): Promise`

Dismisses the modal. Causes `onDismiss` to be emitted. Returns a promise that resolves when the modal is completely hidden.

### ModalHeaderComponent

#### Inputs

- `show-close: boolean`, default: `false`

Show or hide the close button in the header. Specify `true` to show.

### ModalFooterComponent

#### Inputs

- `show-default-buttons: boolean`, default: `false`

Show or hide the default 'Save' and 'Close' buttons in the header. Specify `true` to show.

## Examples

### Default modal

```html
Open me!





Hello World!

```

![Example](demo/images/modal.png)

### Static modal

This will create a modal that cannot be closed with the escape key or by clicking outside of the modal.

```html





Hello World!

```

### Use custom buttons in footer

```html





Hello World!


Cancel
Ok

```

![Example](demo/images/modal-custom-footer.png)

### Opening and closing the modal from the host/parent component

```typescript
import { Component, ViewChild } from 'angular/core';
import { ModalComponent } from 'ng2-bs4-modal/ng2-bs4-modal';

@Component({
selector: 'parent-component',
template: `

...

`
})
export class ParentComponent {
@ViewChild('myModal')
modal: ModalComponent;

close() {
this.modal.close();
}

open() {
this.modal.open();
}
}
```

### Autofocus on a textbox when modal is opened

```html






I'm a textbox!



```

## Building

```bash
git clone https://github.com/maxfisher05/ng2-bs4-modal.git
npm install
npm run build
```

## Testing

```bash
npm test
```

To tell karma to watch for changes:
```bash
npm run test-watch
```

## Bugs/Contributions

Report all bugs and feature requests on the [issue tracker](https://github.com/dougludlow/ng2-bs3-modal/issues).

Contributions are welcome! Feel free to open a [pull request](https://github.com/dougludlow/ng2-bs3-modal/pulls).