When selecting a toot via keyboard, ensure it is scrolled into view (#10593)
This commit is contained in:
		
					parent
					
						
							
								05ef3462ba
							
						
					
				
			
			
				commit
				
					
						5121d9c12f
					
				
			
		
					 5 changed files with 51 additions and 22 deletions
				
			
		|  | @ -46,22 +46,28 @@ export default class StatusList extends ImmutablePureComponent { | |||
| 
 | ||||
|   handleMoveUp = (id, featured) => { | ||||
|     const elementIndex = this.getCurrentStatusIndex(id, featured) - 1; | ||||
|     this._selectChild(elementIndex); | ||||
|     this._selectChild(elementIndex, true); | ||||
|   } | ||||
| 
 | ||||
|   handleMoveDown = (id, featured) => { | ||||
|     const elementIndex = this.getCurrentStatusIndex(id, featured) + 1; | ||||
|     this._selectChild(elementIndex); | ||||
|     this._selectChild(elementIndex, false); | ||||
|   } | ||||
| 
 | ||||
|   handleLoadOlder = debounce(() => { | ||||
|     this.props.onLoadMore(this.props.statusIds.size > 0 ? this.props.statusIds.last() : undefined); | ||||
|   }, 300, { leading: true }) | ||||
| 
 | ||||
|   _selectChild (index) { | ||||
|     const element = this.node.node.querySelector(`article:nth-of-type(${index + 1}) .focusable`); | ||||
|   _selectChild (index, align_top) { | ||||
|     const container = this.node.node; | ||||
|     const element = container.querySelector(`article:nth-of-type(${index + 1}) .focusable`); | ||||
| 
 | ||||
|     if (element) { | ||||
|       if (align_top && container.scrollTop > element.offsetTop) { | ||||
|         element.scrollIntoView(true); | ||||
|       } else if (!align_top && container.scrollTop + container.clientHeight < element.offsetTop + element.offsetHeight) { | ||||
|         element.scrollIntoView(false); | ||||
|       } | ||||
|       element.focus(); | ||||
|     } | ||||
|   } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue