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

Commit 1b88f99

Browse files
committed
maskDefinitions method was missing in configProvider - issue #135
Completed configProvider tests. README.md Typo
1 parent dd9e206 commit 1b88f99

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
@@ -16,6 +16,9 @@ angular.module('ui.mask', [])
1616
.provider('uiMask.Config', function() {
1717
var options = {};
1818

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

3844
return tempOptions;

test/maskSpec.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,17 +702,24 @@ describe("uiMask", function () {
702702
describe("Configuration Provider", function() {
703703
it("should return default values", inject(function($injector) {
704704
var service = $injector.invoke(uiMaskConfigProvider.$get);
705+
expect(service.maskDefinitions).toEqual({'9': /\d/, 'A': /[a-zA-Z]/, '*': /[a-zA-Z0-9]/ });
705706
expect(service.clearOnBlur).toEqual(true);
706707
expect(service.clearOnBlurPlaceholder).toEqual(false);
708+
expect(service.eventsToHandle).toEqual(['input', 'keyup', 'click', 'focus']);
707709
expect(service.addDefaultPlaceholder).toEqual(true);
708710
}));
709711

710712
it("should merge default values with configured values", inject(function($injector) {
713+
uiMaskConfigProvider.maskDefinitions({'7': /\d/});
711714
uiMaskConfigProvider.clearOnBlur(false);
715+
uiMaskConfigProvider.clearOnBlurPlaceholder(true);
716+
uiMaskConfigProvider.eventsToHandle(['input', 'keyup']);
712717
uiMaskConfigProvider.addDefaultPlaceholder(false);
713718
var service = $injector.invoke(uiMaskConfigProvider.$get);
719+
expect(service.maskDefinitions).toEqual({'7': /\d/, '9': /\d/, 'A': /[a-zA-Z]/, '*': /[a-zA-Z0-9]/ });
714720
expect(service.clearOnBlur).toEqual(false);
715-
expect(service.clearOnBlurPlaceholder).toEqual(false);
721+
expect(service.clearOnBlurPlaceholder).toEqual(true);
722+
expect(service.eventsToHandle).toEqual(['input', 'keyup']);
716723
expect(service.addDefaultPlaceholder).toEqual(false);
717724
}));
718725
});

0 commit comments

Comments
 (0)