Browse Source

Adds multiple select filterActive option, adds placeholder option #2072

pull/2092/head
jlukic 9 years ago
parent
commit
99d849c875
1 changed files with 36 additions and 11 deletions
  1. 47
      src/definitions/modules/dropdown.js

47
src/definitions/modules/dropdown.js

@ -287,7 +287,7 @@ $.fn.dropdown = function(parameters) {
} }
if( module.can.show() && !module.is.active() ) { if( module.can.show() && !module.is.active() ) {
module.debug('Showing dropdown'); module.debug('Showing dropdown');
if(module.is.multiple()) {
if(module.is.multiple() && module.is.searchSelection()) {
module.filterActive(); module.filterActive();
} }
module.animate.show(function() { module.animate.show(function() {
@ -515,9 +515,11 @@ $.fn.dropdown = function(parameters) {
}, },
filterActive: function() { filterActive: function() {
$item.filter('.' + className.active)
.addClass(className.filtered)
;
if(settings.filterActive) {
$item.filter('.' + className.active)
.addClass(className.filtered)
;
}
}, },
focusSearch: function() { focusSearch: function() {
@ -1038,8 +1040,8 @@ $.fn.dropdown = function(parameters) {
: text : text
; ;
module.set.selected(value, $(this)); module.set.selected(value, $(this));
if(module.is.multiple() && !module.is.searchSelection() && !module.is.allFiltered()) {
module.filterActive();
if(module.is.multiple() && !module.is.allFiltered()) {
return;
} }
else { else {
module.hide(function() { module.hide(function() {
@ -1195,7 +1197,7 @@ $.fn.dropdown = function(parameters) {
? $(this).attr('value') ? $(this).attr('value')
: name : name
; ;
if(value === '') {
if(value === '' && settings.placeholder !== false) {
select.placeholder = name; select.placeholder = name;
} }
else { else {
@ -1214,6 +1216,10 @@ $.fn.dropdown = function(parameters) {
} }
}) })
; ;
if(typeof settings.placeholder !== 'boolean') {
module.debug('Setting placeholder value to', settings.placeholder);
select.placeholder = settings.placeholder;
}
if(settings.sortSelect) { if(settings.sortSelect) {
module.debug('Retrieved and sorted values from select', select); module.debug('Retrieved and sorted values from select', select);
} }
@ -1529,8 +1535,6 @@ $.fn.dropdown = function(parameters) {
} }
module.remove.selectedItem(); module.remove.selectedItem();
$selectedItem $selectedItem
.addClass(className.active)
.addClass(className.selected)
.each(function() { .each(function() {
var var
$selected = $(this), $selected = $(this),
@ -1539,12 +1543,23 @@ $.fn.dropdown = function(parameters) {
selectedText = module.get.choiceText($selected); selectedText = module.get.choiceText($selected);
selectedValue = module.get.choiceValue($selected, selectedText); selectedValue = module.get.choiceValue($selected, selectedText);
if(isMultiple) { if(isMultiple) {
module.add.label(selectedValue, selectedText, shouldAnimate);
module.set.value(selectedValue, selectedText, $selected);
if(!$selected.hasClass(className.active)) {
module.add.label(selectedValue, selectedText, shouldAnimate);
module.set.value(selectedValue, selectedText, $selected);
$selected.addClass(className.active);
module.filterActive();
}
else {
module.remove.selected(selectedValue);
}
} }
else { else {
module.set.value(selectedValue, selectedText, $selected); module.set.value(selectedValue, selectedText, $selected);
module.set.text(selectedText); module.set.text(selectedText);
$selected
.addClass(className.active)
.addClass(className.selected)
;
} }
}) })
; ;
@ -2127,11 +2142,15 @@ $.fn.dropdown.settings = {
// search anywhere in value // search anywhere in value
fullTextSearch : false, fullTextSearch : false,
// whether to convert blank <select> values to placeholder text
placeholder: 'auto',
// preserve html when selecting value // preserve html when selecting value
preserveHTML : true, preserveHTML : true,
// sort selection on init // sort selection on init
sortSelect : false, sortSelect : false,
// what to match against with search selection (both, text, or label) // what to match against with search selection (both, text, or label)
match: 'both', match: 'both',
@ -2156,6 +2175,9 @@ $.fn.dropdown.settings = {
// widest glyph width in em (W is 1.0714 em) used to calculate multiselect input width // widest glyph width in em (W is 1.0714 em) used to calculate multiselect input width
glyphWidth : 1.0714, glyphWidth : 1.0714,
// whether multiple select should allow user added values
allowAdditions : true,
// multi select delimiting key // multi select delimiting key
delimiter : ',', delimiter : ',',
@ -2166,6 +2188,9 @@ $.fn.dropdown.settings = {
variation : false variation : false
}, },
// whether multiple selects should filter active selections from menu
filterActive : true,
/* Callbacks */ /* Callbacks */
onLabelSelect : function($selectedLabels){}, onLabelSelect : function($selectedLabels){},
onNoResults : function(searchTerm){}, onNoResults : function(searchTerm){},

Loading…
Cancel
Save