UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

108 lines (96 loc) 2.72 kB
import React, {Component} from 'react' import ReactDOM from 'react-dom' import Infinite from 'react-infinite' // import {List, AutoSizer} from 'react-virtualized' // import auto_bind from 'common/auto_bind' export default class InfiniteList extends Component { constructor(props) { super(props) this.state = { height: 100, } this.update_dimensions = this.update_dimensions.bind(this) this.get_scroll_top = this.get_scroll_top.bind(this) this.scroll_to = this.scroll_to.bind(this) this.infinite_dom = null } static defaultProps = { item_height: 50, } componentDidMount() { this.update_dimensions() $(window).resize(this.update_dimensions) this.infinite_dom = ReactDOM.findDOMNode(this.infinite_list) } componentWillUnmount() { $(window).off("resize", this.update_dimensions) } componentDidUpdate() { this.update_dimensions() } update_dimensions() { let height = $(this.wrapper).height() if (height !== this.state.height) { this.setState({height}) } } scroll_to(index) { this.infinite_dom.scrollTop = index } get_scroll_top() { return this.infinite_dom.scrollTop } render() { const {className, item_height, onInfiniteLoad, isInfiniteLoading, handle_scroll, children} = this.props return ( <div ref={(wrapper) => this.wrapper = wrapper} className={className} style={{flex: 1, overflow: 'hidden'}}> <Infinite ref={(infinite_list) => this.infinite_list = infinite_list} containerHeight={this.state.height || 1} elementHeight={item_height} timeScrollStateLastsForAfterUserScrolls={200} onInfiniteLoad={onInfiniteLoad} isInfiniteLoading={isInfiniteLoading} infiniteLoadBeginEdgeOffset={200} handleScroll={handle_scroll} > {children} </Infinite> </div> ) } } // // export default class BetterList extends Component { // constructor(props) { // super(props) // auto_bind(this) // } // // render_row({index, key, style}) { // const {children} = this.props // return ( // <div key={key} style={style}> // {children[index]} // </div> // ) // } // // render() { // const {children, item_height, className} = this.props // return ( // <AutoSizer> // {({height, width}) => ( // <List // className={className} // height={height} // width={width} // rowCount={children.length} // rowHeight={item_height || 50} // rowRenderer={this.render_row} // /> // )} // </AutoSizer> // ) // } // }