/angular-inform

A small growl-like easy-to-use message toaster for angular.

Primary LanguageJavaScriptMIT LicenseMIT

A small growl-like easy-to-use message toaster for angular.

Dependencies

Besides AngularJS (~1.2.4), none.

Browser Support

Tested under Internet Explorer 8+, Chrome 34+, FireFox 28+ and Safari 7+. The styling should work on any decent mobile device.

Demo

Either visit this Plunker page or clone this repository locally and run a http-server from the public folder.

Installation

The latest version can be installed via bower from the command line.

$ bower --save install angular-inform

Include both the JavaScript and CSS in your HTML.

<link rel="stylesheet" href="bower_components/dist/angular-inform.min.css"/>
<!-- After AngularJS -->
<script src="bower_components/dist/angular-inform.min.js"></script>

Make your main angular module dependent of the inform module.

angular.module('myApp', ['inform']);

Insert the inform directive somewhere in your HTML.

<div inform></div>

Optional Installation Steps

Provide the element the inform-fixed class if you want the messages to float at the upper left position.

<div inform class="inform-fixed"></div>

Provide the element the inform-fixes and inform-center to display the messages in the center of the screen.

<div inform class="inform-fixed inform-center"></div>

Provide the element the inform-shadow to give the messages a light box-shadow.

<div inform class="inform-shadow"></div>

Unhandled Exceptions

Make your main angular module dependent of the inform-exception module if you want unhandled exceptions to be displayed in the notification list.

angular.module('myApp', ['inform', 'inform-exception']);

Make your main angular module dependent of the inform-http-exception module if you want http exceptions to be displayed in the notification list.

angular.module('myApp', ['inform', 'inform-http-exception']);

Animations

Install angular-animate and provide the element the inform-animate class if you want to have CSS3 animations.

# Install angular-animate
$ bower install angular-animate

// Enable ngAnimate in your module
angular.module('myApp', ['inform', 'ngAnimate']);

<!-- Set the animation class -->
<div inform class="inform-animate"></div>

Usage

The module exposes an injectable service by the name inform, which allows you to add notifications.

angular.module('myApp')
  .controller('MyController', function($scope, inform) {
    inform.add('Hello!');
  });

Service Methods

Add

The add methods appends new messages to the list of notifications. The first argument is the message to display and the optional second argument is an object containing some options.

inform.add('The content of the message', {
  ttl: 2000, type: 'warning'
});

Option properties

The default property values are used if no options are provided. See configuration how to change these default values.

{
	/*
	    The time to live for the message in milliseconds.
	    Default value is 5000. Specify <0 to make the message sticky.
	*/
	ttl: 5000,
	
    /*
        The type of message to enable styling. 
        Values can be any of the following:
        
        - 'default'
        - 'primary'
        - 'success'
        - 'info'
        - 'warning'
        - 'danger'
        -  or any other custom type.
        
        Default value is 'default'
    */
    type: 'danger'
}

Flood protection

To prevent the list from flooding, the method will search the current notification list for a match on content and type. If an earlier message is found, than the TTL of that message will be reset and a track count is increased.

Return value

The method will either return a newly created message object or any match found.

Remove

Any earlier returned message object can be manually removed from the notification list if needed. This will also cancel any pending TTL timeouts.

var myMsg = inform.add('My Message');
inform.remove(myMsg);

Clear

This method (no arguments) will simply clear the list of messages.

Messages

Returns the array of messages maintained by the service.

Service Configuration

The defaults of the service can be manipulated in the config phase of your module by injecting the informProvider.

angular.module('myApp')
  .config(function(informProvider) {
  
    var myDefaults = {
      /* default time to live for each notification */
      ttl: 1234,
      /* default type of notification */
      type: 'danger'
    };
    
    informProvider.defaults(myDefaults);
    
  });