diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 471e437..a2939c8 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -1,11 +1,19 @@
+
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
index 42b81ca..47e4827 100644
--- a/frontend/src/main.ts
+++ b/frontend/src/main.ts
@@ -5,8 +5,9 @@ import { Config } from 'primevue'
import Aura from '@primevue/themes/aura'
import 'primeicons/primeicons.css'
import { ru } from 'primelocale/js/ru.js'
+import { createPinia } from 'pinia'
-createApp(App).use(Config, {
+createApp(App).use(createPinia()).use(Config, {
theme: {
preset: Aura,
},
diff --git a/frontend/src/stores/error.store.ts b/frontend/src/stores/error.store.ts
new file mode 100644
index 0000000..1c13009
--- /dev/null
+++ b/frontend/src/stores/error.store.ts
@@ -0,0 +1,23 @@
+import { defineStore } from "pinia";
+
+export interface ErrorState {
+ show: boolean
+ message: string
+}
+
+export const useErrorStore = defineStore("error", {
+ state: (): ErrorState => ({
+ show: false,
+ message: ""
+ }),
+ actions: {
+ summon(message: string) {
+ this.show = true
+ this.message = message
+ },
+ close() {
+ this.show = false
+ this.message = ""
+ }
+ }
+})
\ No newline at end of file
diff --git a/frontend/src/table/DialogWindow.vue b/frontend/src/table/DialogWindow.vue
index f29c54d..e269aac 100644
--- a/frontend/src/table/DialogWindow.vue
+++ b/frontend/src/table/DialogWindow.vue
@@ -9,10 +9,13 @@ import { toDate, toTimestamp } from '../utils/date/converters.util';
import MultiSelect from '../components/selects/MultiSelect.vue';
import { alertWindow } from '../utils/js/alert.utils';
import type { Validate } from '../types/validate.type';
+import { useErrorStore } from '../stores/error.store';
const showCreate = defineModel('show')
const createItem = defineModel('item')
+const errorStore = useErrorStore()
+
const props = defineProps<{
scheme: Scheme,
getDefaults: () => Partial,
@@ -36,7 +39,7 @@ async function handleSave() {
const mode = props.updateMode ? 'update' : 'create';
const result = props.validate(createItem.value as T, mode);
if (result.status === 'error') {
- alertWindow(result.message);
+ errorStore.summon(result.message);
return;
}
try {
@@ -50,7 +53,7 @@ async function handleSave() {
await emits('onSave', createItem.value as T);
}
} catch (e) {
- alertWindow(e.message);
+ errorStore.summon(e.message)
return
}
props.load()
@@ -98,7 +101,7 @@ async function handleSave() {
-
+
\ No newline at end of file