Fix #357 - Also make textarea blur close suggestions which make it more accessible on touch devices

master
Eugen Rochko 8 years ago
parent 0a84ab43d2
commit c3e9ba6a66
  1. 7
      app/assets/javascripts/components/components/autosuggest_textarea.jsx
  2. 4
      app/assets/stylesheets/components.scss

@ -55,7 +55,7 @@ const AutosuggestTextarea = React.createClass({
if (token != null && this.state.lastToken !== token) { if (token != null && this.state.lastToken !== token) {
this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart }); this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart });
this.props.onSuggestionsFetchRequested(token); this.props.onSuggestionsFetchRequested(token);
} else if (token === null && this.state.lastToken != null) { } else if (token === null) {
this.setState({ lastToken: null }); this.setState({ lastToken: null });
this.props.onSuggestionsClearRequested(); this.props.onSuggestionsClearRequested();
} }
@ -107,6 +107,10 @@ const AutosuggestTextarea = React.createClass({
} }
}, },
onBlur () {
this.setState({ suggestionsHidden: true });
},
onSuggestionClick (suggestion, e) { onSuggestionClick (suggestion, e) {
e.preventDefault(); e.preventDefault();
this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion); this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion);
@ -137,6 +141,7 @@ const AutosuggestTextarea = React.createClass({
onChange={this.onChange} onChange={this.onChange}
onKeyDown={this.onKeyDown} onKeyDown={this.onKeyDown}
onKeyUp={onKeyUp} onKeyUp={onKeyUp}
onBlur={this.onBlur}
/> />
<div style={{ display: (suggestions.size > 0 && !suggestionsHidden) ? 'block' : 'none' }} className='autosuggest-textarea__suggestions'> <div style={{ display: (suggestions.size > 0 && !suggestionsHidden) ? 'block' : 'none' }} className='autosuggest-textarea__suggestions'>

@ -566,6 +566,10 @@
padding: 10px; padding: 10px;
cursor: pointer; cursor: pointer;
&:hover {
background: darken(#d9e1e8, 10%);
}
&.selected { &.selected {
background: #2b90d9; background: #2b90d9;
color: #fff; color: #fff;

Loading…
Cancel
Save