UNPKG

react-event-timeline

Version:
134 lines (99 loc) 6.59 kB
# react-event-timeline React component to generate a responsive event timeline. [![npm version](https://badge.fury.io/js/react-event-timeline.svg)](https://badge.fury.io/js/react-event-timeline) [![Build Status](https://travis-ci.org/rcdexta/react-event-timeline.svg?branch=master)](https://travis-ci.org/rcdexta/react-event-timeline) [![codecov](https://codecov.io/gh/rcdexta/react-event-timeline/branch/master/graph/badge.svg)](https://codecov.io/gh/rcdexta/react-event-timeline) [![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/rcdexta/react-event-timeline/blob/master/LICENSE.md) ![alt tag](https://github.com/rcdexta/react-event-timeline/raw/master/timeline.png) See the storybook demo here: https://rcdexta.github.io/react-event-timeline CodeSandbox version to play with (in typescript): [![Edit Timeline Example](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/13k1jjqj64) > Note: CodeSandbox version has styling and icons loaded in index.html for better presentation! ## Features * It's lightweight * Responsive and extensible ## Getting started To install the dependency ``` npm install --save react-event-timeline ``` or if you use `yarn` ``` yarn add react-event-timeline ``` ## Usage The following snippet generates the timeline you see in the screenshot: ```jsx import {Timeline, TimelineEvent} from 'react-event-timeline' ReactDOM.render( <Timeline> <TimelineEvent title="John Doe sent a SMS" createdAt="2016-09-12 10:06 PM" icon={<i className="material-icons md-18">textsms</i>} > I received the payment for $543. Should be shipping the item within a couple of hours. </TimelineEvent> <TimelineEvent title="You sent an email to John Doe" createdAt="2016-09-11 09:06 AM" icon={<i className="material-icons md-18">email</i>} > Like we talked, you said that you would share the shipment details? This is an urgent order and so I am losing patience. Can you expedite the process and pls do share the details asap. Consider this a gentle reminder if you are on track already! </TimelineEvent> </Timeline>, document.getElementById('container') ); ``` Please refer [storybook](https://github.com/rcdexta/react-event-timeline/blob/master/stories/App.story.js) to check out code for all the examples in the `storybook` folder. ## API Documentation ### Timeline This is the wrapper component that creates the infinite vertical timeline | Name | Type | Description | | -------------- | ------ | ---------------------------------------- | | className | string | The css class name of timeline container| | style | object | Override inline styles of timeline container | | orientation | string | Display the timeline on `right` or `left`. Default: `left` | | lineColor | string | CSS color code to override the line color | | lineStyle | string | Override the appearance of line with custom css styling | ### TimelineEvent Each event in the timeline will be represented by the `TimelineEvent` component. There can be multiple repeating instances of this component inside `Timeline` wrapper | Name | Type | Description | | ------------ | ------ | ---------------------------------------- | | title | node | The title of the event. Can be string or any DOM element node(s) | | createdAt | node | The time at which the event occurred. Can be datetime string or any DOM element node(s) | | subtitle | node | If you prefer having the title at the top and some caption below, omit createdAt and specify title and subtitle | | icon | node | The icon to show as event lable. Can be a SVG or font icon | | iconStyle | object | Custom CSS styling for the icon | | bubbleStyle | object | Custom CSS styling for the bubble containing the icon | | buttons | node | Action buttons to display to the right of the event content | | contentStyle | node | Override content style | | container | string | Optional value `card` will render event as a Card | | style | object | Override style for the entire event container. Can be used to modify card appearance if container is selected as `card` | | titleStyle | object | Override style for the title content | | subtitleStyle | object | Override style for the subtitle content | | cardHeaderStyle | object | Override style for the card header if container is `card` | | collapsible | boolean | Make the timeline event collapse body content | | showContent | boolean | if `collapsible` is true, should content be shown by default. `false` is default value | ### TimelineBlip Use this component if your event footprint is too small and can be described in a single line | Name | Type | Description | | --------- | ------ | ---------------------------------------- | | title | node | The title of the event. Can be string or any DOM element node(s) | | icon | node | The icon to show as event label. Can be a SVG or font icon | | iconColor | string | CSS color code for icon | | iconStyle | object | Custom CSS styling for the icon | | style | object | Override style for the entire event container | Refer to Condensed Timeline in Storybook for examples of using this component ## Development This project recommends using [react-storybook](https://github.com/kadirahq/react-storybook) as a UI component development environment. Use the following scripts for your development workflow: 1. `npm run storybook`: Start developing by using storybook 2. `npm run lint` : Lint all js files 3. `npm run lintfix` : fix linting errors of all js files 4. `npm run build`: transpile all ES6 component files into ES5(commonjs) and put it in `dist` directory 5. `npm run docs`: create static build of storybook in `docs` directory that can be used for github pages The storybook artefacts can be found in `stories` folder. Run `npm run storybook` and you should see your code changes hot reloaded on the browser Also use [semantic-release](https://github.com/semantic-release/semantic-release) to automate release to npm. Use `npm run commit` to commit your changes and raise a PR. ## License MIT