Ensure arrow keys work correctly when the pane is focused instead of the tab in the query tool history.

This commit is contained in:
Harshal Dhumal 2017-07-21 13:33:59 +01:00 committed by Dave Page
parent 70418144cf
commit 7182b59976
3 changed files with 14 additions and 12 deletions

View File

@ -57,13 +57,13 @@ export default class QueryHistory extends React.Component {
refocus() {
if (this.state.history.length > 0) {
this.retrieveSelectedQuery().parentElement.focus();
this.retrieveQueryListPane().focus();
}
}
retrieveSelectedQuery() {
retrieveQueryListPane() {
return ReactDOM.findDOMNode(this)
.getElementsByClassName('selected')[0];
.getElementsByClassName('query-history')[0];
}
getCurrentHistoryDetail() {
@ -172,13 +172,14 @@ export default class QueryHistory extends React.Component {
<SplitPane defaultSize="50%" split="vertical" pane1Style={queryEntryListDivStyle}
pane2Style={queryDetailDivStyle}>
<div id='query_list'
className="query-history">
className="query-history"
onKeyDown={this.navigateUpAndDown}
tabIndex='0'>
<ul>
{this.retrieveOrderedHistory()
.map((entry, index) =>
<li key={index} className='list-item' tabIndex='0'
onClick={this.onClickHandler.bind(this, index)}
onKeyDown={this.navigateUpAndDown}>
<li key={index} className='list-item'
onClick={this.onClickHandler.bind(this, index)}>
<QueryHistoryEntry
historyEntry={entry}
isSelected={index == this.state.selectedEntry}/>

View File

@ -1,4 +1,5 @@
.query-history {
height: 100%;
.list-item {
border-bottom: 1px solid $color-gray-3;
}

View File

@ -36,11 +36,11 @@ describe('QueryHistory', () => {
describe('when we switch to the query history tab', () => {
beforeEach(() => {
historyWrapper.node.refocus();
spyOn(historyWrapper.node, 'retrieveSelectedQuery');
spyOn(historyWrapper.node, 'retrieveQueryListPane');
});
it('does not try to focus on any element', () => {
expect(historyWrapper.node.retrieveSelectedQuery).not.toHaveBeenCalled();
expect(historyWrapper.node.retrieveQueryListPane).not.toHaveBeenCalled();
});
});
@ -264,7 +264,7 @@ describe('QueryHistory', () => {
beforeEach(() => {
selectedListItem = ReactDOM.findDOMNode(historyWrapper.node)
.getElementsByClassName('selected')[0].parentElement;
.getElementsByClassName('query-history')[0];
spyOn(selectedListItem, 'focus');
historyWrapper.node.refocus();