1
1
import { FormProvider , useField , useFieldSchema } from "@formily/react" ;
2
2
import { toJS } from "@formily/reactive" ;
3
- import React , { useContext , useEffect , useId , useRef } from "react" ;
3
+ import React , { useContext , useEffect , useId , useRef , useState } from "react" ;
4
4
import { empty , omit , pick } from "../__builtins__" ;
5
5
import { Alert , BUTTON_TYPE , Button , Divider , Modal , Space } from "../adaptor" ;
6
6
import { ArrayBase } from "../adaptor/adaptor" ;
@@ -159,6 +159,7 @@ export const ArrayTableShowModal: React.FC<
159
159
const pending = useRef ( false ) ;
160
160
const ctx = useProArrayTableContext ( ) ;
161
161
const queryListCtx = useQueryListContext ( ) ;
162
+ const [ loading , setLoading ] = useState ( false ) ;
162
163
163
164
useEffect ( ( ) => {
164
165
if ( visible ) {
@@ -188,6 +189,7 @@ export const ArrayTableShowModal: React.FC<
188
189
} , 200 ) ;
189
190
} ) . finally ( ( ) => {
190
191
pending . current = false ;
192
+ setLoading ( false ) ;
191
193
} ) ;
192
194
} ;
193
195
@@ -198,13 +200,20 @@ export const ArrayTableShowModal: React.FC<
198
200
title = { field . title }
199
201
onCancel = { ( ) => {
200
202
if ( pending . current ) return ;
201
- return form
202
- . reset ( )
203
- . then ( ( ) => props ?. onCancel ?.( ctx , queryListCtx ) )
204
- . then ( ( ) => reset ( ) ) ;
203
+ setLoading ( true ) ;
204
+ return Promise . resolve ( props ?. onCancel ?.( ctx , queryListCtx ) ) . then ( ( ) =>
205
+ reset ( ) ,
206
+ ) ;
207
+ } }
208
+ cancelButtonProps = { {
209
+ loading,
210
+ } }
211
+ okButtonProps = { {
212
+ loading,
205
213
} }
206
214
onOk = { ( ) => {
207
215
if ( pending . current ) return ;
216
+ setLoading ( true ) ;
208
217
pending . current = true ;
209
218
return form
210
219
. submit ( )
0 commit comments