graphhopper-maps icon indicating copy to clipboard operation
graphhopper-maps copied to clipboard

Incomplete text after selecting same item from list.

Open karussell opened this issue 1 year ago • 5 comments

When I initially have this URL and type 'hoyersw' in the first input field and click on the first result of the autocomplete, which would be the same text as in the URL (Hoyerswerda - Wojerecy), then the input stays at 'hoyers' instead of 'Hoyerswerda - Wojerecy'

karussell avatar Sep 13 '23 11:09 karussell

I have been able to reproduce.

The pattern is always the same :

  1. Select a new input search
  2. The autocomplete works
  3. Empty the cell
  4. Type something that gives the same autocomplete result (props.point.queryText)
  5. Select the same result
  6. Input fields doesn't switch to autocomplete suggestion
  7. Using console.log, we see that useEffect => setText is not triggered to update the text from "input" to "queryText"

kriegalex avatar Oct 23 '23 20:10 kriegalex

if (action instanceof InvalidatePoint) {
  const points = QueryStore.replacePoint(state.queryPoints, {
    ...action.point,
    isInitialized: false,
    queryText: ''
  });
  return {
    ...state,
    queryPoints: points,
  };
} else if (action instanceof ClearPoints) {

Query text must be emptied for the change to be registered by useEffect().

useEffect(() => {
  setText(props.point.queryText);
  console.log('useEffect: '+props.point.queryText);
}, [props.point.queryText]);

Is that correct ? I'm still learning Typescript and web development.

kriegalex avatar Oct 23 '23 21:10 kriegalex

Oh, nice. Indeed the first code you mentioned already fixes the problem and is what we need here, I guess! Feel free to create a pull request or I can mention you in the commit to credit you properly :)

karussell avatar Oct 30 '23 16:10 karussell

Unfortunately I had to revert it as it breaks editing the input text: 1. search for something and click the suggestion. 2. click again on the input element and whatever you type the input will be (incorrectly) cleared before it.

karussell avatar Dec 03 '23 12:12 karussell

Understood. Makes total sense. Next time, I'll mark it as untested explicitely (more like an hint to follow).

kriegalex avatar Dec 04 '23 19:12 kriegalex