vendor/assets/javascripts/webshims/shims/form-shim-extend2.js in webshims-rails-1.12.3 vs vendor/assets/javascripts/webshims/shims/form-shim-extend2.js in webshims-rails-1.12.5

- old
+ new

@@ -63,11 +63,11 @@ webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'required', { set: function(value){ $(this).getShadowFocusElement().attr('aria-required', !!(value)+''); }, - initAttr: Modernizr.localstorage //only if we have aria-support + initAttr: true }); webshims.reflectProperties(['input'], ['pattern']); @@ -939,12 +939,11 @@ createPlaceholder = function(elem){ elem = $(elem); return $( hasLabel(elem) ? '<span class="placeholder-text"></span>' : '<label for="'+ elem.prop('id') +'" class="placeholder-text"></label>'); }, pHolder = (function(){ - var delReg = /\n|\r|\f|\t/g, - allowedPlaceholder = { + var allowedPlaceholder = { text: 1, search: 1, url: 1, email: 1, password: 1, @@ -1008,23 +1007,42 @@ }); $.each(['Left', 'Top'], function(i, side){ var size = (parseInt($.css(elem, 'padding'+ side), 10) || 0) + Math.max((parseInt($.css(elem, 'margin'+ side), 10) || 0), 0) + (parseInt($.css(elem, 'border'+ side +'Width'), 10) || 0); data.text.css('padding'+ side, size); }); - + $(elem) - .onWSOff('updateshadowdom', function(){ - var height, width; - if((width = elem.offsetWidth) || (height = elem.offsetHeight)){ - data.text - .css({ - width: width, - height: height - }) - .css($(elem).position()) - ; - } - }, true) + .onWSOff('updateshadowdom', (function(){ + var lastWidth, init, timer; + var jelm = $(elem); + var lastPos = {}; + return function(){ + var width, fn; + + if((width = elem.offsetWidth)){ + + fn = function(){ + var pos = jelm.position(); + if(width !== lastWidth){ + lastWidth = width; + data.text[0].style.width = width +'px'; + } + if(pos.top !== lastPos.top || pos.left !== lastPos.left){ + lastPos = pos; + data.text[0].style.top = pos.top +'px'; + data.text[0].style.left = pos.left +'px'; + } + }; + if(!init){ + fn(); + init = true; + } else { + clearTimeout(timer); + timer = setTimeout(fn, 99); + } + } + }; + })(), true) ; } else { var reset = function(e){ if($(elem).hasClass('placeholder-visible')){