Countdown

React Bootstrap 5 Countdown plugin

Countdown plugin built with Bootstrap 5, React 18 and Material Design 2.0. Examples of timers, counters, stopwatch, number counts, counter box & more.

Note: Read the API tab to find all available options and advanced customization


Basic example

Create default Countdown by adding countdown to a <MDBCountdown> component with a Countdown expiration date value. Add <MDBCountdownUnit> components and an property type with time unit to a child element to indicate which time units should be displayed inside Countdown.

import React from 'react';
import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

export default function App() {
  return (
    <MDBCountdown countdown='31 December 2022 23:59:59'>
      <MDBCountdownUnit />
      <MDBCountdownUnit type='hours' />
      <MDBCountdownUnit type='minutes' />
      <MDBCountdownUnit type='seconds' />
    </MDBCountdown>
  );
}

Interval

Create interval that will reset timer every time initial countdown ends.

import React, { useState } from 'react';
import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

export default function App() {
  const [defaultDate, setDefaultDate] = useState(new Date('5 November 2022 12:35'));

  const handleInterval = (date: any) => {
    const newDate = new Date(date.getTime() + 60000);
    setDefaultDate(newDate);
  };

  return (
    <MDBCountdown countdown={defaultDate} onEnd={() => handleInterval(defaultDate)}>
      <MDBCountdownUnit />
      <MDBCountdownUnit type='hours' />
      <MDBCountdownUnit type='minutes' />
      <MDBCountdownUnit type='seconds' />
    </MDBCountdown>
  );
}

Label

Create label for each time unit by adding label property with a text of your choice.

import React from 'react';
import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

export default function App() {
  return (
    <MDBCountdown countdown='31 December 2022 23:59:59'>
      <MDBCountdownUnit label='days' />
      <MDBCountdownUnit label='hours' type='hours' />
      <MDBCountdownUnit label='minutes' type='minutes' />
      <MDBCountdownUnit label='seconds' type='seconds' />
    </MDBCountdown>
  );
}

Separator

Add separator to a <MDBCountdown> component to insert separator between each time unit.

Separator won't be visible for Countdown column position

import React from 'react';
import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

export default function App() {
  return (
    <MDBCountdown separator=':' countdown='31 December 2022 23:59:59'>
      <MDBCountdownUnit />
      <MDBCountdownUnit type='hours' />
      <MDBCountdownUnit type='minutes' />
      <MDBCountdownUnit type='seconds' />
    </MDBCountdown>
  );
}

Styling

Countdown position

Change default horizontal position of Countdown with position="vertical" property.

import React from 'react';
import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

export default function App() {
  return (
    <MDBCountdown position='vertical' countdown='31 December 2022 23:59:59'>
      <MDBCountdownUnit />
      <MDBCountdownUnit type='hours' />
      <MDBCountdownUnit type='minutes' />
      <MDBCountdownUnit type='seconds' />
    </MDBCountdown>
  );
}

Label position

Change default vertical position of Countdown label with labelPosition="horizontal"

import React from 'react';
import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

export default function App() {
  return (
    <MDBCountdown labelPosition='horizontal' countdown='31 December 2022 23:59:59'>
      <MDBCountdownUnit label='d' />
      <MDBCountdownUnit label='h' type='hours' />
      <MDBCountdownUnit label='m' type='minutes' />
      <MDBCountdownUnit label='s' type='seconds' />
    </MDBCountdown>
  );
}

Text size

Change default time unit text size (4rem) with textSize property.

import React from 'react';
import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

export default function App() {
  return (
    <MDBCountdown textSize='6rem' countdown='31 December 2022 23:59:59'>
      <MDBCountdownUnit label='days' />
      <MDBCountdownUnit label='hours' type='hours' />
      <MDBCountdownUnit label='minutes' type='minutes' />
      <MDBCountdownUnit label='seconds' type='seconds' />
    </MDBCountdown>
  );
}

Custom classes

Add custom classes to time unit value and label with textClasses and labelClasses properties.

import React from 'react';
import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

export default function App() {
  return (
    <MDBCountdown
      textClasses='badge bg-primary'
      labelClasses='text-light bg-dark'
      countdown='31 December 2022 23:59:59'
    >
      <MDBCountdownUnit label='days' />
      <MDBCountdownUnit label='hours' type='hours' />
      <MDBCountdownUnit label='minutes' type='minutes' />
      <MDBCountdownUnit label='seconds' type='seconds' />
    </MDBCountdown>
  );
}

Countdown - API


Import

import { MDBCountdown, MDBCountdownUnit } from 'mdb-react-countdown';

Properties

MDBCountdown

Name Type Default Description Example
className string '' Add custom class to MDBCountdown <MDBCountdown countdown="31 December 2022 23:59:59" className="class" />
separator string '' Attached to container element defines separator used between each time unit value. Separator is not visible in vertical position of the Countdown element. <MDBCountdown countdown="31 December 2022 23:59:59" separator=':' />
position 'horizontal' | 'vertical' 'horizontal' Positions Countdown element horizontally or vertically. <MDBCountdown countdown="31 December 2022 23:59:59" position='vertical' />
labelPosition 'horizontal' | 'vertical' 'vertical' Positions all labels at the bottom or next to the corresponding time unit value. <MDBCountdown countdown="31 December 2022 23:59:59" labelPosition='vertical' />
textSize string '' Sets size of time unit text element. Text for labels in vertical label position is four times smaller than time unit text. <MDBCountdown countdown="31 December 2022 23:59:59" textSize='6rem' />
textClasses string '' Adds custom styles to all time unit text elements. <MDBCountdown countdown="31 December 2022 23:59:59" textClasses="bg-primary badge" />
labelClasses string '' Adds custom styles to all labels. <MDBCountdown countdown="31 December 2022 23:59:59" labelClasses='text-white' />
countdown string | Date '' Takes the value of the date to which the timer will be counting. <MDBCountdown countdown="31 December 2022 23:59:59" />
countdownRef React.MutableObjectRef<any> A reference to the MDBCountdown component. <MDBCountdown countdownRef={someRef} />

MDBCountdownUnit

Name Type Default Description Example
className string '' Adds a custom class to the MDBCountdownUnit component. <MDBCountdownUnit className='bg-secondary' />
label string '' Defines a label text for the MDBCountdownUnit component. <MDBCountdownUnit label='Days' />
type 'days' | 'hours' | 'minutes' | 'seconds' 'days' Defines the type of the counter element. <MDBCountdownUnit type='seconds' />
ref React.Ref<any> A reference to the MDBCountdownUnit component. <MDBCountdownUnit ref={someRef} />

Events

MDBCountdown

Name Type Description
onStart () => void Fires when the counting starts
onEnd () => void Fires when the counting ends
onError (error: string) => void Fires when the problem with countdown property occurs. You can get the invalid value of it with error parameter.