]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10229 Remove checkboxes in Issues Bulk Change modal (#21)
authorPascal Mugnier <pascal.mugnier@sonarsource.com>
Wed, 21 Mar 2018 09:13:05 +0000 (10:13 +0100)
committerSonarTech <sonartech@sonarsource.com>
Thu, 22 Mar 2018 11:37:51 +0000 (12:37 +0100)
server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.js
server/sonar-web/src/main/js/components/controls/SearchSelect.tsx
server/sonar-web/src/main/js/components/controls/Select.tsx
server/sonar-web/src/main/js/components/controls/__tests__/__snapshots__/SearchSelect-test.tsx.snap

index e8f9b22fd0ce68f0acb5beca93fb390b648e0ac7..f664d3a7782a5cc9635a5cdfd2d7f46e37fe7c03 100644 (file)
@@ -177,8 +177,14 @@ export default class BulkChangeModal extends React.PureComponent {
     this.setState({ [field]: event.target.value });
   };
 
-  handleSelectFieldChange = (field /*: string */) => ({ value } /*: { value: string } */) => {
-    this.setState({ [field]: value });
+  handleSelectFieldChange = (field /*: string */) => (
+    data /*: { label: string, value: string } */
+  ) => {
+    if (data) {
+      this.setState({ [field]: data.value });
+    } else {
+      this.setState({ [field]: null });
+    }
   };
 
   handleSubmit = (e /*: Event */) => {
@@ -236,7 +242,7 @@ export default class BulkChangeModal extends React.PureComponent {
   }
 
   renderCancelButton = () => (
-    <a id="bulk-change-cancel" href="#" onClick={this.handleCloseClick}>
+    <a href="#" id="bulk-change-cancel" onClick={this.handleCloseClick}>
       {translate('cancel')}
     </a>
   );
@@ -273,7 +279,6 @@ export default class BulkChangeModal extends React.PureComponent {
   ) => (
     <div className="modal-field" id={`issues-bulk-change-${field}`}>
       <label htmlFor={field}>{translate(label)}</label>
-      {this.renderCheckbox(field)}
       {input}
       {affected != null && this.renderAffected(affected)}
     </div>
@@ -299,6 +304,7 @@ export default class BulkChangeModal extends React.PureComponent {
 
     const input = (
       <SearchSelect
+        clearable={true}
         defaultOptions={this.getDefaultAssignee()}
         onSearch={this.handleAssigneeSearch}
         onSelect={this.handleAssigneeSelect}
@@ -330,7 +336,7 @@ export default class BulkChangeModal extends React.PureComponent {
 
     const input = (
       <Select
-        clearable={false}
+        clearable={true}
         id="type"
         onChange={this.handleSelectFieldChange('type')}
         optionRenderer={optionRenderer}
@@ -359,7 +365,7 @@ export default class BulkChangeModal extends React.PureComponent {
 
     const input = (
       <Select
-        clearable={false}
+        clearable={true}
         id="severity"
         onChange={this.handleSelectFieldChange('severity')}
         optionRenderer={option => <SeverityHelper severity={option.value} />}
@@ -384,6 +390,7 @@ export default class BulkChangeModal extends React.PureComponent {
     const input = (
       <SearchSelect
         canCreate={allowCreate}
+        clearable={true}
         defaultOptions={this.state.initialTags}
         id={field}
         minimumQueryLength={0}
index 1712ac8c4f01807ed1e66208063a1cc391942f38..0e31f84bc577a33ed106daf79218f4cd4a5011bc 100644 (file)
@@ -30,6 +30,7 @@ interface Option {
 interface Props {
   autofocus?: boolean;
   canCreate?: boolean;
+  clearable?: boolean;
   defaultOptions?: Option[];
   minimumQueryLength?: number;
   multi?: boolean;
@@ -128,7 +129,7 @@ export default class SearchSelect extends React.PureComponent<Props, State> {
       <Component
         autofocus={this.autofocus}
         className="input-super-large"
-        clearable={false}
+        clearable={this.props.clearable}
         escapeClearsValue={false}
         filterOption={this.handleFilterOption}
         isLoading={this.state.loading}
index 04e49151b88939d480f4259ccd121f381f87a3cc..85fa556edc913130aa194ed17d7b496bf8852868 100644 (file)
@@ -54,7 +54,9 @@ export default function Select({ innerRef, ...props }: WithInnerRef & ReactSelec
 }
 
 export function Creatable(props: ReactCreatableSelectProps) {
-  return <ReactCreatable {...props} />;
+  // ReactSelect doesn't declare `clearRenderer` prop
+  const ReactCreatableAny = ReactCreatable as any;
+  return <ReactCreatableAny {...props} clearRenderer={renderInput} />;
 }
 
 // TODO figure out why `ref` prop is incompatible
index 0e61c2bcc6e9c3515e077ec03ba2dc58f2c810d2..de7d83d6b2aef9148db45e711f717dbb207360a2 100644 (file)
@@ -4,7 +4,6 @@ exports[`should render Select 1`] = `
 <Select
   autofocus={true}
   className="input-super-large"
-  clearable={false}
   escapeClearsValue={false}
   filterOption={[Function]}
   isLoading={false}