]> source.dussan.org Git - sonarqube.git/commitdiff
fix assignee select in bulk change form
authorStas Vilchik <stas.vilchik@sonarsource.com>
Fri, 24 Nov 2017 16:15:30 +0000 (17:15 +0100)
committerStas Vilchik <stas.vilchik@sonarsource.com>
Fri, 24 Nov 2017 18:08:33 +0000 (19:08 +0100)
server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.js
server/sonar-web/src/main/js/components/controls/SearchSelect.js
server/sonar-web/src/main/js/components/controls/__tests__/__snapshots__/SearchSelect-test.js.snap

index be83b1df340df9d9c801a13ef451858489af6479..f5b15d1aac865dcecfe5da3e38966b4bbb335591 100644 (file)
@@ -295,7 +295,7 @@ export default class BulkChangeModal extends React.PureComponent {
       <SearchSelect
         onSearch={this.handleAssigneeSearch}
         onSelect={this.handleAssigneeSelect}
-        minimumQueryLength={0}
+        minimumQueryLength={2}
         renderOption={this.renderAssigneeOption}
         resetOnBlur={false}
         value={this.state.assignee}
index 0fbe8ff9f58774c2269ad9fa8cff08f88b4f5b20..0a43d0992e43652c287a6e0e597545be5f634781 100644 (file)
@@ -87,19 +87,17 @@ export default class SearchSelect extends React.PureComponent {
     );
   };
 
-  handleBlur = () => {
-    this.setState({ options: [], query: '' });
-  };
-
   handleChange = (option /*: Option */) => {
     this.props.onSelect(option.value);
   };
 
-  handleInputChange = (query /*: string */ = '') => {
+  handleInputChange = (query /*: string */) => {
+    // `onInputChange` is called with an empty string after a user selects a value
+    // in this case we shouldn't reset `options`, because it also resets select value :(
     if (query.length >= this.props.minimumQueryLength) {
       this.setState({ loading: true, query });
       this.search(query);
-    } else {
+    } else if (query.length > 0) {
       this.setState({ options: [], query });
     }
   };
@@ -121,7 +119,7 @@ export default class SearchSelect extends React.PureComponent {
             ? translateWithParameters('select2.tooShort', this.props.minimumQueryLength)
             : translate('select2.noMatches')
         }
-        onBlur={this.props.resetOnBlur ? this.handleBlur : undefined}
+        onBlurResetsInput={this.props.resetOnBlur}
         onChange={this.handleChange}
         onInputChange={this.handleInputChange}
         onOpen={this.props.minimumQueryLength === 0 ? this.handleInputChange : undefined}
index 0aae3eb746673c3f30c4704fae042ff79009500a..00b34224f8c42eb10a6e0ee364f54bed9402f2b7 100644 (file)
@@ -9,7 +9,7 @@ exports[`should render Select 1`] = `
   filterOption={[Function]}
   isLoading={false}
   noResultsText="select2.tooShort.2"
-  onBlur={[Function]}
+  onBlurResetsInput={true}
   onChange={[Function]}
   onInputChange={[Function]}
   options={Array []}