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.4 to 1.6.5

index.js

2

dist/mask.js
/*!
* angular-ui-mask
* https://github.com/angular-ui/ui-mask
* Version: 1.6.4 - 2015-12-09T02:51:52.608Z
* Version: 1.6.5 - 2015-12-10T01:33:51.046Z
* License: MIT

@@ -6,0 +6,0 @@ */

/*!
* angular-ui-mask
* https://github.com/angular-ui/ui-mask
* Version: 1.6.4 - 2015-12-09T02:51:52.608Z
* Version: 1.6.5 - 2015-12-10T01:33:51.046Z
* 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&&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=D(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=D(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=D(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,A(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 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 D(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(S?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})}}}}])}();

@@ -84,7 +84,5 @@ var fs = require('fs');

var customLaunchers = geSaLaKaCuLa({
// TODO: add windows testing in once
// #5 is fixed https://github.com/angular-ui/ui-mask/issues/5
// 'Windows 7': {
// 'internet explorer': '9..11',
// },
'Windows 7': {
'internet explorer': '9..11',
},
'OS X 10.10': {

@@ -91,0 +89,0 @@ 'chrome': '43..44',

{
"name": "angular-ui-mask",
"version": "1.6.4",
"version": "1.6.5",
"author": "https://github.com/angular-ui/ui-mask/graphs/contributors",

@@ -36,3 +36,3 @@ "license": "MIT",

"scripts": {},
"main": "./dist/index.js",
"main": "./index.js",
"repository": {

@@ -39,0 +39,0 @@ "type": "git",

@@ -12,2 +12,4 @@ # ui-mask [![Build Status](https://travis-ci.org/angular-ui/ui-mask.svg?branch=master)](https://travis-ci.org/angular-ui/ui-mask) [![npm version](https://badge.fury.io/js/angular-ui-mask.svg)](http://badge.fury.io/js/angular-ui-mask) [![Bower version](https://badge.fury.io/bo/angular-ui-mask.svg)](http://badge.fury.io/bo/angular-ui-mask) [![Join the chat at https://gitter.im/angular-ui/ui-mask](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/angular-ui/ui-mask?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

### Bower
You can get it from [Bower](http://bower.io/)

@@ -32,2 +34,24 @@

### NPM (CommonJS, ES6 module)
Also you can use it as CommonJS or ES6 module with any build system that supports those type of modules (Webpack, SystemJS, JSPM etc):
```sh
npm install angular-ui-mask
```
And then include it with
```javascript
// CommonJS
var uiMask = require('angular-ui-mask');
angular.module('myApp', [uiMask, ...]);
```
```javascript
// ES6 module
import uiMask from 'angular-ui-mask';
angular.module('myApp', [uiMask, ...]);
```
### Customizing

@@ -34,0 +58,0 @@ 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`.

@@ -196,23 +196,41 @@ describe("uiMask", function () {

input = compileElement("<input name='input' ng-model='x' ui-mask='{{mask}}' required>");
input = compileElement("<input name='input' ng-model='x' ui-mask='{{mask}}' ng-required='required'>");
scope.$apply("required = false");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
input.triggerHandler("input");
expect(input.data("$ngModelController").$error.required).toBe(true);
input.val("abc123").triggerHandler("input");
expect(scope.x).toBe("ab1");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
input.triggerHandler("focus");
input.triggerHandler("blur");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
input.val("").triggerHandler("input");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
});
it("should setValidity on required to true when control is required and value is empty", function() {
var input = compileElement("<input name='input' ng-model='x' ui-mask='{{mask}}' required>");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
scope.$apply("x = ''");
scope.$apply("mask = '(A) * 9'");
scope.$apply("required = true");
input.triggerHandler("input");
expect(input.data("$ngModelController").$error.required).toBe(true);
input = compileElement("<input name='input' ng-model='x' ui-mask='{{mask}}' ng-required='required'>");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
scope.$apply("mask = '(A) A 9'");//change the mask so the $digest cycle runs the initialization code
input.triggerHandler("input");
expect(input.data("$ngModelController").$error.required).toBe(true);
scope.$apply("required = false");
});
it("should not setValidity on required when control is required and value is non empty", function() {
var input = compileElement("<input name='input' ng-model='x' ui-mask='{{mask}}' required>");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
scope.$apply("x = ''");
scope.$apply("mask = '(A) * 9'");
scope.$apply("required = true");
input.triggerHandler("input");
expect(input.data("$ngModelController").$error.required).toBe(true);
input.val("(abc123_) _ _").triggerHandler("input");
expect(scope.x).toBe("ab1");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
input.triggerHandler("focus");
input.triggerHandler("blur");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
input.val("").triggerHandler("input");
expect(input.data("$ngModelController").$error.required).toBeUndefined();
});

@@ -294,11 +312,11 @@ });

input.val("aa").triggerHandler("input");
input.val("aa___").triggerHandler("input");
input.triggerHandler("blur");
expect(input.val()).toBe("aa_");
input.val("99a").triggerHandler("input");
input.val("99a___").triggerHandler("input");
input.triggerHandler("blur");
expect(input.val()).toBe("99_");
input.val("992").triggerHandler("input");
input.val("992___").triggerHandler("input");
input.triggerHandler("blur");

@@ -449,2 +467,3 @@ expect(input.val()).toBe("992");

scope.$apply();
input.val("6505265486").triggerHandler("input");

@@ -458,2 +477,3 @@ expect(input.val()).toBe("(650) 526-5486");

scope.$apply();
input.val("6505265486").triggerHandler("input");

@@ -472,3 +492,3 @@ expect(input.val()).toBe("(650) 526-5486");

scope.$apply("mask = '@193'");
input.val("f123").triggerHandler("input");
input.val("f123____").triggerHandler("input");
input.triggerHandler("blur");

@@ -521,3 +541,3 @@ expect(input.val()).toBe("f123");

scope.$apply("mask = '@999'");
input.val("f111").triggerHandler("input");
input.val("f111____").triggerHandler("input");
input.triggerHandler("blur");

@@ -524,0 +544,0 @@ expect(input.val()).toBe("f111");

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