44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
// Simple notification helper used by blade templates (fallback to Bootstrap alerts)
|
|
window.growl = function(message, type) {
|
|
var alertTypes = {
|
|
success: 'alert-success',
|
|
error: 'alert-danger',
|
|
warning: 'alert-warning',
|
|
info: 'alert-info'
|
|
};
|
|
var cssClass = alertTypes[type] || alertTypes.info;
|
|
var $container = $('#growl-container');
|
|
|
|
if (!$container.length) {
|
|
$container = $('<div id="growl-container" class="growl-container position-fixed w-100" style="top: 1rem; left: 0; z-index: 1080; pointer-events: none;"></div>');
|
|
$('body').append($container);
|
|
}
|
|
|
|
var $alert = $('<div class="alert ' + cssClass + ' alert-dismissible fade show mx-auto shadow" role="alert" style="max-width: 420px; pointer-events: all;"></div>');
|
|
$alert.append($('<span></span>').text(message));
|
|
$alert.append('<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>');
|
|
$container.append($alert);
|
|
|
|
setTimeout(function() {
|
|
$alert.alert('close');
|
|
}, 4000);
|
|
};
|
|
|
|
// Prevent closing from click inside dropdown
|
|
$(document).on('click', '.dropdown-menu', function (e) {
|
|
e.stopPropagation();
|
|
});
|
|
|
|
// make it as accordion for smaller screens
|
|
if ($(window).width() < 992) {
|
|
$('.dropdown-menu a').click(function(e) {
|
|
e.preventDefault();
|
|
if ($(this).next('.submenu').length) {
|
|
$(this).next('.submenu').toggle();
|
|
}
|
|
$('.dropdown').on('hide.bs.dropdown', function () {
|
|
$(this).find('.submenu').hide();
|
|
});
|
|
});
|
|
}
|