Skip to content
This repository was archived by the owner on May 29, 2019. It is now read-only.

Commit 9f593ba

Browse files
RobJacobswesleycho
authored andcommitted
refactor(datepicker): move popup document click bind
Moved the datepicker popup document click bind to a timeout so having preventDefault and stopPropagation on the element click event triggering the popup to be open is no longer necessary. Closes #3972 Fixes #3705
1 parent fe0d954 commit 9f593ba

File tree

3 files changed

+5
-7
lines changed

3 files changed

+5
-7
lines changed

Diff for: src/datepicker/datepicker.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -710,10 +710,9 @@ function ($compile, $parse, $document, $position, dateFilter, dateParser, datepi
710710
scope.position = appendToBody ? $position.offset(element) : $position.position(element);
711711
scope.position.top = scope.position.top + element.prop('offsetHeight');
712712

713-
$document.bind('click', documentClickBind);
714-
715713
$timeout(function() {
716714
scope.$broadcast('datepicker.focus');
715+
$document.bind('click', documentClickBind);
717716
}, 0, false);
718717
} else {
719718
$document.unbind('click', documentClickBind);

Diff for: src/datepicker/docs/demo.js

-3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ angular.module('ui.bootstrap.demo').controller('DatepickerDemoCtrl', function ($
1919
$scope.toggleMin();
2020

2121
$scope.open = function($event) {
22-
$event.preventDefault();
23-
$event.stopPropagation();
24-
2522
$scope.opened = true;
2623
};
2724

Diff for: src/datepicker/test/datepicker.spec.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -1184,7 +1184,7 @@ describe('datepicker directive', function () {
11841184
});
11851185

11861186
describe('as popup', function () {
1187-
var inputEl, dropdownEl, $document, $sniffer;
1187+
var inputEl, dropdownEl, $document, $sniffer, $timeout;
11881188

11891189
function assignElements(wrapElement) {
11901190
inputEl = wrapElement.find('input');
@@ -1221,9 +1221,10 @@ describe('datepicker directive', function () {
12211221
describe('initially opened', function () {
12221222
var wrapElement;
12231223

1224-
beforeEach(inject(function(_$document_, _$sniffer_) {
1224+
beforeEach(inject(function(_$document_, _$sniffer_, _$timeout_) {
12251225
$document = _$document_;
12261226
$sniffer = _$sniffer_;
1227+
$timeout = _$timeout_;
12271228
$rootScope.isopen = true;
12281229
$rootScope.date = new Date('September 30, 2010 15:30:00');
12291230
wrapElement = $compile('<div><input ng-model="date" datepicker-popup is-open="isopen"><div>')($rootScope);
@@ -1295,6 +1296,7 @@ describe('datepicker directive', function () {
12951296
it('closes when click outside of calendar', function() {
12961297
expect(dropdownEl.length).toBe(1);
12971298

1299+
$timeout.flush(0);
12981300
$document.find('body').click();
12991301
assignElements(wrapElement);
13001302
expect(dropdownEl.length).toBe(0);

0 commit comments

Comments
 (0)