Skip to content

Commit 21835d2

Browse files
authored
Merge pull request #1754 from wix/feat/TimelineList_nowIndicator
Support passing showNowIndicator to TimelineList component
2 parents 9b3c072 + d9a94d5 commit 21835d2

File tree

2 files changed

+10
-15
lines changed

2 files changed

+10
-15
lines changed

example/src/screens/timelineCalendar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ export default class TimelineCalendarScreen extends Component {
197197
rightArrowImageSource={require('../img/next.png')}
198198
markedDates={this.marked}
199199
/>
200-
<TimelineList events={eventsByDate} timelineProps={this.timelineProps} />
200+
<TimelineList events={eventsByDate} timelineProps={this.timelineProps} showNowIndicator />
201201
</CalendarProvider>
202202
);
203203
}

src/timeline-list/index.tsx

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,30 @@
11
import React, {useCallback, useContext, useEffect, useRef, useState} from 'react';
22
// import {Text} from 'react-native';
33
import throttle from 'lodash/throttle';
4+
import XDate from 'xdate';
45

56
import Context from '../expandableCalendar/Context';
67
import {UpdateSources} from '../expandableCalendar/commons';
8+
import {isToday} from '../dateutils';
79
import Timeline, {TimelineProps} from '../timeline/Timeline';
810
import InfiniteList from '../infinite-list';
911
import useTimelinePages, {INITIAL_PAGE, NEAR_EDGE_THRESHOLD} from './useTimelinePages';
1012

1113
export interface TimelineListProps {
1214
events: {[date: string]: TimelineProps['events']};
13-
timelineProps: Omit<TimelineProps, 'events'>;
15+
timelineProps?: Omit<TimelineProps, 'events' | 'showNowIndicator'>;
16+
showNowIndicator?: boolean;
1417
}
1518

1619
const TimelineList = (props: TimelineListProps) => {
17-
const {timelineProps, events} = props;
20+
const {timelineProps, events, showNowIndicator} = props;
1821
const {date, updateSource, setDate} = useContext(Context);
1922
const listRef = useRef<any>();
2023
const prevDate = useRef(date);
2124
const [timelineOffset, setTimelineOffset] = useState();
2225

23-
const {
24-
pages,
25-
pagesRef,
26-
resetPages,
27-
resetPagesDebounce,
28-
scrollToPageDebounce,
29-
shouldResetPages,
30-
isOutOfRange,
31-
} = useTimelinePages({date, listRef});
26+
const {pages, pagesRef, resetPages, resetPagesDebounce, scrollToPageDebounce, shouldResetPages, isOutOfRange} =
27+
useTimelinePages({date, listRef});
3228

3329
useEffect(() => {
3430
if (date !== prevDate.current) {
@@ -79,9 +75,7 @@ const TimelineList = (props: TimelineListProps) => {
7975
const renderPage = useCallback(
8076
(_type, item) => {
8177
const timelineEvent = events[item];
82-
8378
const isCurrent = prevDate.current === item;
84-
8579
return (
8680
<>
8781
<Timeline
@@ -92,13 +86,14 @@ const TimelineList = (props: TimelineListProps) => {
9286
events={timelineEvent}
9387
scrollOffset={isCurrent ? undefined : timelineOffset}
9488
onChangeOffset={onTimelineOffsetChange}
89+
showNowIndicator={showNowIndicator && isToday(new XDate(item))}
9590
/>
9691
{/* NOTE: Keeping this for easy debugging */}
9792
{/* <Text style={{position: 'absolute'}}>{item}</Text> */}
9893
</>
9994
);
10095
},
101-
[events, timelineOffset]
96+
[events, timelineOffset, showNowIndicator]
10297
);
10398

10499
return (

0 commit comments

Comments
 (0)