From b663a7dd77cd95395c957cffe5ca39ff078130ad Mon Sep 17 00:00:00 2001 From: Jonathan Lima Date: Fri, 25 Jul 2014 18:57:12 -0300 Subject: [PATCH] feat(datepicker): add open-on-focus option --- src/datepicker/datepicker.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index f8cdf1279f..3883f2e198 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -430,8 +430,8 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst showButtonBar: true }) -.directive('datepickerPopup', ['$compile', '$parse', '$document', '$position', 'dateFilter', 'dateParser', 'datepickerPopupConfig', -function ($compile, $parse, $document, $position, dateFilter, dateParser, datepickerPopupConfig) { +.directive('datepickerPopup', ['$compile', '$parse', '$document', '$position', '$timeout', 'dateFilter', 'dateParser', 'datepickerPopupConfig', +function ($compile, $parse, $document, $position, $timeout, dateFilter, dateParser, datepickerPopupConfig) { return { restrict: 'EA', require: 'ngModel', @@ -440,7 +440,8 @@ function ($compile, $parse, $document, $position, dateFilter, dateParser, datepi currentText: '@', clearText: '@', closeText: '@', - dateDisabled: '&' + dateDisabled: '&', + openOnFocus: '@' }, link: function(scope, element, attrs, ngModel) { var dateFormat, @@ -564,6 +565,16 @@ function ($compile, $parse, $document, $position, dateFilter, dateParser, datepi }; element.bind('keydown', keydown); + var focus = function(evt) { + $timeout(function() { + scope.isOpen = true; + }); + }; + + if (scope.openOnFocus) { + element.bind('focus', focus); + } + scope.keydown = function(evt) { if (evt.which === 27) { evt.preventDefault(); @@ -614,6 +625,7 @@ function ($compile, $parse, $document, $position, dateFilter, dateParser, datepi scope.$on('$destroy', function() { $popup.remove(); element.unbind('keydown', keydown); + element.unbind('focus', focus); $document.unbind('click', documentClickBind); }); }