angular-ui-mask
Advanced tools
Comparing version 1.3.0 to 1.4.1
/*! | ||
* angular-ui-mask | ||
* https://github.com/angular-ui/ui-mask | ||
* Version: 1.3.0 - 2015-07-31T07:01:50.807Z | ||
* Version: 1.4.1 - 2015-08-04T05:02:33.346Z | ||
* License: MIT | ||
@@ -125,3 +125,8 @@ */ | ||
iAttrs.$observe('uiMask', initialize); | ||
iAttrs.$observe('placeholder', initPlaceholder); | ||
if (angular.isDefined(iAttrs.uiMaskPlaceholder)) { | ||
iAttrs.$observe('uiMaskPlaceholder', initPlaceholder); | ||
} | ||
else { | ||
iAttrs.$observe('placeholder', initPlaceholder); | ||
} | ||
var modelViewValue = false; | ||
@@ -171,3 +176,5 @@ iAttrs.$observe('modelViewValue', function(val) { | ||
} | ||
iElement.attr('placeholder', maskPlaceholder); | ||
if (!angular.isDefined(iAttrs.uiMaskPlaceholder)) { | ||
iElement.attr('placeholder', maskPlaceholder); | ||
} | ||
iElement.val(viewValue); | ||
@@ -246,3 +253,3 @@ controller.$viewValue = viewValue; | ||
function getPlaceholderChar(i) { | ||
var placeholder = iAttrs.placeholder; | ||
var placeholder = angular.isDefined(iAttrs.uiMaskPlaceholder) ? iAttrs.uiMaskPlaceholder : iAttrs.placeholder; | ||
@@ -249,0 +256,0 @@ if (typeof placeholder !== 'undefined' && placeholder[i]) { |
/*! | ||
* angular-ui-mask | ||
* https://github.com/angular-ui/ui-mask | ||
* Version: 1.3.0 - 2015-07-31T07:01:50.807Z | ||
* Version: 1.4.1 - 2015-08-04T05:02:33.346Z | ||
* 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)?(y(e),I?(h(),d(),!0):f()):f()}function l(e){angular.isDefined(e)&&(R=e,I&&O())}function c(e){return I?(z=v(e||""),Z=p(z),a.$setValidity("mask",Z),Z&&z.length?m(z):void 0):e}function s(e){return I?(z=v(e||""),Z=p(z),a.$viewValue=z.length?m(z):"",a.$setValidity("mask",Z),""===z&&u.required&&a.$setValidity("required",!a.$error.required),Z?z:void 0):e}function f(){return I=!1,g(),angular.isDefined(N)?r.attr("placeholder",N):r.removeAttr("placeholder"),angular.isDefined(P)?r.attr("maxlength",P):r.removeAttr("maxlength"),r.val(a.$modelValue),a.$viewValue=a.$modelValue,!1}function h(){z=C=v(a.$modelValue||""),T=B=m(z),Z=p(z);var e=Z&&z.length?T:"";u.maxlength&&r.attr("maxlength",2*_[_.length-1]),r.attr("placeholder",R),r.val(e),a.$viewValue=e,a.$setValidity("mask",Z)}function d(){K||(r.bind("blur",k),r.bind("mousedown mouseup",x),r.bind("input keyup click focus",O),r.bind("paste",w),K=!0)}function g(){K&&(r.unbind("blur",k),r.unbind("mousedown",x),r.unbind("mouseup",x),r.unbind("input",O),r.unbind("keyup",O),r.unbind("click",O),r.unbind("focus",O),r.unbind("paste",w),K=!1)}function p(e){return e.length?e.length>=j:!0}function v(e){var n="",t=D.slice();return e=e.toString(),angular.forEach(q,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=_.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=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(_=[],D=[],R="","string"==typeof e){j=0;var t=!1,i=0,r=e.split("");angular.forEach(r,function(e,r){W.maskDefinitions[e]?(_.push(n),R+=b(r-i),D.push(W.maskDefinitions[e]),n++,t||j++):"?"===e?(t=!0,i++):(R+=e,n++)})}_.push(_.slice().pop()+1),q=$(),I=_.length>1?!0:!1}function k(){W.clearOnBlur&&(F=0,H=0,Z&&0!==z.length||(T="",r.val(""),e.$apply(function(){a.$setViewValue("")})))}function x(e){"mousedown"===e.type?r.bind("mouseout",V):r.unbind("mouseout",V)}function V(){H=E(this),r.unbind("mouseout",V)}function w(){S(this,r.val().length)}function O(e){e=e||{};var n=e.which,t=e.type;if(16!==n&&91!==n){var i,u=r.val(),o=B,l=v(u),c=C,s=A(this)||0,f=F||0,h=s-f,d=_[0],g=_[l.length]||_.slice().shift(),p=H||0,b=E(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,O=46===n||"keyup"!==t&&k&&0===h&&!$,D=(V||w||"click"===t)&&s>d;if(H=E(this),!x&&(!b||"click"!==t&&"keyup"!==t)){if("input"===t&&k&&!$&&l===c){for(;w&&s>d&&!M(s);)s--;for(;O&&g>s&&-1===_.indexOf(s);)s++;var R=_.indexOf(s);l=l.substring(0,R)+l.substring(R+1)}for(i=m(l),B=i,C=l,r.val(i),a.$setViewValue(l),y&&d>=s&&(s=d+1),D&&s--,s=s>g?g:d>s?d:s;!M(s)&&s>d&&g>s;)s+=D?-1:1;(D&&g>s||y&&!M(f))&&s++,F=s,S(this,s)}}}function M(e){return _.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 E(e){return e?void 0!==e.selectionStart?e.selectionEnd-e.selectionStart:document.selection?document.selection.createRange().text.length:0:0}var _,D,R,q,j,z,T,Z,B,C,F,H,I=!1,K=!1,N=u.placeholder,P=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),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(c),a.$parsers.push(s),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}).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})}}}}])}(); |
{ | ||
"name": "angular-ui-mask", | ||
"version": "1.3.0", | ||
"version": "1.4.1", | ||
"author": "https://github.com/angular-ui/ui-mask/graphs/contributors", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -115,3 +115,8 @@ /* | ||
iAttrs.$observe('uiMask', initialize); | ||
iAttrs.$observe('placeholder', initPlaceholder); | ||
if (angular.isDefined(iAttrs.uiMaskPlaceholder)) { | ||
iAttrs.$observe('uiMaskPlaceholder', initPlaceholder); | ||
} | ||
else { | ||
iAttrs.$observe('placeholder', initPlaceholder); | ||
} | ||
var modelViewValue = false; | ||
@@ -161,3 +166,5 @@ iAttrs.$observe('modelViewValue', function(val) { | ||
} | ||
iElement.attr('placeholder', maskPlaceholder); | ||
if (!angular.isDefined(iAttrs.uiMaskPlaceholder)) { | ||
iElement.attr('placeholder', maskPlaceholder); | ||
} | ||
iElement.val(viewValue); | ||
@@ -236,3 +243,3 @@ controller.$viewValue = viewValue; | ||
function getPlaceholderChar(i) { | ||
var placeholder = iAttrs.placeholder; | ||
var placeholder = angular.isDefined(iAttrs.uiMaskPlaceholder) ? iAttrs.uiMaskPlaceholder : iAttrs.placeholder; | ||
@@ -239,0 +246,0 @@ if (typeof placeholder !== 'undefined' && placeholder[i]) { |
@@ -262,2 +262,24 @@ describe("uiMask", function () { | ||
}); | ||
it("should accept ui-mask-placeholder", 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'"); | ||
input.triggerHandler("input"); | ||
expect(input.val()).toBe("(XXX) XXX-XXXX"); | ||
expect(input.attr("placeholder")).toBe("Phone Number"); | ||
}); | ||
it("should interpret empty ui-mask-placeholder", function() { | ||
var placeholderHtml = "<input name='input' ng-model='x' ui-mask='{{mask}}' placeholder='Phone Number' ui-mask-placeholder>", | ||
input = compileElement(placeholderHtml); | ||
scope.$apply("x = ''"); | ||
scope.$apply("mask = '(999) 999-9999'"); | ||
input.triggerHandler("input"); | ||
expect(input.val()).toBe("(___) ___-____"); | ||
expect(input.attr("placeholder")).toBe("Phone Number"); | ||
}) | ||
}); | ||
@@ -264,0 +286,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
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
94238
1383
14