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);
}