angular-promise-messages
v0.4.1
Published
Enhanced support for displaying messages depending on some promise within template for AngularJS.
Downloads
13
Maintainers
Readme
angular-promise-messages
The promiseMessages
module provides enhanced support for displaying messages depending on some promise within templates.
Installation
install via npm
npm install angular-promise-messages --save
install via bower
bower install angular-promise-messages --save
Add promiseMessages
as dependency in your module:
angular.module('yourModule', [
'promiseMessages'
]);
// es6 way
import promiseMessages from 'angular-promise-messages';
angular.module('yourModule', [
promiseMessages.name
]);
Usage
Basic usage
Use the attribute for
to pass a promise to a directive. Then the directive starts watching the promise.
<promise-messages for="promise">
<!-- Default message -->
<promise-message>Default</promise-message>
<!-- Pending message -->
<promise-message when="pending">Pending</promise-message>
<!-- Fulfilled message -->
<promise-message when="fulfilled">Fulfilled</promise-message>
<!-- Rejected message -->
<promise-message when="rejected">Rejected</promise-message>
</promise-messages>
function someAction () {
// Passing a promise object to the `for` attribute
// of the `promiseMessages` directive
$scope.promise = $http.get('http://...');
}
Function support
Use the attribute forAction
when you want to pass a promise which will be returned by a function.
<promise-messages for-action="functionThatReturnsPromise()">
<promise-message>Default</promise-message>
<promise-message when="pending">Pending</promise-message>
<promise-message when="fulfilled">Fulfilled</promise-message>
<promise-message when="rejected">Rejected</promise-message>
</promise-messages>
function functionThatReturnsPromise () {
// Passing a promise object to the `forAction` attribute
// of the `promiseMessages` directive by returning promise.
return $http.get('http://...');
}
Theming
If the state
attribute is specified, current state will be published into related scope.
Then, you can theme it as you want by using published states.
<promise-messages for="promise" state="$state" ng-disabled="$state.pending"
ng-class="{'btn-default': $state.none || $state.pending, 'btn-danger': $state.rejected, 'btn-success': $state.resolved}">
<promise-message>Default</promise-message>
<promise-message when="pending">Pending</promise-message>
<promise-message when="fulfilled">Fulfilled</promise-message>
<promise-message when="rejected">Rejected</promise-message>
</promise-messages>
Auto resetting state
Resetting a promise state automatically when the state is changed by configuring delays until reset.
It is useful if want to reset a message when a promise state was changed (such as rejected).
Configure globally
.config(function (promiseMessagesProvider) {
promiseMessagesProvider
// will reset state after 3000ms when fulfilled
.state('fulfilled')
.setAutoResetDelay(3000)
.end()
// will reset state after 500ms when rejected
.state('rejected')
.setAutoResetDelay(500)
.end()
})
Overriding global configurations
disableAutoReset
: Disable auto resettingautoResetDelay
: Override auto resetting delay
<promise-messages for="promise">
<promise-message>Default</promise-message>
<promise-message when="pending">Pending</promise-message>
<!-- Disable auto resetting -->
<promise-message when="fulfilled" disable-auto-reset>Fulfilled</promise-message>
<!-- Override auto resetting delay -->
<promise-message when="rejected" auto-reset-delay="1500">Rejected</promise-message>
</promise-messages>
Contribution
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D