Browse Source

#3788 Fixes issue with search selection closing and reopening immediately

pull/3792/head
Jack Lukic 9 years ago
parent
commit
79b9557070
1 changed files with 27 additions and 18 deletions
  1. 45
      src/definitions/modules/dropdown.js

45
src/definitions/modules/dropdown.js

@ -73,6 +73,7 @@ $.fn.dropdown = function(parameters) {
initialLoad, initialLoad,
pageLostFocus, pageLostFocus,
willRefocus,
elementNamespace, elementNamespace,
id, id,
selectObserver, selectObserver,
@ -527,10 +528,10 @@ $.fn.dropdown = function(parameters) {
} }
if( module.is.searchSelection() ) { if( module.is.searchSelection() ) {
$module $module
.on('mousedown' + eventNamespace, module.event.mousedown)
.on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown) .on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown)
.on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup) .on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup)
.on('click' + eventNamespace, selector.icon, module.event.icon.click) .on('click' + eventNamespace, selector.icon, module.event.icon.click)
.on('click' + eventNamespace, selector.search, module.show)
.on('focus' + eventNamespace, selector.search, module.event.search.focus) .on('focus' + eventNamespace, selector.search, module.event.search.focus)
.on('blur' + eventNamespace, selector.search, module.event.search.blur) .on('blur' + eventNamespace, selector.search, module.event.search.blur)
.on('click' + eventNamespace, selector.text, module.event.text.focus) .on('click' + eventNamespace, selector.text, module.event.text.focus)
@ -837,9 +838,15 @@ $.fn.dropdown = function(parameters) {
module.hide(); module.hide();
} }
}, },
// prevents focus callback from occurring on mousedown
mousedown: function() { mousedown: function() {
activated = true;
if(module.is.searchSelection()) {
// prevent menu hiding on immediate re-focus
willRefocus = true;
}
else {
// prevents focus callback from occurring on mousedown
activated = true;
}
}, },
mouseup: function() { mouseup: function() {
activated = false; activated = false;
@ -852,28 +859,30 @@ $.fn.dropdown = function(parameters) {
} }
if(settings.showOnFocus) { if(settings.showOnFocus) {
module.search(); module.search();
module.show();
} }
}, },
blur: function(event) { blur: function(event) {
pageLostFocus = (document.activeElement === this); pageLostFocus = (document.activeElement === this);
if(!itemActivated && !pageLostFocus) {
if(module.is.multiple()) {
module.remove.activeLabel();
module.hide();
}
else if(settings.forceSelection) {
module.forceSelection();
}
else {
module.hide();
if(!willRefocus) {
if(!itemActivated && !pageLostFocus) {
if(module.is.multiple()) {
module.remove.activeLabel();
module.hide();
}
else if(settings.forceSelection) {
module.forceSelection();
}
else {
module.hide();
}
} }
}
else if(pageLostFocus) {
if(settings.forceSelection) {
module.forceSelection();
else if(pageLostFocus) {
if(settings.forceSelection) {
module.forceSelection();
}
} }
} }
willRefocus = false;
} }
}, },
icon: { icon: {

Loading…
Cancel
Save