From 4b04461ef5b543379e9b36f7d7f27c131070e22d Mon Sep 17 00:00:00 2001 From: Dzulqarnain Nasir Date: Sun, 23 Nov 2014 21:58:08 +0200 Subject: [PATCH 1/3] Demo fix * Directive is now part of the dateParser module. --- demo.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo.html b/demo.html index f71cc0c..34a3b84 100644 --- a/demo.html +++ b/demo.html @@ -1,5 +1,5 @@ - + From 5d4c322656879c5104beae8f58159f2e0a94bfe4 Mon Sep 17 00:00:00 2001 From: Dzulqarnain Nasir Date: Sun, 23 Nov 2014 22:31:25 +0200 Subject: [PATCH 2/3] Issue #23 * Added validity check in the formatter. --- bower.json | 2 +- dateparser.directive.js | 19 +++++++++++++------ dist/angular-dateparser.js | 9 +++------ dist/angular-dateparser.min.js | 4 ++-- dist/angular-dateparser.min.js.map | 2 +- package.json | 2 +- test/dateparser.directive.spec.js | 20 ++++++++++++++++++-- 7 files changed, 39 insertions(+), 19 deletions(-) diff --git a/bower.json b/bower.json index fafa44c..a66131f 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "angular-dateParser", - "version": "1.0.11", + "version": "1.0.12", "homepage": "https://github.com/dnasir/angular-dateParser", "authors": [ "Dzulqarnain Nasir" diff --git a/dateparser.directive.js b/dateparser.directive.js index 73e51a3..7733f51 100644 --- a/dateparser.directive.js +++ b/dateparser.directive.js @@ -1,3 +1,9 @@ +/* + * DateParser directive + * + * Use this directive in form fields to implement the dateParser functionality. + */ + angular.module('dateParser') .directive('dateParser', ['dateFilter', '$dateParser', function(dateFilter, $dateParser) { @@ -16,12 +22,9 @@ angular.module('dateParser') ngModel.$parsers.unshift(function(viewValue) { var date = $dateParser(viewValue, dateFormat); - - if(isNaN(date)) { - ngModel.$setValidity('date', false); - } else { - ngModel.$setValidity('date', true); - } + + // Set validity when view value changes + ngModel.$setValidity('date', angular.isDate(date)); return date; }); @@ -34,6 +37,10 @@ angular.module('dateParser') // Format the new model value before it is displayed in the editor ngModel.$formatters.push(function(modelValue) { + + // Set validity when model value changes + ngModel.$setValidity('date', angular.isDate(modelValue)); + return modelValue ? dateFilter(modelValue, dateFormat) : ''; }); } diff --git a/dist/angular-dateparser.js b/dist/angular-dateparser.js index 18ffdb8..aa59dc7 100644 --- a/dist/angular-dateparser.js +++ b/dist/angular-dateparser.js @@ -1,5 +1,5 @@ /*! - * angular-dateParser 1.0.11 + * angular-dateParser 1.0.12 * https://github.com/dnasir/angular-dateParser * Copyright 2014, Dzulqarnain Nasir * Licensed under: MIT (http://www.opensource.org/licenses/MIT) @@ -243,11 +243,7 @@ }); ngModel.$parsers.unshift(function(viewValue) { var date = $dateParser(viewValue, dateFormat); - if (isNaN(date)) { - ngModel.$setValidity("date", false); - } else { - ngModel.$setValidity("date", true); - } + ngModel.$setValidity("date", angular.isDate(date)); return date; }); ngModel.$render = function() { @@ -255,6 +251,7 @@ scope.ngModel = ngModel.$modelValue; }; ngModel.$formatters.push(function(modelValue) { + ngModel.$setValidity("date", angular.isDate(modelValue)); return modelValue ? dateFilter(modelValue, dateFormat) : ""; }); } diff --git a/dist/angular-dateparser.min.js b/dist/angular-dateparser.min.js index e5c9b71..9db1270 100644 --- a/dist/angular-dateparser.min.js +++ b/dist/angular-dateparser.min.js @@ -1,3 +1,3 @@ -/*! angular-dateParser 1.0.11 | (c) 2014, Dzulqarnain Nasir | MIT (http://www.opensource.org/licenses/MIT) */ -!function(a){a.module("dateParser",[]).factory("dateParserHelpers",[function(){"use strict";var a={};return{getInteger:function(b,c,d,e){var f=b.substring(c),g=a[d+"_"+e];g||(g=new RegExp("^(\\d{"+d+","+e+"})"),a[d+"_"+e]=g);var h=g.exec(f);return h?h[1]:null}}}]).factory("$dateParser",["$locale","dateParserHelpers",function(b,c){"use strict";var d=b.DATETIME_FORMATS,e=d.MONTH.concat(d.SHORTMONTH),f=d.DAY.concat(d.SHORTDAY);return function(b,g){if(a.isDate(b))return b;try{if(b+="",g+="",!g.length)return new Date(b);d[g]&&(g=d[g]);for(var h=new Date,i=0,j=0,k="",l=h.getFullYear(),m=h.getMonth()+1,n=h.getDate(),o=0,p=0,q=0,r=0,s="am",t=0,u=!1;j70?1900+(l-0):2e3+(l-0))}else if("MMMM"===v||"MMM"==v){m=0;for(var y=0;y12&&(m-=12),i+=z.length;break}}if(1>m||m>12)throw"Invalid month"}else if("EEEE"==v||"EEE"==v)for(var A=0;Am||m>12)throw"Invalid month";i+=m.length}else if("dd"==v||"d"==v){if(n=c.getInteger(b,i,v.length,2),null===n||1>n||n>31)throw"Invalid date";i+=n.length}else if("HH"==v||"H"==v){if(o=c.getInteger(b,i,v.length,2),null===o||0>o||o>23)throw"Invalid hours";i+=o.length}else if("hh"==v||"h"==v){if(o=c.getInteger(b,i,v.length,2),null===o||1>o||o>12)throw"Invalid hours";i+=o.length}else if("mm"==v||"m"==v){if(p=c.getInteger(b,i,v.length,2),null===p||0>p||p>59)throw"Invalid minutes";i+=p.length}else if("ss"==v||"s"==v){if(q=c.getInteger(b,i,v.length,2),null===q||0>q||q>59)throw"Invalid seconds";i+=q.length}else if("sss"===v){if(r=c.getInteger(b,i,3,3),null===r||0>r||r>999)throw"Invalid milliseconds";i+=3}else if("a"==v){if("am"==b.substring(i,i+2).toLowerCase())s="AM";else{if("pm"!=b.substring(i,i+2).toLowerCase())throw"Invalid AM/PM";s="PM"}i+=2}else if("Z"==v){if(u=!0,"Z"===b[i])t=0,i+=1;else if(":"===b[i+3]){var C=b.substring(i,i+6);t=60*parseInt(C.substr(0,3),10)+parseInt(C.substr(4,2),10),i+=6}else{var C=b.substring(i,i+5);t=60*parseInt(C.substr(0,3),10)+parseInt(C.substr(3,2),10),i+=5}if(t>720||-720>t)throw"Invalid timezone"}else{if(b.substring(i,i+v.length)!=v)throw"Pattern value mismatch";i+=v.length}}else{for(;"'"!=g.charAt(++j)&&j29)throw"Invalid date"}else if(n>28)throw"Invalid date";if((4==m||6==m||9==m||11==m)&&n>30)throw"Invalid date";12>o&&"PM"==s?o+=12:o>11&&"AM"==s&&(o-=12);var D=new Date(l,m-1,n,o,p,q,r);return u?new Date(D.getTime()-6e4*(t+D.getTimezoneOffset())):D}catch(E){return void 0}}}]),a.module("dateParser").directive("dateParser",["dateFilter","$dateParser",function(a,b){"use strict";return{restrict:"A",require:"ngModel",link:function(c,d,e,f){var g;e.$observe("dateParser",function(a){g=a,f.$render()}),f.$parsers.unshift(function(a){var c=b(a,g);return isNaN(c)?f.$setValidity("date",!1):f.$setValidity("date",!0),c}),f.$render=function(){d.val(f.$modelValue?a(f.$modelValue,g):void 0),c.ngModel=f.$modelValue},f.$formatters.push(function(b){return b?a(b,g):""})}}}])}(angular); +/*! angular-dateParser 1.0.12 | (c) 2014, Dzulqarnain Nasir | MIT (http://www.opensource.org/licenses/MIT) */ +!function(a){a.module("dateParser",[]).factory("dateParserHelpers",[function(){"use strict";var a={};return{getInteger:function(b,c,d,e){var f=b.substring(c),g=a[d+"_"+e];g||(g=new RegExp("^(\\d{"+d+","+e+"})"),a[d+"_"+e]=g);var h=g.exec(f);return h?h[1]:null}}}]).factory("$dateParser",["$locale","dateParserHelpers",function(b,c){"use strict";var d=b.DATETIME_FORMATS,e=d.MONTH.concat(d.SHORTMONTH),f=d.DAY.concat(d.SHORTDAY);return function(b,g){if(a.isDate(b))return b;try{if(b+="",g+="",!g.length)return new Date(b);d[g]&&(g=d[g]);for(var h=new Date,i=0,j=0,k="",l=h.getFullYear(),m=h.getMonth()+1,n=h.getDate(),o=0,p=0,q=0,r=0,s="am",t=0,u=!1;j70?1900+(l-0):2e3+(l-0))}else if("MMMM"===v||"MMM"==v){m=0;for(var y=0;y12&&(m-=12),i+=z.length;break}}if(1>m||m>12)throw"Invalid month"}else if("EEEE"==v||"EEE"==v)for(var A=0;Am||m>12)throw"Invalid month";i+=m.length}else if("dd"==v||"d"==v){if(n=c.getInteger(b,i,v.length,2),null===n||1>n||n>31)throw"Invalid date";i+=n.length}else if("HH"==v||"H"==v){if(o=c.getInteger(b,i,v.length,2),null===o||0>o||o>23)throw"Invalid hours";i+=o.length}else if("hh"==v||"h"==v){if(o=c.getInteger(b,i,v.length,2),null===o||1>o||o>12)throw"Invalid hours";i+=o.length}else if("mm"==v||"m"==v){if(p=c.getInteger(b,i,v.length,2),null===p||0>p||p>59)throw"Invalid minutes";i+=p.length}else if("ss"==v||"s"==v){if(q=c.getInteger(b,i,v.length,2),null===q||0>q||q>59)throw"Invalid seconds";i+=q.length}else if("sss"===v){if(r=c.getInteger(b,i,3,3),null===r||0>r||r>999)throw"Invalid milliseconds";i+=3}else if("a"==v){if("am"==b.substring(i,i+2).toLowerCase())s="AM";else{if("pm"!=b.substring(i,i+2).toLowerCase())throw"Invalid AM/PM";s="PM"}i+=2}else if("Z"==v){if(u=!0,"Z"===b[i])t=0,i+=1;else if(":"===b[i+3]){var C=b.substring(i,i+6);t=60*parseInt(C.substr(0,3),10)+parseInt(C.substr(4,2),10),i+=6}else{var C=b.substring(i,i+5);t=60*parseInt(C.substr(0,3),10)+parseInt(C.substr(3,2),10),i+=5}if(t>720||-720>t)throw"Invalid timezone"}else{if(b.substring(i,i+v.length)!=v)throw"Pattern value mismatch";i+=v.length}}else{for(;"'"!=g.charAt(++j)&&j29)throw"Invalid date"}else if(n>28)throw"Invalid date";if((4==m||6==m||9==m||11==m)&&n>30)throw"Invalid date";12>o&&"PM"==s?o+=12:o>11&&"AM"==s&&(o-=12);var D=new Date(l,m-1,n,o,p,q,r);return u?new Date(D.getTime()-6e4*(t+D.getTimezoneOffset())):D}catch(E){return void 0}}}]),a.module("dateParser").directive("dateParser",["dateFilter","$dateParser",function(b,c){"use strict";return{restrict:"A",require:"ngModel",link:function(d,e,f,g){var h;f.$observe("dateParser",function(a){h=a,g.$render()}),g.$parsers.unshift(function(b){var d=c(b,h);return g.$setValidity("date",a.isDate(d)),d}),g.$render=function(){e.val(g.$modelValue?b(g.$modelValue,h):void 0),d.ngModel=g.$modelValue},g.$formatters.push(function(c){return g.$setValidity("date",a.isDate(c)),c?b(c,h):""})}}}])}(angular); //# sourceMappingURL=angular-dateparser.min.js.map \ No newline at end of file diff --git a/dist/angular-dateparser.min.js.map b/dist/angular-dateparser.min.js.map index 861fc75..463d4b4 100644 --- a/dist/angular-dateparser.min.js.map +++ b/dist/angular-dateparser.min.js.map @@ -1 +1 @@ -{"version":3,"file":"angular-dateparser.min.js","sources":["angular-dateparser.js"],"names":["angular","module","factory","cache","getInteger","string","startPoint","minLength","maxLength","val","substring","matcher","RegExp","match","exec","$locale","dateParserHelpers","datetimeFormats","DATETIME_FORMATS","monthNames","MONTH","concat","SHORTMONTH","dayNames","DAY","SHORTDAY","format","isDate","length","Date","now","i_val","i_format","format_token","year","getFullYear","month","getMonth","date","getDate","hh","mm","ss","sss","ampm","z","parsedZ","charAt","token","i","month_name","toLowerCase","j","day_name","tzStr","parseInt","substr","localDate","getTime","getTimezoneOffset","e","undefined","directive","dateFilter","$dateParser","restrict","require","link","scope","element","attrs","ngModel","dateFormat","$observe","value","$render","$parsers","unshift","viewValue","isNaN","$setValidity","$modelValue","$formatters","push","modelValue"],"mappings":";CAOA,SAAUA,GACNA,EAAQC,OAAO,iBAAkBC,QAAQ,qBAAuB,WAC5D,YACA,IAAIC,KACJ,QACIC,WAAY,SAASC,EAAQC,EAAYC,EAAWC,GAChD,GAAIC,GAAMJ,EAAOK,UAAUJ,GACvBK,EAAUR,EAAMI,EAAY,IAAMC,EACjCG,KACDA,EAAU,GAAIC,QAAO,SAAWL,EAAY,IAAMC,EAAY,MAC9DL,EAAMI,EAAY,IAAMC,GAAaG,EAEzC,IAAIE,GAAQF,EAAQG,KAAKL,EACzB,OAAII,GACOA,EAAM,GAEV,UAGdX,QAAQ,eAAiB,UAAW,oBAAqB,SAASa,EAASC,GAC5E,YACA,IAAIC,GAAkBF,EAAQG,iBAC1BC,EAAaF,EAAgBG,MAAMC,OAAOJ,EAAgBK,YAC1DC,EAAWN,EAAgBO,IAAIH,OAAOJ,EAAgBQ,SAC1D,OAAO,UAAShB,EAAKiB,GACjB,GAAI1B,EAAQ2B,OAAOlB,GACf,MAAOA,EAEX,KAGI,GAFAA,GAAY,GACZiB,GAAkB,IACbA,EAAOE,OACR,MAAO,IAAIC,MAAKpB,EAEhBQ,GAAgBS,KAChBA,EAAST,EAAgBS,GAG7B,KADA,GAAII,GAAM,GAAID,MAAQE,EAAQ,EAAGC,EAAW,EAAGC,EAAe,GAAIC,EAAOJ,EAAIK,cAAeC,EAAQN,EAAIO,WAAa,EAAGC,EAAOR,EAAIS,UAAWC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAM,EAAGC,EAAO,KAAMC,EAAI,EAAGC,GAAU,EACtMd,EAAWN,EAAOE,QAAQ,CAC7BK,EAAeP,EAAOqB,OAAOf,EAC7B,IAAIgB,GAAQ,EACZ,IAA+B,KAA3BtB,EAAOqB,OAAOf,GAAlB,CAYA,KAAON,EAAOqB,OAAOf,IAAaC,GAAgBD,EAAWN,EAAOE,QAChEoB,GAAStB,EAAOqB,OAAOf,IAE3B,IAAa,QAATgB,GAA4B,MAATA,GAA0B,KAATA,EAAc,CAClD,GAAIzC,GAAWC,CAcf,IAba,QAATwC,IACAzC,EAAY,EACZC,EAAY,GAEH,MAATwC,IACAzC,EAAY,EACZC,EAAY,GAEH,KAATwC,IACAzC,EAAY,EACZC,EAAY,GAEhB0B,EAAOlB,EAAkBZ,WAAWK,EAAKsB,EAAOxB,EAAWC,GAC9C,OAAT0B,EACA,KAAM,cAEVH,IAASG,EAAKN,OACK,GAAfM,EAAKN,SAEDM,EADAA,EAAO,GACA,MAAQA,EAAO,GAEf,KAAOA,EAAO,QAG1B,IAAc,SAAVc,GAA6B,OAATA,EAAgB,CAC3CZ,EAAQ,CACR,KAAK,GAAIa,GAAI,EAAGA,EAAI9B,EAAWS,OAAQqB,IAAK,CACxC,GAAIC,GAAa/B,EAAW8B,EAC5B,IAAIxC,EAAIC,UAAUqB,EAAOA,EAAQmB,EAAWtB,QAAQuB,eAAiBD,EAAWC,cAAe,CAC3Ff,EAAQa,EAAI,EACRb,EAAQ,KACRA,GAAS,IAEbL,GAASmB,EAAWtB,MACpB,QAGR,GAAY,EAARQ,GAAaA,EAAQ,GACrB,KAAM,oBAEP,IAAa,QAATY,GAA4B,OAATA,EAC1B,IAAK,GAAII,GAAI,EAAGA,EAAI7B,EAASK,OAAQwB,IAAK,CACtC,GAAIC,GAAW9B,EAAS6B,EACxB,IAAI3C,EAAIC,UAAUqB,EAAOA,EAAQsB,EAASzB,QAAQuB,eAAiBE,EAASF,cAAe,CACvFpB,GAASsB,EAASzB,MAClB,YAGL,IAAa,MAAToB,GAA0B,KAATA,EAAc,CAEtC,GADAZ,EAAQpB,EAAkBZ,WAAWK,EAAKsB,EAAOiB,EAAMpB,OAAQ,GACjD,OAAVQ,GAA0B,EAARA,GAAaA,EAAQ,GACvC,KAAM,eAEVL,IAASK,EAAMR,WACZ,IAAa,MAAToB,GAA0B,KAATA,EAAc,CAEtC,GADAV,EAAOtB,EAAkBZ,WAAWK,EAAKsB,EAAOiB,EAAMpB,OAAQ,GACjD,OAATU,GAAwB,EAAPA,GAAYA,EAAO,GACpC,KAAM,cAEVP,IAASO,EAAKV,WACX,IAAa,MAAToB,GAA0B,KAATA,EAAc,CAEtC,GADAR,EAAKxB,EAAkBZ,WAAWK,EAAKsB,EAAOiB,EAAMpB,OAAQ,GACjD,OAAPY,GAAoB,EAALA,GAAUA,EAAK,GAC9B,KAAM,eAEVT,IAASS,EAAGZ,WACT,IAAa,MAAToB,GAA0B,KAATA,EAAc,CAEtC,GADAR,EAAKxB,EAAkBZ,WAAWK,EAAKsB,EAAOiB,EAAMpB,OAAQ,GACjD,OAAPY,GAAoB,EAALA,GAAUA,EAAK,GAC9B,KAAM,eAEVT,IAASS,EAAGZ,WACT,IAAa,MAAToB,GAA0B,KAATA,EAAc,CAEtC,GADAP,EAAKzB,EAAkBZ,WAAWK,EAAKsB,EAAOiB,EAAMpB,OAAQ,GACjD,OAAPa,GAAoB,EAALA,GAAUA,EAAK,GAC9B,KAAM,iBAEVV,IAASU,EAAGb,WACT,IAAa,MAAToB,GAA0B,KAATA,EAAc,CAEtC,GADAN,EAAK1B,EAAkBZ,WAAWK,EAAKsB,EAAOiB,EAAMpB,OAAQ,GACjD,OAAPc,GAAoB,EAALA,GAAUA,EAAK,GAC9B,KAAM,iBAEVX,IAASW,EAAGd,WACT,IAAc,QAAVoB,EAAiB,CAExB,GADAL,EAAM3B,EAAkBZ,WAAWK,EAAKsB,EAAO,EAAG,GACtC,OAARY,GAAsB,EAANA,GAAWA,EAAM,IACjC,KAAM,sBAEVZ,IAAS,MACN,IAAa,KAATiB,EAAc,CACrB,GAAqD,MAAjDvC,EAAIC,UAAUqB,EAAOA,EAAQ,GAAGoB,cAChCP,EAAO,SACJ,CAAA,GAAqD,MAAjDnC,EAAIC,UAAUqB,EAAOA,EAAQ,GAAGoB,cAGvC,KAAM,eAFNP,GAAO,KAIXb,GAAS,MACN,IAAa,KAATiB,EAAc,CAErB,GADAF,GAAU,EACS,MAAfrC,EAAIsB,GACJc,EAAI,EACJd,GAAS,MAET,IAAuB,MAAnBtB,EAAIsB,EAAQ,GAAY,CACxB,GAAIuB,GAAQ7C,EAAIC,UAAUqB,EAAOA,EAAQ,EACzCc,GAAuC,GAAnCU,SAASD,EAAME,OAAO,EAAG,GAAI,IAAWD,SAASD,EAAME,OAAO,EAAG,GAAI,IACzEzB,GAAS,MACN,CACH,GAAIuB,GAAQ7C,EAAIC,UAAUqB,EAAOA,EAAQ,EACzCc,GAAuC,GAAnCU,SAASD,EAAME,OAAO,EAAG,GAAI,IAAWD,SAASD,EAAME,OAAO,EAAG,GAAI,IACzEzB,GAAS,EAGjB,GAAIc,EAAI,KAAW,KAAJA,EACX,KAAM,uBAEP,CACH,GAAIpC,EAAIC,UAAUqB,EAAOA,EAAQiB,EAAMpB,SAAWoB,EAC9C,KAAM,wBAENjB,IAASiB,EAAMpB,YA3IvB,CAEI,KAAoC,KAA7BF,EAAOqB,SAASf,IAAoBA,EAAWN,EAAOE,QACzDoB,GAAStB,EAAOqB,OAAOf,EAE3B,IAAIvB,EAAIC,UAAUqB,EAAOA,EAAQiB,EAAMpB,SAAWoB,EAC9C,KAAM,wBAEVjB,IAASiB,EAAMpB,OACfI,KAsIR,GAAID,GAAStB,EAAImB,OACb,KAAM,wBASV,IAPAM,EAAOqB,SAASrB,EAAM,IACtBE,EAAQmB,SAASnB,EAAO,IACxBE,EAAOiB,SAASjB,EAAM,IACtBE,EAAKe,SAASf,EAAI,IAClBC,EAAKc,SAASd,EAAI,IAClBC,EAAKa,SAASb,EAAI,IAClBC,EAAMY,SAASZ,EAAK,IACP,GAATP,EACA,GAAIF,EAAO,IAAM,GAAKA,EAAO,MAAQ,GAAKA,EAAO,MAAQ,GACrD,GAAII,EAAO,GACP,KAAM,mBAGV,IAAIA,EAAO,GACP,KAAM,cAIlB,KAAa,GAATF,GAAuB,GAATA,GAAuB,GAATA,GAAuB,IAATA,IACtCE,EAAO,GACP,KAAM,cAGL,IAALE,GAAmB,MAARI,EACXJ,GAAM,GACCA,EAAK,IAAc,MAARI,IAClBJ,GAAM,GAEV,IAAIiB,GAAY,GAAI5B,MAAKK,EAAME,EAAQ,EAAGE,EAAME,EAAIC,EAAIC,EAAIC,EAC5D,OAAIG,GACO,GAAIjB,MAAK4B,EAAUC,UAAkD,KAArCb,EAAIY,EAAUE,sBAElDF,EACT,MAAOG,GACL,MAAOC,aAInB7D,EAAQC,OAAO,cAAc6D,UAAU,cAAgB,aAAc,cAAe,SAASC,EAAYC,GACrG,YACA,QACIC,SAAU,IACVC,QAAS,UACTC,KAAM,SAASC,EAAOC,EAASC,EAAOC,GAClC,GAAIC,EACJF,GAAMG,SAAS,aAAc,SAASC,GAClCF,EAAaE,EACbH,EAAQI,YAEZJ,EAAQK,SAASC,QAAQ,SAASC,GAC9B,GAAIxC,GAAO0B,EAAYc,EAAWN,EAMlC,OALIO,OAAMzC,GACNiC,EAAQS,aAAa,QAAQ,GAE7BT,EAAQS,aAAa,QAAQ,GAE1B1C,IAEXiC,EAAQI,QAAU,WACdN,EAAQ5D,IAAI8D,EAAQU,YAAclB,EAAWQ,EAAQU,YAAaT,GAAcX,QAChFO,EAAMG,QAAUA,EAAQU,aAE5BV,EAAQW,YAAYC,KAAK,SAASC,GAC9B,MAAOA,GAAarB,EAAWqB,EAAYZ,GAAc,WAK1ExE"} \ No newline at end of file +{"version":3,"file":"angular-dateparser.min.js","sources":["angular-dateparser.js"],"names":["angular","module","factory","cache","getInteger","string","startPoint","minLength","maxLength","val","substring","matcher","RegExp","match","exec","$locale","dateParserHelpers","datetimeFormats","DATETIME_FORMATS","monthNames","MONTH","concat","SHORTMONTH","dayNames","DAY","SHORTDAY","format","isDate","length","Date","now","i_val","i_format","format_token","year","getFullYear","month","getMonth","date","getDate","hh","mm","ss","sss","ampm","z","parsedZ","charAt","token","i","month_name","toLowerCase","j","day_name","tzStr","parseInt","substr","localDate","getTime","getTimezoneOffset","e","undefined","directive","dateFilter","$dateParser","restrict","require","link","scope","element","attrs","ngModel","dateFormat","$observe","value","$render","$parsers","unshift","viewValue","$setValidity","$modelValue","$formatters","push","modelValue"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 5c5f435..8dd35ca 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "author": "Dzulqarnain Nasir", "name": "angular-dateParser", - "version": "1.0.11", + "version": "1.0.12", "homepage": "https://github.com/dnasir/angular-dateParser", "licenses": { "type": "MIT", diff --git a/test/dateparser.directive.spec.js b/test/dateparser.directive.spec.js index 0dcc93e..b018c76 100644 --- a/test/dateparser.directive.spec.js +++ b/test/dateparser.directive.spec.js @@ -19,7 +19,7 @@ describe('dateParser directive', function() { $scope.datetime = new Date(2013, 11, 22, 13, 45, 0); $scope.dateFormat = 'dd.MM.yyyy'; - var wrapElement = $compile(angular.element('
'))($scope); + var wrapElement = $compile(angular.element('
'))($scope); $scope.$digest(); assignElements(wrapElement); @@ -33,12 +33,28 @@ describe('dateParser directive', function() { it('should have an initial value that uses the given format', function() { expect(inputEl.val()).toEqual('22.12.2013'); + expect($scope.testForm.$valid).toEqual(true); }); it('should change model value when input value is changed', function() { changeInputValueTo(inputEl, '23.12.2013'); - expect($scope.datetime).toEqual(new Date(2013, 11, 23, 0, 0, 0)) + expect($scope.datetime).toEqual(new Date(2013, 11, 23, 0, 0, 0)); + expect($scope.testForm.$valid).toEqual(true); + }); + + it('should change the view value when model value is changed', function() { + $scope.datetime = new Date(2014, 11, 23, 21, 50, 0); + $scope.$digest(); + + expect(inputEl.val()).toEqual('23.12.2014'); + expect($scope.testForm.$valid).toEqual(true); + }); + + it('should set validity as invalid when an invalid value is entered', function() { + changeInputValueTo(inputEl, 'something completely invalid'); + + expect($scope.testForm.$valid).toEqual(false); }); }); }); \ No newline at end of file From 4dd7ef71e52d1a6fc898110cb990ce908cbd71f1 Mon Sep 17 00:00:00 2001 From: Dzulqarnain Nasir Date: Sun, 23 Nov 2014 22:40:46 +0200 Subject: [PATCH 3/3] Updated the demo. * Changed the script reference to the compiled version. --- demo.html | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/demo.html b/demo.html index 34a3b84..72e9125 100644 --- a/demo.html +++ b/demo.html @@ -194,14 +194,11 @@
Code
- - +