Skip to content

Instantly share code, notes, and snippets.

@jstabler
Last active August 29, 2015 14:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jstabler/c98920f1e4d312e3d48c to your computer and use it in GitHub Desktop.
Save jstabler/c98920f1e4d312e3d48c to your computer and use it in GitHub Desktop.
A flash messages to body or container.
function flashMessage(title, message, container, timeout) {
/*
* Add a flash message to the body or container
* Created by Jacob Stabler - http://jstabler.com
* Example: flashMessage('Error', 'This is an error message', null, 3000);
*/
var title = title || 'Notification';
var message = message || 'No message';
var container = container || document.body;
var timeout = timeout || null;
var messageElement;
function createMessageElement() {
var titleClass = title.replace(/\s+/g, '-').toLowerCase();
var messageClose = document.createElement('span')
messageClose.className = 'flash-message--close';
messageClose.innerHTML = 'Close';
messageElement = document.createElement('div');
messageElement.className = 'flash-message flash-message--' + titleClass;
messageElement.innerHTML = ''
+ '<h4 class="flash-message--title">' + title + '</h4>'
+ '<div class="flash-message--text">' + message + '</div>';
// add message to container or body
container.insertBefore(messageElement, container.childNodes[0]);
// add close target to the message
messageElement.insertBefore(messageClose, messageElement.childNodes[0]);
// bind close click and touchend to close target
messageClose.addEventListener('click', removeMessageElement);
messageClose.addEventListener('touchend', removeMessageElement);
}
function removeMessageElement() {
if (document.contains(messageElement)) {
messageElement.parentNode.removeChild(messageElement);
}
}
createMessageElement();
// remove message after timeout has passed
if (timeout != null) setTimeout(removeMessageElement, timeout);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment