alert-native.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* Native Javascript for Bootstrap 3 | Alert
  2. -------------------------------------------*/
  3. // ALERT DEFINITION
  4. // ================
  5. var Alert = function( element ) {
  6. // initialization element
  7. element = queryElement(element);
  8. // bind, target alert, duration and stuff
  9. var self = this, component = 'alert',
  10. alert = getClosest(element,'.'+component),
  11. triggerHandler = function(){ hasClass(alert,'fade') ? emulateTransitionEnd(alert,transitionEndHandler) : transitionEndHandler(); },
  12. // handlers
  13. clickHandler = function(e){
  14. alert = getClosest(e[target],'.'+component);
  15. element = queryElement('['+dataDismiss+'="'+component+'"]',alert);
  16. element && alert && (element === e[target] || element[contains](e[target])) && self.close();
  17. },
  18. transitionEndHandler = function(){
  19. bootstrapCustomEvent.call(alert, closedEvent, component);
  20. off(element, clickEvent, clickHandler); // detach it's listener
  21. alert[parentNode].removeChild(alert);
  22. };
  23. // public method
  24. this.close = function() {
  25. if ( alert && element && hasClass(alert,inClass) ) {
  26. bootstrapCustomEvent.call(alert, closeEvent, component);
  27. removeClass(alert,inClass);
  28. alert && triggerHandler();
  29. }
  30. };
  31. // init
  32. if ( !(stringAlert in element ) ) { // prevent adding event handlers twice
  33. on(element, clickEvent, clickHandler);
  34. }
  35. element[stringAlert] = self;
  36. };
  37. // ALERT DATA API
  38. // ==============
  39. supports[push]([stringAlert, Alert, '['+dataDismiss+'="alert"]']);