Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/beyonk-group/svelte-notifications

Svelte toast notifications component that can be used in any JS application
https://github.com/beyonk-group/svelte-notifications

beyonk notifications svelte svelte-components toast toastr vanillajs

Last synced: about 1 month ago
JSON representation

Svelte toast notifications component that can be used in any JS application

Awesome Lists containing this project

README

        


Beyonk

## Svelte Notifications

[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com) [![Svelte v3](https://img.shields.io/badge/svelte-v3-blueviolet.svg)](https://svelte.dev)

Svelte Notifications component

* Uses SvelteKit 🎉
* v3 compatible
* Uses stores for completely hassle free operation
* Can persist across full page reloads!

## Demo

A [Demo of this component](https://svelte.dev/repl/dd506c546df84c1994a5ae9928ad23b1) is available.

Alternatively, check the project out from github and `npm run dev`.

## Usage

```bash
npm i -D @beyonk/svelte-notifications
```

```svelte

Show message

import { NotificationDisplay, notifier } from '@beyonk/svelte-notifications'

function someFunction () {
notifier.success('Notifications work!')
}

```

### Notification types

You can call multiple types of notification:

```js
const options = {
timeout: 3000, // milliseconds
persist: false, // automatic timeout (ignores above)
showProgess: true, // Show (or Hide) the progress bar
icon: null // Add svelte component to render an icon
}

notifier.show('danger', message, options)
notifier.danger(message, options),
notifier.warning(message, options),
notifier.info(message, options),
notifier.success(message, options)
```

### Persisting across apps

Your notifications can persist across multiple apps / page reloads, as long as they use this library. This is useful for a scenario where you show a notification and then redirect the browser to a different application, or trigger a full reload of the page.

This is completely automatic and uses session storage.

To ensure that notifications don't persist across apps where they should not, set the `sessionKey` attribute to something unique to each app.

```svelte

```

### Notification themes

You can customise the themes:

```svelte

Show message

import { NotificationDisplay, notifier } from '@beyonk/svelte-notifications'

let themes = { // These are the defaults
danger: '#bb2124',
success: '#22bb33',
warning: '#f0ad4e',
info: '#5bc0de',
default: '#aaaaaa' // relates to simply '.show()'
}

function someFunction () {
notifier.success('Notifications work!')
}

```

##### Custom types

```svelte

Show message

import { NotificationDisplay, notifier } from '@beyonk/svelte-notifications'

let themes = {
myColour: '#ff00bb'
}

function someFunction () {
notifier.send('myColour', 'Notifications work!')
}

```

#### Timeouts

You can set a default timeout:

```svelte

Show message

import { NotificationDisplay, notifier } from '@beyonk/svelte-notifications'

let timeout = 3000 // The default

function someFunction () {
notifier.success('Notifications work!')
}

```

##### Custom timeout:

You can set a timeout per message

```svelte

Show message

import { NotificationDisplay, notifier } from '@beyonk/svelte-notifications'

function someFunction () {
notifier.success('Notifications work!', { timeout: 5000 }) // built in theme
notifier.send('custom-theme', 'Notifications work!', { timeout: 5000 }) // custom theme
}

```

##### Show Progress:

You can show or hide the progress bar per message

```svelte

Show message

import { NotificationDisplay, notifier } from '@beyonk/svelte-notifications'

function someFunction () {
notifier.success('Notifications work!', { showProgress: false }) // built in theme
notifier.send('custom-theme', 'Notifications work!', { showProgress: true }) // custom theme
}

```

##### Persist

You can make a message persist and never timeout, having a close button that the user can click to remove it.

```svelte

Show message

import { NotificationDisplay, notifier } from '@beyonk/svelte-notifications'

function someFunction () {
notifier.success('Notifications work!', { persist: true }) // built in theme
notifier.send('custom-theme', 'Notifications work!', { persist: true }) // custom theme
}

```

##### Icons

You can include custom svelte components to render icons (or anything).

```svelte

Show message

import { NotificationDisplay, notifier } from '@beyonk/svelte-notifications'
impoer Icon from 'somewhere/Icon.svelte'

function someFunction () {
notifier.success('Notifications work!', { icon: Icon })
}

// Icon.svelte

```

## Credits

* Original code by [Antony Jones](https://github.com/antony)
* Idea for persistent notifications by [Henrique Borges](https://github.com/henriquehbr)
* Animation and performance improvements by [Jonathan Greenemeier](https://github.com/6eDesign).