vendor/assets/javascripts/webshims/shims/form-combat.js in webshims-rails-1.13.0 vs vendor/assets/javascripts/webshims/shims/form-combat.js in webshims-rails-1.14.1

- old
+ new

@@ -73,34 +73,46 @@ addReplacement('checkboxradio', 'mobileCheckboxradio', { shadow: 'label', shadowFocus: 'element' }); - - addReplacement('selectmenu', 'mobileSelectmenu', { + + var uiSelect = { shadow: 'button', - shadowFocus: function(data, elem){ + shadowFocus: function(data){ return data.options.nativeMenu ? data.element : data.button; }, _create: function(elem, shadow, shadowFocus, widgetData){ - if(('listbox' in widgetData)){ + var menuName; + if(('menu' in widgetData)){ + menuName = 'menuName'; + } else if(('listbox' in widgetData)){ + menuName = 'listbox'; + } + if(menuName){ + var onValidate = function(e){ - if (!webshims.wsPopover.isInElement([elem, shadow, shadowFocus, $(widgetData.listbox).parent()], e.target)) { + if (!webshims.wsPopover.isInElement([elem, shadow, shadowFocus, $(widgetData[menuName]).parent()], e.target)) { $(elem).trigger('updatevalidation.webshims'); } }; - + $(shadow).on('wsallowinstantvalidation', function(e, data){ if(data.type == 'focusout' && data.target != elem && widgetData.isOpen){ setTimeout(function(){ $(document).off('focusin', onValidate).on('focusin', onValidate); }, 1); return false; } }); } } - }); + }; + + addReplacement('selectmenu', 'mobileSelectmenu', uiSelect); + + addReplacement('selectmenu', 'uiSelectmenu', uiSelect); + function find(context){ $('select:not(.ui-select-nativeonly), input[type="radio"], input[type="checkbox"]', context).each(find.detectReplacement); }