Show more/Show less keep focus in a relevant place
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>pull/21833/head
							parent
							
								
									8ba2be0be5
								
							
						
					
					
						commit
						92e86af162
					
				|  | @ -140,15 +140,25 @@ export default class RoomSublist2 extends React.Component<IProps, IState> { | |||
|     }; | ||||
| 
 | ||||
|     private onShowAllClick = () => { | ||||
|         // TODO a11y keep focus somewhere useful: https://github.com/vector-im/riot-web/issues/14180
 | ||||
|         const numVisibleTiles = this.numVisibleTiles; | ||||
|         this.props.layout.visibleTiles = this.props.layout.tilesWithPadding(this.numTiles, MAX_PADDING_HEIGHT); | ||||
|         this.forceUpdate(); // because the layout doesn't trigger a re-render
 | ||||
|         setImmediate(this.focusRoomTile, numVisibleTiles); // focus the tile after the current bottom one
 | ||||
|     }; | ||||
| 
 | ||||
|     private onShowLessClick = () => { | ||||
|         // TODO a11y keep focus somewhere useful: https://github.com/vector-im/riot-web/issues/14180
 | ||||
|         this.props.layout.visibleTiles = this.props.layout.defaultVisibleTiles; | ||||
|         this.forceUpdate(); // because the layout doesn't trigger a re-render
 | ||||
|         // focus will flow to the show more button here
 | ||||
|     }; | ||||
| 
 | ||||
|     private focusRoomTile = (index: number) => { | ||||
|         if (!this.sublistRef.current) return; | ||||
|         const elements = this.sublistRef.current.querySelectorAll<HTMLDivElement>(".mx_RoomTile2"); | ||||
|         const element = elements && elements[index]; | ||||
|         if (element) { | ||||
|             element.focus(); | ||||
|         } | ||||
|     }; | ||||
| 
 | ||||
|     private onOpenMenuClick = (ev: InputEvent) => { | ||||
|  | @ -520,6 +530,7 @@ export default class RoomSublist2 extends React.Component<IProps, IState> { | |||
|                     </span> | ||||
|                 ); | ||||
|                 if (this.props.isMinimized) showMoreText = null; | ||||
|                 // TODO Roving tab index / treeitem?: https://github.com/vector-im/riot-web/issues/14180
 | ||||
|                 showNButton = ( | ||||
|                     <AccessibleButton onClick={this.onShowAllClick} className={showMoreBtnClasses} tabIndex={-1}> | ||||
|                         <span className='mx_RoomSublist2_showMoreButtonChevron mx_RoomSublist2_showNButtonChevron'> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Michael Telatynski
						Michael Telatynski