Skip to content

Regression: using defaultValue shows invalid option as a valid suggestion and opens menu unnecessarily #495

Open
@edwardhorsford

Description

@edwardhorsford

Version v2.0.0 appears to have introduced a regression with default values.

If the autocomplete is rendered with a default value, when the autocomplete is focused, a menu is expanded with that value displayed - this happens regardless of if that value is valid or not.

I think these lines are what's at issue.

The regressions are:

  • No menu should be shown when focusing the field
  • The option shown is copied from the defaultValue - but this may not be a valid option

The correct behaviour is that focusing a field with a value does not show the menu. And especially if that value is invalid (such as returning to the page after a validation failure, no invalid option should be shown. The reason we don't show the menu is that if it's a correct option, there should basically only be one option - it's pointless to show. The common behaviour is to clear the input / search again - showing a menu with a single option is confusing and unhelpful.

In my example videos, the autocomplete is enhancing a select. French language is one of the available options, Franch is invalid.

Current autocomplete with invalid option:

An invalid option (that is not in the source select) is shown as a selectable option.
autocomplete-suggesting-invalid-value

Current autocomplete with valid option:

A menu is shown which is pointless - the autocomplete as originally designed intended that this not happen.
autocomplete-suggesting-unnecessary-menu

Correct behaviour in 1.6.1 and prior:

No menu is shown on focus, only when typing - the invalid option is also not shown.
autocomplete-suggesting-invalid-value-previous

This impacts our service when we show validation errors - we want to pre-fill the autocomplete with what the user typed, but we do not want it suggested:
autocomplete-invalid-suggested-option

Fixes

There's possibly some discussion to be had about whether the menu should open if there's valid options - where there's only one valid result, I think the original functionality of not opening the menu is better. If there's more than one valid result, possibly a menu would be better.

However - we definitely shouldn't be showing an invalid 'defaultValue' as a selectable thing. Users of this component should be able to put whatever string they like in defaultValue without it being suggested unless it matches one of the input items.

Metadata

Metadata

Assignees

No one assigned

    Labels

    🐛 bugSomething isn't working the way it should (including incorrect wording in documentation)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions