@@ -37,27 +37,9 @@ export default class ModeSelect extends React.Component {
3737 }
3838
3939 handleIdleSelectClick ( e ) {
40- this . setState ( { mode : EDIT_MODE } )
41- }
42-
43- componentDidUpdate ( prevProps , prevState ) {
44- if ( prevState . mode !== this . state . mode && this . state . mode === EDIT_MODE ) {
45- let searchElement = ReactDOM . findDOMNode ( this . refs . search )
46- searchElement . focus ( )
47- if ( this . searchKeyDownListener == null ) {
48- this . searchKeyDownListener = e => this . handleSearchKeyDown
49- }
50- searchElement . addEventListener ( 'keydown' , this . searchKeyDownListener )
51- }
52- }
53-
54- componentWillUpdate ( nextProps , nextState ) {
55- if ( nextProps . mode !== this . state . mode && nextState . mode === IDLE_MODE ) {
56- let searchElement = ReactDOM . findDOMNode ( this . refs . search )
57- if ( searchElement != null && this . searchKeyDownListener != null ) {
58- searchElement . removeEventListener ( 'keydown' , this . searchKeyDownListener )
59- }
60- }
40+ this . setState ( { mode : EDIT_MODE , search : this . props . value } , ( ) => {
41+ ReactDOM . findDOMNode ( this . refs . search ) . select ( )
42+ } )
6143 }
6244
6345 handleModeOptionClick ( modeName ) {
@@ -82,9 +64,9 @@ export default class ModeSelect extends React.Component {
8264 case 40 :
8365 e . preventDefault ( )
8466 {
67+ let search = _ . escapeRegExp ( this . state . search )
8568 let filteredModes = modes
8669 . filter ( mode => {
87- let search = this . state . search
8870 let nameMatched = mode . name . match ( search )
8971 let aliasMatched = _ . some ( mode . alias , alias => alias . match ( search ) )
9072 return nameMatched || aliasMatched
@@ -97,9 +79,9 @@ export default class ModeSelect extends React.Component {
9779 case 13 :
9880 e . preventDefault ( )
9981 {
82+ let search = _ . escapeRegExp ( this . state . search )
10083 let filteredModes = modes
10184 . filter ( mode => {
102- let search = this . state . search
10385 let nameMatched = mode . name . match ( search )
10486 let aliasMatched = _ . some ( mode . alias , alias => alias . match ( search ) )
10587 return nameMatched || aliasMatched
@@ -148,33 +130,31 @@ export default class ModeSelect extends React.Component {
148130 if ( this . state . mode === IDLE_MODE ) {
149131 let mode = _ . findWhere ( modes , { name : this . props . value } )
150132 let modeName = mode != null ? mode . name : 'text'
151- let modeLabel = mode != null ? mode . label : 'Plain text'
152133
153134 return (
154135 < div className = { className + ' idle' } onClick = { e => this . handleIdleSelectClick ( e ) } >
155136 < ModeIcon mode = { modeName } />
156- < span className = 'modeLabel' > { modeLabel } </ span >
157137 </ div >
158138 )
159139 }
160140
141+ let search = _ . escapeRegExp ( this . state . search )
161142 let filteredOptions = modes
162143 . filter ( mode => {
163- let search = this . state . search
164- let nameMatched = mode . name . match ( _ . escapeRegExp ( search ) )
165- let aliasMatched = _ . some ( mode . alias , alias => alias . match ( _ . escapeRegExp ( search ) ) )
144+ let nameMatched = mode . name . match ( search )
145+ let aliasMatched = _ . some ( mode . alias , alias => alias . match ( search ) )
166146 return nameMatched || aliasMatched
167147 } )
168148 . map ( ( mode , index ) => {
169149 return (
170- < div key = { mode . name } className = { index === this . state . focusIndex ? 'option active' : 'option ' } onClick = { e => this . handleModeOptionClick ( mode . name ) ( e ) } > < ModeIcon mode = { mode . name } /> { mode . label } </ div >
150+ < div key = { mode . name } className = { index === this . state . focusIndex ? 'ModeSelect-options-item active' : 'ModeSelect-options-item ' } onClick = { e => this . handleModeOptionClick ( mode . name ) ( e ) } > < ModeIcon mode = { mode . name } /> { mode . label } </ div >
171151 )
172152 } )
173153
174154 return (
175155 < div className = { className + ' edit' } >
176156 < input onKeyDown = { e => this . handleSearchKeyDown ( e ) } ref = 'search' onChange = { e => this . handleSearchChange ( e ) } value = { this . state . search } type = 'text' />
177- < div ref = 'options' className = 'modeOptions hide' >
157+ < div ref = 'options' className = 'ModeSelect-options hide' >
178158 { filteredOptions }
179159 </ div >
180160 </ div >
0 commit comments