Skip to content

Commit 54bfa74

Browse files
committed
Don't return false during a document mouse event as it can cancel outside events
1 parent 6748f74 commit 54bfa74

File tree

1 file changed

+34
-35
lines changed

1 file changed

+34
-35
lines changed

lib/scripts/directive.js

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
templateUrl: 'template/color-picker/directive.html',
2020
link: function ($scope, element, attrs, control) {
2121
$scope.init = function () {
22+
// if no color provided
2223
if ($scope.ngModel === undefined) {
2324
$scope.hue = 0;
2425
$scope.saturation = 0;
@@ -35,68 +36,66 @@
3536
}
3637
}
3738

39+
// set default config settings
3840
$scope.initConfig();
3941

42+
// setup mouse events
4043
$document.on('mousedown', $scope.onMouseDown);
4144
$document.on('mouseup', $scope.onMouseUp);
4245
$document.on('mousemove', $scope.onMouseMove);
4346
};
4447

4548
$scope.onMouseDown = function(event) {
46-
// not an element in this picker
47-
if ($scope.find(event.target).length === 0) {
48-
return false;
49-
}
50-
51-
if (event.target.classList.contains('color-picker-grid-inner') || event.target.classList.contains('color-picker-picker') || event.target.parentNode.classList.contains('color-picker-picker')) {
52-
$scope.colorDown(event);
53-
$scope.$apply();
54-
} else if (event.target.classList.contains('color-picker-hue') || event.target.parentNode.classList.contains('color-picker-hue')) {
55-
$scope.hueDown(event);
56-
$scope.$apply();
57-
} else if (event.target.classList.contains('color-picker-opacity') || event.target.parentNode.classList.contains('color-picker-opacity')) {
58-
$scope.opacityDown(event);
59-
$scope.$apply();
60-
}
61-
};
62-
63-
$scope.onMouseUp = function(event) {
64-
if (!$scope.colorMouse && !$scope.hueMouse && !$scope.opacityMouse) {
65-
if ($scope.find(event.target).length === 0) {
66-
$scope.log('Color Picker: Document Click Event');
67-
$scope.hide();
49+
// an element in this picker
50+
if ($scope.find(event.target).length > 0) {
51+
// mouse event on color grid
52+
if (event.target.classList.contains('color-picker-grid-inner') || event.target.classList.contains('color-picker-picker') || event.target.parentNode.classList.contains('color-picker-picker')) {
53+
$scope.colorDown(event);
54+
$scope.$apply();
55+
// mouse event on hue slider
56+
} else if (event.target.classList.contains('color-picker-hue') || event.target.parentNode.classList.contains('color-picker-hue')) {
57+
$scope.hueDown(event);
58+
$scope.$apply();
59+
// mouse event on opacity slider
60+
} else if (event.target.classList.contains('color-picker-opacity') || event.target.parentNode.classList.contains('color-picker-opacity')) {
61+
$scope.opacityDown(event);
6862
$scope.$apply();
6963
}
7064
}
65+
};
7166

72-
if ($scope.colorMouse) {
67+
$scope.onMouseUp = function(event) {
68+
// no current mouse events and not an element in the picker
69+
if (!$scope.colorMouse && !$scope.hueMouse && !$scope.opacityMouse && $scope.find(event.target).length === 0) {
70+
$scope.log('Color Picker: Document Click Event');
71+
$scope.hide();
72+
$scope.$apply();
73+
// mouse event on color grid
74+
} else if ($scope.colorMouse) {
7375
$scope.colorUp(event);
7476
$scope.$apply();
75-
}
76-
77-
if ($scope.hueMouse) {
77+
// mouse event on hue slider
78+
} else if ($scope.hueMouse) {
7879
$scope.hueUp(event);
7980
$scope.$apply();
80-
}
81-
82-
if ($scope.opacityMouse) {
81+
// mouse event on opacity slider
82+
} else if ($scope.opacityMouse) {
8383
$scope.opacityUp(event);
8484
$scope.$apply();
8585
}
8686
};
8787

8888
$scope.onMouseMove = function(event) {
89+
// mouse event on color grid
8990
if ($scope.colorMouse) {
9091
$scope.colorChange(event);
9192
$scope.$apply();
92-
}
93-
94-
if ($scope.hueMouse) {
93+
// mouse event on hue slider
94+
} else if ($scope.hueMouse) {
9595
$scope.hueChange(event);
9696
$scope.$apply();
97-
}
98-
99-
if ($scope.opacityMouse) {
97+
// mouse event on opacity slider
98+
} else if ($scope.opacityMouse) {
10099
$scope.opacityChange(event);
101100
$scope.$apply();
102101
}

0 commit comments

Comments
 (0)