AngularJS Snackbar Example for Github 

Basic example of angular.snackbar component.

by Jaeha Ahn

HTML

<div ng-app="myApp">
    <div ng-controller="myController">
        <button data-ng-click="snackbar()">Create Snackbar</button>
        
        <!-- Snackbar Directive -->
        <div class="snackbar-container" data-snackbar="true" data-snackbar-duration="1000" data-snackbar-remove-delay="200"></div>
    </div>
</div>

CSS

.snackbar-container {
	position: fixed;
	left: 20px;
	bottom: 0;
	z-index: 99999;
}
.snackbar {
	overflow: hidden;
	clear: both;
	min-width: 288px;
	max-width: 568px;
	cursor: pointer;
	background-color: #323232;
	color: #FFFFFF;
	font-size: 14px;
	border-radius: 2px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);

	-moz-transition: -moz-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s, padding 0 linear 0.2s, height 0 linear 0.2s;
	-webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s, padding 0 linear 0.2s, height 0 linear 0.2s;
	transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s, padding 0 linear 0.2s, height 0 linear 0.2s;
	-moz-transform: translateY(200%);
	-webkit-transform: translateY(200%);
	transform: translateY(200%);
}
.snackbar.snackbar-opened {
	height: auto;
	padding: 14px 15px;
	margin-bottom: 20px;
	height: auto;

	-moz-transition: -moz-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s;
	-webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s;
	transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s, height 0 linear 0.2s;
	-moz-transform: none;
	-webkit-transform: none;
	transform: none;
}
@media (max-width: 767px) {
	.snackbar-container {
		left: 0px !important;
		right: 0px;
		width: 100%;
	}
	.snackbar-container .snackbar {
		min-width: 100%;
	}
	.snackbar-container [class="snackbar snackbar-opened"] ~ .snackbar.toast {
		margin-top: 20px;
	}
	.snackbar-container [class="snackbar snackbar-opened"] {
		border-radius: 0;
		margin-bottom: 0;
	}
}

JavaScript

/*
	@license Angular Snackbar version 1.0.1
	ⓒ 2015 AHN JAE-HA http://github.com/eu81273/angular.snackbar
	License: MIT
*/

(function(a){var b=a.module("angular.snackbar",[]);b.factory("snackbar",["$rootScope",function(a){return{create:function(e,d){a.$broadcast("createSnackbar",{content:e,duration:d})}}}]);b.directive("snackbar",["$rootScope","$compile","$timeout",function(b,e,d){return function(g,h,c){var k=a.element(h),l=c.snackbarDuration||3E3,m=c.snackbarRemoveDelay||200;b.$on("createSnackbar",function(b,c){var f=a.element(e('<div class="snackbar snackbar-opened"><span class="snackbar-content">'+c.content+"</span></div>")(g));
k.append(f);d(function(){f.removeClass("snackbar-opened");d(function(){f.remove()},m,!1)},c.duration||l,!1)})}}])})(angular);

(function(){
    
    var myApp = angular.module('myApp', ['angular.snackbar']);
    
    myApp.controller('myController', function($scope, snackbar){
        
        $scope.snackbar = function () {
            snackbar.create("Hello World!!");
        }
    });
           
})();