From 1f8b4267ee49f5a39f475d8ece3e6fae96ed68f2 Mon Sep 17 00:00:00 2001 From: khj0414 Date: Fri, 10 Jan 2025 15:10:28 +0900 Subject: [PATCH] =?UTF-8?q?=ED=86=A0=EC=8A=A4=ED=8A=B8=EB=AA=A8=EB=8B=AC?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 2 + src/components/modal/ToastModal.vue | 58 +++++++++++++++++++++++++++++ src/main.js | 3 +- src/stores/toastStore.js | 28 ++++++++++++++ 4 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 src/components/modal/ToastModal.vue create mode 100644 src/stores/toastStore.js diff --git a/src/App.vue b/src/App.vue index 20d70e5..04bd0bd 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,6 +2,7 @@ @@ -10,6 +11,7 @@ import { computed } from 'vue'; import { useRoute } from 'vue-router'; import NormalLayout from './layouts/NormalLayout.vue'; import NoLayout from './layouts/NoLayout.vue'; +import ToastModal from '@c/modal/ToastModal.vue'; const route = useRoute(); diff --git a/src/components/modal/ToastModal.vue b/src/components/modal/ToastModal.vue new file mode 100644 index 0000000..b63c13f --- /dev/null +++ b/src/components/modal/ToastModal.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/main.js b/src/main.js index 14f4f3b..12ed27d 100644 --- a/src/main.js +++ b/src/main.js @@ -4,6 +4,7 @@ import piniaPersist from 'pinia-plugin-persist' import App from './App.vue' import router from '@/router' import dayjs from '@p/dayjs' +import ToastModal from '@c/modal/ToastModal.vue'; const pinia = createPinia() pinia.use(piniaPersist) @@ -12,9 +13,9 @@ const app = createApp(App) app.use(router) .use(pinia) .use(dayjs) + .component('ToastModal',ToastModal) .mount('#app') - if (import.meta.env.MODE === "prod") { const console = window.console || {}; console.log = function no_console() { }; // console log 막기 diff --git a/src/stores/toastStore.js b/src/stores/toastStore.js new file mode 100644 index 0000000..8822951 --- /dev/null +++ b/src/stores/toastStore.js @@ -0,0 +1,28 @@ +import { defineStore } from 'pinia'; + +export const useToastStore = defineStore('toastStore', { + state: () => ({ + toastModal: false, + toastMsg: '', + time: 2000, + toastType: 'success', // 'success' 또는 'error' + }), + actions: { + onToast(msg = '', time = 2000, type = 'success') { + this.toastModal = true; + this.toastMsg = msg; + this.time = time; + this.toastType = type; + + // 시간이 지난 후 토스트 숨기기 + setTimeout(() => { + this.offToast(); + }, this.time); + }, + offToast() { + this.toastModal = false; + this.toastMsg = ''; + this.toastType = 'success'; // 기본 상태로 초기화 + }, + }, +});