@@ -63,32 +63,31 @@ import { Modal } from 'flowbite';
63
63
const modalEl = ref (null );
64
64
const modal: Ref <Modal | null > = ref (null );
65
65
66
- const props = defineProps ({
67
- header: {
68
- type: String ,
69
- default: ' ' ,
70
- },
71
- headerCloseButton: {
72
- type: Boolean ,
73
- default: true ,
74
- },
75
- buttons: {
76
- type: Array ,
77
- default : () => [{ label: ' Close' , onclick : (dialog ) => dialog .hide (), type: ' ' }],
78
- },
79
- clickToCloseOutside: {
80
- type: Boolean ,
81
- default: true ,
82
- },
83
- beforeCloseFunction: {
84
- type: Function ,
85
- default: null ,
86
- },
87
- beforeOpenFunction: {
88
- type: Function ,
89
- default: null ,
90
- },
91
- });
66
+ interface DialogButton {
67
+ label: string
68
+ onclick: (dialog : any ) => void
69
+ type? : string
70
+ }
71
+
72
+ interface DialogProps {
73
+ header? : string
74
+ headerCloseButton? : boolean
75
+ buttons? : DialogButton []
76
+ clickToCloseOutside? : boolean
77
+ beforeCloseFunction? : (() => void | Promise <void >) | null
78
+ beforeOpenFunction? : (() => void | Promise <void >) | null
79
+ }
80
+
81
+ const props = withDefaults (defineProps <DialogProps >(), {
82
+ header: ' ' ,
83
+ headerCloseButton: true ,
84
+ buttons : () => [
85
+ { label: ' Close' , onclick : (dialog : any ) => dialog .hide (), type: ' ' },
86
+ ],
87
+ clickToCloseOutside: true ,
88
+ beforeCloseFunction: null ,
89
+ beforeOpenFunction: null ,
90
+ })
92
91
93
92
onMounted (async () => {
94
93
// await one tick when all is mounted
@@ -97,16 +96,14 @@ onMounted(async () => {
97
96
modalEl .value ,
98
97
{
99
98
backdrop: props .clickToCloseOutside ? ' dynamic' : ' static' ,
100
- onHide : () => {
99
+ onHide : async () => {
101
100
if (props .beforeCloseFunction ) {
102
- props .beforeCloseFunction (modal );
103
- return ;
101
+ await props .beforeCloseFunction ();
104
102
}
105
103
},
106
- onShow : () => {
104
+ onShow : async () => {
107
105
if (props .beforeOpenFunction ) {
108
- props .beforeOpenFunction (modal );
109
- return ;
106
+ await props .beforeOpenFunction ();
110
107
}
111
108
},
112
109
}
0 commit comments