39 lines
876 B
TypeScript
39 lines
876 B
TypeScript
/**
|
|
* Simple snackbar/toast notification composable
|
|
* Uses Vuetify's snackbar component
|
|
*/
|
|
import { ref } from 'vue'
|
|
|
|
export interface SnackbarOptions {
|
|
message: string
|
|
color?: 'success' | 'error' | 'warning' | 'info' | string
|
|
timeout?: number
|
|
}
|
|
|
|
const snackbarVisible = ref(false)
|
|
const snackbarMessage = ref('')
|
|
const snackbarColor = ref<string>('info')
|
|
const snackbarTimeout = ref(3000)
|
|
|
|
export function useSnackbar() {
|
|
const showSnackbar = (options: SnackbarOptions) => {
|
|
snackbarMessage.value = options.message
|
|
snackbarColor.value = options.color || 'info'
|
|
snackbarTimeout.value = options.timeout || 3000
|
|
snackbarVisible.value = true
|
|
}
|
|
|
|
const hideSnackbar = () => {
|
|
snackbarVisible.value = false
|
|
}
|
|
|
|
return {
|
|
snackbarVisible,
|
|
snackbarMessage,
|
|
snackbarColor,
|
|
snackbarTimeout,
|
|
showSnackbar,
|
|
hideSnackbar,
|
|
}
|
|
}
|