angular-ui-mask
Advanced tools
Comparing version 1.4.1 to 1.4.2
/*! | ||
* angular-ui-mask | ||
* https://github.com/angular-ui/ui-mask | ||
* Version: 1.4.1 - 2015-08-04T05:02:33.346Z | ||
* Version: 1.4.2 - 2015-08-10T07:56:13.924Z | ||
* License: MIT | ||
@@ -21,3 +21,4 @@ */ | ||
}, | ||
clearOnBlur: true | ||
clearOnBlur: true, | ||
eventsToHandle: ['input', 'keyup', 'click', 'focus'] | ||
}) | ||
@@ -62,3 +63,3 @@ .directive('uiMask', ['uiMaskConfig', '$parse', function(maskConfig, $parse) { | ||
function initPlaceholder(placeholderAttr) { | ||
if (!angular.isDefined(placeholderAttr)) { | ||
if ( ! placeholderAttr) { | ||
return; | ||
@@ -71,3 +72,3 @@ } | ||
if (maskProcessed) { | ||
eventHandler(); | ||
iElement.val(maskValue(unmaskValue(iElement.val()))); | ||
} | ||
@@ -178,3 +179,3 @@ } | ||
} | ||
if (!angular.isDefined(iAttrs.uiMaskPlaceholder)) { | ||
if ( ! originalPlaceholder) { | ||
iElement.attr('placeholder', maskPlaceholder); | ||
@@ -195,3 +196,3 @@ } | ||
iElement.bind('mousedown mouseup', mouseDownUpHandler); | ||
iElement.bind('input keyup click focus', eventHandler); | ||
iElement.bind(linkOptions.eventsToHandle.join(' '), eventHandler); | ||
iElement.bind('paste', onPasteHandler); | ||
@@ -198,0 +199,0 @@ eventsBound = true; |
/*! | ||
* angular-ui-mask | ||
* https://github.com/angular-ui/ui-mask | ||
* Version: 1.4.1 - 2015-08-04T05:02:33.346Z | ||
* Version: 1.4.2 - 2015-08-10T07:56:13.924Z | ||
* License: MIT | ||
*/ | ||
!function(){"use strict";angular.module("ui.mask",[]).value("uiMaskConfig",{maskDefinitions:{9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},clearOnBlur:!0}).directive("uiMask",["uiMaskConfig","$parse",function(e,n){function t(e){return e===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(e.type||e.href||~e.tabIndex)}return{priority:100,require:"ngModel",restrict:"A",compile:function(){var i=e;return function(e,r,u,a){function o(e){return angular.isDefined(e)?(k(e),H?(h(),d(),!0):f()):f()}function l(e){angular.isDefined(e)&&(P=e,H&&M())}function s(e){return H?(j=v(e||""),T=p(j),a.$setValidity("mask",T),T&&j.length?m(j):void 0):e}function c(e){return H?(j=v(e||""),T=p(j),a.$viewValue=j.length?m(j):"",a.$setValidity("mask",T),""===j&&u.required&&a.$setValidity("required",!a.$error.required),T?j:void 0):e}function f(){return H=!1,g(),angular.isDefined(K)?r.attr("placeholder",K):r.removeAttr("placeholder"),angular.isDefined(N)?r.attr("maxlength",N):r.removeAttr("maxlength"),r.val(a.$modelValue),a.$viewValue=a.$modelValue,!1}function h(){j=B=v(a.$modelValue||""),z=Z=m(j),T=p(j);var e=T&&j.length?z:"";u.maxlength&&r.attr("maxlength",2*E[E.length-1]),angular.isDefined(u.uiMaskPlaceholder)||r.attr("placeholder",P),r.val(e),a.$viewValue=e,a.$setValidity("mask",T)}function d(){I||(r.bind("blur",y),r.bind("mousedown mouseup",x),r.bind("input keyup click focus",M),r.bind("paste",w),I=!0)}function g(){I&&(r.unbind("blur",y),r.unbind("mousedown",x),r.unbind("mouseup",x),r.unbind("input",M),r.unbind("keyup",M),r.unbind("click",M),r.unbind("focus",M),r.unbind("paste",w),I=!1)}function p(e){return e.length?e.length>=q:!0}function v(e){var n="",t=_.slice();return e=e.toString(),angular.forEach(R,function(n){e=e.replace(n,"")}),angular.forEach(e.split(""),function(e){t.length&&t[0].test(e)&&(n+=e,t.shift())}),n}function m(e){var n="",t=E.slice();return angular.forEach(P.split(""),function(i,r){e.length&&r===t[0]?(n+=e.charAt(0)||"_",e=e.substr(1),t.shift()):n+=i}),n}function b(e){var n=angular.isDefined(u.uiMaskPlaceholder)?u.uiMaskPlaceholder:u.placeholder;return"undefined"!=typeof n&&n[e]?n[e]:"_"}function $(){return P.replace(/[_]+/g,"_").replace(/([^_]+)([a-zA-Z0-9])([^_])/g,"$1$2_$3").split("_")}function k(e){var n=0;if(E=[],_=[],P="","string"==typeof e){q=0;var t=!1,i=0,r=e.split("");angular.forEach(r,function(e,r){W.maskDefinitions[e]?(E.push(n),P+=b(r-i),_.push(W.maskDefinitions[e]),n++,t||q++):"?"===e?(t=!0,i++):(P+=e,n++)})}E.push(E.slice().pop()+1),R=$(),H=E.length>1?!0:!1}function y(){W.clearOnBlur&&(C=0,F=0,T&&0!==j.length||(z="",r.val(""),e.$apply(function(){a.$setViewValue("")})))}function x(e){"mousedown"===e.type?r.bind("mouseout",V):r.unbind("mouseout",V)}function V(){F=S(this),r.unbind("mouseout",V)}function w(){D(this,r.val().length)}function M(e){e=e||{};var n=e.which,t=e.type;if(16!==n&&91!==n){var i,u=r.val(),o=Z,l=v(u),s=B,c=A(this)||0,f=C||0,h=c-f,d=E[0],g=E[l.length]||E.slice().shift(),p=F||0,b=S(this)>0,$=p>0,k=u.length>o.length||p&&u.length>o.length-p,y=u.length<o.length||p&&u.length===o.length-p,x=n>=37&&40>=n&&e.shiftKey,V=37===n,w=8===n||"keyup"!==t&&y&&-1===h,M=46===n||"keyup"!==t&&y&&0===h&&!$,_=(V||w||"click"===t)&&c>d;if(F=S(this),!x&&(!b||"click"!==t&&"keyup"!==t)){if("input"===t&&y&&!$&&l===s){for(;w&&c>d&&!O(c);)c--;for(;M&&g>c&&-1===E.indexOf(c);)c++;var P=E.indexOf(c);l=l.substring(0,P)+l.substring(P+1)}for(i=m(l),Z=i,B=l,r.val(i),a.$setViewValue(l),k&&d>=c&&(c=d+1),_&&c--,c=c>g?g:d>c?d:c;!O(c)&&c>d&&g>c;)c+=_?-1:1;(_&&g>c||k&&!O(f))&&c++,C=c,D(this,c)}}}function O(e){return E.indexOf(e)>-1}function A(e){if(!e)return 0;if(void 0!==e.selectionStart)return e.selectionStart;if(document.selection&&t(r[0])){e.focus();var n=document.selection.createRange();return n.moveStart("character",e.value?-e.value.length:0),n.text.length}return 0}function D(e,n){if(!e)return 0;if(0!==e.offsetWidth&&0!==e.offsetHeight)if(e.setSelectionRange)t(r[0])&&(e.focus(),e.setSelectionRange(n,n));else if(e.createTextRange){var i=e.createTextRange();i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",n),i.select()}}function S(e){return e?void 0!==e.selectionStart?e.selectionEnd-e.selectionStart:document.selection?document.selection.createRange().text.length:0:0}var E,_,P,R,q,j,z,T,Z,B,C,F,H=!1,I=!1,K=u.placeholder,N=u.maxlength,W={};u.uiOptions?(W=e.$eval("["+u.uiOptions+"]"),angular.isObject(W[0])&&(W=function(e,n){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(void 0===n[t]?n[t]=angular.copy(e[t]):angular.extend(n[t],e[t]));return n}(i,W[0]))):W=i,u.$observe("uiMask",o),angular.isDefined(u.uiMaskPlaceholder)?u.$observe("uiMaskPlaceholder",l):u.$observe("placeholder",l);var G=!1;u.$observe("modelViewValue",function(e){"true"===e&&(G=!0)}),e.$watch(u.ngModel,function(t){if(G&&t){var i=n(u.ngModel);i.assign(e,a.$viewValue)}}),a.$formatters.push(s),a.$parsers.push(c),r.bind("mousedown mouseup",x),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){if(null===this)throw new TypeError;var n=Object(this),t=n.length>>>0;if(0===t)return-1;var i=0;if(arguments.length>1&&(i=Number(arguments[1]),i!==i?i=0:0!==i&&1/0!==i&&i!==-1/0&&(i=(i>0||-1)*Math.floor(Math.abs(i)))),i>=t)return-1;for(var r=i>=0?i:Math.max(t-Math.abs(i),0);t>r;r++)if(r in n&&n[r]===e)return r;return-1})}}}}])}(); | ||
!function(){"use strict";angular.module("ui.mask",[]).value("uiMaskConfig",{maskDefinitions:{9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},clearOnBlur:!0,eventsToHandle:["input","keyup","click","focus"]}).directive("uiMask",["uiMaskConfig","$parse",function(e,n){function t(e){return e===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(e.type||e.href||~e.tabIndex)}return{priority:100,require:"ngModel",restrict:"A",compile:function(){var i=e;return function(e,r,u,a){function o(e){return angular.isDefined(e)?(y(e),F?(h(),d(),!0):f()):f()}function l(e){e&&(R=e,F&&r.val(m(v(r.val()))))}function s(e){return F?(j=v(e||""),z=p(j),a.$setValidity("mask",z),z&&j.length?m(j):void 0):e}function c(e){return F?(j=v(e||""),z=p(j),a.$viewValue=j.length?m(j):"",a.$setValidity("mask",z),""===j&&u.required&&a.$setValidity("required",!a.$error.required),z?j:void 0):e}function f(){return F=!1,g(),angular.isDefined(K)?r.attr("placeholder",K):r.removeAttr("placeholder"),angular.isDefined(N)?r.attr("maxlength",N):r.removeAttr("maxlength"),r.val(a.$modelValue),a.$viewValue=a.$modelValue,!1}function h(){j=Z=v(a.$modelValue||""),q=H=m(j),z=p(j);var e=z&&j.length?q:"";u.maxlength&&r.attr("maxlength",2*E[E.length-1]),K||r.attr("placeholder",R),r.val(e),a.$viewValue=e,a.$setValidity("mask",z)}function d(){I||(r.bind("blur",k),r.bind("mousedown mouseup",x),r.bind(W.eventsToHandle.join(" "),M),r.bind("paste",w),I=!0)}function g(){I&&(r.unbind("blur",k),r.unbind("mousedown",x),r.unbind("mouseup",x),r.unbind("input",M),r.unbind("keyup",M),r.unbind("click",M),r.unbind("focus",M),r.unbind("paste",w),I=!1)}function p(e){return e.length?e.length>=T:!0}function v(e){var n="",t=_.slice();return e=e.toString(),angular.forEach(P,function(n){e=e.replace(n,"")}),angular.forEach(e.split(""),function(e){t.length&&t[0].test(e)&&(n+=e,t.shift())}),n}function m(e){var n="",t=E.slice();return angular.forEach(R.split(""),function(i,r){e.length&&r===t[0]?(n+=e.charAt(0)||"_",e=e.substr(1),t.shift()):n+=i}),n}function b(e){var n=angular.isDefined(u.uiMaskPlaceholder)?u.uiMaskPlaceholder:u.placeholder;return"undefined"!=typeof n&&n[e]?n[e]:"_"}function $(){return R.replace(/[_]+/g,"_").replace(/([^_]+)([a-zA-Z0-9])([^_])/g,"$1$2_$3").split("_")}function y(e){var n=0;if(E=[],_=[],R="","string"==typeof e){T=0;var t=!1,i=0,r=e.split("");angular.forEach(r,function(e,r){W.maskDefinitions[e]?(E.push(n),R+=b(r-i),_.push(W.maskDefinitions[e]),n++,t||T++):"?"===e?(t=!0,i++):(R+=e,n++)})}E.push(E.slice().pop()+1),P=$(),F=E.length>1?!0:!1}function k(){W.clearOnBlur&&(B=0,C=0,z&&0!==j.length||(q="",r.val(""),e.$apply(function(){a.$setViewValue("")})))}function x(e){"mousedown"===e.type?r.bind("mouseout",V):r.unbind("mouseout",V)}function V(){C=D(this),r.unbind("mouseout",V)}function w(){S(this,r.val().length)}function M(e){e=e||{};var n=e.which,t=e.type;if(16!==n&&91!==n){var i,u=r.val(),o=H,l=v(u),s=Z,c=A(this)||0,f=B||0,h=c-f,d=E[0],g=E[l.length]||E.slice().shift(),p=C||0,b=D(this)>0,$=p>0,y=u.length>o.length||p&&u.length>o.length-p,k=u.length<o.length||p&&u.length===o.length-p,x=n>=37&&40>=n&&e.shiftKey,V=37===n,w=8===n||"keyup"!==t&&k&&-1===h,M=46===n||"keyup"!==t&&k&&0===h&&!$,_=(V||w||"click"===t)&&c>d;if(C=D(this),!x&&(!b||"click"!==t&&"keyup"!==t)){if("input"===t&&k&&!$&&l===s){for(;w&&c>d&&!O(c);)c--;for(;M&&g>c&&-1===E.indexOf(c);)c++;var R=E.indexOf(c);l=l.substring(0,R)+l.substring(R+1)}for(i=m(l),H=i,Z=l,r.val(i),a.$setViewValue(l),y&&d>=c&&(c=d+1),_&&c--,c=c>g?g:d>c?d:c;!O(c)&&c>d&&g>c;)c+=_?-1:1;(_&&g>c||y&&!O(f))&&c++,B=c,S(this,c)}}}function O(e){return E.indexOf(e)>-1}function A(e){if(!e)return 0;if(void 0!==e.selectionStart)return e.selectionStart;if(document.selection&&t(r[0])){e.focus();var n=document.selection.createRange();return n.moveStart("character",e.value?-e.value.length:0),n.text.length}return 0}function S(e,n){if(!e)return 0;if(0!==e.offsetWidth&&0!==e.offsetHeight)if(e.setSelectionRange)t(r[0])&&(e.focus(),e.setSelectionRange(n,n));else if(e.createTextRange){var i=e.createTextRange();i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",n),i.select()}}function D(e){return e?void 0!==e.selectionStart?e.selectionEnd-e.selectionStart:document.selection?document.selection.createRange().text.length:0:0}var E,_,R,P,T,j,q,z,H,Z,B,C,F=!1,I=!1,K=u.placeholder,N=u.maxlength,W={};u.uiOptions?(W=e.$eval("["+u.uiOptions+"]"),angular.isObject(W[0])&&(W=function(e,n){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(void 0===n[t]?n[t]=angular.copy(e[t]):angular.extend(n[t],e[t]));return n}(i,W[0]))):W=i,u.$observe("uiMask",o),angular.isDefined(u.uiMaskPlaceholder)?u.$observe("uiMaskPlaceholder",l):u.$observe("placeholder",l);var G=!1;u.$observe("modelViewValue",function(e){"true"===e&&(G=!0)}),e.$watch(u.ngModel,function(t){if(G&&t){var i=n(u.ngModel);i.assign(e,a.$viewValue)}}),a.$formatters.push(s),a.$parsers.push(c),r.bind("mousedown mouseup",x),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){if(null===this)throw new TypeError;var n=Object(this),t=n.length>>>0;if(0===t)return-1;var i=0;if(arguments.length>1&&(i=Number(arguments[1]),i!==i?i=0:0!==i&&1/0!==i&&i!==-1/0&&(i=(i>0||-1)*Math.floor(Math.abs(i)))),i>=t)return-1;for(var r=i>=0?i:Math.max(t-Math.abs(i),0);t>r;r++)if(r in n&&n[r]===e)return r;return-1})}}}}])}(); |
{ | ||
"name": "angular-ui-mask", | ||
"version": "1.4.1", | ||
"version": "1.4.2", | ||
"author": "https://github.com/angular-ui/ui-mask/graphs/contributors", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -11,3 +11,4 @@ /* | ||
}, | ||
clearOnBlur: true | ||
clearOnBlur: true, | ||
eventsToHandle: ['input', 'keyup', 'click', 'focus'] | ||
}) | ||
@@ -52,3 +53,3 @@ .directive('uiMask', ['uiMaskConfig', '$parse', function(maskConfig, $parse) { | ||
function initPlaceholder(placeholderAttr) { | ||
if (!angular.isDefined(placeholderAttr)) { | ||
if ( ! placeholderAttr) { | ||
return; | ||
@@ -61,3 +62,3 @@ } | ||
if (maskProcessed) { | ||
eventHandler(); | ||
iElement.val(maskValue(unmaskValue(iElement.val()))); | ||
} | ||
@@ -168,3 +169,3 @@ } | ||
} | ||
if (!angular.isDefined(iAttrs.uiMaskPlaceholder)) { | ||
if ( ! originalPlaceholder) { | ||
iElement.attr('placeholder', maskPlaceholder); | ||
@@ -185,3 +186,3 @@ } | ||
iElement.bind('mousedown mouseup', mouseDownUpHandler); | ||
iElement.bind('input keyup click focus', eventHandler); | ||
iElement.bind(linkOptions.eventsToHandle.join(' '), eventHandler); | ||
iElement.bind('paste', onPasteHandler); | ||
@@ -188,0 +189,0 @@ eventsBound = true; |
@@ -274,2 +274,12 @@ describe("uiMask", function () { | ||
it("should accept ui-mask-placeholder and not set val when first showing input", function() { | ||
var placeholderHtml = "<input name='input' ng-model='x' ui-mask='{{mask}}' placeholder='Phone Number' ui-mask-placeholder='(XXX) XXX-XXXX'>", | ||
input = compileElement(placeholderHtml); | ||
scope.$apply("x = ''"); | ||
scope.$apply("mask = '(999) 999-9999'"); | ||
expect(input.val()).toBe(""); | ||
expect(input.attr("placeholder")).toBe("Phone Number"); | ||
}); | ||
it("should interpret empty ui-mask-placeholder", function() { | ||
@@ -276,0 +286,0 @@ var placeholderHtml = "<input name='input' ng-model='x' ui-mask='{{mask}}' placeholder='Phone Number' ui-mask-placeholder>", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
94893
1393