From df3cc3dd20e6a2105764290efee64fed84defd82 Mon Sep 17 00:00:00 2001 From: John Long Date: Thu, 24 Mar 2016 16:28:01 -0400 Subject: [PATCH 1/4] adding tab index to menu items --- src/MenuItem.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/MenuItem.jsx b/src/MenuItem.jsx index 5dee9f44..9bb0f234 100644 --- a/src/MenuItem.jsx +++ b/src/MenuItem.jsx @@ -10,6 +10,7 @@ const MenuItem = React.createClass({ selected: React.PropTypes.bool, disabled: React.PropTypes.bool, title: React.PropTypes.string, + tabIndex: React.PropTypes.string, onSelect: React.PropTypes.func, onClick: React.PropTypes.func, onDeselect: React.PropTypes.func, @@ -122,6 +123,7 @@ const MenuItem = React.createClass({ ...props.attribute, title: props.title, className: classnames(classes), + tabIndex: props.tabIndex, role: 'menuitem', 'aria-selected': props.selected, 'aria-disabled': props.disabled, From ef6b15f22bf8a0a498b35c7621d2469dc5c33c17 Mon Sep 17 00:00:00 2001 From: John Long Date: Thu, 24 Mar 2016 16:31:53 -0400 Subject: [PATCH 2/4] adding tab index to sub menus --- src/SubMenu.jsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/SubMenu.jsx b/src/SubMenu.jsx index de9847f4..23e909b8 100644 --- a/src/SubMenu.jsx +++ b/src/SubMenu.jsx @@ -9,6 +9,7 @@ const SubMenu = React.createClass({ parentMenu: React.PropTypes.object, title: React.PropTypes.node, onClick: React.PropTypes.func, + onFocus: React.PropTypes.func, onOpenChange: React.PropTypes.func, rootPrefixCls: React.PropTypes.string, eventKey: React.PropTypes.string, @@ -21,6 +22,7 @@ const SubMenu = React.createClass({ onDeselect: React.PropTypes.func, onDestroy: React.PropTypes.func, onItemHover: React.PropTypes.func, + tabIndex: React.PropTypes.string }, mixins: [require('./SubMenuStateMixin')], @@ -163,6 +165,15 @@ const SubMenu = React.createClass({ onSubMenuClick(info) { this.props.onClick(this.addKeyPath(info)); }, + + onFocus: function onFocus () { + if (!this.props.open) { + this.triggerOpenChange(true); + } + else { + this.triggerOpenChange(false); + } + }, onSelect(info) { this.props.onSelect(info); @@ -252,12 +263,16 @@ const SubMenu = React.createClass({ classes[prefixCls] = true; classes[prefixCls + '-' + props.mode] = 1; let clickEvents = {}; + let focusEvents = {}; let mouseEvents = {}; let titleMouseEvents = {}; if (!props.disabled) { clickEvents = { onClick: this.onClick, }; + focusEvents = { + onFocus: this.onFocus, + }; mouseEvents = { onMouseLeave: this.onMouseLeave, onMouseEnter: this.onSubTreeMouseEnter, @@ -275,6 +290,7 @@ const SubMenu = React.createClass({
  • Date: Thu, 24 Mar 2016 16:35:09 -0400 Subject: [PATCH 3/4] adding tab index props to readme --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 7e5793a0..2c291e8e 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,12 @@ ReactDOM.render( corresponding to activeKey + + tabIndex + String + + the tabindex to assign to allow the user to tab to this item + @@ -244,6 +250,12 @@ ReactDOM.render( false no effect for click or keydown for this item + + tabIndex + String + + the tabindex to assign to allow the user to tab to this item + From 19dd3daf33a08869f814d50c670dc9d1ae23231e Mon Sep 17 00:00:00 2001 From: John Long Date: Thu, 24 Mar 2016 16:36:24 -0400 Subject: [PATCH 4/4] added missing focus events --- src/SubMenu.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SubMenu.jsx b/src/SubMenu.jsx index 23e909b8..b1d171f7 100644 --- a/src/SubMenu.jsx +++ b/src/SubMenu.jsx @@ -294,6 +294,7 @@ const SubMenu = React.createClass({ className={prefixCls + '-title'} {...titleMouseEvents} {...clickEvents} + {...focusEvents} aria-open={props.open} aria-owns={this._menuId} aria-haspopup="true"