From 89f83b8cd7974df78f5b1734a03192a879b1aad2 Mon Sep 17 00:00:00 2001 From: Nicolas Gotchac Date: Mon, 14 Nov 2016 16:11:00 +0100 Subject: [PATCH] Fixes #3397 : fake blur handled --- js/src/ui/Form/AutoComplete/autocomplete.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/js/src/ui/Form/AutoComplete/autocomplete.js b/js/src/ui/Form/AutoComplete/autocomplete.js index 89cc5ee16..ada1176b6 100644 --- a/js/src/ui/Form/AutoComplete/autocomplete.js +++ b/js/src/ui/Form/AutoComplete/autocomplete.js @@ -41,7 +41,8 @@ export default class AutoComplete extends Component { state = { lastChangedValue: undefined, entry: null, - open: false + open: false, + fakeBlur: false } render () { @@ -102,6 +103,7 @@ export default class AutoComplete extends Component { case 'down': const { menu } = muiAutocomplete.refs; menu.handleKeyDown(event); + this.setState({ fakeBlur: true }); break; case 'enter': @@ -135,17 +137,22 @@ export default class AutoComplete extends Component { this.setState({ entry, open: false }); } - onBlur = () => { + onBlur = (event) => { const { onUpdateInput } = this.props; - // TODO: Handle blur gracefully where we use onUpdateInput (currently replaces input + // TODO: Handle blur gracefully where we use onUpdateInput (currently replaces // input where text is allowed with the last selected value from the dropdown) if (!onUpdateInput) { window.setTimeout(() => { - const { entry } = this.state; + const { entry, fakeBlur } = this.state; + + if (fakeBlur) { + this.setState({ fakeBlur: false }); + return; + } this.handleOnChange(entry); - }, 100); + }, 200); } }