parent
4fe4e10abb
commit
41cd238e02
|
@ -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)),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue