DEV Community

Ion Prodan
Ion Prodan

Posted on • Originally published at yon.fun on

2 1

JavaScript Countdown, is it that simple?

JavaScript Countdown, is it that simple?

Sometimes writing a simple countdown timer is not so simple as it looks. You must play with “new Date” almost as an expert, and not every time you will have the preferred result. Fortunately, there are plenty of countdown plugins for JavaScript on the npm registry, and now I want to show you one of them.

I believe the future of javascript is within Web Components so each plugin which is created nowadays should support the standards of Web Components. These being said, I have chosen this cool countdown time plugin, and yes, it’s made by me.

Before showing some great examples, I’m going to explain to you more specifically the installing methods and what properties and methods does he have. So let’s dive into it.

Install Countdown into your project

There are 2 simple ways:

  1. Through script tag in the head section - this is the best and easy way! Please be aware that the current version in 1.2.0, you should include the latest version at this time.
<script src='https://unpkg.com/@wanoo21/countdown-time@1.2.0/dist/countdown-time.js'></script>
Enter fullscreen mode Exit fullscreen mode
  1. Through npm package - This solution is best for actual frameworks, like Vue, Angular or React and not only, you can use it with Vanilla JS as well.
  • Run npm install @wanoo21/countdown-time
  • Import it import “@wanoo21/countdown-time”

Then include <countdown-time></countdown-time> element anywhere in your template, JSX, HTML, etc to show a countdown timer. Of course, you must add some properties in order to start it, about them we are talking in the next section.

P.S. It supports TypeScript , Thanks StencilJS for such a good opportunity!

Countdown Properties [Attributes]

It has five custom properties, let’s see what they are and what they represent:

  1. [autostart] - Whether start or not when the countdown is ready, if not, you must start it manually, default is false.

  2. [datetime] - DateTime to countdown, must be a valid date represented by string or number , ex: Date.now(), default is Date.now().

  3. [add] - Add more time to current DateTime separated by spaces, ex: add="1h 30m" - this will add 1 hour and 30 minutes to datetime time, by default this attribute is empty.

  1. [format] - Use this attribute to change the showing format, ex: “{m}min. and {s}sec.”, default is “{h}:{m}:{s}”. These placeholders are available:
    1. {w} - number of weeks.
    2. {d} - number of days.
    3. {h} - number of hours.
    4. {m} - number of minutes.
    5. {s} - number of seconds.

  1. [utc] - Using this attribute you will convert the datetime time to UTC format, default is false.

Countdown Methods

  • getCountDownTime() => Promise<ITimeObject> - Get a Promise of ITimeObject which has { weeks: string; days: string; hours: string; minutes: string; seconds: string; } properties.
  • restart() => Promise<void> - Restart countdown.
  • setAsExpired() => Promise<void> - Set as expired, this action will stop and call expire custom event.
  • start() => Promise<void> - Start countdown, autostart attribute is doing the same action.
  • stop() => Promise<void> - Stop countdown, this action will stop countdown, but won’t call expired custom event.

Countdown Events [CustomEvents]

There are two custom events, expire and ready:

  • expire - Is emitted when the countdown expires.
  • ready - Is emitted when the countdown is ready to start. Both of them return CustomEvent<void>. See some examples:

Available 'Slots'

There is an option to hide or show some content based on the current countdown’s state. Add any content inside <countdown-time></countdown-time> and add the following attributes:

  • [show-on-expired] - Show this element only when the countdown expired.
  • [hide-on-expired] - Show this element only when the countdown is running and hide it when it is expired.

Conclusion

Not bad, huh? With some simple steps, you can have a plain and powerful countdown timer in your site. Try to play with it and tell me what you think, is it compatible with your ideas?

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay