Update to reflect previous implementation

Which was a74bbb424c
pull/4560/head
Luke Barnard 2017-07-12 17:10:43 +01:00
parent 4fe4e10abb
commit 41cd238e02
2 changed files with 25 additions and 12 deletions

View File

@ -30,6 +30,7 @@ var RoomNotifs = require('matrix-react-sdk/lib/RoomNotifs');
var FormattingUtils = require('matrix-react-sdk/lib/utils/FormattingUtils'); var FormattingUtils = require('matrix-react-sdk/lib/utils/FormattingUtils');
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
import Modal from 'matrix-react-sdk/lib/Modal'; import Modal from 'matrix-react-sdk/lib/Modal';
import KeyCode from 'matrix-react-sdk/lib/KeyCode';
// turn this on for drop & drag console debugging galore // turn this on for drop & drag console debugging galore
var debug = false; var debug = false;
@ -151,10 +152,11 @@ var RoomSubList = React.createClass({
} }
}, },
onRoomTileClick(roomId) { onRoomTileClick(roomId, ev) {
dis.dispatch({ dis.dispatch({
action: 'view_room', action: 'view_room',
room_id: roomId, room_id: roomId,
clear_search: (ev && (ev.keyCode == KeyCode.ENTER || ev.keyCode == KeyCode.SPACE)),
}); });
}, },

View File

@ -16,12 +16,13 @@ limitations under the License.
'use strict'; 'use strict';
var React = require('react'); import React from 'react';
import { _t } from 'matrix-react-sdk/lib/languageHandler'; import { _t } from 'matrix-react-sdk/lib/languageHandler';
var sdk = require('matrix-react-sdk') import KeyCode from 'matrix-react-sdk/lib/KeyCode';
var dis = require('matrix-react-sdk/lib/dispatcher'); import sdk from 'matrix-react-sdk';
var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc'); import dis from 'matrix-react-sdk/lib/dispatcher';
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); import RateLimitedFunc from 'matrix-react-sdk/lib/ratelimitedfunc';
import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'SearchBox', displayName: 'SearchBox',
@ -39,26 +40,25 @@ module.exports = React.createClass({
componentDidMount: function() { componentDidMount: function() {
this.dispatcherRef = dis.register(this.onAction); this.dispatcherRef = dis.register(this.onAction);
document.addEventListener('keydown', this._onKeyDown);
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
dis.unregister(this.dispatcherRef); dis.unregister(this.dispatcherRef);
document.removeEventListener('keydown', this._onKeyDown);
}, },
onAction: function(payload) { onAction: function(payload) {
switch (payload.action) { switch (payload.action) {
/* Disabling this as I find it really really annoying, and was used to the
previous behaviour - see https://github.com/vector-im/riot-web/issues/3348
// Clear up the text field when a room is selected.
case 'view_room': case 'view_room':
if (this.refs.search) { if (this.refs.search && payload.clear_search) {
this._clearSearch(); this._clearSearch();
} }
break; break;
*/
case 'focus_room_filter': case 'focus_room_filter':
if (this.refs.search) { if (this.refs.search) {
this.refs.search.focus(); this.refs.search.focus();
this.refs.search.select();
} }
break; break;
} }
@ -70,7 +70,7 @@ module.exports = React.createClass({
this.onSearch(); this.onSearch();
}, },
onSearch: new rate_limited_func( onSearch: new RateLimitedFunc(
function() { function() {
this.props.onSearch(this.refs.search.value); this.props.onSearch(this.refs.search.value);
}, },
@ -90,6 +90,17 @@ module.exports = React.createClass({
} }
}, },
_onKeyDown: function(ev) {
// Only do anything when the key event target is the search input
if(ev.target !== this.refs.search) return;
switch (ev.keyCode) {
case KeyCode.ESCAPE:
this._clearSearch();
dis.dispatch({action: 'focus_composer'});
break;
}
},
_clearSearch: function() { _clearSearch: function() {
this.refs.search.value = ""; this.refs.search.value = "";
this.onChange(); this.onChange();