import {autobind} from "core-decorators"; import {observer} from "mobx-react"; import * as React from "react"; import {EntityField, textFor} from "../../entity"; import {injectStyle} from "../../theming"; import {LineProps} from "./line"; import {ListBase, ListBaseProps} from "./list-base"; import * as styles from "./style/line.css"; import {timeline} from "./style/list.css"; export interface TimelineProps> extends ListBaseProps { data: T[]; dateSelector: (data: T) => EntityField; } interface LineTimelineProps> { classNames?: Partial; data: T; dateSelector: (data: T) => EntityField; LineComponent: ReactComponent

; lineProps?: P; } const LineTimeline = injectStyle("line", ({classNames, data, dateSelector, LineComponent, lineProps}: LineTimelineProps) => (

  • {textFor(dateSelector(data))}
  • )); @injectStyle("list") @autobind @observer export class Timeline> extends ListBase> { get data() { return this.props.data; } private renderLines() { const {LineComponent, lineProps, dateSelector} = this.props; return this.displayedData.map((line, i) => ); } render() { return (
      {this.renderLines()} {this.renderManualFetch()}
    ); } } export function timelineFor>(props: TimelineProps) { const List = Timeline as any; return ; }