react-timeframe

Countdown timer for React and React-Native

Usage no npm install needed!

<script type="module">
  import reactTimeframe from 'https://cdn.skypack.dev/react-timeframe';
</script>

README

react-timeframe

React-Timeframe is a React Component for use with both React && React Native.

Installing

yarn add react-timeframe

OR

npm install react-timeframe --save

Basic Usage

import Timeframe from 'react-timeframe';
<Timeframe
  targetDate={1540349389582}
  />
<Timeframe
  targetDate={"2017-05-12T08:00:00Z"}
  />

Props

Prop Type Default Required Description
targetDate String/Number n/a True A date string ("2017-05-12T08:00:00Z") or timestamp (1540349389582)
stopAfterCountdown Boolean false False Whether the timer will stop once the target date is reached
urgency Number 60000 False Number of seconds before target reached that the state is set to urgent
dateFormat String 'MMMM Do YYYY' False What format to display date in. from date-fns/format Link
distanceOptions Object { includeSeconds: true, addSuffix: true } False Display options for distanceInWordsToNow function from date-fns Link
onRender Function onRender False If < 2 days ago : Returns string with distance between the given date and now in words. If > 2 days ago returns string formatted to the dateFormat prop.
onUpdate Function onRender False

Advanced Usage

Different Render value for completed timeframes.

<Timeframe
  onRender={function(state, props, self) {
    let val;

    if (state.complete) {
      val = 'Completed';
    } else {
      val = yourOwnCustomFunctionToHandleDisplayOfRemainingTime(state.timeRemaining)
    }

    return val;
  }}
  />

Urgency state property

A threshold prop (in milliseconds) can be used that when crossed will set a state of urgent: true This can be used to add a different classname, or ReactNative styles, or whatever else you feel like. Default: 60000

<Timeframe
    urgency={30000}

    onRender={function() {
        if (this.state.urgent) { console.log('urgent') }
    }}
 />

Dependencies

  • React
  • prop-types
  • date-fns
  • react-mixin
  • react-timer-mixin

License

This project is licensed under the MIT License - see the LICENSE.md file for details