fix: color picker indicator not updating on hex change with delayed updates #706
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #704
Problem
When delayed updates are enabled and a user manually types a new hex value, the color picker's visual indicator (color ball) would immediately show the new color, but the system would still have the old color value. This created a confusing visual inconsistency.
Root Cause
The
ColorField
component was using the same local state (val
) for both the color ball background and the text input value. When delayed updates were enabled, the local state would update immediately but the port value wouldn't update until the user clicked save.Solution
I modified two components:
ColorField
component (packages/graph-editor/src/components/controls/color.tsx
):colorBallValue
that shows the actual port value when delayed updates are enabledvalue
(for color ball) andtextValue
(for text input) props toColorPickerPopover
ColorPickerPopover
component (packages/graph-editor/src/components/colorPicker/index.tsx
):textValue
propvalue
prop (actual port value)textValue
prop when provided (temporary user input)Result
Changes Made
packages/graph-editor/src/components/controls/color.tsx
packages/graph-editor/src/components/colorPicker/index.tsx
packages/graph-editor/src/components/controls/color.test.tsx
Backward Compatibility
textValue
prop is optional, so all existing usages continue to work unchangedTesting
Demo
Before the fix:
After the fix:
Pull Request opened by Augment Code with guidance from the PR author