A customizable status notification system for Vue 3 with a progress bar and hover functionality.
- Clean, minimal status notifications
- Progress bar for auto-dismissing messages
- Hover to pause/resume the timer
- Expandable messages for longer content
- Multiple message types (info, success, warning, error)
- Comprehensive history tracking of all notifications and updates
- Fully customizable via CSS variables
# npm
npm install @calumk/vue-progress-status
# yarn
yarn add @calumk/vue-progress-status
# pnpm
pnpm add @calumk/vue-progress-status
# bun
bun install @calumk/vue-progress-status
// Show a notification
const id = progressStatus.push({
title: 'Processing',
message: 'Starting the operation...', // Preferred over 'text'
severity: 'info',
timeout: 5000
})
// Update the notification
progressStatus.update(id, {
title: 'Processing',
message: 'Operation in progress...',
severity: 'success'
})
// Cancel the notification
progressStatus.cancel(id)
Option | Type | Default | Description |
---|---|---|---|
title |
string | '' | The title of the notification |
message |
string | '' | The message content (preferred) |
text |
string | '' | The message content (deprecated, use message instead) |
severity |
'info' | 'success' | 'warning' | 'error' | 'info' | The severity level of the notification |
timeout |
number | 10000 | Duration in milliseconds before auto-dismiss (0 for no auto-dismiss) |
cancellable |
boolean | true | Whether the notification can be manually dismissed |
Method | Parameters | Return | Description |
---|---|---|---|
push |
options: MessageOptions |
number |
Shows a new notification and returns its ID |
update |
id: number, options: MessageOptions |
void |
Updates an existing notification |
cancel |
id: number |
void |
Cancels a specific notification |
cancelAll |
- | void |
Cancels all active notifications |
getMessages |
- | Message[] |
Returns all active notifications |
getMessageHistory |
- | MessageHistoryEntry[] |
Returns the history of all notifications |
clearHistory |
- | void |
Clears the notification history |
interface MessageOptions {
title?: string;
/** @deprecated Use message instead */
text?: string;
message?: string;
severity?: 'info' | 'success' | 'warning' | 'error';
timeout?: number;
cancellable?: boolean;
}
You can use the service to trigger notifications from anywhere in your application. There are two ways to use it:
<script setup>
import { progressStatusService } from '@calumk/vue-progress-status'
function showServiceNotification() {
const messageId = progressStatusService.push({
title: 'Service Notification',
text: 'This notification was triggered using the service',
severity: 'info',
timeout: 5000,
cancellable: true
})
// Update the message
progressStatusService.update(messageId, {
text: 'Updated message text'
})
// Cancel the message
progressStatusService.cancel(messageId)
}
</script>
<script setup>
import { progressStatusService } from '@calumk/vue-progress-status'
function showServiceNotification() {
const message = progressStatusService.push({
title: 'Service Notification',
text: 'This notification was triggered using the service',
severity: 'info',
timeout: 5000,
cancellable: true
})
// Update the message
message.update({
text: 'Updated message text'
})
// Cancel the message
message.cancel()
}
</script>
Don't forget to add the component somewhere in your app:
<template>
<ProgressStatus />
</template>
<script setup>
import ProgressStatus from '@calumk/vue-progress-status'
</script>
Prop | Type | Default | Description |
---|---|---|---|
debug | Boolean | false | Enables debug logging to console |
Option | Type | Default | Description |
---|---|---|---|
title | String | '' | Title of the notification |
text | String | '' | Message content |
severity | String | 'info' | Type of notification ('info', 'success', 'warning', 'error') |
timeout | Number | 10000 | Time in ms before auto-dismiss (0 for no timeout) |
cancellable | Boolean | true | Whether user can dismiss the notification |
Method | Parameters | Return | Description |
---|---|---|---|
push | options | messageId | Add a new notification |
update | (id, options) | void | Update an existing notification |
cancel | id | void | Dismiss a notification |
# Install dependencies
npm install
# Start development server
npm run dev
# Build the library
npm run build
# Build the GitHub Pages demo
npm run build:demo
# Preview the demo locally
npm run preview:demo
# Deploy to GitHub Pages
npm run deploy:demo
MIT License
Calum Knott
- Website: calumk.com
- GitHub: @calumk
- Twitter: @calumk
- Ko-fi: Buy me a coffee