vendor/assets/javascripts/webshims/shims/combos/24.js in webshims-rails-1.10.10 vs vendor/assets/javascripts/webshims/shims/combos/24.js in webshims-rails-1.10.11

- old
+ new

@@ -1,11 +1,11 @@ webshims.register('form-validation', function($, webshims, window, document, undefined, options){ var isWebkit = 'webkitURL' in window; var chromeBugs = isWebkit && Modernizr.formvalidation && !webshims.bugs.bustedValidity; var webkitVersion = chromeBugs && parseFloat((navigator.userAgent.match(/Safari\/([\d\.]+)/) || ['', '999999'])[1], 10); - var invalidClass = 'user-error'; - var validClass = 'user-success'; + var invalidClass = options.iVal.errorClass || 'user-error'; + var validClass = options.iVal.successClass || 'user-success'; var checkTypes = {checkbox: 1, radio: 1}; var emptyJ = $([]); var isValid = function(elem){ return ($.prop(elem, 'validity') || {valid: 1}).valid; @@ -74,10 +74,11 @@ datetime: 1, week: 1, 'datetime-local': 1 }; var switchValidityClass = function(e){ + if(!options.iVal.sel){return;} var elem, timer, shadowElem, shadowType; if(!e.target){return;} elem = $(e.target).getNativeElement()[0]; shadowElem = $(elem).getShadowElement(); if(elem.type == 'submit' || !$.prop(elem, 'willValidate') || (e.type == 'change' && (shadowType = shadowElem.prop('type')) && !changeTypes[shadowType])){return;} @@ -180,11 +181,11 @@ webshims.scrollRoot = (isWebkit || document.compatMode == 'BackCompat') ? $(document.body) : $(document.documentElement) ; }; - var minWidth = (Modernizr.boxSizing || Modernizr['display-table'] || $.support.getSetAttribute) ? + var minWidth = (Modernizr.boxSizing || Modernizr['display-table'] || $.support.getSetAttribute || $.support.boxSizing) ? 'minWidth' : 'width' ; var hasTransition = ('transitionDelay' in document.documentElement.style); var resetPos = {display: 'inline-block', left: 0, top: 0, marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0}; @@ -233,18 +234,25 @@ isInElement: function(container, contained){ return container == contained || $.contains(container, contained); }, show: function(element){ + if(this.isVisible){return;} var e = $.Event('wspopoverbeforeshow'); this.element.trigger(e); - if(e.isDefaultPrevented() || this.isVisible){return;} + if(e.isDefaultPrevented()){return;} this.isVisible = true; element = $(element || this.options.prepareFor).getNativeElement() ; var that = this; var visual = $(element).getShadowElement(); + var delayedRepos = function(e){ + clearTimeout(that.timers.repos); + that.timers.repos = setTimeout(function(){ + that.position(visual); + }, e && e.type == 'pospopover' ? 4 : 200); + }; this.clear(); this.element.removeClass('ws-po-visible').css('display', 'none'); this.prepareFor(element, visual); @@ -254,26 +262,19 @@ that.element.css('display', ''); that.timers.show = setTimeout(function(){ that.element.addClass('ws-po-visible').trigger('wspopovershow'); }, 9); }, 9); - this.element.on('remove', function(e){ - if(!e.originalEvent){ - that.destroy(); - } - }); + $(document).on('focusin'+this.eventns+' mousedown'+this.eventns, function(e){ if(that.options.hideOnBlur && !that.stopBlur && !that.isInElement(that.lastElement[0] || document.body, e.target) && !that.isInElement(element[0] || document.body, e.target) && !that.isInElement(that.element[0], e.target)){ that.hide(); } }); - $(window).on('resize'+this.eventns + ' pospopover'+this.eventns, function(){ - clearTimeout(that.timers.repos); - that.timers.repos = setTimeout(function(){ - that.position(visual); - }, 400); - }); + + this.element.off('pospopover').on('pospopover', delayedRepos); + $(window).on('resize'+this.eventns + ' pospopover'+this.eventns, delayedRepos); }, prepareFor: function(element, visual){ var onBlur; var that = this; var css = {}; @@ -474,10 +475,10 @@ fieldWrapper = false; webshims.error("could not find fieldwrapper: "+ options.iVal.fieldWrapper); } } if(!fieldWrapper){ - fieldWrapper = $(elem).parent().closest(':not(span, label, em, strong, b, mark, p)'); + fieldWrapper = $(elem).parent().closest(':not(span, label, em, strong, b, i, mark, p)'); } return fieldWrapper; }, get: function(elem, fieldWrapper){ if(!fieldWrapper){