The feature to pin column could hide the rightmost column, which is specified with children property of ColumnsArea. The user is likely to see the column when the property changed, so scroll the area in such cases.
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import React from 'react';
 | |
| import PropTypes from 'prop-types';
 | |
| import detectPassiveEvents from 'detect-passive-events';
 | |
| import { scrollTop } from '../scroll';
 | |
| 
 | |
| export default class Column extends React.PureComponent {
 | |
| 
 | |
|   static propTypes = {
 | |
|     children: PropTypes.node,
 | |
|   };
 | |
| 
 | |
|   scrollTop () {
 | |
|     const scrollable = this.node.querySelector('.scrollable');
 | |
| 
 | |
|     if (!scrollable) {
 | |
|       return;
 | |
|     }
 | |
| 
 | |
|     this._interruptScrollAnimation = scrollTop(scrollable);
 | |
|   }
 | |
| 
 | |
|   handleWheel = () => {
 | |
|     if (typeof this._interruptScrollAnimation !== 'function') {
 | |
|       return;
 | |
|     }
 | |
| 
 | |
|     this._interruptScrollAnimation();
 | |
|   }
 | |
| 
 | |
|   setRef = c => {
 | |
|     this.node = c;
 | |
|   }
 | |
| 
 | |
|   componentDidMount () {
 | |
|     this.node.addEventListener('wheel', this.handleWheel,  detectPassiveEvents ? { passive: true } : false);
 | |
|   }
 | |
| 
 | |
|   componentWillUnmount () {
 | |
|     this.node.removeEventListener('wheel', this.handleWheel);
 | |
|   }
 | |
| 
 | |
|   render () {
 | |
|     const { children } = this.props;
 | |
| 
 | |
|     return (
 | |
|       <div role='region' className='column' ref={this.setRef}>
 | |
|         {children}
 | |
|       </div>
 | |
|     );
 | |
|   }
 | |
| 
 | |
| }
 |