1
1
/*!
2
2
* angular-ui-mask
3
3
* https://github.com/angular-ui/ui-mask
4
- * Version: 1.8.3 - 2016-03-30T21:12:43.955Z
4
+ * Version: 1.8.4 - 2016-05-17T14:33:25.025Z
5
5
* License: MIT
6
6
*/
7
7
@@ -22,7 +22,8 @@ angular.module('ui.mask', [])
22
22
clearOnBlurPlaceholder : false ,
23
23
escChar : '\\' ,
24
24
eventsToHandle : [ 'input' , 'keyup' , 'click' , 'focus' ] ,
25
- addDefaultPlaceholder : true
25
+ addDefaultPlaceholder : true ,
26
+ allowInvalidValue : false
26
27
} )
27
28
. provider ( 'uiMask.Config' , function ( ) {
28
29
var options = { } ;
@@ -42,6 +43,9 @@ angular.module('ui.mask', [])
42
43
this . addDefaultPlaceholder = function ( addDefaultPlaceholder ) {
43
44
return options . addDefaultPlaceholder = addDefaultPlaceholder ;
44
45
} ;
46
+ this . allowInvalidValue = function ( allowInvalidValue ) {
47
+ return options . allowInvalidValue = allowInvalidValue ;
48
+ } ;
45
49
this . $get = [ 'uiMaskConfig' , function ( uiMaskConfig ) {
46
50
var tempOptions = uiMaskConfig ;
47
51
for ( var prop in options ) {
@@ -65,7 +69,7 @@ angular.module('ui.mask', [])
65
69
require : 'ngModel' ,
66
70
restrict : 'A' ,
67
71
compile : function uiMaskCompilingFunction ( ) {
68
- var options = maskConfig ;
72
+ var options = angular . copy ( maskConfig ) ;
69
73
70
74
return function uiMaskLinkingFunction ( scope , iElement , iAttrs , controller ) {
71
75
var maskProcessed = false , eventsBound = false ,
@@ -132,14 +136,27 @@ angular.module('ui.mask', [])
132
136
}
133
137
} ) ;
134
138
139
+ iAttrs . $observe ( 'allowInvalidValue' , function ( val ) {
140
+ linkOptions . allowInvalidValue = val === ''
141
+ ? true
142
+ : ! ! val ;
143
+ formatter ( controller . $modelValue ) ;
144
+ } ) ;
145
+
135
146
function formatter ( fromModelValue ) {
136
147
if ( ! maskProcessed ) {
137
148
return fromModelValue ;
138
149
}
139
150
value = unmaskValue ( fromModelValue || '' ) ;
140
151
isValid = validateValue ( value ) ;
141
152
controller . $setValidity ( 'mask' , isValid ) ;
142
- return isValid && value . length ? maskValue ( value ) : undefined ;
153
+
154
+ if ( ! value . length ) return undefined ;
155
+ if ( isValid || linkOptions . allowInvalidValue ) {
156
+ return maskValue ( value ) ;
157
+ } else {
158
+ return undefined ;
159
+ }
143
160
}
144
161
145
162
function parser ( fromViewValue ) {
@@ -154,10 +171,9 @@ angular.module('ui.mask', [])
154
171
// to be out-of-sync with what the controller's $viewValue is set to.
155
172
controller . $viewValue = value . length ? maskValue ( value ) : '' ;
156
173
controller . $setValidity ( 'mask' , isValid ) ;
157
- if ( isValid ) {
174
+
175
+ if ( isValid || linkOptions . allowInvalidValue ) {
158
176
return modelViewValue ? controller . $viewValue : value ;
159
- } else {
160
- return undefined ;
161
177
}
162
178
}
163
179
0 commit comments