@@ -38,7 +38,8 @@ type Props = {
3838
3939type State = {
4040 scrollToColumn : number ,
41- scrollToRow : number
41+ scrollToRow : number ,
42+ focusOnRender : boolean
4243} ;
4344
4445class KeyBinder extends PureComponent < DefaultProps , Props , State > {
@@ -71,7 +72,8 @@ class KeyBinder extends PureComponent<DefaultProps, Props, State> {
7172
7273 this . state = {
7374 scrollToColumn : props . scrollToColumn ,
74- scrollToRow : props . scrollToRow
75+ scrollToRow : props . scrollToRow ,
76+ focusOnRender : false
7577 } ;
7678
7779 this . columnStartIndex = 0 ;
@@ -87,18 +89,16 @@ class KeyBinder extends PureComponent<DefaultProps, Props, State> {
8789 * @inheritdoc
8890 * @return {void }
8991 */
90- componentWillReceiveProps ( nextProps : Props ) {
92+ componentWillReceiveProps ( nextProps : Props ) : void {
9193 const { scrollToColumn, scrollToRow, currentCollection : { id } } : Props = nextProps ;
92- const {
93- scrollToColumn : prevScrollToColumn ,
94- scrollToRow : prevScrollToRow ,
95- currentCollection : { id : prevId }
96- } : Props = this . props ;
94+ const { currentCollection : { id : prevId } } : Props = this . props ;
95+ const { scrollToColumn : prevScrollToColumn , scrollToRow : prevScrollToRow } : State = this . state ;
9796
9897 if ( id !== prevId ) {
9998 this . setState ( {
10099 scrollToColumn : 0 ,
101- scrollToRow : 0
100+ scrollToRow : 0 ,
101+ focusOnRender : false
102102 } ) ;
103103 } else if ( prevScrollToColumn !== scrollToColumn && prevScrollToRow !== scrollToRow ) {
104104 this . setState ( {
@@ -119,7 +119,7 @@ class KeyBinder extends PureComponent<DefaultProps, Props, State> {
119119 * @inheritdoc
120120 * @return {void }
121121 */
122- onKeyDown = ( event : SyntheticKeyboardEvent ) => {
122+ onKeyDown = ( event : SyntheticKeyboardEvent ) : void => {
123123 const {
124124 columnCount,
125125 rowCount,
@@ -141,6 +141,7 @@ class KeyBinder extends PureComponent<DefaultProps, Props, State> {
141141 switch ( event . key ) {
142142 case 'ArrowDown' :
143143 scrollToRow = ctrlMeta ? rowCount - 1 : Math . min ( scrollToRow + 1 , rowCount - 1 ) ;
144+ event . stopPropagation ( ) ; // To prevent the arrow down capture of parent
144145 break ;
145146 case 'ArrowLeft' :
146147 scrollToColumn = ctrlMeta ? 0 : Math . max ( scrollToColumn - 1 , 0 ) ;
@@ -202,7 +203,7 @@ class KeyBinder extends PureComponent<DefaultProps, Props, State> {
202203 columnStopIndex : number ,
203204 rowStartIndex : number ,
204205 rowStopIndex : number
205- } ) => {
206+ } ) : void => {
206207 this . columnStartIndex = columnStartIndex ;
207208 this . columnStopIndex = columnStopIndex ;
208209 this . rowStartIndex = rowStartIndex ;
@@ -216,10 +217,10 @@ class KeyBinder extends PureComponent<DefaultProps, Props, State> {
216217 * @inheritdoc
217218 * @return {void }
218219 */
219- updateScrollState ( { scrollToColumn, scrollToRow } : State ) {
220+ updateScrollState ( { scrollToColumn, scrollToRow } : { scrollToColumn : number , scrollToRow : number } ) : void {
220221 const { onScrollToChange } = this . props ;
221222 onScrollToChange ( { scrollToColumn, scrollToRow } ) ;
222- this . setState ( { scrollToColumn, scrollToRow } ) ;
223+ this . setState ( { scrollToColumn, scrollToRow, focusOnRender : true } ) ;
223224 }
224225
225226 /**
@@ -231,15 +232,16 @@ class KeyBinder extends PureComponent<DefaultProps, Props, State> {
231232 */
232233 render ( ) {
233234 const { className, children } = this . props ;
234- const { scrollToColumn, scrollToRow } : State = this . state ;
235+ const { scrollToColumn, scrollToRow, focusOnRender } : State = this . state ;
235236
236237 /* eslint-disable jsx-a11y/no-static-element-interactions */
237238 return (
238239 < div className = { className } onKeyDown = { this . onKeyDown } >
239240 { children ( {
240241 onSectionRendered : this . onSectionRendered ,
241242 scrollToColumn,
242- scrollToRow
243+ scrollToRow,
244+ focusOnRender
243245 } ) }
244246 </ div >
245247 ) ;
0 commit comments