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

Commit cc49678

Browse files
Richard AllenRichard Allen
Richard Allen
authored and
Richard Allen
committed
#258 Validates ng-required when multiple is used.
1 parent f0190de commit cc49678

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/select.js

+9
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,15 @@
635635
$select.onSelectCallback = $parse(attrs.onSelect);
636636
$select.onRemoveCallback = $parse(attrs.onRemove);
637637

638+
// When configured for multiple, override $isEmpty so that ng-required works as expected.
639+
if ($select.multiple) {
640+
var defaultIsEmptyFn = ngModel.$isEmpty;
641+
642+
ngModel.$isEmpty = function(value) {
643+
return (angular.isArray(value) && value.length === 0) || defaultIsEmptyFn(value);
644+
};
645+
}
646+
638647
//From view --> model
639648
ngModel.$parsers.unshift(function (inputValue) {
640649
var locals = {},

test/select.spec.js

+7
Original file line numberDiff line numberDiff line change
@@ -1520,6 +1520,13 @@ describe('ui-select tests', function() {
15201520
.toBe("Wladimir <[email protected]>Samantha <[email protected]>Nicole <[email protected]>");
15211521

15221522
});
1523+
1524+
it('should be marked invalid when required and empty', function() {
1525+
scope.selection.selectedMultiple = [];
1526+
var el = createUiSelectMultiple({required: true});
1527+
expect(el.scope().$select.ngModel.$invalid).toBe(true);
1528+
expect(el.scope().$select.ngModel.$error.required).toBe(true);
1529+
});
15231530
});
15241531

15251532
describe('default configuration via uiSelectConfig', function() {

0 commit comments

Comments
 (0)