Skip to content
Extraits de code Groupes Projets
column.js 1,55 ko
Newer Older
  • Learn to ignore specific revisions
  • import React from 'react';
    
    import ColumnHeader from './column_header';
    
    import PropTypes from 'prop-types';
    
    import { debounce } from 'lodash';
    
    import scrollTop from '../../../scroll';
    
    import { isMobile } from '../../../is_mobile';
    
    export default class Column extends React.PureComponent {
    
      static propTypes = {
        heading: PropTypes.string,
        icon: PropTypes.string,
        children: PropTypes.node,
        active: PropTypes.bool,
    
        hideHeadingOnMobile: PropTypes.bool,
    
      handleHeaderClick = () => {
    
        const scrollable = this.node.querySelector('.scrollable');
    
        this._interruptScrollAnimation = scrollTop(scrollable);
    
      handleScroll = debounce(() => {
    
        if (typeof this._interruptScrollAnimation !== 'undefined') {
          this._interruptScrollAnimation();
        }
    
        const { heading, icon, children, active, hideHeadingOnMobile } = this.props;
    
        const showHeading = heading && (!hideHeadingOnMobile || (hideHeadingOnMobile && !isMobile(window.innerWidth)));
    
        const columnHeaderId = showHeading && heading.replace(/ /g, '-');
        const header = showHeading && (
          <ColumnHeader icon={icon} active={active} type={heading} onClick={this.handleHeaderClick} columnHeaderId={columnHeaderId} />
        );
    
          <div
            ref={this.setRef}
            role='region'
            aria-labelledby={columnHeaderId}
            className='column'
    
            onScroll={this.handleScroll}
          >
    
            {children}