diff --git a/src/components/dialog/GlobalDialog.vue b/src/components/dialog/GlobalDialog.vue index a20b030b9..e44f09ff2 100644 --- a/src/components/dialog/GlobalDialog.vue +++ b/src/components/dialog/GlobalDialog.vue @@ -25,6 +25,10 @@ v-bind="item.contentProps" :maximized="item.dialogComponentProps.maximized" /> + + diff --git a/src/stores/dialogStore.ts b/src/stores/dialogStore.ts index 6fdda26db..675858a5a 100644 --- a/src/stores/dialogStore.ts +++ b/src/stores/dialogStore.ts @@ -7,11 +7,24 @@ import { type Component, markRaw, ref } from 'vue' import type GlobalDialog from '@/components/dialog/GlobalDialog.vue' +type DialogPosition = + | 'center' + | 'top' + | 'bottom' + | 'left' + | 'right' + | 'topleft' + | 'topright' + | 'bottomleft' + | 'bottomright' + interface CustomDialogComponentProps { maximizable?: boolean maximized?: boolean onClose?: () => void closable?: boolean + modal?: boolean + position?: DialogPosition pt?: DialogPassThroughOptions } @@ -25,6 +38,7 @@ interface DialogInstance { headerComponent?: Component component: Component contentProps: Record + footerComponent?: Component dialogComponentProps: DialogComponentProps } @@ -32,6 +46,7 @@ export interface ShowDialogOptions { key?: string title?: string headerComponent?: Component + footerComponent?: Component component: Component props?: Record dialogComponentProps?: DialogComponentProps @@ -66,6 +81,7 @@ export const useDialogStore = defineStore('dialog', () => { key: string title?: string headerComponent?: Component + footerComponent?: Component component: Component props?: Record dialogComponentProps?: DialogComponentProps @@ -81,6 +97,9 @@ export const useDialogStore = defineStore('dialog', () => { headerComponent: options.headerComponent ? markRaw(options.headerComponent) : undefined, + footerComponent: options.footerComponent + ? markRaw(options.footerComponent) + : undefined, component: markRaw(options.component), contentProps: { ...options.props }, dialogComponentProps: {