Browse Source

Simplest implementation of clearable dropdown

pull/6579/merge
Jack 6 years ago
parent
commit
33d08ec920
1 changed files with 26 additions and 3 deletions
  1. 29
      src/definitions/modules/dropdown.js

29
src/definitions/modules/dropdown.js

@ -1019,7 +1019,12 @@ $.fn.dropdown = function(parameters) {
}, },
icon: { icon: {
click: function(event) { click: function(event) {
module.toggle(); if($icon.hasClass(className.clear)) {
module.clear();
}
else {
module.toggle();
}
} }
}, },
text: { text: {
@ -2481,6 +2486,15 @@ $.fn.dropdown = function(parameters) {
$module.data(metadata.value, stringValue); $module.data(metadata.value, stringValue);
} }
} }
if(module.is.single() && settings.clearable) {
// treat undefined or '' as empty
if(!escapedValue) {
module.remove.clearable();
}
else {
module.set.clearable();
}
}
if(settings.fireOnInit === false && module.is.initialLoad()) { if(settings.fireOnInit === false && module.is.initialLoad()) {
module.verbose('No callback on initial load', settings.onChange); module.verbose('No callback on initial load', settings.onChange);
} }
@ -2576,7 +2590,10 @@ $.fn.dropdown = function(parameters) {
} }
}) })
; ;
} },
clearable: function() {
$icon.addClass(className.clear);
},
}, },
add: { add: {
@ -2774,7 +2791,7 @@ $.fn.dropdown = function(parameters) {
} }
module.set.value(newValue, addedValue, addedText, $selectedItem); module.set.value(newValue, addedValue, addedText, $selectedItem);
module.check.maxSelections(); module.check.maxSelections();
} },
}, },
remove: { remove: {
@ -2999,6 +3016,9 @@ $.fn.dropdown = function(parameters) {
.removeAttr('tabindex') .removeAttr('tabindex')
; ;
} }
},
clearable: function() {
$icon.removeClass(className.clear);
} }
}, },
@ -3686,6 +3706,8 @@ $.fn.dropdown.settings = {
values : false, // specify values to use for dropdown values : false, // specify values to use for dropdown
clearable : true, // whether the value of the dropdown can be cleared
apiSettings : false, apiSettings : false,
selectOnKeydown : true, // Whether selection should occur automatically when keyboard shortcuts used selectOnKeydown : true, // Whether selection should occur automatically when keyboard shortcuts used
minCharacters : 0, // Minimum characters required to trigger API call minCharacters : 0, // Minimum characters required to trigger API call
@ -3838,6 +3860,7 @@ $.fn.dropdown.settings = {
active : 'active', active : 'active',
addition : 'addition', addition : 'addition',
animating : 'animating', animating : 'animating',
clear : 'clear',
disabled : 'disabled', disabled : 'disabled',
empty : 'empty', empty : 'empty',
dropdown : 'ui dropdown', dropdown : 'ui dropdown',

|||||||
100:0
Loading…
Cancel
Save