vendor/assets/javascripts/webshims/shims/combos/30.js in webshims-rails-1.11.1 vs vendor/assets/javascripts/webshims/shims/combos/30.js in webshims-rails-1.11.2
- old
+ new
@@ -4,11 +4,11 @@
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
webshims.assumeARIA = supportGetSetAttribute || 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");
+ 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.");
}
@@ -557,11 +557,11 @@
this.width = docObserve.getWidth();
setInterval(this.test, 600);
$(this.test);
webshims.ready('WINDOWLOAD', this.test);
$(document).on('updatelayout', this.handler);
- $(window).bind('resize', this.handler);
+ $(window).on('resize', this.handler);
(function(){
var oldAnimate = $.fn.animate;
var animationTimer;
$.fn.animate = function(){
@@ -579,10 +579,17 @@
webshims.docObserve = function(){
webshims.ready('DOM', function(){
docObserve.start();
+ if($.support.boxSizing == null){
+ $(function(){
+ if($.support.boxSizing){
+ docObserve.handler({type: 'boxsizing'});
+ }
+ });
+ }
});
};
return function(nativeElem, shadowElem, opts){
if(nativeElem && shadowElem){
opts = opts || {};
@@ -739,11 +746,16 @@
},
defineNodeNameProperty: function(nodeName, prop, descs){
havePolyfill[prop] = true;
if(descs.reflect){
- webshims.propTypes[descs.propType || 'standard'](descs, prop);
+ if(descs.propType && !webshims.propTypes[descs.propType]){
+ webshims.error('could not finde propType '+ descs.propType);
+ } else {
+ webshims.propTypes[descs.propType || 'standard'](descs, prop);
+ }
+
}
['prop', 'attr', 'removeAttr'].forEach(function(type){
var desc = descs[type];
if(desc){
@@ -925,11 +937,11 @@
var currentLang;
var shortLang;
var notLocal = /:\/\/|^\.*\//;
var loadRemoteLang = function(data, lang, options){
var langSrc;
- if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
+ if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
data.loading = true;
langSrc = options.langSrc;
if(!notLocal.test(langSrc)){
langSrc = webshims.cfg.basePath+langSrc;
}
@@ -1085,11 +1097,10 @@
}
}
});
})(webshims.$, document);
-
webshims.register('form-core', function($, webshims, window, document, undefined, options){
"use strict";
webshims.capturingEventPrevented = function(e){
if(!e._isPolyfilled){
@@ -1567,16 +1578,16 @@
/*
* implement propType "element" currently only used for list-attribute (will be moved to dom-extend, if needed)
*/
- webshims.propTypes.element = function(descs){
+ webshims.propTypes.element = function(descs, name){
webshims.createPropDefault(descs, 'attr');
if(descs.prop){return;}
descs.prop = {
get: function(){
- var elem = $.attr(this, 'list');
+ var elem = $.attr(this, name);
if(elem){
elem = document.getElementById(elem);
if(elem && descs.propNodeName && !$.nodeName(elem, descs.propNodeName)){
elem = null;
}
@@ -1596,12 +1607,20 @@
var formsCFG = $.webshims.cfg.forms;
var listSupport = Modernizr.input.list;
if(listSupport && !formsCFG.customDatalist){return;}
var initializeDatalist = function(){
+
+ var updateDatlistAndOptions = function(){
+ var id;
+ if(!$.data(this, 'datalistWidgetData') && (id = $.prop(this, 'id'))){
+ $('input[list="'+ id +'"], input[data-wslist="'+ id +'"]').eq(0).attr('list', id);
+ } else {
+ $(this).triggerHandler('updateDatalist');
+ }
+ };
-
var inputListProto = {
//override autocomplete
autocomplete: {
attr: {
get: function(){
@@ -1674,10 +1693,11 @@
webshims.objectCreate(shadowListProto, undefined, {
input: elem,
id: value,
datalist: $.prop(elem, 'list')
});
+ elem.setAttribute('data-wslist', value);
} else {
elem.setAttribute('list', value);
}
$(elem).triggerHandler('listdatalistchange');
}
@@ -1685,21 +1705,40 @@
initAttr: true,
reflect: true,
propType: 'element',
propNodeName: 'datalist'
};
+ } else {
+ webshims.defineNodeNameProperties('input', {
+ list: {
+ attr: {
+ get: function(){
+ var val = webshims.contentAttr(this, 'list');
+ return (val == null) ? undefined : val;
+ },
+ set: function(value){
+ var elem = this;
+ webshims.contentAttr(elem, 'list', value);
+ webshims.objectCreate(options.shadowListProto, undefined, {input: elem, id: value, datalist: $.prop(elem, 'list')});
+ $(elem).triggerHandler('listdatalistchange');
+ }
+ },
+ initAttr: true,
+ reflect: true,
+ propType: 'element',
+ propNodeName: 'datalist'
+ }
+ });
}
webshims.defineNodeNameProperties('input', inputListProto);
webshims.addReady(function(context, contextElem){
contextElem
.filter('datalist > select, datalist, datalist > option, datalist > select > option')
.closest('datalist')
- .each(function(){
- $(this).triggerHandler('updateDatalist');
- })
+ .each(updateDatlistAndOptions)
;
});
};
@@ -1740,9 +1779,10 @@
this.datalist = datalist;
this.id = opts.id;
this.hasViewableData = true;
this._autocomplete = $.attr(opts.input, 'autocomplete');
$.data(opts.input, 'datalistWidget', this);
+ $.data(datalist, 'datalistWidgetData', this);
lazyLoad('WINDOWLOAD');
if(webshims.isReady('form-datalist-lazy')){
this._lazyCreate(opts);
\ No newline at end of file