From 1293efcf370a58791aac5673f1d6f9d5315ff4f3 Mon Sep 17 00:00:00 2001
From: Valentin <valentin@waldeck.dev>
Date: Thu, 20 Feb 2025 21:49:14 +0100
Subject: [PATCH] Cache hue value locally on ColorPicker

Signed-off-by: Valentin <valentin@waldeck.dev>
---
 packages/primevue/src/colorpicker/ColorPicker.vue | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/packages/primevue/src/colorpicker/ColorPicker.vue b/packages/primevue/src/colorpicker/ColorPicker.vue
index d146a9f95..ab0f2a333 100755
--- a/packages/primevue/src/colorpicker/ColorPicker.vue
+++ b/packages/primevue/src/colorpicker/ColorPicker.vue
@@ -39,6 +39,7 @@ export default {
         };
     },
     hsbValue: null,
+    localHue: null,
     outsideClickListener: null,
     documentMouseMoveListener: null,
     documentMouseUpListener: null,
@@ -91,7 +92,7 @@ export default {
             let brightness = Math.floor((100 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150);
 
             this.hsbValue = this.validateHSB({
-                h: this.hsbValue.h,
+                h: this.localHue,
                 s: saturation,
                 b: brightness
             });
@@ -103,9 +104,10 @@ export default {
         },
         pickHue(event) {
             let top = this.hueView.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);
+            this.localHue = Math.floor((360 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150);
 
             this.hsbValue = this.validateHSB({
-                h: Math.floor((360 * (150 - Math.max(0, Math.min(150, (event.pageY || event.changedTouches[0].pageY) - top)))) / 150),
+                h: this.localHue,
                 s: 100,
                 b: 100
             });
@@ -341,6 +343,12 @@ export default {
                 hsb = this.HEXtoHSB(this.defaultColor);
             }
 
+            if (this.localHue == null) {
+                this.localHue = hsb.h;
+            } else {
+                hsb.h = this.localHue;
+            }
+
             return hsb;
         },
         onOverlayEnter(el) {