diff --git a/CHANGELOG.md b/CHANGELOG.md index d1bcbcf..74dd1c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- `ColorPicker` controlled/uncontrolled state warning by ensuring value prop is always defined. +- `ColorPicker` clear value when field value is already set. + ## [4.1.0] - 2026-03-16 ### Added diff --git a/src/lib/components/ColorPicker/ColorPicker.tsx b/src/lib/components/ColorPicker/ColorPicker.tsx index 4bea795..6ba7547 100644 --- a/src/lib/components/ColorPicker/ColorPicker.tsx +++ b/src/lib/components/ColorPicker/ColorPicker.tsx @@ -47,6 +47,7 @@ const ColorPicker = (props: ColorPickerInputProps) => disabled: formDisabled, getFieldState, setValue, + watch, requiredFields, formState: { errors }, hideValidationMessages, @@ -65,7 +66,8 @@ const ColorPicker = (props: ColorPickerInputProps) => }); const isDisabled = formDisabled || disabled; - const color = useMemo(() => new TinyColor(field.value), [field.value]); + const fieldValue = watch(name) as string | undefined; + const color = useMemo(() => new TinyColor(fieldValue), [fieldValue]); const fieldError = get(errors, name) as FieldError | undefined; const hideErrorMessage = useMemo(() => hideValidationMessages || hideValidationMessage, [hideValidationMessages, hideValidationMessage]); const hasError = useMemo(() => !!fieldError, [fieldError]); @@ -107,7 +109,7 @@ const ColorPicker = (props: ColorPickerInputProps) => field.onBlur(); }} - value={field.value} + value={fieldValue ?? ""} slotProps={{ input: { startAdornment: (