Notification API
by levchenko_d
CSS
body{
font-family: open sans;
font-size: 10pt;
}
._notification {
position: relative;
top: 20px;
width: 250px;
background: #556472;
border-radius: 10px;
color: white;
left: 0;
right: 0;
margin: 20px auto;
-webkit-transition: 0.2s ease-out;
opacity: 0;
-webkit-transform: translateY(20px);
overflow: hidden;
}
._notification.__shown{
opacity: 1;
-webkit-transform: translateY(0px);
}
._notification.__hidden{
opacity: 0;
-webkit-transform: translateY(20px);
}
._notification ._title{
font-weight: 600;
letter-spacing: 50;
background: rgba(255,255,255,.05);
}
._notification ._content, ._notification ._title {
padding: 10px 20px 10px 10px;
display: block;
}
._notification ._content{
font-size: 10pt;
}
._notification ._bottom_bar{
padding: 10px;
}
._notification > .__hide {
position: absolute;
top: 10px;
right: 10px;
font-style: normal;
}
._notification ._bottom_bar{
text-align: center;
background: rgba(0,0,0,0.1);
}
._notification ._bottom_bar button{
border: none;
padding: 10px 5px;
border-radius: 5px;
min-width: 70px;
margin: 0px 5px;
display: inline-block;
}
._notification ._bottom_bar .confirm{
background: rgb(25, 143, 216);
color: white;
}
._notification ._bottom_bar input{
display: inline-block;
width: 120px;
padding: 9px 10px;
border: none;
border-radius: 5px;
}
JavaScript
function isFn(variable) {
var getType = {};
return variable && getType.toString.call(variable) === '[object Function]';
}
var Counter = function (sec, countdown, callback) {
sec = parseInt(sec);
var span = document.createElement('span'),
cd = countdown || false,
i = cd ? sec : 0;
span.className = "_timer";
span.innerHTML = cd ? '(' + sec + ')' : '(0)';
function oneMoreSec() {
setTimeout(function () {
i = cd ? i - 1 : i + 1;
span.innerHTML = '(' + i + ')';
if (cd && i != 0 || !cd && i != sec) {
oneMoreSec();
} else {
if (isFn(callback)) {
callback();
}
}
}, 1000)
}
oneMoreSec();
return span;
};
var Notification = function (data) {
var div;
function createConfirmButtons(action) {
var wrap = document.createElement('div'),
yesBtn = document.createElement('button'),
noBtn = document.createElement('button');
wrap.className = '_bottom_bar';
wrap.appendChild(noBtn);
wrap.appendChild(yesBtn);
yesBtn.className = 'confirm';
yesBtn.innerHTML = 'Yes';
noBtn.innerHTML = 'No';
yesBtn.onclick = function () {
if (isFn(action)) {
action(true);
}
hide();
}
noBtn.onclick = function () {
if (isFn(action)) {
action(false);
}
hide();
}
return wrap;
}
function createPromptInput(action) {
var wrap = document.createElement('div'),
input = document.createElement('input'),
btn = document.createElement('button');
wrap.className = '_bottom_bar';
wrap.appendChild(input);
wrap.appendChild(btn);
input.name = 'prompt-input';
input.type = 'text';
input.onfocus =...