Guest User

Untitled

a guest
Apr 20th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. if ($('.js-alert-message').length) {
  2. var $alertWrapper = $('.js-alert-message'),
  3. $alertMessage = $alertWrapper.find('.alert__message'),
  4. delay = 8000,
  5. curentState,
  6. $prevButton,
  7. prevTimerShow,
  8. prevTimerHide;
  9.  
  10. function hideMessage(_classes, callback) {
  11. var _classList = _classes || 'news success fail';
  12. $alertWrapper.toggleClass('is-active');
  13.  
  14. $('.js-alert').attr('disabled', 'disabled');
  15.  
  16. var timer = setTimeout(function () {
  17. $alertWrapper.toggleClass(_classList);
  18. $alertMessage.html('');
  19. $('.js-alert').removeAttr('disabled');
  20.  
  21. if (typeof callback !== 'undefined') {
  22. callback();
  23. }
  24. }, 500);
  25.  
  26. return timer;
  27. }
  28.  
  29. function fadeToggle(_classes, _delay) {
  30. $alertWrapper.toggleClass(_classes);
  31. $alertWrapper.toggleClass('is-active');
  32.  
  33. var timer = setTimeout(function() {
  34. hideMessage(_classes);
  35. }, _delay);
  36.  
  37. return timer;
  38. }
  39.  
  40. function clickHandler() {
  41. var $this = $(this),
  42. message = $this.attr('data-message');
  43.  
  44. if ($prevButton === this) {
  45. return;
  46. }
  47.  
  48. if ($(this).attr('disabled')) {
  49. return;
  50. }
  51.  
  52. function fadeInMessage() {
  53. curentState = $this.attr('data-type');
  54. $alertMessage.html(message);
  55. return fadeToggle(curentState, delay);
  56. }
  57.  
  58. if ($alertWrapper.hasClass('is-active')) {
  59. hideMessage(curentState, function () {
  60. clearTimeout(prevTimerShow);
  61. prevTimerShow = fadeInMessage();
  62. });
  63. } else {
  64. prevTimerShow = fadeInMessage();
  65. }
  66.  
  67. $prevButton = this;
  68. }
  69.  
  70. $('.js-alert').on('click', clickHandler);
  71. $('.js-alert-message .alert__close').on('click', hideMessage);
  72. }
Add Comment
Please, Sign In to add comment