npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vue-on-toast-without-memory-leak

v1.0.0

Published

A powerful, compact, Server Side Rendering supported Toast Notification component for Vue 2

Downloads

6

Readme

vue-on-toast

vue-on-toast An SSR-enabled, flexible, fully featured, bootstrap-themed toast notification library for Vue.

npm npm Build Status Coverage Status codebeat badge

vue-on-toast focuses on performance and size with the JavaScript weighing in at 6.37kb (2.25kb gzipped) and the CSS at 10.37kb.

Demo

A simple demo can be found at this plunker.

Getting Started

In keeping with Vue's progressive design philosophy, you can drop vue-on-toast onto an existing page or you can add it to a build system. Choose one of the approaches below based on your needs.

CDN Installation

If you are using Vue in a new or existing application without a build system and you would like to use vue-on-toast, you can add it from CDN and it will install itself automatically.

<link href="https://unpkg.com/vue-on-toast/dist/vue-on-toast.min.css" rel="stylesheet" type="text/css">
 
<script src="https://unpkg.com/vue/dist/vue.js"></script>
 
<script src="https://unpkg.com/vue-on-toast/dist/vue-on-toast.min.js"></script>

NPM Install

npm install vue-on-toast

In the root of your application, import and install vue-on-toast.

import Vue from 'vue'
import VueOnToast from 'vue-on-toast'
 
Vue.use(VueOnToast)

Import CSS or Stylus

@import 'node_modules/vue-on-toast/dist/vue-on-toast.styl'

or

@import 'node_modules/vue-on-toast/dist/vue-on-toast.css'

NOTE: Using the vue-on-toast css is not required. Although lightweight at 10.41kb minified, you can provide your own CSS to either further shrink the library size or to provide different functionality and feel.

Add Toast Container

vue-on-toast supports multiple toast containers, each allowing a unique configuration (see the Toast Config Options section).

At least one toast container component must be included in your application, preferably outside of your router.

<toast-container></toast-container>

Adding and Removing Toasts

Popping a toast in a component

Vue.use(VueOnToast) will add a $vueOnToast instance to the Vue prototype, exposing pop() and remove() methods.

Within your component, you can call this.$vueOnToast.pop(). The pop method takes accepts two different forms of parameters: inline parameters for type, title and body, and an object that allows for additional configuration.

this.$vueOnToast.pop('success', 'Toast Title', 'Popped from Vue instance')

OR

let toast = {}
this.$vueOnToast.pop(toast)

The following properties are exposed on the toast instance via the object parameter syntax and will override container-level configurations (see the Toast Config Options section).

| Property | Type | Default | Description | | --- | --- | --- | --- | | toastId | string | Automatically generated UUID | UUID specific to the toast instance. Cannot be overridden and is guaranteed to be unique across all containers. It is populated on the toast. | | toastContainerId | int | null | A numeric value that matches the target container to pop the toast on. If it is omitted, the toast will be popped on all available containers. | | type | string | none | If a type is not specified and the toast is added via the pop function, an error will be thrown. Options are: success, error, info, wait, warning. | | title | string | null | The title of the toast. | | body | string | null | The body of the toast. | | bodyOutputType | string | null | By default, the body will be rendered as a raw string. To render HTML, 'TrustedHtml' should be passed via this parameter. To render a component, 'Component' should be passed via this parameter and the body parameter should contain the name of the component to render. | | onShowCallback | function | null | An optional function to invoke after the toast has been added to the target container. The toast instance will be passed to the provided function as the only parameter. | | onHideCallback | function | null | An optional function to invoke after the toast has been removed from the target container. The toast instance will be passed to the provided function as the only parameter. | | showCloseButton | boolean | Inherited from config (false) | Determines if the close button should be shown on the toast. | | toastHtml | string | Inherited from config (×) | The HTML string that should be rendered if showCloseButton is true. | | clickHandler | function | null | An optional function that returns true/false. If provided and if toastConfig.tapToDismiss is true OR the toast close button was clicked, this function will be invoked, passing the toast instance and the isCloseButton flag (indicating if the click originated from the close button). If the function returns true, the toast will be dismissed, else the toast will persist. | | timeout | number | Inherited from config | The number of milliseconds to show the toast before it should be automatically dismissed. If set to 0, the toast will be considered "sticky" and will not automatically self-dismiss. |

Popping a toast outside of a Vue instance

If you need to pop a toast outside of a Vue instance (such as a Vuex store module), you can import the VueOnToast instance and access the ToastService directly:

import VueOnToast from 'vue-on-toast'

VueOnToast.ToastService.pop('info', 'Toast Title', 'Popped from service directly')

Remove Existing Toast

A remove function is exposed that accepts two optional parameters: toastId and toastContainerId.

These parameters can be used to clear toasts by specific id, by container id, by both, or by neither. If both parameters are omitted, all toasts in all containers will be removed.

Remove from inside Vue Instance

let toast = this.$vueOnToast.pop('success', 'title', 'body')
this.$vueOnToast.remove(toast.toastId, toast.toastContainerId)

Remove from outside Vue Instance

import VueOnToast from 'vue-on-toast'

let toast = VueOnToast.ToastService.pop('info', 'title', 'body')
VueOnToast.ToastService.remove(toast.toastId, toast.toastContainerId)

Toast Config Options

Each individual toast-container component instance offers a considerable degree of customization and flexibility via the toastConfig property.

<toast-container :toastConfig="customConfig"></toast-container>
export default {
    computed: {
        customConfig: function () {
            return { toastContainerId: 1 }
        }
    }
}

The following properties are exposed to the container via the toastConfig property:

| Property | Type | Default | Description | | --- | --- | --- | --- | | animation | string | "fade" | There are three different built-in transition effects that can be applied to a container: "fade", "ease-out-left", and "ease-out-right". Custom transitions can be created as well and should be passed to this parameter. | | bodyClass | string | "vot-body" | The class that is applied to the div that holds the body of the toast where the body parameter is applied. | | closeHtml | string | × | The html that should be rendered if showCloseButton is true. This property is automatically inherited by toasts. | | defaultTypeClass | string | "vot-info" | Fallback toast type when the toast is added to the container. | | typeClasses | object | See Description | An object mapping each toast type to its css class. The following are the default options: error: "vot-error" info: "vot-info" wait: "vot-wait" success: "vot-success" warning: "vot-warning" | | iconClasses | object | See Description | An object mapping each icon per toast type to its css class. The following are the default options: error: "vot-icon-error" info: "vot-icon-info" wait: "vot-icon-wait" success: "vot-icon-success" warning: "vot-icon-warning" | | mouseoverTimerStop | boolean | false | If true, the dismiss timer is paused while the toast is moused over. | | newestOnTop | boolean | true | If true, the toast is pushed to the top of the container list. If false, the toast is added to the bottom of the container list. | | positionClass | string | "vot-top-right" | The container can be positioned in nine distinct positions provided by the library, and can be further customized via this parameter. "vot-top-full-width", "vot-bottom-full-width", "vot-top-left", "vot-top-center", "vot-top-right", "vot-bottom-left", "vot-bottom-center", "vot-bottom-right", "vot-center" | | preventDuplicates | boolean | false | If true, the toast id is checked against all other toasts currently displayed by the container. If there is no match, the body is compared to the bodies of all toasts currently displayed by the container. If there is a match, the new toast is not added. | | tapToDismiss | boolean | true | If true, tapping (or clicking) the toast will automatically dismiss it. If false, taps (or clicks) have no effect on the toast. | | timeout | number OR object | 5000 | By default, toasts have a timeout setting of 5000, meaning that they are removed after 5000 milliseconds. If the timeout is set to anything other than a number greater than 0, the toast will be considered "sticky" and will not automatically dismiss. The timeout can be configured either globally for all toast types as a number, or per toast type as an object (timeout: {error: 1000}}). | | titleClass | string | "vot-title" | The class that is applied to the div that holds the title of the toast where the title parameter is applied. | | toastContainerId | number | null | A unique identifier to enable container-specific adds and removals. | | showCloseButton | boolean OR object | false | By default, the close button is not shown for any toast type. This can be overridden for all toast types by providing false, or it can be overridden per toast type as an object (showCloseButton: {error: true}}). |

Author

Stabzs

Copyright

Copyright © 2017 Stabzs.

Licence

This project is licensed under the MIT license. See the LICENSE file for more info.