Skip to content

Commit 5c913b5

Browse files
committed
updated pr with ui-elect master from angular-ui#422
1 parent 45c37a3 commit 5c913b5

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/select.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,15 @@
873873
$select.onSelectCallback = $parse(attrs.onSelect);
874874
$select.onRemoveCallback = $parse(attrs.onRemove);
875875

876+
// When configured for multiple, override $isEmpty so that ng-required works as expected.
877+
if ($select.multiple) {
878+
var defaultIsEmptyFn = ngModel.$isEmpty;
879+
880+
ngModel.$isEmpty = function (value) {
881+
return (angular.isArray(value) && value.length === 0) || defaultIsEmptyFn(value);
882+
};
883+
}
884+
876885
//From view --> model
877886
ngModel.$parsers.unshift(function (inputValue) {
878887
var locals = {},

test/select.spec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1553,7 +1553,13 @@ describe('ui-select tests', function() {
15531553

15541554
expect(el.find('.ui-select-match-item [uis-transclude-append]:not(.ng-hide)').text())
15551555
.toBe("Wladimir <[email protected]>Samantha <[email protected]>Nicole <[email protected]>");
1556+
});
15561557

1558+
it('should be marked invalid when required and empty', function () {
1559+
scope.selection.selectedMultiple = [];
1560+
var el = createUiSelectMultiple({required: true});
1561+
expect(el.scope().$select.ngModel.$invalid).toBe(true);
1562+
expect(el.scope().$select.ngModel.$error.required).toBe(true);
15571563
});
15581564

15591565
it('should support multiple="multiple" attribute', function() {

0 commit comments

Comments
 (0)