Skip to content

Commit 2559db9

Browse files
committed
Merge pull request #1 from cannona/tab-out
Added prop to make closing on tabbing out optional.
2 parents 11e6f5f + 3c720a5 commit 2559db9

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

lib/components/Tray.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ export default React.createClass({
99
propTypes: {
1010
isOpen: React.PropTypes.bool,
1111
onBlur: React.PropTypes.func,
12-
closeTimeoutMS: React.PropTypes.number
12+
closeTimeoutMS: React.PropTypes.number,
13+
closeOnBlur: React.PropTypes.bool
1314
},
1415

1516
getDefaultProps() {
1617
return {
1718
isOpen: false,
18-
closeTimeoutMS: 0
19+
closeTimeoutMS: 0,
20+
closeOnBlur: true
1921
};
2022
},
2123

lib/components/TrayPortal.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ export default React.createClass({
107107
this.props.onBlur();
108108
}
109109

110-
// Treat tabbing away from content as blur/close
111-
if (e.keyCode === 9 && isLeavingNode(this.refs.content, e)) {
110+
// Treat tabbing away from content as blur/close if closeOnBlur
111+
if (e.keyCode === 9 && this.props.closeOnBlur && isLeavingNode(this.refs.content, e)) {
112112
e.preventDefault();
113113
this.props.onBlur();
114114
}

lib/components/__tests__/Tray-test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,20 @@ describe('react-tray', function() {
6363
equal(document.querySelectorAll('.ReactTray__Content').length, 0);
6464
}, 0);
6565
});
66+
67+
it('should close on blur by default', function () {
68+
renderTray({isOpen: true, onBlur: function () {}, closeTimeoutMS: 0});
69+
TestUtils.Simulate.keyDown(document.querySelector('.ReactTray__Content'), {key: 'Tab'});
70+
setTimeout(function () {
71+
equal(document.querySelectorAll('.ReactTray__Content').length, 0);
72+
}, 0);
73+
});
74+
75+
it('should not close on blur', function () {
76+
renderTray({isOpen: true, onBlur: function () {}, closeTimeoutMS: 0, closeOnBlur: false});
77+
TestUtils.Simulate.keyDown(document.querySelector('.ReactTray__Content'), {key: 'Tab'});
78+
setTimeout(function () {
79+
equal(document.querySelectorAll('.ReactTray__Content').length, 1);
80+
}, 0);
81+
});
6682
});

0 commit comments

Comments
 (0)