Skip to content

Commit

Permalink
Use InView instead of hook
Browse files Browse the repository at this point in the history
  • Loading branch information
stephane-monnot committed Oct 12, 2020
1 parent 460f0ef commit a780a43
Showing 1 changed file with 61 additions and 56 deletions.
117 changes: 61 additions & 56 deletions src/VerticalTimelineElement.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { useInView } from 'react-intersection-observer';
import { InView } from 'react-intersection-observer';

const VerticalTimelineElement = ({
children,
Expand All @@ -23,65 +23,70 @@ const VerticalTimelineElement = ({
visible: defaultVisible,
}) => {
const [visible, setVisible] = useState(defaultVisible);
const [ref, inView] = useInView(intersectionObserverProps);
if (!visible && inView) {
setVisible(true);
}

return (
<div
ref={ref}
id={id}
className={classNames(className, 'vertical-timeline-element', {
'vertical-timeline-element--left': position === 'left',
'vertical-timeline-element--right': position === 'right',
'vertical-timeline-element--no-children': children === '',
})}
style={style}
>
<React.Fragment>
<span // eslint-disable-line jsx-a11y/no-static-element-interactions
style={iconStyle}
onClick={iconOnClick}
className={classNames(
iconClassName,
'vertical-timeline-element-icon',
{
'bounce-in': visible,
'is-hidden': !visible,
}
)}
>
{icon}
</span>
<div
style={contentStyle}
onClick={onTimelineElementClick}
className={classNames(
textClassName,
'vertical-timeline-element-content',
{
'bounce-in': visible,
'is-hidden': !visible,
}
)}
>
<InView {...intersectionObserverProps}>
{({ inView, ref }) => {
if (!visible && inView) {
setVisible(true);
}
return (
<div
style={contentArrowStyle}
className="vertical-timeline-element-content-arrow"
/>
{children}
<span
className={classNames(
dateClassName,
'vertical-timeline-element-date'
)}
ref={ref}
id={id}
className={classNames(className, 'vertical-timeline-element', {
'vertical-timeline-element--left': position === 'left',
'vertical-timeline-element--right': position === 'right',
'vertical-timeline-element--no-children': children === '',
})}
style={style}
>
{date}
</span>
</div>
</React.Fragment>
</div>
<React.Fragment>
<span // eslint-disable-line jsx-a11y/no-static-element-interactions
style={iconStyle}
onClick={iconOnClick}
className={classNames(
iconClassName,
'vertical-timeline-element-icon',
{
'bounce-in': visible,
'is-hidden': !visible,
}
)}
>
{icon}
</span>
<div
style={contentStyle}
onClick={onTimelineElementClick}
className={classNames(
textClassName,
'vertical-timeline-element-content',
{
'bounce-in': visible,
'is-hidden': !visible,
}
)}
>
<div
style={contentArrowStyle}
className="vertical-timeline-element-content-arrow"
/>
{children}
<span
className={classNames(
dateClassName,
'vertical-timeline-element-date'
)}
>
{date}
</span>
</div>
</React.Fragment>
</div>
);
}}
</InView>
);
};

Expand Down

0 comments on commit a780a43

Please sign in to comment.