-
Notifications
You must be signed in to change notification settings - Fork 38
/
GlobalStore.ts
55 lines (47 loc) · 1.15 KB
/
GlobalStore.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { defineStore } from 'pinia';
import { ref, type Ref } from 'vue';
/** Global Store */
const useGlobalStore = defineStore('global', () => {
// State
/** Loading overlay */
const loading: Ref<boolean> = ref(true);
/** ProgressBar Percentage */
const progress: Ref<number | null> = ref(null);
/** SnackBar Text */
const message: Ref<string> = ref('');
// Actions
/**
* Show loading Overlay
*
* @param display - visibility
*/
function setLoading(display: boolean): void {
loading.value = display;
if (!display) {
// Reset Progress value
progress.value = null;
}
}
/**
* Update progress value
*
* @param v - progress value
*/
function setProgress(v: number | null = null): void {
// update progress value
progress.value = v;
// display loading overlay
loading.value = true;
}
/**
* Show snackbar message
*
* @param msg - snackbar message
*/
function setMessage(msg: string = ''): void {
// put snackbar text
message.value = msg;
}
return { loading, progress, message, setLoading, setProgress, setMessage };
});
export default useGlobalStore;