71 lines
2.2 KiB
JavaScript
71 lines
2.2 KiB
JavaScript
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, one-var, one-var-declaration-per-line, no-param-reassign, quotes, quote-props, prefer-template, comma-dangle, max-len */
|
|
|
|
window.Flash = (function() {
|
|
var hideFlash;
|
|
|
|
hideFlash = function() {
|
|
return $(this).fadeOut();
|
|
};
|
|
|
|
/**
|
|
* Flash banner supports different types of Flash configurations
|
|
* along with ability to provide actionConfig which can be used to show
|
|
* additional action or link on banner next to message
|
|
*
|
|
* @param {String} message Flash message
|
|
* @param {String} type Type of Flash, it can be `notice` or `alert` (default)
|
|
* @param {Object} parent Reference to Parent element under which Flash needs to appear
|
|
* @param {Object} actionConfig Map of config to show action on banner
|
|
* @param {String} href URL to which action link should point (default '#')
|
|
* @param {String} title Title of action
|
|
* @param {Function} clickHandler Method to call when action is clicked on
|
|
*/
|
|
function Flash(message, type, parent, actionConfig) {
|
|
var flash, textDiv, actionLink;
|
|
if (type == null) {
|
|
type = 'alert';
|
|
}
|
|
if (parent == null) {
|
|
parent = null;
|
|
}
|
|
if (parent) {
|
|
this.flashContainer = parent.find('.flash-container');
|
|
} else {
|
|
this.flashContainer = $('.flash-container-page');
|
|
}
|
|
this.flashContainer.html('');
|
|
flash = $('<div/>', {
|
|
"class": "flash-" + type
|
|
});
|
|
flash.on('click', hideFlash);
|
|
textDiv = $('<div/>', {
|
|
"class": 'flash-text',
|
|
text: message
|
|
});
|
|
textDiv.appendTo(flash);
|
|
|
|
if (actionConfig) {
|
|
const actionLinkConfig = {
|
|
class: 'flash-action',
|
|
href: actionConfig.href || '#',
|
|
text: actionConfig.title
|
|
};
|
|
|
|
if (!actionConfig.href) {
|
|
actionLinkConfig.role = 'button';
|
|
}
|
|
|
|
actionLink = $('<a/>', actionLinkConfig);
|
|
|
|
actionLink.appendTo(flash);
|
|
this.flashContainer.on('click', '.flash-action', actionConfig.clickHandler);
|
|
}
|
|
if (this.flashContainer.parent().hasClass('content-wrapper')) {
|
|
textDiv.addClass('container-fluid container-limited');
|
|
}
|
|
flash.appendTo(this.flashContainer);
|
|
this.flashContainer.show();
|
|
}
|
|
|
|
return Flash;
|
|
})();
|