Browse Source

Merge pull request #532 from smiclea/fix-multisel-focus

Fix dropdown not closing when multi-selecting mode
Nashwan Azhari 6 years ago
parent
commit
d5da3e41da
1 changed files with 7 additions and 3 deletions
  1. 7 3
      src/components/molecules/Dropdown/Dropdown.jsx

+ 7 - 3
src/components/molecules/Dropdown/Dropdown.jsx

@@ -410,11 +410,14 @@ class Dropdown extends React.Component<Props, State> {
   }
   }
 
 
   handleItemClick(item: any) {
   handleItemClick(item: any) {
+    const resetFocus = () => {
+      this.ignoreFocusHandler = true
+      this.wrapperRef.focus()
+      setTimeout(() => { this.ignoreFocusHandler = false }, 100)
+    }
     if (!this.props.multipleSelection) {
     if (!this.props.multipleSelection) {
       this.setState({ showDropdownList: false, firstItemHover: false }, () => {
       this.setState({ showDropdownList: false, firstItemHover: false }, () => {
-        this.ignoreFocusHandler = true
-        this.wrapperRef.focus()
-        setTimeout(() => { this.ignoreFocusHandler = false }, 100)
+        resetFocus()
       })
       })
     } else {
     } else {
       let selected = Boolean(this.props.selectedItems && this.props.selectedItems.find(i =>
       let selected = Boolean(this.props.selectedItems && this.props.selectedItems.find(i =>
@@ -424,6 +427,7 @@ class Dropdown extends React.Component<Props, State> {
         this.checkmarkRefs[`${this.getLabel(item)}-${this.getValue(item) || ''}`],
         this.checkmarkRefs[`${this.getLabel(item)}-${this.getValue(item) || ''}`],
         selected
         selected
       )
       )
+      resetFocus()
     }
     }
 
 
     if (this.props.onChange) {
     if (this.props.onChange) {