diff --git a/CHANGELOG.md b/CHANGELOG.md index 593567cb..c87677ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Attribute filtering not clearing selected autocomplete value when invalid + ## [10.0.0] - 2026-03-31 ### Changed diff --git a/src/form-elements/FormElementAutocomplete.tsx b/src/form-elements/FormElementAutocomplete.tsx index a6848d5f..35e79e86 100644 --- a/src/form-elements/FormElementAutocomplete.tsx +++ b/src/form-elements/FormElementAutocomplete.tsx @@ -79,8 +79,9 @@ const AutocompleteFilter = React.memo(function AutocompleteFilter({ ) const handleChange = React.useCallback( - //useFormElementOptions expects the first arg to be the element - (element: FormTypes.FormElement, newValue: unknown) => onChange(newValue), + (element: FormTypes.FormElement, { value }: { value?: unknown }) => { + onChange(value as string | undefined) + }, [onChange], ) @@ -249,7 +250,6 @@ function FormElementAutocomplete({ /> ) } - return ( ({ userProfileForInjectables, ]) - //options that are shown based on conditional logic and user input + //options that are shown based on conditional logic, attributes, and user input const filteredOptions = React.useMemo(() => { const reducedOptions = withInjectedOptions.filter( (option) => !onFilter || (onFilter(option) && !option.displayAlways), @@ -101,7 +101,7 @@ export default function useFormElementOptions({ if ( typeof value === 'string' && - !withInjectedOptions.some((option) => value === option.value) + !filteredOptions.some((option) => value === option.value) ) { onChange(element, { value: undefined, @@ -111,7 +111,7 @@ export default function useFormElementOptions({ if (Array.isArray(value)) { const newValue = value.filter((selectedValue) => - withInjectedOptions.some((option) => selectedValue === option.value), + filteredOptions.some((option) => selectedValue === option.value), ) if (newValue.length !== value.length) { const newValueArray = newValue.length ? newValue : undefined @@ -122,11 +122,10 @@ export default function useFormElementOptions({ } }, [ element, - shownOptions, onChange, value, conditionallyShownOptionsElement?.dependencyIsLoading, - withInjectedOptions, + filteredOptions, ]) useLoadDynamicOptionsEffect(element, onUpdateFormElements)