Make dropdown component focusable and force focus after selecting an item
parent
e405b62c39
commit
96ff9ecd10
|
@ -23,6 +23,7 @@ class Dropdown extends Component {
|
||||||
menuWidth: '100%',
|
menuWidth: '100%',
|
||||||
useAutoComplete: false,
|
useAutoComplete: false,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
|
tabIndex: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
handleClickOutside = () => {
|
handleClickOutside = () => {
|
||||||
|
@ -44,6 +45,7 @@ class Dropdown extends Component {
|
||||||
handleSelection = item => () => {
|
handleSelection = item => () => {
|
||||||
this.toggleMenu()
|
this.toggleMenu()
|
||||||
this.props.onChoose(item)
|
this.props.onChoose(item)
|
||||||
|
this.dropdownRef.focus()
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHighlight = itemIndex => () => {
|
handleHighlight = itemIndex => () => {
|
||||||
|
@ -215,6 +217,7 @@ class Dropdown extends Component {
|
||||||
toggleStyle,
|
toggleStyle,
|
||||||
useAutoComplete,
|
useAutoComplete,
|
||||||
disabled,
|
disabled,
|
||||||
|
tabIndex,
|
||||||
} = this.props
|
} = this.props
|
||||||
const {isOpen, searchTerm, filteredItems} = this.state
|
const {isOpen, searchTerm, filteredItems} = this.state
|
||||||
const menuItems = useAutoComplete ? filteredItems : items
|
const menuItems = useAutoComplete ? filteredItems : items
|
||||||
|
@ -227,6 +230,8 @@ class Dropdown extends Component {
|
||||||
open: isOpen,
|
open: isOpen,
|
||||||
[className]: className,
|
[className]: className,
|
||||||
})}
|
})}
|
||||||
|
tabIndex={tabIndex}
|
||||||
|
ref={r => (this.dropdownRef = r)}
|
||||||
>
|
>
|
||||||
{useAutoComplete && isOpen
|
{useAutoComplete && isOpen
|
||||||
? <div
|
? <div
|
||||||
|
@ -274,7 +279,7 @@ class Dropdown extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const {arrayOf, bool, shape, string, func} = PropTypes
|
const {arrayOf, bool, number, shape, string, func} = PropTypes
|
||||||
|
|
||||||
Dropdown.propTypes = {
|
Dropdown.propTypes = {
|
||||||
actions: arrayOf(
|
actions: arrayOf(
|
||||||
|
@ -306,6 +311,7 @@ Dropdown.propTypes = {
|
||||||
useAutoComplete: bool,
|
useAutoComplete: bool,
|
||||||
toggleStyle: shape(),
|
toggleStyle: shape(),
|
||||||
disabled: bool,
|
disabled: bool,
|
||||||
|
tabIndex: number,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default OnClickOutside(Dropdown)
|
export default OnClickOutside(Dropdown)
|
||||||
|
|
Loading…
Reference in New Issue