@@ -111,7 +111,9 @@ const columnOffsets = reactive<Record<string, number>>({});
111111const columnEmptyResultsCount = reactive <Record <string , number >>({});
112112const columnsWithErrors = ref <Record <string , string >>({});
113113const isValidating = ref (false );
114+ const blockSettingIsValidating = ref (false );
114115const isValid = ref (true );
116+ const doesUserHaveCustomValidation = computed (() => props .resource .columns .some (column => column .validation && column .validation .some ((val ) => val .validator )));
115117
116118const columnError = (column : AdminForthResourceColumnCommon ) => {
117119 const val = computed (() => {
@@ -359,25 +361,31 @@ const debouncedValidation = debounce(async (columns: AdminForthResourceColumnCom
359361 await mutex .runExclusive (async () => {
360362 await validateUsingUserValidationFunction (columns );
361363 });
362- isValidating . value = false ;
364+ setIsValidatingValue ( false ) ;
363365 isValid .value = checkIfAnyColumnHasErrors ();
364366}, 500 );
365367
366368watch (() => [editableColumns .value , props .validatingMode ], async () => {
367- isValidating . value = true ;
369+ setIsValidatingValue ( true ) ;
368370
369371 editableColumns .value ?.forEach (column => {
370372 checkIfColumnHasError (column );
371373 });
372374
373- if (props .validatingMode ) {
375+ if (props .validatingMode && doesUserHaveCustomValidation . value ) {
374376 debouncedValidation (editableColumns .value );
375377 } else {
376- isValidating . value = false ;
378+ setIsValidatingValue ( false ) ;
377379 isValid .value = checkIfAnyColumnHasErrors ();
378380 }
379381});
380382
383+ const setIsValidatingValue = (value : boolean ) => {
384+ if (! blockSettingIsValidating .value ) {
385+ isValidating .value = value ;
386+ }
387+ }
388+
381389
382390const groups = computed (() => {
383391 let fieldGroupType;
@@ -427,9 +435,9 @@ watch(() => isValid.value, (value) => {
427435});
428436
429437async function validateUsingUserValidationFunction(editableColumnsInner : AdminForthResourceColumnCommon []): Promise <void > {
430- const doesUserHaveCustomValidation = props .resource .columns .some (column => column .validation && column .validation .some ((val ) => val .validator ));
431- if (doesUserHaveCustomValidation ) {
438+ if (doesUserHaveCustomValidation .value ) {
432439 try {
440+ blockSettingIsValidating .value = true ;
433441 const res = await callAdminForthApi ({
434442 method: ' POST' ,
435443 path: ' /validate_columns' ,
@@ -456,9 +464,10 @@ async function validateUsingUserValidationFunction(editableColumnsInner: AdminFo
456464 checkIfColumnHasError (column );
457465 });
458466 }
459-
467+ blockSettingIsValidating . value = false ;
460468 } catch (e ) {
461469 console .error (' Error during custom validation' , e );
470+ blockSettingIsValidating .value = false ;
462471 }
463472 }
464473}
0 commit comments