<!DOCTYPE html>
<html>
<head>
<link data-require="purecss@*" data-semver="0.4.2" rel="stylesheet" href="http://yui.yahooapis.com/pure/0.4.1/pure-min.css" />
<script data-require="angular.js@*" data-semver="1.2.16" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<link rel="stylesheet" href="pure-extras.css" />
<script src="angular-flash-pure.js"></script>
<script src="angular-module.js"></script>
</head>
<body ng-app='demo' ng-controller='DemoController'>
<br>
<div style='margin-left: 10px; margin-right: 10px;'>
<flash-messages></flash-messages>
</div>
<div style='text-align: center;'>
<h1>Flash Notifications</h1>
<form class="pure-form pure-form-alligned center">
<fieldset>
<div class='pure-control-group'>
<label for='input'>Text for flash</label>
<input id='input' ng-model='text' type='text' placeholder='Type your notification'>
</div>
<br>
<div class="pure-controls">
<button class='pure-button pure-button-secondary' ng-click='notice()'>Notice</button>
<button class='pure-button pure-button-success' ng-click='success()'>Success</button>
<button class='pure-button pure-button-error' ng-click='error()'>Error</button>
<button class='pure-button pure-button-warning' ng-click='warning()'>Warning</button>
</div>
</fieldset>
</form>
</div>
</body>
</html>
/**!
* @license angular-flash-pure v0.1.0
* Copyright (c) 2014 Kristen Mills.
* License: MIT
*/
(function() {
angular.module('angular-flash-pure', []).factory("flash", function($rootScope) {
var currentMessages, queues;
queues = {
notice: [],
success: [],
warning: [],
error: []
};
currentMessages = {
notice: '',
success: '',
warning: '',
error: ''
};
$rootScope.$on("$locationChangeStart", function() {
currentMessages.notice = queues.notice.shift() || "";
currentMessages.success = queues.success.shift() || "";
currentMessages.warning = queues.warning.shift() || "";
return currentMessages.error = queues.error.shift() || "";
});
$rootScope.$on("event:angularFlash", function() {
currentMessages.notice = queues.notice.shift() || "";
currentMessages.success = queues.success.shift() || "";
currentMessages.warning = queues.warning.shift() || "";
return currentMessages.error = queues.error.shift() || "";
});
return {
notice: {
setMessage: function(message) {
return queues.notice.push(message);
},
getMessage: function() {
return currentMessages.notice;
}
},
success: {
setMessage: function(message) {
return queues.success.push(message);
},
getMessage: function() {
return currentMessages.success;
}
},
warning: {
setMessage: function(message) {
return queues.warning.push(message);
},
getMessage: function() {
return currentMessages.warning;
}
},
error: {
setMessage: function(message) {
return queues.error.push(message);
},
getMessage: function() {
return currentMessages.error;
}
}
};
}).directive('flashMessages', [
'flash', function(flash) {
return {
restrict: 'E',
template: ['<div>', '<div class="pure-alert" ng-show="flash.notice.getMessage()">', '{{ flash.notice.getMessage() }}', '</div>', '<div class="pure-alert pure-alert-success" ng-show="flash.success.getMessage()">', '{{ flash.success.getMessage() }}', '</div><div class="pure-alert pure-alert-warning" ng-show="flash.warning.getMessage()">', '{{ flash.warning.getMessage() }}', '</div>', '<div class="pure-alert pure-alert-error" ng-show="flash.error.getMessage()">', '{{ flash.error.getMessage() }}', '</div>', '</div>'].join('\n'),
link: function(scope, elem, attrs) {
return scope.flash = flash;
}
};
}
]);
}).call(this);
/* Images */
.pure-img-eliptical {
border-radius: 80%;
}
.pure-img-rounded {
border-radius: 3px;
}
.pure-img-bordered {
background-color: #FFFFFF;
border: 1px solid rgba(0, 0, 0, 0.2);
padding: 5px;
}
/* Thumbnails */
.pure-thumbnails li {
text-align: center;
display: inline-block;
*display: inline;
/* IE7 inline-block hack */
*zoom: 1;
vertical-align: top;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0.5em;
}
.pure-thumbnails {
list-style: none;
margin: 0;
padding: 0;
}
.pure-thumbnails a:focus {
outline: 0 none;
}
.pure-thumb {
display: block;
text-decoration: none;
color: inherit;
}
.pure-thumb img {
max-width: 100%;
margin-right: auto;
margin-left: auto;
vertical-align: middle; /* this will remove a thin line below the image */
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.pure-thumb-bordered {
border: 1px solid rgba(0, 0, 0, 0.2);
}
.pure-thumb .caption {
text-align: left;
display: block;
margin: 0 5px 6px;
}
.pure-thumb .caption p {
margin: 0.3em 0 0;
font-size: 75%;
}
.pure-thumb .caption .caption-head {
font-weight: bold;
margin-top: 0.3em;
}
.pure-thumb-eliptical img {
border-radius: 50%;
}
.pure-thumb-rounded img {
border-radius: 3px;
}
/* Badges/Pills */
.pure-badge,
.pure-badge-error,
.pure-badge-warning,
.pure-badge-success,
.pure-badge-info,
.pure-badge-inverse {
padding: 0.35em 0.9em 0.35em;
background-color: #9D988E;
color: #fff;
display: inline-block;
font-size: 11.844px;
font-weight: bold;
line-height: 1.2em;
vertical-align: baseline;
white-space: nowrap;
border-radius: 20px;
margin: 0.2em;
}
.pure-badge-error {
background-color: #D13C38;
}
.pure-badge-warning {
background-color: #E78C05;
}
.pure-badge-success {
background-color: rgb(83, 180, 79);
}
.pure-badge-info {
background-color: rgb(18, 169, 218);
}
.pure-badge-inverse {
background-color: #4D370C;
}
/* Alerts */
.pure-alert {
position: relative;
margin-bottom: 1em;
padding: 1em;
background: #ccc;
border-radius: 3px;
}
.pure-alert label {
display: inline-block;
*display: inline;
/* IE7 inline-block hack */
*zoom: 1;
white-space: nowrap;
}
.pure-alert {
background-color: rgb(209, 235, 238);
color: rgb(102, 131, 145);
}
.pure-alert-error {
background-color: #D13C38;
color: #fff;
}
.pure-alert-warning {
background-color: rgb(250, 191, 103);
color: rgb(151, 96, 13);
}
.pure-alert-success {
background-color: rgb(83, 180, 79);
color: #fff;
}
/* Contextual Modals */
.pure-popover {
position: relative;
width: 300px;
background-color: #f0f1f3;
color: #2f3034;
padding: 15px;
border: 1px solid #bfc0c8;
border-radius: 2px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
box-padding: border-box;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
.pure-arrow-border, .pure-arrow {
border-style: solid;
border-width: 10px;
height:0;
width:0;
position:absolute;
}
/* POPOVER ARROW POSITIONING BOTTOM */
.pure-popover.bottom .pure-arrow-border {
border-color: #bfc0c8 transparent transparent transparent;
bottom: -20px;
left: 50%;
}
.pure-popover.bottom .pure-arrow {
border-color: #f0f1f3 transparent transparent transparent;
bottom:-19px;
left: 50%;
}
/* POPOVER ARROW POSITIONING TOP*/
.pure-popover.top .pure-arrow-border {
border-color: transparent transparent #bfc0c8 transparent;
top: -21px;
left: 50%;
}
.pure-popover.top .pure-arrow {
border-color: transparent transparent #f0f1f3 transparent;
top:-20px;
left: 50%;
}
/* POPOVER ARROW POSITIONING RIGHT*/
.pure-popover.right .pure-arrow-border {
border-color: transparent transparent transparent #bfc0c8;
top: 45%;
right: -21px;
}
.pure-popover.right .pure-arrow {
border-color: transparent transparent transparent #f0f1f3;
top:45%;
right: -20px;
}
/* POPOVER ARROW POSITIONING LEFT*/
.pure-popover.left .pure-arrow-border {
border-color: transparent #bfc0c8 transparent transparent;
top: 45%;
left: -21px;
}
.pure-popover.left .pure-arrow {
border-color: transparent #f0f1f3 transparent transparent;
top:45%;
left: -20px;
}
/* BUTTON IMPROVEMENTS */
.pure-button-block {
display: block;
}
.pure-button-small {
padding: .6em 2em .65em;
font-size:70%;
}
.pure-button-large {
padding: .8em 5em .9em;
font-size:110%;
}
.pure-button-selected {
background-color: #345fcb;
color: #fff;
}
.pure-button-secondary {
background: rgb(161, 195, 238);
color: rgb(26, 88, 122);
}
.pure-button-error {
background: rgb(214, 86, 75);
color: white;
}
.pure-button-success {
background: rgb(54, 197, 71);
color: white;
}
.pure-button-warning {
background: rgb(255, 163, 0);
color: white;
}
angular.module('demo', ['angular-flash-pure'])
.controller('DemoController', ['$scope', '$rootScope', 'flash', function($scope,$rootScope, flash){
$scope.text = '';
$scope.notice = function(){
flash.notice.setMessage($scope.text);
$rootScope.$emit('event:angularFlash');
$scope.text = '';
}
$scope.error = function(){
flash.error.setMessage($scope.text);
$rootScope.$emit('event:angularFlash');
$scope.text = '';
}
$scope.warning = function(){
flash.warning.setMessage($scope.text);
$rootScope.$emit('event:angularFlash');
$scope.text = '';
}
$scope.success = function(){
flash.success.setMessage($scope.text);
$rootScope.$emit('event:angularFlash');
$scope.text = '';
}
}]);