|
67 | 67 | $scope.hueMouse = false; |
68 | 68 | $scope.opacityMouse = false; |
69 | 69 | $scope.colorMouse = false; |
| 70 | + |
| 71 | + // force the grid selection circle to redraw and fix its position |
| 72 | + $scope.saturationUpdate(); |
| 73 | + $scope.lightnessUpdate(); |
70 | 74 | }; |
71 | 75 |
|
72 | 76 | $scope.hide = function (apply) { |
|
135 | 139 | if (color.isValid()) { |
136 | 140 | var hsl = color.toHsv(); |
137 | 141 |
|
138 | | - if (!$scope.isValid) { |
139 | | - $scope.show(); |
140 | | - |
141 | | - $timeout(function() { |
142 | | - $scope.hue = hsl.h; |
143 | | - $scope.saturation = hsl.s * 100; |
144 | | - $scope.lightness = hsl.v * 100; |
145 | | - |
146 | | - if ($scope.config.alpha) { |
147 | | - $scope.opacity = hsl.a * 100; |
148 | | - } |
149 | | - |
150 | | - if (oldValue === undefined) { |
151 | | - $scope.hide(); |
152 | | - } |
153 | | - }); |
154 | | - } else { |
| 142 | + if ($scope.isValid) { |
155 | 143 | $scope.hue = hsl.h; |
156 | 144 | $scope.saturation = hsl.s * 100; |
157 | 145 | $scope.lightness = hsl.v * 100; |
|
225 | 213 | } |
226 | 214 | }; |
227 | 215 |
|
228 | | - $scope.$watch('hue', function (newValue, oldValue) { |
229 | | - if (newValue !== undefined) { |
| 216 | + $scope.hueUpdate = function() { |
| 217 | + if ($scope.hue !== undefined) { |
230 | 218 | $scope.log('Color Picker: HUE - CHANGED'); |
231 | | - $scope.huePos = (1 - (newValue / 360)) * 100; |
232 | | - $scope.grid = tinycolor({h: newValue, s: 100, v: 1}).toHslString(); |
| 219 | + $scope.huePos = (1 - ($scope.hue / 360)) * 100; |
| 220 | + $scope.grid = tinycolor({h: $scope.hue, s: 100, v: 1}).toHslString(); |
233 | 221 |
|
234 | 222 | if ($scope.huePos < 0) { |
235 | 223 | $scope.huePos = 0; |
|
239 | 227 |
|
240 | 228 | $scope.update(); |
241 | 229 | } |
| 230 | + }; |
| 231 | + |
| 232 | + $scope.$watch('hue', function (newValue, oldValue) { |
| 233 | + $scope.hueUpdate(); |
242 | 234 | }); |
243 | 235 |
|
244 | 236 | //--------------------------- |
|
262 | 254 | } |
263 | 255 | }; |
264 | 256 |
|
265 | | - $scope.$watch('opacity', function (newValue, oldValue) { |
266 | | - if (newValue !== undefined) { |
| 257 | + $scope.opacityUpdate = function() { |
| 258 | + if ($scope.opacity !== undefined) { |
267 | 259 | $scope.log('Color Picker: OPACITY - CHANGED'); |
268 | | - $scope.opacityPos = (1 - (newValue / 100)) * 100; |
| 260 | + $scope.opacityPos = (1 - ($scope.opacity / 100)) * 100; |
269 | 261 |
|
270 | 262 | if ($scope.opacityPos < 0) { |
271 | 263 | $scope.opacityPos = 0; |
|
275 | 267 |
|
276 | 268 | $scope.update(); |
277 | 269 | } |
| 270 | + }; |
| 271 | + |
| 272 | + $scope.$watch('opacity', function (newValue, oldValue) { |
| 273 | + $scope.opacityUpdate(); |
278 | 274 | }); |
279 | 275 |
|
280 | 276 | //--------------------------- |
|
299 | 295 | } |
300 | 296 | }; |
301 | 297 |
|
302 | | - $scope.$watch('saturation', function (newValue, oldValue) { |
303 | | - if (newValue !== undefined && newValue !== oldValue) { |
| 298 | + $scope.saturationUpdate = function(oldValue) { |
| 299 | + if ($scope.saturation !== undefined && $scope.saturation !== oldValue) { |
304 | 300 | $scope.log('Color Picker: SATURATION - CHANGED'); |
305 | | - $scope.saturationPos = (newValue / 100) * 100; |
| 301 | + $scope.saturationPos = ($scope.saturation / 100) * 100; |
306 | 302 |
|
307 | 303 | if ($scope.saturationPos < 0) { |
308 | 304 | $scope.saturationPos = 0; |
|
312 | 308 |
|
313 | 309 | $scope.update(); |
314 | 310 | } |
| 311 | + }; |
| 312 | + |
| 313 | + $scope.$watch('saturation', function (newValue, oldValue) { |
| 314 | + $scope.saturationUpdate(oldValue); |
315 | 315 | }); |
316 | 316 |
|
317 | | - $scope.$watch('lightness', function (newValue, oldValue) { |
318 | | - if (newValue !== undefined && newValue !== oldValue) { |
| 317 | + $scope.lightnessUpdate = function(oldValue) { |
| 318 | + if ($scope.lightness !== undefined && $scope.lightness !== oldValue) { |
319 | 319 | $scope.log('Color Picker: LIGHTNESS - CHANGED'); |
320 | | - $scope.lightnessPos = (1 - (newValue / 100)) * 100; |
| 320 | + $scope.lightnessPos = (1 - ($scope.lightness / 100)) * 100; |
321 | 321 |
|
322 | 322 | if ($scope.lightnessPos < 0) { |
323 | 323 | $scope.lightnessPos = 0; |
|
327 | 327 |
|
328 | 328 | $scope.update(); |
329 | 329 | } |
| 330 | + }; |
| 331 | + |
| 332 | + $scope.$watch('lightness', function (newValue, oldValue) { |
| 333 | + $scope.lightnessUpdate(oldValue); |
330 | 334 | }); |
331 | 335 |
|
332 | 336 |
|
|
0 commit comments