Fix opening the language picker scrolling the single-column view to the top (#19983)
Fixes #19915
This commit is contained in:
		
							parent
							
								
									ca80beb653
								
							
						
					
					
						commit
						608343c135
					
				@ -51,6 +51,15 @@ class LanguageDropdownMenu extends React.PureComponent {
 | 
				
			|||||||
    document.addEventListener('click', this.handleDocumentClick, false);
 | 
					    document.addEventListener('click', this.handleDocumentClick, false);
 | 
				
			||||||
    document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);
 | 
					    document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);
 | 
				
			||||||
    this.setState({ mounted: true });
 | 
					    this.setState({ mounted: true });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Because of https://github.com/react-bootstrap/react-bootstrap/issues/2614 we need
 | 
				
			||||||
 | 
					    // to wait for a frame before focusing
 | 
				
			||||||
 | 
					    requestAnimationFrame(() => {
 | 
				
			||||||
 | 
					      if (this.node) {
 | 
				
			||||||
 | 
					        const element = this.node.querySelector('input[type="search"]');
 | 
				
			||||||
 | 
					        if (element) element.focus();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  componentWillUnmount () {
 | 
					  componentWillUnmount () {
 | 
				
			||||||
@ -226,7 +235,7 @@ class LanguageDropdownMenu extends React.PureComponent {
 | 
				
			|||||||
          // react-overlays
 | 
					          // react-overlays
 | 
				
			||||||
          <div className={`language-dropdown__dropdown ${placement}`} style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} ref={this.setRef}>
 | 
					          <div className={`language-dropdown__dropdown ${placement}`} style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} ref={this.setRef}>
 | 
				
			||||||
            <div className='emoji-mart-search'>
 | 
					            <div className='emoji-mart-search'>
 | 
				
			||||||
              <input type='search' value={searchValue} onChange={this.handleSearchChange} onKeyDown={this.handleSearchKeyDown} placeholder={intl.formatMessage(messages.search)} autoFocus />
 | 
					              <input type='search' value={searchValue} onChange={this.handleSearchChange} onKeyDown={this.handleSearchKeyDown} placeholder={intl.formatMessage(messages.search)} />
 | 
				
			||||||
              <button type='button' className='emoji-mart-search-icon' disabled={!isSearching} aria-label={intl.formatMessage(messages.clear)} onClick={this.handleClear}>{!isSearching ? loupeIcon : deleteIcon}</button>
 | 
					              <button type='button' className='emoji-mart-search-icon' disabled={!isSearching} aria-label={intl.formatMessage(messages.clear)} onClick={this.handleClear}>{!isSearching ? loupeIcon : deleteIcon}</button>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user