| 1 |
2
|
Manuela
|
// Native Javascript for Bootstrap 3 | Alert
|
| 2 |
|
|
// by dnp_theme
|
| 3 |
|
|
|
| 4 |
|
|
(function(factory){
|
| 5 |
|
|
|
| 6 |
|
|
// CommonJS/RequireJS and "native" compatibility
|
| 7 |
|
|
if(typeof module !== "undefined" && typeof exports == "object") {
|
| 8 |
|
|
// A commonJS/RequireJS environment
|
| 9 |
|
|
if(typeof window != "undefined") {
|
| 10 |
|
|
// Window and document exist, so return the factory's return value.
|
| 11 |
|
|
module.exports = factory();
|
| 12 |
|
|
} else {
|
| 13 |
|
|
// Let the user give the factory a Window and Document.
|
| 14 |
|
|
module.exports = factory;
|
| 15 |
|
|
}
|
| 16 |
|
|
} else {
|
| 17 |
|
|
// Assume a traditional browser.
|
| 18 |
|
|
window.Alert = factory();
|
| 19 |
|
|
}
|
| 20 |
|
|
|
| 21 |
|
|
})(function(root){
|
| 22 |
|
|
|
| 23 |
|
|
// ALERT DEFINITION
|
| 24 |
|
|
// ===================
|
| 25 |
|
|
var Alert = function( element ) {
|
| 26 |
|
|
this.btn = typeof element === 'object' ? element : document.querySelector(element);
|
| 27 |
|
|
this.alert = null;
|
| 28 |
|
|
this.duration = 150; // default alert transition duration
|
| 29 |
|
|
this.init();
|
| 30 |
|
|
}
|
| 31 |
|
|
|
| 32 |
|
|
// ALERT METHODS
|
| 33 |
|
|
// ================
|
| 34 |
|
|
Alert.prototype = {
|
| 35 |
|
|
|
| 36 |
|
|
init : function() {
|
| 37 |
|
|
this.actions();
|
| 38 |
|
|
document.addEventListener('click', this.close, false); //delegate to all alerts, including those inserted later into the DOM
|
| 39 |
|
|
},
|
| 40 |
|
|
|
| 41 |
|
|
actions : function() {
|
| 42 |
|
|
var self = this;
|
| 43 |
|
|
|
| 44 |
|
|
this.close = function(e) {
|
| 45 |
|
|
var target = e.target;
|
| 46 |
|
|
self.btn = target.getAttribute('data-dismiss') === 'alert' && target.className === 'close' ? target : target.parentNode;
|
| 47 |
|
|
self.alert = self.btn.parentNode;
|
| 48 |
|
|
|
| 49 |
|
|
if ( self.alert !== null && self.btn.getAttribute('data-dismiss') === 'alert' && /in/.test(self.alert.className) ) {
|
| 50 |
|
|
self.alert.className = self.alert.className.replace(' in','');
|
| 51 |
|
|
setTimeout(function() {
|
| 52 |
|
|
self.alert && self.alert.parentNode.removeChild(self.alert);
|
| 53 |
|
|
}, self.duration);
|
| 54 |
|
|
}
|
| 55 |
|
|
|
| 56 |
|
|
}
|
| 57 |
|
|
}
|
| 58 |
|
|
}
|
| 59 |
|
|
|
| 60 |
|
|
// ALERT DATA API
|
| 61 |
|
|
// =================
|
| 62 |
|
|
var Alerts = document.querySelectorAll('[data-dismiss="alert"]'), i = 0, all = Alerts.length;
|
| 63 |
|
|
for (i;i<all;i++) {
|
| 64 |
|
|
new Alert(Alerts[i]);
|
| 65 |
|
|
}
|
| 66 |
|
|
|
| 67 |
|
|
return Alert;
|
| 68 |
|
|
|
| 69 |
|
|
});
|