diff --git a/src/global/percentage/percentage.js b/src/global/percentage/percentage.js index a98f7ec1..d1e3ebed 100644 --- a/src/global/percentage/percentage.js +++ b/src/global/percentage/percentage.js @@ -53,7 +53,7 @@ function PercentageMaskDirective($locale, $parse, PreFormatters, NumberMasks) { } var valueToFormat = preparePercentageToFormatter(value, decimals, modelValue.multiplier); - return viewMask.apply(valueToFormat) + ' %'; + return viewMask.apply(valueToFormat) + (hideSpace ? '%' : ' %'); } function parse(value) { diff --git a/src/global/percentage/percentage.test.js b/src/global/percentage/percentage.test.js index 255f711e..85b198c6 100644 --- a/src/global/percentage/percentage.test.js +++ b/src/global/percentage/percentage.test.js @@ -64,6 +64,20 @@ describe('ui-percentage-mask', function() { expect(model.$viewValue).toBe('100%'); }); + it('should hide space before "%" after a model change if ui-hide-space is present', angular.mock.inject(function($rootScope) { + var input = TestUtil.compile('', { + model: 1, + decimals: 0 + }); + + var model = input.controller('ngModel'); + expect(model.$viewValue).toBe('100%'); + + $rootScope.model = 50; // When accessing via rootScope, update model to 50 not 0.5 to represent 50% + $rootScope.$digest(); + expect(model.$viewValue).toBe('50%'); + })); + it('should allow changing the number of decimals', angular.mock.inject(function($rootScope) { var input = TestUtil.compile('', { model: '12.345',