Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Commit 313e19c

Browse files
Merge pull request #138 from RafaelTaranto/fix-config-provider
maskDefinitions method was missing in configProvider - issue #135
2 parents 3407dfa + 1b88f99 commit 313e19c

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ angular.module('myApp', [uiMask, ...]);
5555
### Customizing
5656
You can customize several behaviors of ui-mask by taking advantage of the `ui-options` object. Declare `ui-options` as an additional attribute on the same element where you declare `ui-mask`.
5757

58-
Inside of `ui-options`, you can customize these four properties:
58+
Inside of `ui-options`, you can customize these five properties:
5959

6060
* `maskDefinitions` - default: `{
6161
'9': /\d/,

src/mask.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ angular.module('ui.mask', [])
1717
.provider('uiMask.Config', function() {
1818
var options = {};
1919

20+
this.maskDefinitions = function(maskDefinitions) {
21+
return options.maskDefinitions = maskDefinitions;
22+
};
2023
this.clearOnBlur = function(clearOnBlur) {
2124
return options.clearOnBlur = clearOnBlur;
2225
};
@@ -31,9 +34,12 @@ angular.module('ui.mask', [])
3134
};
3235
this.$get = ['uiMaskConfig', function(uiMaskConfig) {
3336
var tempOptions = uiMaskConfig;
34-
for(var prop in options)
35-
{
36-
tempOptions[prop] = options[prop];
37+
for(var prop in options) {
38+
if (angular.isObject(options[prop]) && !angular.isArray(options[prop])) {
39+
angular.extend(tempOptions[prop], options[prop]);
40+
} else {
41+
tempOptions[prop] = options[prop];
42+
}
3743
}
3844

3945
return tempOptions;

test/maskSpec.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -794,17 +794,24 @@ describe("uiMask", function () {
794794
describe("Configuration Provider", function() {
795795
it("should return default values", inject(function($injector) {
796796
var service = $injector.invoke(uiMaskConfigProvider.$get);
797+
expect(service.maskDefinitions).toEqual({'9': /\d/, 'A': /[a-zA-Z]/, '*': /[a-zA-Z0-9]/ });
797798
expect(service.clearOnBlur).toEqual(true);
798799
expect(service.clearOnBlurPlaceholder).toEqual(false);
800+
expect(service.eventsToHandle).toEqual(['input', 'keyup', 'click', 'focus']);
799801
expect(service.addDefaultPlaceholder).toEqual(true);
800802
}));
801803

802804
it("should merge default values with configured values", inject(function($injector) {
805+
uiMaskConfigProvider.maskDefinitions({'7': /\d/});
803806
uiMaskConfigProvider.clearOnBlur(false);
807+
uiMaskConfigProvider.clearOnBlurPlaceholder(true);
808+
uiMaskConfigProvider.eventsToHandle(['input', 'keyup']);
804809
uiMaskConfigProvider.addDefaultPlaceholder(false);
805810
var service = $injector.invoke(uiMaskConfigProvider.$get);
811+
expect(service.maskDefinitions).toEqual({'7': /\d/, '9': /\d/, 'A': /[a-zA-Z]/, '*': /[a-zA-Z0-9]/ });
806812
expect(service.clearOnBlur).toEqual(false);
807-
expect(service.clearOnBlurPlaceholder).toEqual(false);
813+
expect(service.clearOnBlurPlaceholder).toEqual(true);
814+
expect(service.eventsToHandle).toEqual(['input', 'keyup']);
808815
expect(service.addDefaultPlaceholder).toEqual(false);
809816
}));
810817
});

0 commit comments

Comments
 (0)