mirror of
https://github.com/maciejpedzich/racemash.git
synced 2024-11-27 16:15:47 +01:00
Create snackbar component and composable
This commit is contained in:
parent
6f1ac8a99e
commit
3cd08d7daf
12
src/components/ui/Snackbar.vue
Normal file
12
src/components/ui/Snackbar.vue
Normal file
@ -0,0 +1,12 @@
|
||||
<script lang="ts" setup>
|
||||
import { useSnackbar } from '@/composables/useSnackbar';
|
||||
|
||||
const { visible, color, title, message } = useSnackbar();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<v-snackbar v-model="visible" :color="color" vertical>
|
||||
<h6 class="text-h6 mb-1">{{ title }}</h6>
|
||||
<p class="text-body-1">{{ message }}</p>
|
||||
</v-snackbar>
|
||||
</template>
|
22
src/composables/useSnackbar.ts
Normal file
22
src/composables/useSnackbar.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import { reactive, toRefs } from 'vue';
|
||||
|
||||
interface Snackbar {
|
||||
visible: boolean;
|
||||
color: '' | 'error' | 'success';
|
||||
title: string;
|
||||
message: string;
|
||||
}
|
||||
|
||||
const snackbar = reactive<Snackbar>({
|
||||
color: '',
|
||||
title: '',
|
||||
message: '',
|
||||
visible: false
|
||||
});
|
||||
|
||||
export function useSnackbar() {
|
||||
const showSnackbar = (options: Omit<Snackbar, 'visible'>) =>
|
||||
Object.assign(snackbar, { ...options, visible: true });
|
||||
|
||||
return { ...toRefs(snackbar), showSnackbar };
|
||||
}
|
Loading…
Reference in New Issue
Block a user