From ff37219796b392ee470576c43dfb822f8bf7b823 Mon Sep 17 00:00:00 2001 From: Kiza Online Date: Mon, 23 Mar 2026 15:10:37 +1100 Subject: [PATCH 1/2] AP-7679 # Attribute filtering not clearing selected autocomplete value when invalid --- CHANGELOG.md | 4 ++++ src/form-elements/FormElementAutocomplete.tsx | 6 +++--- src/hooks/useFormElementOptions.ts | 9 ++++----- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4339559c1..416b5e226 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 + ### Changed - **[BREAKING]** `draftService.syncDrafts` to download draft data in the background diff --git a/src/form-elements/FormElementAutocomplete.tsx b/src/form-elements/FormElementAutocomplete.tsx index a6848d5f6..35e79e86c 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) From eadccbeee186de98b882381706d0697f5b19506b Mon Sep 17 00:00:00 2001 From: Kiza Online Date: Mon, 23 Mar 2026 15:24:17 +1100 Subject: [PATCH 2/2] [RELEASE] 10.0.1-alpha.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 829b72f95..cd55f18f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@oneblink/apps-react", - "version": "10.0.0-beta.3", + "version": "10.0.1-alpha.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@oneblink/apps-react", - "version": "10.0.0-beta.3", + "version": "10.0.1-alpha.1", "license": "GPL-3.0-only", "dependencies": { "@arcgis/core": "~4.34.8", diff --git a/package.json b/package.json index f80e85a1e..6a2dfe954 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@oneblink/apps-react", "description": "Helper functions for OneBlink apps in ReactJS.", - "version": "10.0.0-beta.3", + "version": "10.0.1-alpha.1", "author": "OneBlink (https://oneblink.io)", "bugs": { "url": "https://github.com/oneblink/apps-react/issues"