Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rallisf1/svelte-countdown

A simple css-agnostic countdown component for Svelte 3 with just 1 dependency!
https://github.com/rallisf1/svelte-countdown

Last synced: 1 day ago
JSON representation

A simple css-agnostic countdown component for Svelte 3 with just 1 dependency!

Awesome Lists containing this project

README

        

# svelte-countdown

A simple css-agnostic countdown component for Svelte 3 with just 1 dependency!

## Installation 🔧

First you need a [Svelte](https://svelte.dev) 3 project. Its starter template lives at https://github.com/sveltejs/template.

Then install the component by running the following command in your project's directory:

```sh
npm install svelte-countdown
```

## Features ❤
* Only 1 dependency! [dayjs](https://day.js.org/)
* Support for timezones & DST
* _done_ key to simplify what to show once the countdown is finished

### Why not momentjs ?
dayjs is a modern alternative to momentjs with compatible Api. The main difference is that dayjs is tree shakeable which leaves a really tiny footprint to your bundle (aka loads faster). If you're still using momentjs in your project I'd suggest you take a look at [dayjs](https://day.js.org/). In most cases if you just switch packages and `import {dayjs as moment}` you won't have to change any of your code.

## How to use 🚀

1. First import the component on your svelte page's script section.

```js
import Countdown from 'svelte-countdown/src/index.js'
```

2. Call the component where you want it to be placed e.g.:

```html


{#if remaining.done === false}
{remaining.years} years
{remaining.months} months
{remaining.weeks} weeks
{remaining.days} days
{remaining.hours} hours
{remaining.minutes} minutes
{remaining.seconds} seconds
{:else}

The time has come!


{/if}

```

In the slot space between `` you can write your template however you like. Use the keys as per the example above.

_I recommend not to change the "remaining" object name. If you need to you can do it like so:_
```
let:remaining={yourvariable}
```

### Configuration Options

| Name | Default | Required | Description |
| ---- | ------- | -------- | ----------- |
| from | none | Yes | Effect duration in milliseconds |
| dateFormat | YYYY-MM-DD H:m:s | No | See https://day.js.org/docs/en/parse/string-format |
| zone | none | No | Use canonical timezones from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones |

## The Cons ❌
* No callback, I suppose the _done_ key is enough. Will update upon request.
* No milliseconds counting. Will update upon request.
* Tests - It's pretty straight forward but feel free to contribute.
* No Demo Page - Will do.

## Contribution 🖇️

Feel free to fork. If you find a bug or got something great to add make a pull request!

## Authors ✒️

* ** John Rallis ** - * Initial Work * - [rallisf1](https://github.com/rallisf1)

You can also look at the list of all the [contributors](https://github.com/rallisf1/svelte-countdown/contributors) who have participated in this project.

## License 📄

This project is free to use, edit & distribute under the MIT License.

## Expressions of Gratitude 🎁

* Tell others about this project 📢
* Buy me a beer 🍺 or coffee ☕ | ₿ [Crypto](https://freewallet.org/id/rallisf1/) |💰 [Cash](https://www.paypal.me/rallisf1)
* Publicly thanks 🤓

---
⌨️ with ❤️ by [rallisf1](https://github.com/rallisf1) 😊