assets/javascripts/semantic_ui/definitions/modules/dropdown.js in less-rails-semantic_ui-2.2.2.0 vs assets/javascripts/semantic_ui/definitions/modules/dropdown.js in less-rails-semantic_ui-2.2.3.0
- old
+ new
@@ -152,12 +152,12 @@
if(menuObserver) {
menuObserver.disconnect();
}
},
selectObserver: function() {
- if(menuObserver) {
- menuObserver.disconnect();
+ if(selectObserver) {
+ selectObserver.disconnect();
}
}
},
observe: {
select: function() {
@@ -956,11 +956,11 @@
},
blur: function(event) {
pageLostFocus = (document.activeElement === this);
if(!willRefocus) {
if(!itemActivated && !pageLostFocus) {
- if(settings.forceSelection && module.has.query()) {
+ if(settings.forceSelection) {
module.forceSelection();
}
module.hide();
}
}
@@ -968,11 +968,10 @@
}
},
icon: {
click: function(event) {
module.toggle();
- event.stopPropagation();
}
},
text: {
focus: function(event) {
activated = true;
@@ -1032,11 +1031,11 @@
var
toggleBehavior = (module.is.multiple())
? module.show
: module.toggle
;
- if(module.is.bubbledLabelClick(event)) {
+ if(module.is.bubbledLabelClick(event) || module.is.bubbledIconClick(event)) {
return;
}
if( module.determine.eventOnElement(event, toggleBehavior) ) {
event.preventDefault();
}
@@ -1413,12 +1412,11 @@
$nextItem
.addClass(className.selected)
;
module.set.scrollPosition($nextItem);
if(settings.selectOnKeydown && module.is.single()) {
- module.set.activeItem($nextItem);
- module.set.selected(module.get.choiceValue($nextItem), $nextItem);
+ module.set.selectedItem($nextItem);
}
}
event.preventDefault();
}
@@ -1553,12 +1551,23 @@
}
}
},
select: function(text, value, element) {
- // mimics action.activate but does not select text
- module.action.activate.call(element);
+ value = (value !== undefined)
+ ? value
+ : text
+ ;
+ if( module.can.activate( $(element) ) ) {
+ module.set.value(value, $(element));
+ if(module.is.multiple() && !module.is.allFiltered()) {
+ return;
+ }
+ else {
+ module.hideAndClear();
+ }
+ }
},
combo: function(text, value, element) {
value = (value !== undefined)
? value
@@ -2070,11 +2079,11 @@
sessionStorage.setItem(value, name);
}
},
clear: function() {
- if(module.is.multiple()) {
+ if(module.is.multiple() && settings.useLabels) {
module.remove.labels();
}
else {
module.remove.activeItem();
module.remove.selectedItem();
@@ -2206,10 +2215,16 @@
}
else {
$item.addClass(className.active);
}
},
+ partialSearch: function(text) {
+ var
+ length = module.get.query().length
+ ;
+ $search.val( text.substr(0 , length));
+ },
scrollPosition: function($item, forceScroll) {
var
edgeTolerance = 5,
$menu,
hasActive,
@@ -2277,14 +2292,20 @@
}
}
}
},
selectedItem: function($item) {
+ var
+ value = module.get.choiceValue($item),
+ text = module.get.choiceText($item, false)
+ ;
module.debug('Setting user selection to item', $item);
module.remove.activeItem();
+ module.set.partialSearch(text);
module.set.activeItem($item);
- module.set.selected(module.get.choiceValue($item), $item);
+ module.set.selected(value, $item);
+ module.set.text(text);
},
selectedLetter: function(letter) {
var
$selectedItem = $item.filter('.' + className.selected),
alreadySelectedLetter = $selectedItem.length > 0 && module.has.firstLetter($selectedItem, letter),
@@ -2977,9 +2998,12 @@
active: function() {
return $module.hasClass(className.active);
},
bubbledLabelClick: function(event) {
return $(event.target).is('select, input') && $module.closest('label').length > 0;
+ },
+ bubbledIconClick: function(event) {
+ return $(event.target).closest($icon).length > 0;
},
alreadySetup: function() {
return ($module.is('select') && $module.parent(selector.dropdown).length > 0 && $module.prev().length === 0);
},
animating: function($subMenu) {