Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

angular-ui-mask

Package Overview
Dependencies
Maintainers
2
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-ui-mask - npm Package Compare versions

Comparing version 1.6.7 to 1.6.8

51

dist/mask.js
/*!
* angular-ui-mask
* https://github.com/angular-ui/ui-mask
* Version: 1.6.7 - 2015-12-30T03:35:19.510Z
* Version: 1.6.8 - 2016-01-20T02:51:38.491Z
* License: MIT

@@ -46,3 +46,6 @@ */

// Vars used exclusively in eventHandler()
oldValue, oldValueUnmasked, oldCaretPosition, oldSelectionLength;
oldValue, oldValueUnmasked, oldCaretPosition, oldSelectionLength,
// Used for communicating if a backspace operation should be allowed between
// keydownHandler and eventHandler
preventBackspace;

@@ -217,2 +220,3 @@ var originalIsEmpty = controller.$isEmpty;

iElement.bind('mousedown mouseup', mouseDownUpHandler);
iElement.bind('keydown', keydownHandler);
iElement.bind(linkOptions.eventsToHandle.join(' '), eventHandler);

@@ -229,2 +233,3 @@ eventsBound = true;

iElement.unbind('mouseup', mouseDownUpHandler);
iElement.unbind('keydown', keydownHandler);
iElement.unbind('input', eventHandler);

@@ -292,7 +297,2 @@ iElement.unbind('keyup', eventHandler);

// E.g., a mask pattern of '+7 9999' won't have the 7 bleed into the unmasked value.
// If a maskable char is followed by a mask char and has a mask
// char behind it, we'll split it into it's own component so if
// a user is aggressively deleting in the input and a char ahead
// of the maskable char gets deleted, we'll still be able to strip
// it in the unmaskValue() preprocessing.
function getMaskComponents() {

@@ -313,3 +313,3 @@ var maskPlaceholderChars = maskPlaceholder.split(''),

maskPlaceholderCopy = maskPlaceholderChars.join('');
return maskPlaceholderCopy.replace(/[_]+/g, '_').replace(/([^_]+)([a-zA-Z0-9])([^_])/g, '$1$2_$3').split('_');
return maskPlaceholderCopy.replace(/[_]+/g, '_').split('_');
}

@@ -422,2 +422,21 @@

function keydownHandler(e) {
/*jshint validthis: true */
var isKeyBackspace = e.which === 8,
caretPos = getCaretPosition(this) - 1 || 0; //value in keydown is pre change so bump caret position back to simulate post change
if (isKeyBackspace) {
while(caretPos >= 0) {
if (isValidCaretPosition(caretPos)) {
//re-adjust the caret position.
//Increment to account for the initial decrement to simulate post change caret position
setCaretPosition(this, caretPos + 1);
break;
}
caretPos--;
}
preventBackspace = caretPos === -1;
}
}
function eventHandler(e) {

@@ -472,2 +491,13 @@ /*jshint validthis: true */

if (isKeyBackspace && preventBackspace) {
iElement.val(maskPlaceholder);
// This shouldn't be needed but for some reason after aggressive backspacing the controller $viewValue is incorrect.
// This keeps the $viewValue updated and correct.
scope.$apply(function () {
controller.$setViewValue(''); // $setViewValue should be run in angular context, otherwise the changes will be invisible to angular and user code.
});
setCaretPosition(this, caretPosOld);
return;
}
// Value Handling

@@ -487,3 +517,6 @@ // ==============

valUnmasked = valUnmasked.substring(0, charIndex) + valUnmasked.substring(charIndex + 1);
valAltered = true;
// If value has not changed, don't want to call $setViewValue, may be caused by IE raising input event due to placeholder
if (valUnmasked !== valUnmaskedOld)
valAltered = true;
}

@@ -490,0 +523,0 @@

4

dist/mask.min.js
/*!
* angular-ui-mask
* https://github.com/angular-ui/ui-mask
* Version: 1.6.7 - 2015-12-30T03:35:19.510Z
* Version: 1.6.8 - 2016-01-20T02:51:38.491Z
* License: MIT
*/
!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",function(e){function n(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 t=e;return function(e,i,r,a){function u(e){return angular.isDefined(e)?(k(e),B?(h(),d(),!0):f()):f()}function o(e){e&&(_=e,!B||0===i.val().length&&angular.isDefined(r.placeholder)||i.val(m(p(i.val()))))}function l(){return u(r.uiMask)}function c(e){return B?(R=p(e||""),H=v(R),a.$setValidity("mask",H),H&&R.length?m(R):void 0):e}function s(e){return B?(R=p(e||""),H=v(R),a.$viewValue=R.length?m(R):"",a.$setValidity("mask",H),H?W?a.$viewValue:R:void 0):e}function f(){return B=!1,g(),angular.isDefined(q)?i.attr("placeholder",q):i.removeAttr("placeholder"),angular.isDefined(I)?i.attr("maxlength",I):i.removeAttr("maxlength"),i.val(a.$modelValue),a.$viewValue=a.$modelValue,!1}function h(){R=F=p(a.$modelValue||""),T=z=m(R),H=v(R),r.maxlength&&i.attr("maxlength",2*P[P.length-1]),q||i.attr("placeholder",_);for(var e=a.$modelValue,n=a.$formatters.length;n--;)e=a.$formatters[n](e);a.$viewValue=e||"",a.$render()}function d(){L||(i.bind("blur",y),i.bind("mousedown mouseup",E),i.bind(G.eventsToHandle.join(" "),x),L=!0)}function g(){L&&(i.unbind("blur",y),i.unbind("mousedown",E),i.unbind("mouseup",E),i.unbind("input",x),i.unbind("keyup",x),i.unbind("click",x),i.unbind("focus",x),L=!1)}function v(e){return e.length?e.length>=j:!0}function p(e){var n="",t=S.slice();return e=e.toString(),angular.forEach(C,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=P.slice();return angular.forEach(_.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,t=angular.isDefined(r.uiMaskPlaceholder)?r.uiMaskPlaceholder:r.placeholder;return angular.isDefined(t)&&t[e]?t[e]:(n=angular.isDefined(r.uiMaskPlaceholderChar)&&r.uiMaskPlaceholderChar?r.uiMaskPlaceholderChar:"_","space"===n.toLowerCase()?" ":n[0])}function $(){var e,n=_.split("");return P&&!isNaN(P[0])&&angular.forEach(P,function(e){n[e]="_"}),e=n.join(""),e.replace(/[_]+/g,"_").replace(/([^_]+)([a-zA-Z0-9])([^_])/g,"$1$2_$3").split("_")}function k(e){var n=0;if(P=[],S=[],_="",angular.isString(e)){j=0;var t=!1,i=0,r=e.split("");angular.forEach(r,function(e,r){G.maskDefinitions[e]?(P.push(n),_+=b(r-i),S.push(G.maskDefinitions[e]),n++,t||j++,t=!1):"?"===e?(t=!0,i++):(_+=e,n++)})}P.push(P.slice().pop()+1),C=$(),B=P.length>1?!0:!1}function y(){G.clearOnBlur&&(N=0,Z=0,H&&0!==R.length||(T="",i.val(""),e.$apply(function(){a.$viewValue=""}))),R!==J&&w(i[0]),J=R}function w(e){var n;angular.isFunction(window.Event)&&!e.fireEvent?(n=new Event("change",{view:window,bubbles:!0,cancelable:!1}),e.dispatchEvent(n)):"createEvent"in document?(n=document.createEvent("HTMLEvents"),n.initEvent("change",!1,!0),e.dispatchEvent(n)):e.fireEvent&&e.fireEvent("onchange")}function E(e){"mousedown"===e.type?i.bind("mouseout",M):i.unbind("mouseout",M)}function M(){Z=A(this),i.unbind("mouseout",M)}function x(n){n=n||{};var t=n.which,r=n.type;if(16!==t&&91!==t){var u,o=i.val(),l=z,c=!1,s=p(o),f=F,h=O(this)||0,d=N||0,g=h-d,v=P[0],b=P[s.length]||P.slice().shift(),$=Z||0,k=A(this)>0,y=$>0,w=o.length>l.length||$&&o.length>l.length-$,E=o.length<l.length||$&&o.length===l.length-$,M=t>=37&&40>=t&&n.shiftKey,x=37===t,S=8===t||"keyup"!==r&&E&&-1===g,_=46===t||"keyup"!==r&&E&&0===g&&!y,C=(x||S||"click"===r)&&h>v;if(Z=A(this),!M&&(!k||"click"!==r&&"keyup"!==r)){if("input"===r&&E&&!y&&s===f){for(;S&&h>v&&!V(h);)h--;for(;_&&b>h&&-1===P.indexOf(h);)h++;var j=P.indexOf(h);s=s.substring(0,j)+s.substring(j+1),c=!0}for(u=m(s),z=u,F=s,!c&&o.length>u.length&&(c=!0),i.val(u),c&&e.$apply(function(){a.$setViewValue(s)}),w&&v>=h&&(h=v+1),C&&h--,h=h>b?b:v>h?v:h;!V(h)&&h>v&&b>h;)h+=C?-1:1;(C&&b>h||w&&!V(d))&&h++,N=h,D(this,h)}}}function V(e){return P.indexOf(e)>-1}function O(e){if(!e)return 0;if(void 0!==e.selectionStart)return e.selectionStart;if(document.selection&&n(i[0])){e.focus();var t=document.selection.createRange();return t.moveStart("character",e.value?-e.value.length:0),t.text.length}return 0}function D(e,t){if(!e)return 0;if(0!==e.offsetWidth&&0!==e.offsetHeight)if(e.setSelectionRange)n(i[0])&&(e.focus(),e.setSelectionRange(t,t));else if(e.createTextRange){var r=e.createTextRange();r.collapse(!0),r.moveEnd("character",t),r.moveStart("character",t),r.select()}}function A(e){return e?void 0!==e.selectionStart?e.selectionEnd-e.selectionStart:document.selection?document.selection.createRange().text.length:0:0}var P,S,_,C,j,R,T,H,z,F,N,Z,B=!1,L=!1,q=r.placeholder,I=r.maxlength,K=a.$isEmpty;a.$isEmpty=function(e){return K(B?p(e||""):e)};var W=!1;r.$observe("modelViewValue",function(e){"true"===e&&(W=!0)});var G={};r.uiOptions?(G=e.$eval("["+r.uiOptions+"]"),G=angular.isObject(G[0])?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.isObject(n[t])&&!angular.isArray(n[t])&&(n[t]=angular.extend({},e[t],n[t])));return n}(t,G[0]):t):G=t,r.$observe("uiMask",u),angular.isDefined(r.uiMaskPlaceholder)?r.$observe("uiMaskPlaceholder",o):r.$observe("placeholder",o),angular.isDefined(r.uiMaskPlaceholderChar)&&r.$observe("uiMaskPlaceholderChar",l),a.$formatters.push(c),a.$parsers.unshift(s);var J=i.val();i.bind("mousedown mouseup",E),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&&i!==1/0&&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",function(e){function n(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 t=e;return function(e,i,r,a){function u(e){return angular.isDefined(e)?($(e),q?(h(),d(),!0):f()):f()}function o(e){e&&(j=e,!q||0===i.val().length&&angular.isDefined(r.placeholder)||i.val(m(p(i.val()))))}function l(){return u(r.uiMask)}function c(e){return q?(_=p(e||""),F=v(_),a.$setValidity("mask",F),F&&_.length?m(_):void 0):e}function s(e){return q?(_=p(e||""),F=v(_),a.$viewValue=_.length?m(_):"",a.$setValidity("mask",F),F?J?a.$viewValue:_:void 0):e}function f(){return q=!1,g(),angular.isDefined(K)?i.attr("placeholder",K):i.removeAttr("placeholder"),angular.isDefined(W)?i.attr("maxlength",W):i.removeAttr("maxlength"),i.val(a.$modelValue),a.$viewValue=a.$modelValue,!1}function h(){_=z=p(a.$modelValue||""),H=N=m(_),F=v(_),r.maxlength&&i.attr("maxlength",2*S[S.length-1]),K||i.attr("placeholder",j);for(var e=a.$modelValue,n=a.$formatters.length;n--;)e=a.$formatters[n](e);a.$viewValue=e||"",a.$render()}function d(){I||(i.bind("blur",y),i.bind("mousedown mouseup",E),i.bind("keydown",x),i.bind(Q.eventsToHandle.join(" "),V),I=!0)}function g(){I&&(i.unbind("blur",y),i.unbind("mousedown",E),i.unbind("mouseup",E),i.unbind("keydown",x),i.unbind("input",V),i.unbind("keyup",V),i.unbind("click",V),i.unbind("focus",V),I=!1)}function v(e){return e.length?e.length>=T:!0}function p(e){var n="",t=C.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=S.slice();return angular.forEach(j.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,t=angular.isDefined(r.uiMaskPlaceholder)?r.uiMaskPlaceholder:r.placeholder;return angular.isDefined(t)&&t[e]?t[e]:(n=angular.isDefined(r.uiMaskPlaceholderChar)&&r.uiMaskPlaceholderChar?r.uiMaskPlaceholderChar:"_","space"===n.toLowerCase()?" ":n[0])}function k(){var e,n=j.split("");return S&&!isNaN(S[0])&&angular.forEach(S,function(e){n[e]="_"}),e=n.join(""),e.replace(/[_]+/g,"_").split("_")}function $(e){var n=0;if(S=[],C=[],j="",angular.isString(e)){T=0;var t=!1,i=0,r=e.split("");angular.forEach(r,function(e,r){Q.maskDefinitions[e]?(S.push(n),j+=b(r-i),C.push(Q.maskDefinitions[e]),n++,t||T++,t=!1):"?"===e?(t=!0,i++):(j+=e,n++)})}S.push(S.slice().pop()+1),R=k(),q=S.length>1?!0:!1}function y(){Q.clearOnBlur&&(B=0,L=0,F&&0!==_.length||(H="",i.val(""),e.$apply(function(){a.$viewValue=""}))),_!==U&&w(i[0]),U=_}function w(e){var n;angular.isFunction(window.Event)&&!e.fireEvent?(n=new Event("change",{view:window,bubbles:!0,cancelable:!1}),e.dispatchEvent(n)):"createEvent"in document?(n=document.createEvent("HTMLEvents"),n.initEvent("change",!1,!0),e.dispatchEvent(n)):e.fireEvent&&e.fireEvent("onchange")}function E(e){"mousedown"===e.type?i.bind("mouseout",M):i.unbind("mouseout",M)}function M(){L=P(this),i.unbind("mouseout",M)}function x(e){var n=8===e.which,t=D(this)-1||0;if(n){for(;t>=0;){if(O(t)){A(this,t+1);break}t--}Z=-1===t}}function V(n){n=n||{};var t=n.which,r=n.type;if(16!==t&&91!==t){var u,o=i.val(),l=N,c=!1,s=p(o),f=z,h=D(this)||0,d=B||0,g=h-d,v=S[0],b=S[s.length]||S.slice().shift(),k=L||0,$=P(this)>0,y=k>0,w=o.length>l.length||k&&o.length>l.length-k,E=o.length<l.length||k&&o.length===l.length-k,M=t>=37&&40>=t&&n.shiftKey,x=37===t,V=8===t||"keyup"!==r&&E&&-1===g,C=46===t||"keyup"!==r&&E&&0===g&&!y,R=(x||V||"click"===r)&&h>v;if(L=P(this),!M&&(!$||"click"!==r&&"keyup"!==r)){if(V&&Z)return i.val(j),e.$apply(function(){a.$setViewValue("")}),void A(this,d);if("input"===r&&E&&!y&&s===f){for(;V&&h>v&&!O(h);)h--;for(;C&&b>h&&-1===S.indexOf(h);)h++;var T=S.indexOf(h);s=s.substring(0,T)+s.substring(T+1),s!==f&&(c=!0)}for(u=m(s),N=u,z=s,!c&&o.length>u.length&&(c=!0),i.val(u),c&&e.$apply(function(){a.$setViewValue(s)}),w&&v>=h&&(h=v+1),R&&h--,h=h>b?b:v>h?v:h;!O(h)&&h>v&&b>h;)h+=R?-1:1;(R&&b>h||w&&!O(d))&&h++,B=h,A(this,h)}}}function O(e){return S.indexOf(e)>-1}function D(e){if(!e)return 0;if(void 0!==e.selectionStart)return e.selectionStart;if(document.selection&&n(i[0])){e.focus();var t=document.selection.createRange();return t.moveStart("character",e.value?-e.value.length:0),t.text.length}return 0}function A(e,t){if(!e)return 0;if(0!==e.offsetWidth&&0!==e.offsetHeight)if(e.setSelectionRange)n(i[0])&&(e.focus(),e.setSelectionRange(t,t));else if(e.createTextRange){var r=e.createTextRange();r.collapse(!0),r.moveEnd("character",t),r.moveStart("character",t),r.select()}}function P(e){return e?void 0!==e.selectionStart?e.selectionEnd-e.selectionStart:document.selection?document.selection.createRange().text.length:0:0}var S,C,j,R,T,_,H,F,N,z,B,L,Z,q=!1,I=!1,K=r.placeholder,W=r.maxlength,G=a.$isEmpty;a.$isEmpty=function(e){return G(q?p(e||""):e)};var J=!1;r.$observe("modelViewValue",function(e){"true"===e&&(J=!0)});var Q={};r.uiOptions?(Q=e.$eval("["+r.uiOptions+"]"),Q=angular.isObject(Q[0])?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.isObject(n[t])&&!angular.isArray(n[t])&&(n[t]=angular.extend({},e[t],n[t])));return n}(t,Q[0]):t):Q=t,r.$observe("uiMask",u),angular.isDefined(r.uiMaskPlaceholder)?r.$observe("uiMaskPlaceholder",o):r.$observe("placeholder",o),angular.isDefined(r.uiMaskPlaceholderChar)&&r.$observe("uiMaskPlaceholderChar",l),a.$formatters.push(c),a.$parsers.unshift(s);var U=i.val();i.bind("mousedown mouseup",E),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&&i!==1/0&&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.6.7",
"version": "1.6.8",
"author": "https://github.com/angular-ui/ui-mask/graphs/contributors",

@@ -5,0 +5,0 @@ "license": "MIT",

@@ -36,3 +36,6 @@ /*

// Vars used exclusively in eventHandler()
oldValue, oldValueUnmasked, oldCaretPosition, oldSelectionLength;
oldValue, oldValueUnmasked, oldCaretPosition, oldSelectionLength,
// Used for communicating if a backspace operation should be allowed between
// keydownHandler and eventHandler
preventBackspace;

@@ -207,2 +210,3 @@ var originalIsEmpty = controller.$isEmpty;

iElement.bind('mousedown mouseup', mouseDownUpHandler);
iElement.bind('keydown', keydownHandler);
iElement.bind(linkOptions.eventsToHandle.join(' '), eventHandler);

@@ -219,2 +223,3 @@ eventsBound = true;

iElement.unbind('mouseup', mouseDownUpHandler);
iElement.unbind('keydown', keydownHandler);
iElement.unbind('input', eventHandler);

@@ -282,7 +287,2 @@ iElement.unbind('keyup', eventHandler);

// E.g., a mask pattern of '+7 9999' won't have the 7 bleed into the unmasked value.
// If a maskable char is followed by a mask char and has a mask
// char behind it, we'll split it into it's own component so if
// a user is aggressively deleting in the input and a char ahead
// of the maskable char gets deleted, we'll still be able to strip
// it in the unmaskValue() preprocessing.
function getMaskComponents() {

@@ -303,3 +303,3 @@ var maskPlaceholderChars = maskPlaceholder.split(''),

maskPlaceholderCopy = maskPlaceholderChars.join('');
return maskPlaceholderCopy.replace(/[_]+/g, '_').replace(/([^_]+)([a-zA-Z0-9])([^_])/g, '$1$2_$3').split('_');
return maskPlaceholderCopy.replace(/[_]+/g, '_').split('_');
}

@@ -412,2 +412,21 @@

function keydownHandler(e) {
/*jshint validthis: true */
var isKeyBackspace = e.which === 8,
caretPos = getCaretPosition(this) - 1 || 0; //value in keydown is pre change so bump caret position back to simulate post change
if (isKeyBackspace) {
while(caretPos >= 0) {
if (isValidCaretPosition(caretPos)) {
//re-adjust the caret position.
//Increment to account for the initial decrement to simulate post change caret position
setCaretPosition(this, caretPos + 1);
break;
}
caretPos--;
}
preventBackspace = caretPos === -1;
}
}
function eventHandler(e) {

@@ -462,2 +481,13 @@ /*jshint validthis: true */

if (isKeyBackspace && preventBackspace) {
iElement.val(maskPlaceholder);
// This shouldn't be needed but for some reason after aggressive backspacing the controller $viewValue is incorrect.
// This keeps the $viewValue updated and correct.
scope.$apply(function () {
controller.$setViewValue(''); // $setViewValue should be run in angular context, otherwise the changes will be invisible to angular and user code.
});
setCaretPosition(this, caretPosOld);
return;
}
// Value Handling

@@ -477,3 +507,6 @@ // ==============

valUnmasked = valUnmasked.substring(0, charIndex) + valUnmasked.substring(charIndex + 1);
valAltered = true;
// If value has not changed, don't want to call $setViewValue, may be caused by IE raising input event due to placeholder
if (valUnmasked !== valUnmaskedOld)
valAltered = true;
}

@@ -480,0 +513,0 @@

@@ -92,3 +92,2 @@ describe("uiMask", function () {

});
describe("with other directives", function() {

@@ -121,11 +120,2 @@ beforeEach(function () {

});
describe("nested inside another directive", function() {
it("should have the correct placeholder value inside ng-if", function() {
var input = compileElement('<div><div ng-if="showMe"><input type="text" ng-model="x" ui-mask="99/99/9999" ui-mask-placeholder="__/__/____" placeholder="date" /></div></div>');
scope.$apply("showMe = true");
input = input.find('input');
expect(input.val()).toBe("");
})
});
});

@@ -256,2 +246,15 @@

});
it("should not bleed static mask characters into the value when backspacing", function() {
var input = compileElement(inputHtml);
scope.$apply("x = ''");
scope.$apply("mask = 'QT****'");
input.triggerHandler('focus');
expect(input.val()).toBe("QT____");
//simulate a backspace event
input.triggerHandler({ type: 'keydown', which: 8 });
input.triggerHandler({ type: 'keyup', which: 8 });
expect(input.val()).toBe("QT____");
expect(scope.x).toBe('');
});
});

@@ -258,0 +261,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc