Last active
September 18, 2017 09:06
-
-
Save honnoretsu/d182005e9cc77095d17bd2aff9c42d6b to your computer and use it in GitHub Desktop.
RiotJS basic notification tag through observables
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<notification> | |
<div id="snackbar"></div> | |
<script> | |
/* USAGE: | |
create an observable: | |
var globalEvents = riot.observable(); | |
And pull the trigger anywhere you need to: | |
globalEvents.trigger('notif_trigger', "Action done successfully"); | |
*/ | |
globalEvents.on('notif_trigger', function(data){ | |
// Get the snackbar DIV | |
var x = document.getElementById("snackbar") | |
x.innerHTML = data; | |
// Add the "show" class to DIV | |
x.className = "show"; | |
// After 3 seconds, remove the show class from DIV | |
setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000); | |
}); | |
</script> | |
<style> | |
/* The snackbar - position it at the bottom and in the middle of the screen */ | |
#snackbar { | |
visibility: hidden; /* Hidden by default. Visible on click */ | |
min-width: 250px; /* Set a default minimum width */ | |
margin-left: -125px; /* Divide value of min-width by 2 */ | |
background-color: #333; /* Black background color */ | |
color: #fff; /* White text color */ | |
text-align: center; /* Centered text */ | |
border-radius: 2px; /* Rounded borders */ | |
padding: 16px; /* Padding */ | |
position: fixed; /* Sit on top of the screen */ | |
z-index: 1; /* Add a z-index if needed */ | |
left: 50%; /* Center the snackbar */ | |
bottom: 30px; /* 30px from the bottom */ | |
} | |
/* Show the snackbar when clicking on a button (class added with JavaScript) */ | |
#snackbar.show { | |
visibility: visible; /* Show the snackbar */ | |
/* Add animation: Take 0.5 seconds to fade in and out the snackbar. | |
However, delay the fade out process for 2.5 seconds */ | |
-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s; | |
animation: fadein 0.5s, fadeout 0.5s 2.5s; | |
} | |
/* Animations to fade the snackbar in and out */ | |
@-webkit-keyframes fadein { | |
from {bottom: 0; opacity: 0;} | |
to {bottom: 30px; opacity: 1;} | |
} | |
@keyframes fadein { | |
from {bottom: 0; opacity: 0;} | |
to {bottom: 30px; opacity: 1;} | |
} | |
@-webkit-keyframes fadeout { | |
from {bottom: 30px; opacity: 1;} | |
to {bottom: 0; opacity: 0;} | |
} | |
@keyframes fadeout { | |
from {bottom: 30px; opacity: 1;} | |
to {bottom: 0; opacity: 0;} | |
} | |
</style> | |
</notification> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment