0.3.6 • Published 7 years ago

angular-ui-notification v0.3.6

Weekly downloads
5,672
License
MIT
Repository
github
Last release
7 years ago

angular-ui-notification

Dependency Status devDependency Status Build Status Dependency Status Code Climate

Angular.js service providing simple notifications using Bootstrap 3 styles with css transitions for animations

Features

  • No dependencies except of angular.js.
  • CSS3 Animations.
  • Small size.
  • 5 message types.
  • Use HTML in your messages.
  • Configure options globally py the provider
  • Use custom options by the message
  • Use custom template

Install

To install the package using bower and save as a dependency use...

bower install angular-ui-notification --save

To install via NPM:

npm install angular-ui-notification --save

Usage

Heres a plunker demo

In your html/template add

...
  <link rel="stylesheet" href="angular-ui-notification.min.css">
...
  <script src="angular-ui-notification.min.js"></script>
...

In your application, declare dependency injection like so..

  angular.module('notificationTest', ['ui-notification']);
...

You can configure module by the provider

angular.module('notificationTest', ['ui-notification'])
    .config(function(NotificationProvider) {
        NotificationProvider.setOptions({
            delay: 10000,
            startTop: 20,
            startRight: 10,
            verticalSpacing: 20,
            horizontalSpacing: 20,
            positionX: 'left',
            positionY: 'bottom'
        });
    });
...

And when you need to show notifications, inject service and call it!

angular.module('notificationTest').controller('notificationController', function($scope, Notification) {
 
  Notification.primary('Primary notification');
  // or simply..
  Notification('Primary notification');
  
  // Other Options
  // Success
  Notification.success('Success notification');
  
  // Message with custom type
  Notification({message: 'Warning notification'}, 'warning');

  // With Title
  Notification({message: 'Primary notification', title: 'Primary notification'});
  
  // Message with custom delay
  Notification.error({message: 'Error notification 1s', delay: 1000});
  
  // Embed HTML within your message.....
  Notification.success({message: 'Success notification<br>Some other <b>content</b><br><a href="https://github.com/alexcrack/angular-ui-notification">This is a link</a><br><img src="https://angularjs.org/img/AngularJS-small.png">', title: 'Html content'});

  // Change position notification
  Notification.error({message: 'Error Bottom Right', positionY: 'bottom', positionX: 'right'});
  
  // Replace message
  Notification.error({message: 'Error notification 1s', replaceMessage: true});
}

Service

Module name: "ui-notification"

Service: "Notification"

Configuration provider: "NotificationProvider"

Options

Options can be passed to configuration provider globally or used in the current message.

The options list:

OptionPossible valuesDefault valueDescription
delayAny integer value5000The time in ms the message is showing before start fading out
startTopAny integer value10Vertical padding between messages and vertical border of the browser
startRightAny integer value10Horizontal padding between messages and horizontal border of the browser
verticalSpacingAny integer value10Vertical spacing between messages
horizontalSpacingAny integer value10Horizontal spacing between messages
positionX"right", "left", "center""right"Horizontal position of the message
positionY"top", "bottom""top"Vertical position of the message
replaceMessagetrue, falsefalseIf true every next appearing message replace old messages
templateUrlAny string"angular-ui-notification.html"Custom template filename (URL)
onCloseAny functionundefinedCallback to execute when a notification element is closed. Callback receives the element as its argument.
closeOnClicktrue, falsetrueIf true, messages are closed on click
maxCountAny integer0Show only maxCount last messages. Old messages will be killed. 0 - do not kill
priorityAny integer10The highier the priority is, the higher the notification will be

Also you can pass the "scope" option. This is an angular scope option Notification scope will be inherited from. This option can be passed only in the methods. The default value is $rootScope

Methods

Notification service methods

Method nameDescription
Notification(), Notification.primary()Show the message with bootstrap's primary class
Notification.info()Show the message with bootstrap's info class
Notification.success()Show the message with bootstrap's success class
Notification.warning()Show the message with bootstrap's warn class
Notification.error()Show the message with bootstrap's danger class
Notification.clearAll()Remove all shown messages

Notification service options

OptionPossible valuesDefault valueDescription
titleString""Title to appear at the top of the notification
messageString""Message to appear in the notification
templateUrlString"angular-ui-notification.html"URL of template to be used for notification
delayInt (?)5000 or configured global delayNumber of ms before notification fades out. If not an integer, notification will persist until killed.
type"primary", "info", "success", "warning", "error""primary"Bootstrap flavoring
positionY"top", "bottom""top"
positionX"right", "left", "center"`"right"
replaceMessageBooleanfalseIf true this message will replace old(er) message(s)
closeOnClicktrue, falsetrueIf true, the message is closed on click

Returning value

Every "show" method returns a promise that resolves a notification scope with these methods:

Method nameDescription
notificationScope.kill(isHard)Remove the specific messageisHard - if false or omitted kill message with fadeout effect (default). If true - immediately remove the message

Custom Templates

Custom template can be provided.

<div class="ui-notification">
    <h3 ng-show="title" ng-bind-html="title"></h3>
    <div class="message" ng-bind-html="message"></div>
</div>

Default existing scope values is "title" - the title of the message and "message". Also any custom scope's properties can be used.