You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP β†’
Socket
Book a DemoInstallSign in
Socket

vue-dk-toast

Package Overview
Dependencies
Maintainers
1
Versions
84
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-dk-toast

Lightweight toast notification plugin for Vue 3

2.1.2
Source
npmnpm
Version published
Weekly downloads
443
5.48%
Maintainers
1
Weekly downloads
Β 
Created
Source

vue-dk-toast

Lightweight toast-notification plugin for Vue 3 🍞

npm vue

  • Lightweight ☁️
  • Customizable 🧰
  • Easy to use πŸ₯·
  • Mobile-friendly πŸ“±
  • Built-in TypeScript support πŸ”’
  • A11y compliant πŸ§‘β€πŸ¦―

Demo
CodePen Demo

      β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’
    β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
  β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
  β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
    β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
    β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
    β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’
    β–ˆβ–ˆβ–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’β–ˆβ–ˆ
  β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’  β–ˆβ–ˆ
β–ˆβ–ˆ  β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’  β–ˆβ–ˆ
β–ˆβ–ˆ  β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’  β–ˆβ–ˆ
β–ˆβ–ˆ  β–’β–’β–’β–’β–’β–’β–‘β–‘β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’β–‘β–‘β–’β–’  β–ˆβ–ˆ
β–ˆβ–ˆ  β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’  β–ˆβ–ˆ
β–ˆβ–ˆ  β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’  β–ˆβ–ˆ
β–ˆβ–ˆ  β–’β–’β–’β–’β–’β–’β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–’β–’  β–ˆβ–ˆ
    β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’
            β–ˆβ–ˆ                β–ˆβ–ˆ
            β–ˆβ–ˆ                β–ˆβ–ˆ
            β–ˆβ–ˆ                β–ˆβ–ˆ
            β–ˆβ–ˆ                β–ˆβ–ˆ
            β–ˆβ–ˆβ–ˆβ–ˆ              β–ˆβ–ˆβ–ˆβ–ˆ

Install

CLI

npm i vue-dk-toast

or...

yarn add vue-dk-toast

CDN

<script src="https://unpkg.com/vue-dk-toast"></script>

It's recommended you use a specific version number to guard against breaking changes and load the script faster:

<script src="https://unpkg.com/vue-dk-toast@2.0.6"></script>

Import

CLI

import { createApp } from 'vue'
import App from './App.vue'
import DKToast from 'vue-dk-toast'

createApp(App).use(DKToast).mount('#app')

CDN

const app = Vue.createApp({})

app.use(DKToast)
app.mount('#app')

Usage

Options API:

this.$toast('Simple!')

or...

@click="$toast('Simple!')"

Composition API:

<script>
import { inject } from 'vue'

export default {
    setup() {
        const toast = inject('$toast')

        toast('Simple!')
    }
}
</script>

Options

OptionTypeDefaultDescription
classStringNoneCustom CSS class to be added to every toast (alongside .dk__toast).
disableClickBooleanfalseDisable toast removal on click.
durationNumber5000Milliseconds before hiding toast.
maxNumberNoneMax number of toasts allowed on the page at any one time. Removes oldest existing toast first.
positionXStringrightPosition of container on the X axis - 'left', 'right' or 'center'.
positionYStringbottomPosition of container on the Y axis - 'top', or 'bottom'.
stylesObjectNoneCSS key/value pairs - supports vendor prefixes.

EXAMPLE:

createApp(App)
    .use(DKToast, {
        duration: 5000,
        positionY: 'bottom', // 'top' or 'bottom'
        positionX: 'right', // 'left', 'right' or 'center'
        disableClick: true,
        styles: {
            color: '#000',
            backgroundColor: '#fff'
            // Vendor prefixes also supported
        },
        class: 'custom-class', // Added to each toast,
        max: 10
    })
    .mount('#app')

Local Options

OptionTypeDefaultDescription
classStringNoneCSS class to be added to this toast only (alongside .dk__toast and any globally set custom-class).
disableClickBooleanfalseDisable individual toast removal on click.
durationNumber5000Milliseconds before hiding toast. Overrides global duration.
link{ href: string, targetBlank?: boolean }noneTurns the toast into an <a> element which has a href of the one provided and optional target="_blank".
positionXStringrightPosition of container on the X axis - 'left', 'right' or 'center'. Overrides global positionX.
positionYStringbottomPosition of container on the Y axis - 'top', or 'bottom'. Overrides global positionY.
slotLeftStringNoneAny valid HTML as a string. Displays left of text.
slotRightStringNoneAny valid HTML as a string. Displays right of text.
stylesObjectNoneCSS key/value pairs. Supports vendor prefixes.
typeStringNoneDefault helper class - success, error or passive.

EXAMPLE:

this.$toast('Simple!', {
    duration: 1000,
    styles: {
        borderRadius: '25px'
    },
    link: {
        href: 'https://vue-dk-toast.netlify.app/',
        targetBlank: true
    },
    // Any valid HTML, intended for icons
    slotLeft: '<i class="fa fa-user"></i>', // Add icon to left
    slotRight: '<i class="fa fa-thumbs-up"></i>', // Add icon to right
    class: 'local-class', // Added to this toast only
    type: 'success', // Default classes: 'success', 'error' and 'passive'
    positionX: 'center',
    positionY: 'top',
    disableClick: true
})

TypeScript Support

vue-dk-toast comes with it's own built-in types for most cases, the exception being with the Composition API:

<script lang="ts">
import { defineComponent, inject } from 'vue'
import type { Toast } from 'vue-dk-toast'

export default defineComponent({
    setup() {
        const toast = inject<Toast>('$toast')

        if (toast) toast('Simple!')
    }
})
</script>

Security

For slotRight and slotLeft to work, it uses innerHTML to set the content. innerHTML is not secure as it adds the possibility for XSS attacks. If you set any user-inputted tags with these options, make sure you sanitise the string beforehand, else, adding something like <img src=x onerror="alert("XSS Attack!")" /> would run. You can use a library like DOMPurify to handle this for you.

Contributions welcome!

Keywords

vue

FAQs

Package last updated on 19 Feb 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts