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) {