diff --git a/front/app.vue b/front/app.vue
index 9de59e6..13a6a0d 100644
--- a/front/app.vue
+++ b/front/app.vue
@@ -1,19 +1,19 @@
-
-
-
-
\ No newline at end of file
+
+
+
+
diff --git a/front/components/GlobalDrawer.vue b/front/components/GlobalDrawer.vue
index 45895ab..73ef78f 100644
--- a/front/components/GlobalDrawer.vue
+++ b/front/components/GlobalDrawer.vue
@@ -3,24 +3,25 @@ import { Drawer, DrawerContent } from '@/components/ui/drawer'
import { createVNode } from 'vue'
import useStore from '@/composables/useStore'
-const store = useStore('drawer')
-const drawer = computed(() => store?._get('drawer'))
-const currentDrawer = computed(() => drawer?.value?.[drawer?.value?.length - 1])
+const store = useStore()
+const currentDrawer = computed(() => store.drawer?.[store.drawer?.length - 1])
-const render = computed<() => Component>(() => currentDrawer?.value?.render)
-const hide = computed<() => void>(() => currentDrawer?.value?.onClose)
+const render = computed(() => currentDrawer?.value?.render)
+const hide = computed(() => currentDrawer?.value?.onClose)
const Children = () =>
- createVNode(render.value, {
- hide: hide?.value,
- })
+ render.value
+ ? createVNode(render.value, {
+ hide: hide?.value,
+ })
+ : null
{
- if (!open && drawer?.length > 0) {
+ if (!open && store?.drawer?.length && hide) {
hide()
}
}
diff --git a/front/components/Tiptap.vue b/front/components/Tiptap.vue
index 68442f9..9349384 100644
--- a/front/components/Tiptap.vue
+++ b/front/components/Tiptap.vue
@@ -1,40 +1,48 @@
-
-
\ No newline at end of file
+
+
diff --git a/front/composables/useStore.ts b/front/composables/useStore.ts
index ed29d3d..69926a1 100644
--- a/front/composables/useStore.ts
+++ b/front/composables/useStore.ts
@@ -1,34 +1,17 @@
import { defineStore } from 'pinia'
-import { cloneDeep, get, isEmpty, isUndefined, set, isString } from 'lodash-es'
-type StoreType = Record
+type renderComponent = Component | ((props: { hide: () => null }) => VNode)
-const initState: StoreType = {}
-// 做了一点小小的改进,可以传入key,会自动初始化,如果不初始化的话容易导致不存在值而丢失响应式
-const useStore = (key?: string) => {
- const store = defineStore('store', {
- state: () => ({
- ...initState,
- }),
- actions: {
- _get(path?: string) {
- if (isEmpty(path) || isUndefined(path)) {
- return this.$state
- }
- return get(this.$state, path)
- },
- _set(path: string, value: any) {
- const newState = cloneDeep(this.$state)
- set(newState, path, value)
- this.$patch(newState)
- },
- },
- })()
- if (!isEmpty(key) && isString(key) && isUndefined(store?._get(key))) {
- // console.log('reset', key, store?._get(key))
- store?._set(key, null)
- }
- return store
+type StoreProps = {
+ tiptapCommandsView?: any
+ drawer?: { render?: renderComponent; onClose: (data?: any) => void; key: string }[]
}
+const useStore = defineStore('store', () => {
+ return {
+ tiptapCommandsView: null,
+ drawer: [],
+ }
+})
+
export default useStore
diff --git a/front/lib/showDrawer.ts b/front/lib/showDrawer.ts
index 24ebc20..be1acfb 100644
--- a/front/lib/showDrawer.ts
+++ b/front/lib/showDrawer.ts
@@ -7,14 +7,11 @@ const showDrawer = (props: DrawerProps) => {
return new Promise((res) => {
const { render } = props || {}
const onClose = (data?: any) => {
- store._set(
- 'drawer',
- (store._get('drawer')?.value ?? [])?.filter((item: any) => item.key !== key)
- )
+ store.drawer = (store.drawer ?? [])?.filter((item: any) => item.key !== key)
res(data)
}
const store = useStore()
- store._set('drawer', [...(store._get('drawer')?.value || []), { render, onClose, key }])
+ store.drawer = [...(store.drawer || []), { render, onClose, key }]
})
}