New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.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.7.2 to 1.8.0

protractor.config.js

30

dist/mask.js
/*!
* angular-ui-mask
* https://github.com/angular-ui/ui-mask
* Version: 1.7.2 - 2016-01-29T01:41:09.032Z
* Version: 1.8.0 - 2016-02-19T02:52:44.000Z
* License: MIT

@@ -25,3 +25,25 @@ */

})
.directive('uiMask', ['uiMaskConfig', function(maskConfig) {
.provider('uiMask.Config', function() {
var options = {};
this.clearOnBlur = function(clearOnBlur) {
return options.clearOnBlur = clearOnBlur;
};
this.clearOnBlurPlaceholder = function(clearOnBlurPlaceholder) {
return options.clearOnBlurPlaceholder = clearOnBlurPlaceholder;
};
this.eventsToHandle = function(eventsToHandle) {
return options.eventsToHandle = eventsToHandle;
};
this.$get = ['uiMaskConfig', function(uiMaskConfig) {
var tempOptions = uiMaskConfig;
for(var prop in options)
{
tempOptions[prop] = options[prop];
}
return tempOptions;
}];
})
.directive('uiMask', ['uiMask.Config', function(maskConfig) {
function isFocused (elem) {

@@ -170,3 +192,3 @@ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);

controller.$formatters.push(formatter);
controller.$formatters.unshift(formatter);
controller.$parsers.unshift(parser);

@@ -517,3 +539,3 @@

// These events don't require any action
if (isSelection || (isSelected && (eventType === 'click' || eventType === 'keyup'))) {
if (isSelection || (isSelected && (eventType === 'click' || eventType === 'keyup' || eventType === 'focus'))) {
return;

@@ -520,0 +542,0 @@ }

4

dist/mask.min.js
/*!
* angular-ui-mask
* https://github.com/angular-ui/ui-mask
* Version: 1.7.2 - 2016-01-29T01:41:09.032Z
* Version: 1.8.0 - 2016-02-19T02:52:44.000Z
* License: MIT
*/
!function(){"use strict";angular.module("ui.mask",[]).value("uiMaskConfig",{maskDefinitions:{9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},clearOnBlur:!0,clearOnBlurPlaceholder:!1,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 l(e){e&&(C=e,!q||0===i.val().length&&angular.isDefined(r.placeholder)||i.val(m(p(i.val()))))}function o(){return u(r.uiMask)}function c(e){return q?(T=p(e||""),H=v(T),a.$setValidity("mask",H),H&&T.length?m(T):void 0):e}function s(e){return q?(T=p(e||""),H=v(T),a.$viewValue=T.length?m(T):"",a.$setValidity("mask",H),H?J?a.$viewValue:T: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(){T=F=p(a.$modelValue||""),B=z=m(T),H=v(T),r.maxlength&&i.attr("maxlength",2*S[S.length-1]),K||i.attr("placeholder",C);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(" "),O),I=!0)}function g(){I&&(i.unbind("blur",y),i.unbind("mousedown",E),i.unbind("mouseup",E),i.unbind("keydown",x),i.unbind("input",O),i.unbind("keyup",O),i.unbind("click",O),i.unbind("focus",O),I=!1)}function v(e){return e.length?e.length>=R:!0}function p(e){var n,t,r="",a=i[0],u=_.slice(),l=N,o=l+A(a),c="";return e=e.toString(),n=0,t=e.length-C.length,angular.forEach(j,function(i){var r=i.position;r>=l&&o>r||(r>=l&&(r+=t),e.substring(r,r+i.value.length)===i.value&&(c+=e.slice(n,r),n=r+i.value.length))}),e=c+e.slice(n),angular.forEach(e.split(""),function(e){u.length&&u[0].test(e)&&(r+=e,u.shift())}),r}function m(e){var n="",t=S.slice();return angular.forEach(C.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,t=C.split("");S&&!isNaN(S[0])&&angular.forEach(S,function(e){t[e]="_"}),e=t.join(""),n=e.replace(/[_]+/g,"_").replace(/([^_]+)([a-zA-Z0-9])([^_])/g,"$1$2_$3").split("_"),n=n.filter(function(e){return""!==e});var i=0;return n.map(function(n){var t=e.indexOf(n,i);return i=t+1,{value:n,position:t}})}function $(e){var n=0;if(S=[],_=[],C="",angular.isString(e)){R=0;var t=!1,i=0,r=e.split("");angular.forEach(r,function(e,r){Q.maskDefinitions[e]?(S.push(n),C+=b(r-i),_.push(Q.maskDefinitions[e]),n++,t||R++,t=!1):"?"===e?(t=!0,i++):(C+=e,n++)})}S.push(S.slice().pop()+1),j=k(),q=S.length>1?!0:!1}function y(){(Q.clearOnBlur||Q.clearOnBlurPlaceholder&&0===T.length&&r.placeholder)&&(N=0,Z=0,H&&0!==T.length||(B="",i.val(""),e.$apply(function(){a.$viewValue=""}))),T!==U&&w(i[0]),U=T}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(e){var n=8===e.which,t=D(this)-1||0;if(n){for(;t>=0;){if(V(t)){P(this,t+1);break}t--}L=-1===t}}function O(n){n=n||{};var t=n.which,r=n.type;if(16!==t&&91!==t){var u,l=i.val(),o=z,c=!1,s=p(l),f=F,h=D(this)||0,d=N||0,g=h-d,v=S[0],b=S[s.length]||S.slice().shift(),k=Z||0,$=A(this)>0,y=k>0,w=l.length>o.length||k&&l.length>o.length-k,E=l.length<o.length||k&&l.length===o.length-k,M=t>=37&&40>=t&&n.shiftKey,x=37===t,O=8===t||"keyup"!==r&&E&&-1===g,_=46===t||"keyup"!==r&&E&&0===g&&!y,j=(x||O||"click"===r)&&h>v;if(Z=A(this),!M&&(!$||"click"!==r&&"keyup"!==r)){if(O&&L)return i.val(C),e.$apply(function(){a.$setViewValue("")}),void P(this,d);if("input"===r&&E&&!y&&s===f){for(;O&&h>v&&!V(h);)h--;for(;_&&b>h&&-1===S.indexOf(h);)h++;var R=S.indexOf(h);s=s.substring(0,R)+s.substring(R+1),s!==f&&(c=!0)}for(u=m(s),z=u,F=s,!c&&l.length>u.length&&(c=!0),i.val(u),c&&e.$apply(function(){a.$setViewValue(u)}),w&&v>=h&&(h=v+1),j&&h--,h=h>b?b:v>h?v:h;!V(h)&&h>v&&b>h;)h+=j?-1:1;(j&&b>h||w&&!V(d))&&h++,N=h,P(this,h)}}}function V(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 P(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 S,_,C,j,R,T,B,H,z,F,N,Z,L,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",l):r.$observe("placeholder",l),angular.isDefined(r.uiMaskPlaceholderChar)&&r.$observe("uiMaskPlaceholderChar",o),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})}}}}])}();
!function(){"use strict";angular.module("ui.mask",[]).value("uiMaskConfig",{maskDefinitions:{9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},clearOnBlur:!0,clearOnBlurPlaceholder:!1,eventsToHandle:["input","keyup","click","focus"]}).provider("uiMask.Config",function(){var e={};this.clearOnBlur=function(n){return e.clearOnBlur=n},this.clearOnBlurPlaceholder=function(n){return e.clearOnBlurPlaceholder=n},this.eventsToHandle=function(n){return e.eventsToHandle=n},this.$get=["uiMaskConfig",function(n){var t=n;for(var r in e)t[r]=e[r];return t}]}).directive("uiMask",["uiMask.Config",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,r,i,a){function u(e){return angular.isDefined(e)?($(e),q?(h(),d(),!0):f()):f()}function l(e){e&&(_=e,!q||0===r.val().length&&angular.isDefined(i.placeholder)||r.val(m(p(r.val()))))}function o(){return u(i.uiMask)}function c(e){return q?(j=p(e||""),R=g(j),a.$setValidity("mask",R),R&&j.length?m(j):void 0):e}function s(e){return q?(j=p(e||""),R=g(j),a.$viewValue=j.length?m(j):"",a.$setValidity("mask",R),R?J?a.$viewValue:j:void 0):e}function f(){return q=!1,v(),angular.isDefined(K)?r.attr("placeholder",K):r.removeAttr("placeholder"),angular.isDefined(W)?r.attr("maxlength",W):r.removeAttr("maxlength"),r.val(a.$modelValue),a.$viewValue=a.$modelValue,!1}function h(){j=F=p(a.$modelValue||""),H=z=m(j),R=g(j),i.maxlength&&r.attr("maxlength",2*C[C.length-1]),K||r.attr("placeholder",_);for(var e=a.$modelValue,n=a.$formatters.length;n--;)e=a.$formatters[n](e);a.$viewValue=e||"",a.$render()}function d(){I||(r.bind("blur",y),r.bind("mousedown mouseup",E),r.bind("keydown",O),r.bind(Q.eventsToHandle.join(" "),x),I=!0)}function v(){I&&(r.unbind("blur",y),r.unbind("mousedown",E),r.unbind("mouseup",E),r.unbind("keydown",O),r.unbind("input",x),r.unbind("keyup",x),r.unbind("click",x),r.unbind("focus",x),I=!1)}function g(e){return e.length?e.length>=T:!0}function p(e){var n,t,i="",a=r[0],u=S.slice(),l=N,o=l+A(a),c="";return e=e.toString(),n=0,t=e.length-_.length,angular.forEach(B,function(r){var i=r.position;i>=l&&o>i||(i>=l&&(i+=t),e.substring(i,i+r.value.length)===r.value&&(c+=e.slice(n,i),n=i+r.value.length))}),e=c+e.slice(n),angular.forEach(e.split(""),function(e){u.length&&u[0].test(e)&&(i+=e,u.shift())}),i}function m(e){var n="",t=C.slice();return angular.forEach(_.split(""),function(r,i){e.length&&i===t[0]?(n+=e.charAt(0)||"_",e=e.substr(1),t.shift()):n+=r}),n}function b(e){var n,t=angular.isDefined(i.uiMaskPlaceholder)?i.uiMaskPlaceholder:i.placeholder;return angular.isDefined(t)&&t[e]?t[e]:(n=angular.isDefined(i.uiMaskPlaceholderChar)&&i.uiMaskPlaceholderChar?i.uiMaskPlaceholderChar:"_","space"===n.toLowerCase()?" ":n[0])}function k(){var e,n,t=_.split("");C&&!isNaN(C[0])&&angular.forEach(C,function(e){t[e]="_"}),e=t.join(""),n=e.replace(/[_]+/g,"_").replace(/([^_]+)([a-zA-Z0-9])([^_])/g,"$1$2_$3").split("_"),n=n.filter(function(e){return""!==e});var r=0;return n.map(function(n){var t=e.indexOf(n,r);return r=t+1,{value:n,position:t}})}function $(e){var n=0;if(C=[],S=[],_="",angular.isString(e)){T=0;var t=!1,r=0,i=e.split("");angular.forEach(i,function(e,i){Q.maskDefinitions[e]?(C.push(n),_+=b(i-r),S.push(Q.maskDefinitions[e]),n++,t||T++,t=!1):"?"===e?(t=!0,r++):(_+=e,n++)})}C.push(C.slice().pop()+1),B=k(),q=C.length>1?!0:!1}function y(){(Q.clearOnBlur||Q.clearOnBlurPlaceholder&&0===j.length&&i.placeholder)&&(N=0,Z=0,R&&0!==j.length||(H="",r.val(""),e.$apply(function(){a.$viewValue=""}))),j!==U&&w(r[0]),U=j}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?r.bind("mouseout",M):r.unbind("mouseout",M)}function M(){Z=A(this),r.unbind("mouseout",M)}function O(e){var n=8===e.which,t=P(this)-1||0;if(n){for(;t>=0;){if(V(t)){D(this,t+1);break}t--}L=-1===t}}function x(n){n=n||{};var t=n.which,i=n.type;if(16!==t&&91!==t){var u,l=r.val(),o=z,c=!1,s=p(l),f=F,h=P(this)||0,d=N||0,v=h-d,g=C[0],b=C[s.length]||C.slice().shift(),k=Z||0,$=A(this)>0,y=k>0,w=l.length>o.length||k&&l.length>o.length-k,E=l.length<o.length||k&&l.length===o.length-k,M=t>=37&&40>=t&&n.shiftKey,O=37===t,x=8===t||"keyup"!==i&&E&&-1===v,S=46===t||"keyup"!==i&&E&&0===v&&!y,B=(O||x||"click"===i)&&h>g;if(Z=A(this),!M&&(!$||"click"!==i&&"keyup"!==i&&"focus"!==i)){if(x&&L)return r.val(_),e.$apply(function(){a.$setViewValue("")}),void D(this,d);if("input"===i&&E&&!y&&s===f){for(;x&&h>g&&!V(h);)h--;for(;S&&b>h&&-1===C.indexOf(h);)h++;var T=C.indexOf(h);s=s.substring(0,T)+s.substring(T+1),s!==f&&(c=!0)}for(u=m(s),z=u,F=s,!c&&l.length>u.length&&(c=!0),r.val(u),c&&e.$apply(function(){a.$setViewValue(u)}),w&&g>=h&&(h=g+1),B&&h--,h=h>b?b:g>h?g:h;!V(h)&&h>g&&b>h;)h+=B?-1:1;(B&&b>h||w&&!V(d))&&h++,N=h,D(this,h)}}}function V(e){return C.indexOf(e)>-1}function P(e){if(!e)return 0;if(void 0!==e.selectionStart)return e.selectionStart;if(document.selection&&n(r[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(r[0])&&(e.focus(),e.setSelectionRange(t,t));else if(e.createTextRange){var i=e.createTextRange();i.collapse(!0),i.moveEnd("character",t),i.moveStart("character",t),i.select()}}function A(e){return e?void 0!==e.selectionStart?e.selectionEnd-e.selectionStart:document.selection?document.selection.createRange().text.length:0:0}var C,S,_,B,T,j,H,R,z,F,N,Z,L,q=!1,I=!1,K=i.placeholder,W=i.maxlength,G=a.$isEmpty;a.$isEmpty=function(e){return G(q?p(e||""):e)};var J=!1;i.$observe("modelViewValue",function(e){"true"===e&&(J=!0)});var Q={};i.uiOptions?(Q=e.$eval("["+i.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,i.$observe("uiMask",u),angular.isDefined(i.uiMaskPlaceholder)?i.$observe("uiMaskPlaceholder",l):i.$observe("placeholder",l),angular.isDefined(i.uiMaskPlaceholderChar)&&i.$observe("uiMaskPlaceholderChar",o),a.$formatters.unshift(c),a.$parsers.unshift(s);var U=r.val();r.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 r=0;if(arguments.length>1&&(r=Number(arguments[1]),r!==r?r=0:0!==r&&r!==1/0&&r!==-(1/0)&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=t)return-1;for(var i=r>=0?r:Math.max(t-Math.abs(r),0);t>i;i++)if(i in n&&n[i]===e)return i;return-1})}}}}])}();

@@ -18,8 +18,15 @@ var fs = require('fs');

var reKaLa = geSaLaKaCuLa.recursiveKarmaLauncher;
var versionAfterBump;
var connect = require('gulp-connect');
var angularProtractor = require('gulp-angular-protractor');
var sauceConnectLauncher = require('sauce-connect-launcher');
var versionAfterBump, sauceConnectProcess;
gulp.task('default', ['build', 'test']);
gulp.task('ci', ['karma-sauce']);
gulp.task('build', ['scripts']);
gulp.task('test', ['build', 'karma']);
gulp.task('test', ['build', 'protractor', 'karma']);
gulp.task('ci', ['protractor-sauce','karma-sauce'], function() {
sauceConnectProcess.close(function() {
console.log("Closed Sauce Connect process");
});
});

@@ -73,13 +80,32 @@ gulp.task('watch', ['build', 'karma-watch'], function() {

gulp.task('karma', ['build'], function() {
var server = new Server({configFile: __dirname + '/karma.conf.js', singleRun: true});
server.start();
gulp.task('karma', ['build'], function(callback) {
runKarma(true, callback);
});
gulp.task('karma-watch', ['build'], function(callback) {
runKarma(false, callback);
});
gulp.task('karma-watch', ['build'], function() {
var server = new Server({configFile: __dirname + '/karma.conf.js', singleRun: false});
function runKarma(singleRun, callback) {
var server = new Server({configFile: __dirname + '/karma.conf.js', singleRun: singleRun}, function(exitCode) {
callback();
});
server.start();
}
gulp.task('start-sauce-connect', function(callback) {
sauceConnectLauncher({
username: process.env.SAUCE_USERNAME,
accessKey: process.env.SAUCE_ACCESS_KEY,
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER
}, function(err, sauceProcess) {
if (err) {
callback(err);
}
sauceConnectProcess = sauceProcess;
callback();
});
});
gulp.task('karma-sauce', ['build'], function() {
gulp.task('karma-sauce', ['build', 'start-sauce-connect'], function(callback) {
var customLaunchers = geSaLaKaCuLa({

@@ -97,7 +123,37 @@ 'Windows 7': {

reKaLa({
karma: Server,
customLaunchers: customLaunchers
}, process.exit);
karma: Server,
customLaunchers: customLaunchers
}, function(code) {
callback();
});
});
gulp.task('protractor', ['build'], function(callback) {
runProtractor('protractor.config.js', callback);
});
gulp.task('protractor-sauce', ['build', 'start-sauce-connect'], function(callback) {
runProtractor('protractor.travis.config.js', callback);
});
var runProtractor = function(configFile, callback) {
connect.server({
port: 8000
});
gulp.src(['test/maskSpec.protractor.js'])
.pipe(angularProtractor({
'configFile': configFile,
'debug': false,
'autoStartStopServer': true
}))
.on('error', function(e) {
callback(e);
})
.on('end', function() {
connect.serverClose();
callback();
});
};
var handleError = function(err) {

@@ -104,0 +160,0 @@ console.log(err.toString());

@@ -28,3 +28,3 @@ // Karma configuration

// possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
reporters: ['progress'],
reporters: ['progress','saucelabs'],

@@ -75,3 +75,5 @@

sauceLabs: {
testName: 'UI Mask CI'
testName: 'UI Mask CI',
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER,
startConnect: false
},

@@ -78,0 +80,0 @@ captureTimeout: 120000,

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

@@ -13,4 +13,6 @@ "license": "MIT",

"gulp": "~3.9.0",
"gulp-angular-protractor": "0.0.6",
"gulp-bump": "^0.3.1",
"gulp-concat": "~2.6.0",
"gulp-connect": "^2.3.1",
"gulp-footer": "~1.0.5",

@@ -31,5 +33,5 @@ "gulp-git": "^1.4.0",

"karma-ng-html2js-preprocessor": "^0.1.0",
"karma-phantomjs-launcher": "~0.2.1",
"karma-sauce-launcher": "^0.2.14",
"phantomjs": "^1.9.18",
"protractor": "^3.0.0",
"run-sequence": "^1.1.2"

@@ -36,0 +38,0 @@ },

@@ -75,6 +75,25 @@ # 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)

#### Global customization
In addition to customizing behaviors for a specific element, you can also customize the behaviors globally. To do this, simply use the `uiMaskConfig` provider in your app configuration. Example:
```sh
app.config(['uiMask.ConfigProvider', function(uiMaskConfigProvider) {
uiMaskConfigProvider.maskDefinitions({'A': /[a-z], '*': /[a-zA-Z0-9]/});
uiMaskConfigProvider.clearOnBlur(false);
uiMaskConfigProvider.eventsToHandle(['input', 'keyup', 'click']);
}
```
#### maskDefinitions
The keys in `maskDefinitions` represent the special tokens/characters used in your mask declaration to delimit acceptable ranges of inputs. For example, we use '9' here to accept any numeric values for a phone number: `ui-mask="(999) 999-9999"`. The values associated with each token are regexen. Each regex defines the ranges of values that will be acceptable as inputs in the position of that token.
#### modelViewValue
If this is set to true, then the model value bound with `ng-model` will be the same as the `$viewValue` meaning it will contain any static mask characters present in the mask definition. This will not set the model value to a `$viewValue` that is considered invalid.
#### uiMaskPlaceholder
Allows customizing the mask placeholder when a user has focused the input element and while typing in their value
#### uiMaskPlaceholderChar
Allows customizing the mask placeholder character. The default mask placeholder is `_`.
## Development

@@ -81,0 +100,0 @@

@@ -15,3 +15,25 @@ /*

})
.directive('uiMask', ['uiMaskConfig', function(maskConfig) {
.provider('uiMask.Config', function() {
var options = {};
this.clearOnBlur = function(clearOnBlur) {
return options.clearOnBlur = clearOnBlur;
};
this.clearOnBlurPlaceholder = function(clearOnBlurPlaceholder) {
return options.clearOnBlurPlaceholder = clearOnBlurPlaceholder;
};
this.eventsToHandle = function(eventsToHandle) {
return options.eventsToHandle = eventsToHandle;
};
this.$get = ['uiMaskConfig', function(uiMaskConfig) {
var tempOptions = uiMaskConfig;
for(var prop in options)
{
tempOptions[prop] = options[prop];
}
return tempOptions;
}];
})
.directive('uiMask', ['uiMask.Config', function(maskConfig) {
function isFocused (elem) {

@@ -160,3 +182,3 @@ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);

controller.$formatters.push(formatter);
controller.$formatters.unshift(formatter);
controller.$parsers.unshift(parser);

@@ -507,3 +529,3 @@

// These events don't require any action
if (isSelection || (isSelected && (eventType === 'click' || eventType === 'keyup'))) {
if (isSelection || (isSelected && (eventType === 'click' || eventType === 'keyup' || eventType === 'focus'))) {
return;

@@ -510,0 +532,0 @@ }

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

var inputHtml = "<input name='input' ng-model='x' ui-mask='{{mask}}' ui-options='options'>";
var compileElement, scope, config, timeout;
var compileElement, scope, config, timeout, uiMaskConfigProvider;

@@ -25,3 +25,6 @@ beforeEach(module("ui.mask"));

}
});
})
.config(['uiMask.ConfigProvider', function(configProvider) {
uiMaskConfigProvider = configProvider;
}]);
module("test");

@@ -505,3 +508,3 @@ });

expect(input.attr("placeholder")).toBe("MM/DD/YYYY");
})
});

@@ -681,2 +684,17 @@ it("should allow text input to be the same character as ui-mask-placeholder-char", function() {

describe("Configuration Provider", function() {
it("should return default values", inject(function($injector) {
var service = $injector.invoke(uiMaskConfigProvider.$get);
expect(service.clearOnBlur).toEqual(true);
expect(service.clearOnBlurPlaceholder).toEqual(false);
}));
it("should merge default values with configured values", inject(function($injector) {
uiMaskConfigProvider.clearOnBlur(false);
var service = $injector.invoke(uiMaskConfigProvider.$get);
expect(service.clearOnBlur).toEqual(false);
expect(service.clearOnBlurPlaceholder).toEqual(false);
}));
});
});

Sorry, the diff of this file is not supported yet

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