Fix lost focus when modals open/close (#12437)
* Fix lost focus after modal closes Regression caused by the use of the wicg-inert polyfill * Fix regression introduced by wicg-inert * Catch errors to please CodeClimate
This commit is contained in:
		
							parent
							
								
									b532ead798
								
							
						
					
					
						commit
						35b142a7ad
					
				@ -56,15 +56,21 @@ export default class ModalRoot extends React.PureComponent {
 | 
			
		||||
    } else if (!nextProps.children) {
 | 
			
		||||
      this.setState({ revealed: false });
 | 
			
		||||
    }
 | 
			
		||||
    if (!nextProps.children && !!this.props.children) {
 | 
			
		||||
      this.activeElement.focus();
 | 
			
		||||
      this.activeElement = null;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  componentDidUpdate (prevProps) {
 | 
			
		||||
    if (!this.props.children && !!prevProps.children) {
 | 
			
		||||
      this.getSiblings().forEach(sibling => sibling.removeAttribute('inert'));
 | 
			
		||||
 | 
			
		||||
      // Because of the wicg-inert polyfill, the activeElement may not be
 | 
			
		||||
      // immediately selectable, we have to wait for observers to run, as
 | 
			
		||||
      // described in https://github.com/WICG/inert#performance-and-gotchas
 | 
			
		||||
      Promise.resolve().then(() => {
 | 
			
		||||
        this.activeElement.focus();
 | 
			
		||||
        this.activeElement = null;
 | 
			
		||||
      }).catch((error) => {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
    if (this.props.children) {
 | 
			
		||||
      requestAnimationFrame(() => {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user