From 5a3b5642bc6f0b537fbe054ff744a4e47024308c Mon Sep 17 00:00:00 2001 From: getuliojr Date: Mon, 24 Feb 2014 15:07:01 -0300 Subject: [PATCH 1/5] Update datepicker.js I noticed that when you type the date in a input field instead of picking it. It was not parsing it right through the dateFormat informed, so I fix it. This Fix will parse the input value typed also using the dateFormat. --- src/datepicker/datepicker.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index 599f3c3562..c5d16fbbad 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -372,13 +372,20 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon ngModel.$setValidity('date', true); return viewValue; } else if (angular.isString(viewValue)) { - var date = new Date(viewValue); - if (isNaN(date)) { + var dateStr = dateFilter(viewValue, dateFormat); + if (dateStr == undefined) { ngModel.$setValidity('date', false); return undefined; } else { - ngModel.$setValidity('date', true); - return date; + var dateParts = dateStr.split(/\/|\.|\-/); //check for "/" or "." or "-" to split date + var date = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); + if (isNaN(date)) { + ngModel.$setValidity('date', false); + return undefined; + } else { + ngModel.$setValidity('date', true); + return date; + } } } else { ngModel.$setValidity('date', false); From 5eebc95b6dedbe24b69399409c4e26cdb079c4ad Mon Sep 17 00:00:00 2001 From: getuliojr Date: Mon, 24 Feb 2014 15:30:15 -0300 Subject: [PATCH 2/5] Update datepicker.js Fixing comparison to use === instead or == if (dateStr === undefined) --- src/datepicker/datepicker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index c5d16fbbad..2532c19978 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -373,7 +373,7 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon return viewValue; } else if (angular.isString(viewValue)) { var dateStr = dateFilter(viewValue, dateFormat); - if (dateStr == undefined) { + if (dateStr === undefined) { ngModel.$setValidity('date', false); return undefined; } else { From 1742bc690a9361d00d4f5c4e34fec0f9a0e70a40 Mon Sep 17 00:00:00 2001 From: getuliojr Date: Mon, 24 Feb 2014 16:06:27 -0300 Subject: [PATCH 3/5] Fix dates in the format February, 24 2014 Another fix, so the dates can be typed in the format: February, 24 2014 and not 99/99/9999 anymore --- src/datepicker/datepicker.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index 2532c19978..646c1b8da5 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -378,7 +378,10 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon return undefined; } else { var dateParts = dateStr.split(/\/|\.|\-/); //check for "/" or "." or "-" to split date - var date = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); + if (dateParts.length === 3) + var date = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); + else + var date = new Date(dateStr); if (isNaN(date)) { ngModel.$setValidity('date', false); return undefined; From 108eaa3b109694266224bd460f4c63388ed130c9 Mon Sep 17 00:00:00 2001 From: getuliojr Date: Mon, 24 Feb 2014 16:19:16 -0300 Subject: [PATCH 4/5] Fixing JSHint code and some optimization Just some fix to pass jshint check and a little optimization. Now it already parse the string and then if it is in the formar 99.99.9999 parses again. --- src/datepicker/datepicker.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index 646c1b8da5..fec10a3edc 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -378,10 +378,10 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon return undefined; } else { var dateParts = dateStr.split(/\/|\.|\-/); //check for "/" or "." or "-" to split date - if (dateParts.length === 3) - var date = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); - else - var date = new Date(dateStr); + var date = new Date(dateStr); + if (dateParts.length === 3){ + date = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); + } if (isNaN(date)) { ngModel.$setValidity('date', false); return undefined; From 92b374033734223ac6239e0a34e24827056a612c Mon Sep 17 00:00:00 2001 From: getuliojr Date: Mon, 24 Feb 2014 16:28:37 -0300 Subject: [PATCH 5/5] Update datepicker.js Trying to fix JSHint Errors --- src/datepicker/datepicker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index fec10a3edc..fed671ece8 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -381,7 +381,7 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon var date = new Date(dateStr); if (dateParts.length === 3){ date = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); - } + } if (isNaN(date)) { ngModel.$setValidity('date', false); return undefined;