@@ -570,7 +570,9 @@ export default class AngularColorPickerController {
570570 event . preventDefault ( ) ;
571571
572572 var el = this . find ( '.color-picker-hue' ) ;
573- this . hue = ( 1 - ( ( event . pageY - this . offset ( el ) . top ) / el . prop ( 'offsetHeight' ) ) ) * 360 ;
573+ var eventPos = this . getEventPos ( event ) ;
574+
575+ this . hue = ( 1 - ( ( eventPos . pageY - this . offset ( el ) . top ) / el . prop ( 'offsetHeight' ) ) ) * 360 ;
574576
575577 if ( this . hue > 360 ) {
576578 this . hue = 360 ;
@@ -619,7 +621,9 @@ export default class AngularColorPickerController {
619621 event . preventDefault ( ) ;
620622
621623 var el = this . find ( '.color-picker-opacity' ) ;
622- this . opacity = ( 1 - ( ( event . pageY - this . offset ( el ) . top ) / el . prop ( 'offsetHeight' ) ) ) * 100 ;
624+ var eventPos = this . getEventPos ( event ) ;
625+
626+ this . opacity = ( 1 - ( ( eventPos . pageY - this . offset ( el ) . top ) / el . prop ( 'offsetHeight' ) ) ) * 100 ;
623627
624628 if ( this . opacity > 100 ) {
625629 this . opacity = 100 ;
@@ -666,11 +670,12 @@ export default class AngularColorPickerController {
666670 event . preventDefault ( ) ;
667671
668672 var el = this . find ( '.color-picker-grid-inner' ) ;
673+ var eventPos = this . getEventPos ( event ) ;
669674 var offset = this . offset ( el ) ;
670675
671676 if ( this . options . round ) {
672- var dx = ( ( event . pageX - offset . left ) * 2.0 / el . prop ( 'offsetWidth' ) ) - 1.0 ;
673- var dy = - ( ( event . pageY - offset . top ) * 2.0 / el . prop ( 'offsetHeight' ) ) + 1.0 ;
677+ var dx = ( ( eventPos . pageX - offset . left ) * 2.0 / el . prop ( 'offsetWidth' ) ) - 1.0 ;
678+ var dy = - ( ( eventPos . pageY - offset . top ) * 2.0 / el . prop ( 'offsetHeight' ) ) + 1.0 ;
674679
675680 var tmpSaturation = Math . sqrt ( dx * dx + dy * dy ) ;
676681 var tmpHue = Math . atan2 ( dy , dx ) ;
@@ -683,8 +688,8 @@ export default class AngularColorPickerController {
683688 this . hue = degHue ;
684689 this . lightness = 100 ;
685690 } else {
686- this . saturation = ( ( event . pageX - offset . left ) / el . prop ( 'offsetWidth' ) ) * 100 ;
687- this . lightness = ( 1 - ( ( event . pageY - offset . top ) / el . prop ( 'offsetHeight' ) ) ) * 100 ;
691+ this . saturation = ( ( eventPos . pageX - offset . left ) / el . prop ( 'offsetWidth' ) ) * 100 ;
692+ this . lightness = ( 1 - ( ( eventPos . pageY - offset . top ) / el . prop ( 'offsetHeight' ) ) ) * 100 ;
688693
689694 if ( this . saturation > 100 ) {
690695 this . saturation = 100 ;
@@ -758,6 +763,10 @@ export default class AngularColorPickerController {
758763 // helper functions
759764 //---------------------------
760765
766+ getEventPos ( event ) {
767+ return event . type . search ( 'touch' ) === 0 ? event . changedTouches [ 0 ] : event ;
768+ }
769+
761770 eventApiDispatch ( name , args ) {
762771 if ( this . eventApi && typeof this . eventApi [ name ] === 'function' ) {
763772 if ( ! args ) {
@@ -777,7 +786,6 @@ export default class AngularColorPickerController {
777786 results = [ ] ,
778787 nodeType ;
779788
780-
781789 // Same basic safeguard as Sizzle
782790 if ( ! selector ) {
783791 return results ;
0 commit comments