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