Skip to content
This repository was archived by the owner on Oct 2, 2019. It is now read-only.

Commit 2dfad24

Browse files
Jefiozieaaronroberson
authored andcommitted
Fix(resetSearchInput) change search box doesn't clear after selecting (#1746)
* fix(resetSearchInput) change search box doesn't clear after selecting * Removed extra blank line
1 parent be0d301 commit 2dfad24

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

src/common.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ var uis = angular.module('ui.select', [])
102102
skipFocusser: false,
103103
dropdownPosition: 'auto',
104104
removeSelected: true,
105+
resetSearchInput: false,
105106
generateId: function() {
106107
return latestId++;
107108
},

src/uiSelectController.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ uis.controller('uiSelectCtrl',
1717
ctrl.sortable = uiSelectConfig.sortable;
1818
ctrl.refreshDelay = uiSelectConfig.refreshDelay;
1919
ctrl.paste = uiSelectConfig.paste;
20+
ctrl.resetSearchInput = uiSelectConfig.resetSearchInput;
2021

2122
ctrl.removeSelected = uiSelectConfig.removeSelected; //If selected item(s) should be removed from dropdown list
2223
ctrl.closeOnSelect = true; //Initialized inside uiSelect directive link function
@@ -34,7 +35,6 @@ uis.controller('uiSelectCtrl',
3435
ctrl.dropdownPosition = 'auto';
3536

3637
ctrl.focusser = undefined; //Reference to input element used to handle focus events
37-
ctrl.resetSearchInput = true;
3838
ctrl.multiple = undefined; // Initialized inside uiSelect directive link function
3939
ctrl.disableChoiceExpression = undefined; // Initialized inside uiSelectChoices directive link function
4040
ctrl.tagging = {isActivated: false, fct: undefined};
@@ -83,7 +83,7 @@ uis.controller('uiSelectCtrl',
8383

8484
// Most of the time the user does not want to empty the search input when in typeahead mode
8585
function _resetSearchInput() {
86-
if (ctrl.resetSearchInput || (ctrl.resetSearchInput === undefined && uiSelectConfig.resetSearchInput)) {
86+
if (ctrl.resetSearchInput) {
8787
ctrl.search = EMPTY_SEARCH;
8888
//reset activeIndex
8989
if (ctrl.selected && ctrl.items.length && !ctrl.multiple) {
@@ -423,6 +423,7 @@ uis.controller('uiSelectCtrl',
423423
ctrl.close(skipFocusser);
424424
return;
425425
}
426+
_resetSearchInput();
426427
}
427428

428429
$scope.$broadcast('uis:select', item);
@@ -448,7 +449,6 @@ uis.controller('uiSelectCtrl',
448449
ctrl.close = function(skipFocusser) {
449450
if (!ctrl.open) return;
450451
if (ctrl.ngModel && ctrl.ngModel.$setTouched) ctrl.ngModel.$setTouched();
451-
_resetSearchInput();
452452
ctrl.open = false;
453453

454454
$scope.$broadcast('uis:close', skipFocusser);

test/select.spec.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ describe('ui-select tests', function() {
159159
if (attrs.allowClear !== undefined) { matchAttrsHtml += ' allow-clear="' + attrs.allowClear + '"';}
160160
if (attrs.inputId !== undefined) { attrsHtml += ' input-id="' + attrs.inputId + '"'; }
161161
if (attrs.ngClass !== undefined) { attrsHtml += ' ng-class="' + attrs.ngClass + '"'; }
162+
if (attrs.resetSearchInput !== undefined) { attrsHtml += ' reset-search-input="' + attrs.resetSearchInput + '"'; }
163+
if (attrs.closeOnSelect !== undefined) { attrsHtml += ' close-on-select="' + attrs.closeOnSelect + '"'; }
162164
}
163165

164166
return compileTemplate(
@@ -2820,7 +2822,60 @@ describe('ui-select tests', function() {
28202822
expect(el.scope().$select.searchEnabled).not.toBe(true);
28212823
});
28222824
});
2825+
});
2826+
2827+
describe('resetSearchInput option', function () {
2828+
it('should be false by default', function () {
2829+
expect(createUiSelect().scope().$select.resetSearchInput).toBe(false);
2830+
});
2831+
2832+
it('should be overridden by inline option reset-search-input=true', function () {
2833+
expect(createUiSelect({ resetSearchInput: true }).scope().$select.resetSearchInput).toBe(true);
2834+
});
2835+
2836+
describe('Reset the search value', function () {
2837+
it('should clear the search input when resetSearchInput is true', function () {
2838+
var control = createUiSelect({ resetSearchInput: true });
2839+
setSearchText(control, 'idontexist');
2840+
clickMatch(control);
2841+
expect(control.scope().$select.search).toEqual('');
2842+
});
2843+
2844+
it('should not clear the search input', function () {
2845+
var control = createUiSelect();
2846+
setSearchText(control, 'idontexist');
2847+
clickMatch(control);
2848+
expect(control.scope().$select.search).toEqual('idontexist');
2849+
});
28232850

2851+
it('should clear the search input when resetSearchInput is true and closeOnSelect is true', function () {
2852+
var control = createUiSelect({ resetSearchInput: true, closeOnSelect: true });
2853+
setSearchText(control, 'idontexist');
2854+
clickMatch(control);
2855+
expect(control.scope().$select.search).toEqual('');
2856+
});
2857+
2858+
it('should clear the search input when resetSearchInput is true and closeOnSelect is false', function () {
2859+
var control = createUiSelect({ resetSearchInput: true, closeOnSelect: false });
2860+
setSearchText(control, 'idontexist');
2861+
clickMatch(control);
2862+
expect(control.scope().$select.search).toEqual('');
2863+
});
2864+
2865+
it('should not clear the search input when resetSearchInput is false and closeOnSelect is false', function () {
2866+
var control = createUiSelect({ resetSearchInput: false, closeOnSelect: false });
2867+
setSearchText(control, 'idontexist');
2868+
clickMatch(control);
2869+
expect(control.scope().$select.search).toEqual('idontexist');
2870+
});
2871+
2872+
it('should not clear the search input when resetSearchInput is false and closeOnSelect is true', function () {
2873+
var control = createUiSelect({ resetSearchInput: false, closeOnSelect: true });
2874+
setSearchText(control, 'idontexist');
2875+
clickMatch(control);
2876+
expect(control.scope().$select.search).toEqual('idontexist');
2877+
});
2878+
});
28242879
});
28252880

28262881
describe('accessibility', function() {

0 commit comments

Comments
 (0)