column.js (1081B)
- 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.hasSupport ? { 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>
- );
- }
- }