From 0e6676a5afee712490bd891baf69b3451ea03cce Mon Sep 17 00:00:00 2001 From: zyronon Date: Thu, 21 Sep 2023 18:03:56 +0800 Subject: [PATCH] feat(modal): update modal --- components.d.ts | 1 + src/App.vue | 15 ++ src/components/Modal/Modal.vue | 166 +++++++++++++------- src/components/Practice/AddArticle.vue | 21 ++- src/components/Practice/Practice.vue | 2 +- src/components/Practice/Statistics.vue | 6 +- src/components/Toolbar/DictModal.vue | 9 +- src/components/Toolbar/FeedbackModal.vue | 17 +- src/components/Toolbar/SettingModal.vue | 18 +-- src/components/Toolbar/Toolbar.vue | 8 +- src/components/Toolbar/TranslateSetting.vue | 5 - src/hooks/event.ts | 36 ++++- src/stores/runtime.ts | 14 +- 13 files changed, 199 insertions(+), 119 deletions(-) diff --git a/components.d.ts b/components.d.ts index 36a5f7e3..d8d439b6 100644 --- a/components.d.ts +++ b/components.d.ts @@ -32,6 +32,7 @@ declare module 'vue' { IconWrapper: typeof import('./src/components/IconWrapper.vue')['default'] MiniModal: typeof import('./src/components/MiniModal.vue')['default'] Modal: typeof import('./src/components/Modal/Modal.vue')['default'] + NewModal: typeof import('./src/components/Modal/NewModal.vue')['default'] PopConfirm: typeof import('./src/components/PopConfirm.vue')['default'] Practice: typeof import('./src/components/Practice/Practice.vue')['default'] RepeatSetting: typeof import('./src/components/Toolbar/RepeatSetting.vue')['default'] diff --git a/src/App.vue b/src/App.vue index c5a0af85..bd9ac5b1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,8 +5,13 @@ import {useBaseStore} from "@/stores/base.ts"; import {SaveKey} from "@/types.ts" import Practice from "@/components/Practice/Practice.vue" import AddArticle from "@/components/Practice/AddArticle.vue"; +import {useEventListener, useStartKeyboardEventListener} from "@/hooks/event.ts"; +import {emitter, EventKey} from "@/utils/eventBus.ts"; +import {useRuntimeStore} from "@/stores/runtime.ts"; const store = useBaseStore() +const runtimeStore = useRuntimeStore() + // 查询当前系统主题颜色 const match: MediaQueryList = window.matchMedia("(prefers-color-scheme: dark)") // 监听系统主题变化 @@ -22,12 +27,22 @@ watch(store.$state, (n) => { localStorage.setItem(SaveKey, JSON.stringify(n)) }) +useStartKeyboardEventListener() + onMounted(() => { store.init() if (store.theme !== 'auto') { document.documentElement.setAttribute('data-theme', store.theme) } }) + +useEventListener('keyup', (e: KeyboardEvent) => { + if (e.key === 'Escape') { + let lastItem = runtimeStore.modalList.pop() + console.log('la',lastItem) + lastItem && lastItem.close() + } +})