All files / behavior/sticky/src index.js

100% Statements 7/7
75% Branches 3/4
100% Functions 3/3
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                3x   1x 3x     3x               1x   1x                    
import {Sticky, StickyProvider} from 'react-stickup'
 
import cx from 'classnames'
import PropTypes from 'prop-types'
 
import {BASE_CLASS, CLASS_ANIMATE} from './settings.js'
import BehaviorStickyScrollUp from './StickyScrollUp.js'
 
const isFunction = children => typeof children === 'function'
 
const BehaviorSticky = ({children, animate, ...props}) => {
  return (
    <Sticky className={BASE_CLASS} {...props}>
      {({isSticky}) => (
        <div className={cx({[CLASS_ANIMATE]: isSticky && animate})}>
          {isFunction(children) ? children({isSticky}) : children}
        </div>
      )}
    </Sticky>
  )
}
 
BehaviorSticky.displayName = 'BehaviorSticky'
 
BehaviorSticky.propTypes = {
  children: PropTypes.oneOf([PropTypes.node, PropTypes.func]),
  animate: PropTypes.bool,
  container: PropTypes.exact({
    current: PropTypes.object
  })
}
 
export default BehaviorSticky
export {StickyProvider as BehaviorStickyProvider, BehaviorStickyScrollUp, BehaviorSticky}