diff --git a/ui/src/components/Snackbar/SnackbarNew.vue b/ui/src/components/Snackbar/SnackbarNew.vue index add6914e8e0..6d9f7e64c6c 100644 --- a/ui/src/components/Snackbar/SnackbarNew.vue +++ b/ui/src/components/Snackbar/SnackbarNew.vue @@ -3,27 +3,20 @@ v-model="show" location="top" :timeout="4000" - :color="type" - ransition="slide-x-transition" + :color="color" + transition="slide-x-transition" > - {{ message }} +

{{ message }}

diff --git a/ui/src/helpers/snackbar.ts b/ui/src/helpers/snackbar.ts index 8426669e557..4d594e53762 100644 --- a/ui/src/helpers/snackbar.ts +++ b/ui/src/helpers/snackbar.ts @@ -1,8 +1,6 @@ import { inject } from "vue"; -import { PluginInterface, InjectionKey } from "@/plugins/snackbar"; +import { InjectionKey, type ISnackbarPlugin } from "@/plugins/snackbar"; -function useSnackbar(): PluginInterface { - return inject(InjectionKey) as PluginInterface; -} +const useSnackbar = (): ISnackbarPlugin => inject(InjectionKey) as ISnackbarPlugin; export default useSnackbar; diff --git a/ui/src/layouts/AppLayout.vue b/ui/src/layouts/AppLayout.vue index 56ad74d04c9..7b04a336047 100644 --- a/ui/src/layouts/AppLayout.vue +++ b/ui/src/layouts/AppLayout.vue @@ -118,6 +118,7 @@ + @@ -164,6 +165,7 @@ import Namespace from "@/components/Namespace/Namespace.vue"; import AppBar from "../components/AppBar/AppBar.vue"; import QuickConnection from "../components/QuickConnection/QuickConnection.vue"; import NamespaceAdd from "@/components/Namespace/NamespaceAdd.vue"; +import SnackbarNew from "@/components/Snackbar/SnackbarNew.vue"; import Snackbar from "@/components/Snackbar/Snackbar.vue"; const router = useRouter(); diff --git a/ui/src/plugins/snackbar.ts b/ui/src/plugins/snackbar.ts index fa5fadf4725..b2c9c372ab0 100644 --- a/ui/src/plugins/snackbar.ts +++ b/ui/src/plugins/snackbar.ts @@ -1,35 +1,56 @@ -import { App, Plugin } from "vue"; +import { App, Plugin, reactive } from "vue"; -const InjectionKey = "snackbar"; +const InjectionKey = Symbol("snackbar"); -interface PluginInterface { - showInfo(message: string); - showSuccess(message: string); - showWarning(message: string); - showError(message: string); +type SnackbarType = "success" | "error" | "info" | "warning"; + +interface SnackbarState { + message: string; + type: SnackbarType; + show: boolean; +} + +interface ISnackbarPlugin { + showSuccess: (msg: string) => void; + showError: (msg: string) => void; + showInfo: (msg: string) => void; + showWarning: (msg: string) => void; + getMessage: () => string; + getType: () => SnackbarType; + getShow: () => boolean; } +const state = reactive({ + message: "", + type: "info", + show: false, +}); + +const showSnackbar = (type: SnackbarType, message: string) => { + state.message = message; + state.type = type; + state.show = true; + + setTimeout(() => { + state.show = false; + }, 4000); +}; + +const plugin: ISnackbarPlugin = { + showSuccess: (msg: string) => showSnackbar("success", msg), + showError: (msg: string) => showSnackbar("error", msg), + showInfo: (msg: string) => showSnackbar("info", msg), + showWarning: (msg: string) => showSnackbar("warning", msg), + getMessage: () => state.message, + getType: () => state.type, + getShow: () => state.show, +}; + const SnackbarPlugin: Plugin = { install(app: App) { - const store = app.config.globalProperties.$store; - - const plugin = { - showInfo(message: string) { - store.commit("snackbar/showMessage", { type: "info", message }); - }, - showSuccess(message: string) { - store.commit("snackbar/showMessage", { type: "success", message }); - }, - showWarning(message: string) { - store.commit("snackbar/showMessage", { type: "warning", message }); - }, - showError(message: string) { - store.commit("snackbar/showMessage", { type: "error", message }); - }, - } as PluginInterface; - app.provide(InjectionKey, plugin); }, }; -export { InjectionKey, type PluginInterface, SnackbarPlugin }; +export { SnackbarPlugin, InjectionKey, plugin }; +export type { SnackbarState, ISnackbarPlugin }; diff --git a/ui/src/store/modules/snackbar.ts b/ui/src/store/modules/snackbar.ts index c9d688e86a0..6d1112ac3fd 100755 --- a/ui/src/store/modules/snackbar.ts +++ b/ui/src/store/modules/snackbar.ts @@ -47,19 +47,6 @@ export const snackbar: Module = { state.snackbarSuccess = true; }, - setSnackbarNoContent: (state, data) => { - state.snackbarMessageAndContentType = data; - state.snackbarSuccess = true; - }, - - setSnackbarSuccessDefault: (state) => { - state.snackbarMessageAndContentType = { - typeMessage: "default", - typeContent: "", - }; - state.snackbarSuccess = true; - }, - unsetSnackbarSuccess: (state) => { state.snackbarSuccess = false; }, @@ -82,11 +69,6 @@ export const snackbar: Module = { state.snackbarError = true; }, - setSnackbarErrorLicense: (state, data) => { - state.snackbarMessageAndContentType = data; - state.snackbarError = true; - }, - unsetSnackbarError: (state) => { state.snackbarError = false; }, @@ -99,11 +81,6 @@ export const snackbar: Module = { state.snackbarCopy = true; }, - setSnackbarErrorIncorrect: (state, data) => { - state.snackbarMessageAndContentType = data; - state.snackbarError = true; - }, - unsetSnackbarCopy: (state) => { state.snackbarCopy = false; }, @@ -118,10 +95,6 @@ export const snackbar: Module = { commit("setSnackbarSuccessAction", data); }, - showSnackbarSuccessDefault: ({ commit }) => { - commit("setSnackbarSuccessDefault"); - }, - unsetShowStatusSnackbarSuccess: ({ commit }) => { commit("unsetSnackbarSuccess"); }, @@ -142,14 +115,6 @@ export const snackbar: Module = { commit("setSnackbarErrorLoadingOrAction", data); }, - showSnackbarNoContent: ({ commit }) => { - const data = { - typeMessage: "no-content", - typeContent: "", - }; - commit("setSnackbarNoContent", data); - }, - showSnackbarErrorAction: ({ commit }, value) => { const data = { typeMessage: "action", @@ -158,14 +123,6 @@ export const snackbar: Module = { commit("setSnackbarErrorLoadingOrAction", data); }, - showSnackbarErrorLicense: ({ commit }, value) => { - const data = { - typeMessage: "licenseRequired", - typeContent: value, - }; - commit("setSnackbarErrorLicense", data); - }, - showSnackbarErrorDefault: ({ commit }) => { commit("setSnackbarErrorDefault"); }, @@ -181,13 +138,5 @@ export const snackbar: Module = { unsetShowStatusSnackbarCopy: ({ commit }) => { commit("unsetSnackbarCopy"); }, - - showSnackbarErrorIncorrect: (context, value) => { - const data = { - typeMessage: "incorrect", - typeContent: value, - }; - context.commit("setSnackbarErrorIncorrect", data); - }, }, }; diff --git a/ui/tests/layouts/__snapshots__/AppLayout.spec.ts.snap b/ui/tests/layouts/__snapshots__/AppLayout.spec.ts.snap index d9ba85eca06..697cb4ee0c0 100644 --- a/ui/tests/layouts/__snapshots__/AppLayout.spec.ts.snap +++ b/ui/tests/layouts/__snapshots__/AppLayout.spec.ts.snap @@ -246,6 +246,8 @@ exports[`App Layout Component > Renders the component 1`] = ` + +