vendor/assets/javascripts/webshims/shims/combos/15.js in webshims-rails-1.10.10 vs vendor/assets/javascripts/webshims/shims/combos/15.js in webshims-rails-1.10.11
- old
+ new
@@ -1,21 +1,22 @@
//DOM-Extension helper
webshims.register('dom-extend', function($, webshims, window, document, undefined){
"use strict";
+ var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
+ var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
+ webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
- webshims.assumeARIA = $.support.getSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
-
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
webshims.error("IE browser modes are busted in IE10. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
}
if(!$.parseHTML){
webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
}
- if(webshims.cfg.extendNative === 1){
- webshims.warn("extendNative configuration will be set to false by default with next release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
+ if(webshims.cfg.extendNative === undefined){
+ webshims.warn("extendNative configuration was set to false by default with this release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
}
if (!webshims.cfg.no$Switch) {
var switch$ = function(){
if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
@@ -683,11 +684,11 @@
var ret;
if(href == null){return '';}
anchor.setAttribute('href', href+'' );
- if(!$.support.hrefNormalized){
+ if(!supportHrefNormalized){
try {
$(anchor).insertAfter(this);
ret = anchor.getAttribute('href', 4);
} catch(er){
ret = anchor.getAttribute('href', 4);
@@ -1124,10 +1125,14 @@
var toLoad = ['form-validation'];
if(options.lazyCustomMessages){
options.customMessages = true;
toLoad.push('form-message');
}
+ if(options.customDatalist){
+ options.fD = true;
+ toLoad.push('form-datalist');
+ }
if(options.addValidators){
toLoad.push('form-validators');
}
webshims.reTest(toLoad);
$(document).off('.lazyloadvalidation');
@@ -1262,10 +1267,18 @@
if(prop && name != 'valid' && message[name]){
message = message[name];
return false;
}
});
+ if(typeof message == 'object'){
+ if(validity.typeMismatch && message.badInput){
+ message = message.badInput;
+ }
+ if(validity.badInput && message.typeMismatch){
+ message = message.typeMismatch;
+ }
+ }
}
}
if(typeof message == 'object'){
message = message.defaultMessage;
@@ -1417,10 +1430,11 @@
//contsrain-validation-api
var validityPrototype = {
customError: false,
typeMismatch: false,
+ badInput: false,
rangeUnderflow: false,
rangeOverflow: false,
stepMismatch: false,
tooLong: false,
patternMismatch: false,
@@ -1476,24 +1490,10 @@
return ret;
},
tooLong: function(){
return false;
},
- typeMismatch: function (input, val, cache){
- if(val === '' || cache.nodeName == 'select'){return false;}
- var ret = false;
- if(!('type' in cache)){
- cache.type = getType(input[0]);
- }
-
- if(typeModels[cache.type] && typeModels[cache.type].mismatch){
- ret = typeModels[cache.type].mismatch(val, input);
- } else if('validity' in input[0]){
- ret = input[0].validity.typeMismatch;
- }
- return ret;
- },
patternMismatch: function(input, val, cache) {
if(val === '' || cache.nodeName == 'select'){return false;}
var pattern = input.attr('pattern');
if(!pattern){return false;}
try {
@@ -1506,10 +1506,27 @@
return !(pattern.test(val));
}
}
;
+$.each({typeMismatch: 'mismatch', badInput: 'bad'}, function(name, fn){
+ validityRules[name] = function (input, val, cache){
+ if(val === '' || cache.nodeName == 'select'){return false;}
+ var ret = false;
+ if(!('type' in cache)){
+ cache.type = getType(input[0]);
+ }
+
+ if(typeModels[cache.type] && typeModels[cache.type][fn]){
+ ret = typeModels[cache.type][fn](val, input);
+ } else if('validity' in input[0] && ('name' in input[0].validity)){
+ ret = input[0].validity[name] || false;
+ }
+ return ret;
+ };
+});
+
webshims.addValidityRule = function(type, fn){
validityRules[type] = fn;
};
$.event.special.invalid = {
@@ -1551,21 +1568,22 @@
}
isSubmit = false;
}
};
+var supportSubmitBubbles = !('submitBubbles' in $.support) || $.support.submitBubbles;
var addSubmitBubbles = function(form){
- if (!$.support.submitBubbles && form && typeof form == 'object' && !form._submit_attached ) {
+ if (!supportSubmitBubbles && form && typeof form == 'object' && !form._submit_attached ) {
$.event.add( form, 'submit._submit', function( event ) {
event._submit_bubble = true;
});
form._submit_attached = true;
}
};
-if(!$.support.submitBubbles && $.event.special.submit){
+if(!supportSubmitBubbles && $.event.special.submit){
$.event.special.submit.setup = function() {
// Only need this for delegated form submit events
if ( $.nodeName( this, "form" ) ) {
return false;
}
@@ -3130,23 +3148,25 @@
}); //webshims.ready end
}//end formvalidation
webshims.register('form-message', function($, webshims, window, document, undefined, options){
"use strict";
- if(options.overrideMessages){
+ if(options.lazyCustomMessages){
options.customMessages = true;
- webshims.error('overrideMessages is deprecated. use customMessages instead.');
}
var validityMessages = webshims.validityMessages;
var implementProperties = options.customMessages ? ['customValidationMessage'] : [];
validityMessages.en = $.extend(true, {
typeMismatch: {
defaultMessage: 'Please enter a valid value.',
email: 'Please enter an email address.',
- url: 'Please enter a URL.',
+ url: 'Please enter a URL.'
+ },
+ badInput: {
+ defaultMessage: 'Please enter a valid value.',
number: 'Please enter a number.',
date: 'Please enter a date.',
time: 'Please enter a time.',
range: 'Invalid input.',
month: 'Please enter a valid value.',
@@ -3195,18 +3215,21 @@
validityMessages.de = $.extend(true, {
typeMismatch: {
defaultMessage: '{%value} ist in diesem Feld nicht zulässig.',
email: '{%value} ist keine gültige E-Mail-Adresse.',
- url: '{%value} ist kein(e) gültige(r) Webadresse/Pfad.',
- number: '{%value} ist keine Nummer.',
- date: '{%value} ist kein Datum.',
- time: '{%value} ist keine Uhrzeit.',
- month: '{%value} ist in diesem Feld nicht zulässig.',
- range: '{%value} ist keine Nummer.',
- "datetime-local": '{%value} ist kein Datum-Uhrzeit Format.'
+ url: '{%value} ist kein(e) gültige(r) Webadresse/Pfad.'
},
+ badInput: {
+ defaultMessage: 'Geben Sie einen zulässigen Wert ein.',
+ number: 'Geben Sie eine Nummer ein.',
+ date: 'Geben Sie ein Datum ein.',
+ time: 'Geben Sie eine Uhrzeit ein.',
+ month: 'Geben Sie einen Monat mit Jahr ein.',
+ range: 'Geben Sie eine Nummer.',
+ "datetime-local": 'Geben Sie ein Datum mit Uhrzeit ein.'
+ },
rangeUnderflow: {
defaultMessage: '{%value} ist zu niedrig. {%min} ist der unterste Wert, den Sie benutzen können.'
},
rangeOverflow: {
defaultMessage: '{%value} ist zu hoch. {%max} ist der oberste Wert, den Sie benutzen können.'
@@ -3249,15 +3272,21 @@
max: 1
};
webshims.createValidationMessage = function(elem, name){
var widget;
- var message = getMessageFromObj(currentValidationMessage[name], elem);
var type = $.prop(elem, 'type');
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
+ if(!message && name == 'badInput'){
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
+ }
+ if(!message && name == 'typeMismatch'){
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
+ }
if(!message){
message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+$.webshims.activeLang());
+ webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
}
if(message){
['value', 'min', 'max', 'title', 'maxlength', 'label'].forEach(function(attr){
if(message.indexOf('{%'+attr) === -1){return;}
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -3296,24 +3325,18 @@
}
});
webshims.activeLang({
register: 'form-core',
callback: function(val){
- $.each(validityMessages, function(i, val){
- if(validityMessages[val]){
- currentValidationMessage = validityMessages[val];
- return false;
- }
- });
+ if(validityMessages[val]){
+ currentValidationMessage = validityMessages[val];
+ }
}
});
implementProperties.forEach(function(messageProp){
- var skipNames = {
- valid: 1,
- badInput: 1
- };
+
webshims.defineNodeNamesProperty(['fieldset', 'output', 'button'], messageProp, {
prop: {
value: '',
writeable: false
}
@@ -3338,20 +3361,18 @@
if(validity.customError && elem.nodeName){
message = (Modernizr.formvalidation && !webshims.bugs.bustedValidity && desc.prop._supget) ? desc.prop._supget.call(elem) : webshims.data(elem, 'customvalidationMessage');
if(message){return message;}
}
$.each(validity, function(name, prop){
- if(skipNames[name] || !prop){return;}
+ if(name == 'valid' || !prop){return;}
message = webshims.createValidationMessage(elem, name);
if(message){
return false;
}
});
- if(!message && validity.badInput){
- message = webshims.createValidationMessage(elem, 'typeMismatch') || webshims.createValidationMessage(elem, 'valueMissing');
- }
+
return message || '';
},
writeable: false
}
});
@@ -3455,37 +3476,9 @@
}
}
}
}
};
-
- if(formsCFG.customDatalist && (!listSupport || !('selectedOption' in $('<input />')[0]))){
- //currently not supported x-browser (FF4 has not implemented and is not polyfilled )
- inputListProto.selectedOption = {
- prop: {
- writeable: false,
- get: function(){
- var elem = this;
- var list = $.prop(elem, 'list');
- var ret = null;
- var value, options;
- if(!list){return ret;}
- value = $.prop(elem, 'value');
- if(!value){return ret;}
- options = $.prop(list, 'options');
- if(!options.length){return ret;}
- $.each(options, function(i, option){
- if(value == $.prop(option, 'value')){
- ret = option;
- return false;
- }
- });
- return ret;
- }
- }
- };
- }
-
if(listSupport){
//options only return options, if option-elements are rooted: but this makes this part of HTML5 less backwards compatible
if(!($('<datalist><select><option></option></select></datalist>').prop('options') || []).length ){
webshims.defineNodeNameProperty('datalist', 'options', {
\ No newline at end of file