@@ -29,7 +29,7 @@ class CellModel extends BaseModel {
2929 addDomListener ( ) {
3030 let me = this ;
3131
32- me . view . on ( 'cellClick' , me . onCellClick , me )
32+ me . view . parent . on ( 'cellClick' , me . onCellClick , me )
3333 }
3434
3535 /**
@@ -38,7 +38,7 @@ class CellModel extends BaseModel {
3838 destroy ( ...args ) {
3939 let me = this ;
4040
41- me . view . un ( 'cellClick' , me . onCellClick , me ) ;
41+ me . view . parent . un ( 'cellClick' , me . onCellClick , me ) ;
4242
4343 super . destroy ( ...args )
4444 }
@@ -54,76 +54,85 @@ class CellModel extends BaseModel {
5454 * @param {Object } data
5555 */
5656 onKeyDownDown ( data ) {
57- this . onNavKeyRow ( data , 1 )
57+ this . onNavKeyRow ( 1 )
5858 }
5959
6060 /**
6161 * @param {Object } data
6262 */
6363 onKeyDownLeft ( data ) {
64- this . onNavKeyColumn ( data , - 1 )
64+ this . onNavKeyColumn ( - 1 )
6565 }
6666
6767 /**
6868 * @param {Object } data
6969 */
7070 onKeyDownRight ( data ) {
71- this . onNavKeyColumn ( data , 1 )
71+ this . onNavKeyColumn ( 1 )
7272 }
7373
7474 /**
7575 * @param {Object } data
7676 */
7777 onKeyDownUp ( data ) {
78- this . onNavKeyRow ( data , - 1 )
78+ this . onNavKeyRow ( - 1 )
7979 }
8080
8181 /**
82- * @param {Object } data
8382 * @param {Number } step
8483 */
85- onNavKeyColumn ( data , step ) {
86- let me = this ,
87- { view} = me ,
88- idArray = data . path [ 0 ] . id . split ( '__' ) ,
89- currentColumn = idArray [ 2 ] ,
90- dataFields = view . columns . map ( c => c . dataField ) ,
91- newIndex = ( dataFields . indexOf ( currentColumn ) + step ) % dataFields . length ,
92- id ;
84+ onNavKeyColumn ( step ) {
85+ let me = this ,
86+ { view} = me ,
87+ { store} = view ,
88+ dataFields = view . parent . columns . map ( c => c . dataField ) ,
89+ currentColumn , id , newIndex , record ;
90+
91+ if ( me . hasSelection ( ) ) {
92+ currentColumn = me . items [ 0 ] . split ( '__' ) [ 2 ] ;
93+ record = view . getRecord ( me . items [ 0 ] )
94+ } else {
95+ currentColumn = dataFields [ 0 ] ;
96+ record = store . getAt ( 0 )
97+ }
98+
99+ newIndex = ( dataFields . indexOf ( currentColumn ) + step ) % dataFields . length ;
93100
94101 while ( newIndex < 0 ) {
95102 newIndex += dataFields . length
96103 }
97104
98- idArray [ 2 ] = dataFields [ newIndex ] ;
99- id = idArray . join ( '__' ) ;
105+ id = view . getCellId ( record , dataFields [ newIndex ] ) ;
100106
101- me . select ( id ) ;
102- view . focus ( id )
107+ me . select ( id )
103108 }
104109
105110 /**
106- * @param {Object } data
107111 * @param {Number } step
108112 */
109- onNavKeyRow ( data , step ) {
110- let me = this ,
111- { view} = me ,
112- { store} = view ,
113- idArray = data . path [ 0 ] . id . split ( '__' ) ,
114- recordId = idArray [ 1 ] ,
115- newIndex = ( store . indexOf ( recordId ) + step ) % store . getCount ( ) ,
116- id ;
113+ onNavKeyRow ( step ) {
114+ let me = this ,
115+ { view} = me ,
116+ { store} = view ,
117+ currentIndex = 0 ,
118+ dataField = view . parent . columns [ 0 ] . dataField ,
119+ id , newIndex , newRecord ;
120+
121+ if ( me . hasSelection ( ) ) {
122+ currentIndex = store . indexOf ( view . getRecord ( me . items [ 0 ] ) ) ;
123+ dataField = me . items [ 0 ] . split ( '__' ) [ 2 ] ;
124+ }
125+
126+ newIndex = ( currentIndex + step ) % store . getCount ( ) ;
117127
118128 while ( newIndex < 0 ) {
119129 newIndex += store . getCount ( )
120130 }
121131
122- idArray [ 1 ] = store . getKeyAt ( newIndex ) ;
123- id = idArray . join ( '__' ) ;
132+ newRecord = store . getAt ( newIndex ) ;
133+ id = view . getCellId ( newRecord , dataField ) ;
124134
125- me . select ( id ) ;
126- view . focus ( id )
135+ me . select ( id )
127136 }
128137
129138 /**
@@ -133,13 +142,14 @@ class CellModel extends BaseModel {
133142 super . register ( component ) ;
134143
135144 let me = this ,
136- { id, view} = me ;
145+ { id, view} = me ,
146+ scope = id ;
137147
138148 view . keys ?. _keys . push (
139- { fn : 'onKeyDownDown' , key : 'Down' , scope : id } ,
140- { fn : 'onKeyDownLeft' , key : 'Left' , scope : id } ,
141- { fn : 'onKeyDownRight' , key : 'Right' , scope : id } ,
142- { fn : 'onKeyDownUp' , key : 'Up' , scope : id }
149+ { fn : 'onKeyDownDown' , key : 'Down' , scope} ,
150+ { fn : 'onKeyDownLeft' , key : 'Left' , scope} ,
151+ { fn : 'onKeyDownRight' , key : 'Right' , scope} ,
152+ { fn : 'onKeyDownUp' , key : 'Up' , scope}
143153 )
144154 }
145155
@@ -148,13 +158,14 @@ class CellModel extends BaseModel {
148158 */
149159 unregister ( ) {
150160 let me = this ,
151- { id, view} = me ;
161+ { id, view} = me ,
162+ scope = id ;
152163
153164 view . keys ?. removeKeys ( [
154- { fn : 'onKeyDownDown' , key : 'Down' , scope : id } ,
155- { fn : 'onKeyDownLeft' , key : 'Left' , scope : id } ,
156- { fn : 'onKeyDownRight' , key : 'Right' , scope : id } ,
157- { fn : 'onKeyDownUp' , key : 'Up' , scope : id }
165+ { fn : 'onKeyDownDown' , key : 'Down' , scope} ,
166+ { fn : 'onKeyDownLeft' , key : 'Left' , scope} ,
167+ { fn : 'onKeyDownRight' , key : 'Right' , scope} ,
168+ { fn : 'onKeyDownUp' , key : 'Up' , scope}
158169 ] ) ;
159170
160171 super . unregister ( )
0 commit comments