move jquery.are-you-sure to npm/webpack (#10063)
	
		
	
				
					
				
			
							parent
							
								
									169bb55ec6
								
							
						
					
					
						commit
						35ada598cc
					
				@ -1,18 +0,0 @@ | 
				
			|||||||
The MIT License | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of | 
					 | 
				
			||||||
this software and associated documentation files (the 'Software'), to deal in the | 
					 | 
				
			||||||
Software without restriction, including without limitation the rights to use, | 
					 | 
				
			||||||
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the | 
					 | 
				
			||||||
Software, and to permit persons to whom the Software is furnished to do so, | 
					 | 
				
			||||||
subject to the following conditions: | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The above copyright notice and this permission notice shall be included in all | 
					 | 
				
			||||||
copies or substantial portions of the Software. | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, | 
					 | 
				
			||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A | 
					 | 
				
			||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | 
					 | 
				
			||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | 
					 | 
				
			||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | 
					 | 
				
			||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 
					 | 
				
			||||||
@ -1,192 +0,0 @@ | 
				
			|||||||
/*! | 
					 | 
				
			||||||
 * jQuery Plugin: Are-You-Sure (Dirty Form Detection) | 
					 | 
				
			||||||
 * https://github.com/codedance/jquery.AreYouSure/
 | 
					 | 
				
			||||||
 * | 
					 | 
				
			||||||
 * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/
 | 
					 | 
				
			||||||
 * Dual licensed under the MIT or GPL Version 2 licenses. | 
					 | 
				
			||||||
 * http://jquery.org/license
 | 
					 | 
				
			||||||
 * | 
					 | 
				
			||||||
 * Author:  chris.dance@papercut.com | 
					 | 
				
			||||||
 * Version: 1.9.0 | 
					 | 
				
			||||||
 * Date:    13th August 2014 | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
(function($) { | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  $.fn.areYouSure = function(options) { | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
    var settings = $.extend( | 
					 | 
				
			||||||
      { | 
					 | 
				
			||||||
        'message' : 'You have unsaved changes!', | 
					 | 
				
			||||||
        'dirtyClass' : 'dirty', | 
					 | 
				
			||||||
        'change' : null, | 
					 | 
				
			||||||
        'silent' : false, | 
					 | 
				
			||||||
        'addRemoveFieldsMarksDirty' : false, | 
					 | 
				
			||||||
        'fieldEvents' : 'change keyup propertychange input', | 
					 | 
				
			||||||
        'fieldSelector': ":input:not(input[type=submit]):not(input[type=button])" | 
					 | 
				
			||||||
      }, options); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var getValue = function($field) { | 
					 | 
				
			||||||
      if ($field.hasClass('ays-ignore') | 
					 | 
				
			||||||
          || $field.hasClass('aysIgnore') | 
					 | 
				
			||||||
          || $field.attr('data-ays-ignore') | 
					 | 
				
			||||||
          || $field.attr('name') === undefined) { | 
					 | 
				
			||||||
        return null; | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if ($field.is(':disabled')) { | 
					 | 
				
			||||||
        return 'ays-disabled'; | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      var val; | 
					 | 
				
			||||||
      var type = $field.attr('type'); | 
					 | 
				
			||||||
      if ($field.is('select')) { | 
					 | 
				
			||||||
        type = 'select'; | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      switch (type) { | 
					 | 
				
			||||||
        case 'checkbox': | 
					 | 
				
			||||||
        case 'radio': | 
					 | 
				
			||||||
          val = $field.is(':checked'); | 
					 | 
				
			||||||
          break; | 
					 | 
				
			||||||
        case 'select': | 
					 | 
				
			||||||
          val = ''; | 
					 | 
				
			||||||
          $field.find('option').each(function(o) { | 
					 | 
				
			||||||
            var $option = $(this); | 
					 | 
				
			||||||
            if ($option.is(':selected')) { | 
					 | 
				
			||||||
              val += $option.val(); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
          }); | 
					 | 
				
			||||||
          break; | 
					 | 
				
			||||||
        default: | 
					 | 
				
			||||||
          val = $field.val(); | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      return val; | 
					 | 
				
			||||||
    }; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var storeOrigValue = function($field) { | 
					 | 
				
			||||||
      $field.data('ays-orig', getValue($field)); | 
					 | 
				
			||||||
    }; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var checkForm = function(evt) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      var isFieldDirty = function($field) { | 
					 | 
				
			||||||
        var origValue = $field.data('ays-orig'); | 
					 | 
				
			||||||
        if (undefined === origValue) { | 
					 | 
				
			||||||
          return false; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        return (getValue($field) != origValue); | 
					 | 
				
			||||||
      }; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      var $form = ($(this).is('form')) 
 | 
					 | 
				
			||||||
                    ? $(this) | 
					 | 
				
			||||||
                    : $(this).parents('form'); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Test on the target first as it's the most likely to be dirty
 | 
					 | 
				
			||||||
      if (isFieldDirty($(evt.target))) { | 
					 | 
				
			||||||
        setDirtyStatus($form, true); | 
					 | 
				
			||||||
        return; | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      $fields = $form.find(settings.fieldSelector); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (settings.addRemoveFieldsMarksDirty) {              
 | 
					 | 
				
			||||||
        // Check if field count has changed
 | 
					 | 
				
			||||||
        var origCount = $form.data("ays-orig-field-count"); | 
					 | 
				
			||||||
        if (origCount != $fields.length) { | 
					 | 
				
			||||||
          setDirtyStatus($form, true); | 
					 | 
				
			||||||
          return; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Brute force - check each field
 | 
					 | 
				
			||||||
      var isDirty = false; | 
					 | 
				
			||||||
      $fields.each(function() { | 
					 | 
				
			||||||
        $field = $(this); | 
					 | 
				
			||||||
        if (isFieldDirty($field)) { | 
					 | 
				
			||||||
          isDirty = true; | 
					 | 
				
			||||||
          return false; // break
 | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
      }); | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
      setDirtyStatus($form, isDirty); | 
					 | 
				
			||||||
    }; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var initForm = function($form) { | 
					 | 
				
			||||||
      var fields = $form.find(settings.fieldSelector); | 
					 | 
				
			||||||
      $(fields).each(function() { storeOrigValue($(this)); }); | 
					 | 
				
			||||||
      $(fields).unbind(settings.fieldEvents, checkForm); | 
					 | 
				
			||||||
      $(fields).bind(settings.fieldEvents, checkForm); | 
					 | 
				
			||||||
      $form.data("ays-orig-field-count", $(fields).length); | 
					 | 
				
			||||||
      setDirtyStatus($form, false); | 
					 | 
				
			||||||
    }; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var setDirtyStatus = function($form, isDirty) { | 
					 | 
				
			||||||
      var changed = isDirty != $form.hasClass(settings.dirtyClass); | 
					 | 
				
			||||||
      $form.toggleClass(settings.dirtyClass, isDirty); | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
      // Fire change event if required
 | 
					 | 
				
			||||||
      if (changed) { | 
					 | 
				
			||||||
        if (settings.change) settings.change.call($form, $form); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (isDirty) $form.trigger('dirty.areYouSure', [$form]); | 
					 | 
				
			||||||
        if (!isDirty) $form.trigger('clean.areYouSure', [$form]); | 
					 | 
				
			||||||
        $form.trigger('change.areYouSure', [$form]); | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
    }; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var rescan = function() { | 
					 | 
				
			||||||
      var $form = $(this); | 
					 | 
				
			||||||
      var fields = $form.find(settings.fieldSelector); | 
					 | 
				
			||||||
      $(fields).each(function() { | 
					 | 
				
			||||||
        var $field = $(this); | 
					 | 
				
			||||||
        if (!$field.data('ays-orig')) { | 
					 | 
				
			||||||
          storeOrigValue($field); | 
					 | 
				
			||||||
          $field.bind(settings.fieldEvents, checkForm); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
      }); | 
					 | 
				
			||||||
      // Check for changes while we're here
 | 
					 | 
				
			||||||
      $form.trigger('checkform.areYouSure'); | 
					 | 
				
			||||||
    }; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var reinitialize = function() { | 
					 | 
				
			||||||
      initForm($(this)); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!settings.silent && !window.aysUnloadSet) { | 
					 | 
				
			||||||
      window.aysUnloadSet = true; | 
					 | 
				
			||||||
      $(window).bind('beforeunload', function() { | 
					 | 
				
			||||||
        $dirtyForms = $("form").filter('.' + settings.dirtyClass); | 
					 | 
				
			||||||
        if ($dirtyForms.length == 0) { | 
					 | 
				
			||||||
          return; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        // Prevent multiple prompts - seen on Chrome and IE
 | 
					 | 
				
			||||||
        if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) { | 
					 | 
				
			||||||
          if (window.aysHasPrompted) { | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
          } | 
					 | 
				
			||||||
          window.aysHasPrompted = true; | 
					 | 
				
			||||||
          window.setTimeout(function() {window.aysHasPrompted = false;}, 900); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        return settings.message; | 
					 | 
				
			||||||
      }); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return this.each(function(elem) { | 
					 | 
				
			||||||
      if (!$(this).is('form')) { | 
					 | 
				
			||||||
        return; | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
      var $form = $(this); | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
      $form.submit(function() { | 
					 | 
				
			||||||
        $form.removeClass(settings.dirtyClass); | 
					 | 
				
			||||||
      }); | 
					 | 
				
			||||||
      $form.bind('reset', function() { setDirtyStatus($form, false); }); | 
					 | 
				
			||||||
      // Add a custom events
 | 
					 | 
				
			||||||
      $form.bind('rescan.areYouSure', rescan); | 
					 | 
				
			||||||
      $form.bind('reinitialize.areYouSure', reinitialize); | 
					 | 
				
			||||||
      $form.bind('checkform.areYouSure', checkForm); | 
					 | 
				
			||||||
      initForm($form); | 
					 | 
				
			||||||
    }); | 
					 | 
				
			||||||
  }; | 
					 | 
				
			||||||
})(jQuery); | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue