@@ -107,15 +107,24 @@ export const KeyValueTable = <K extends string>({
107
107
[ updatedRows ] ,
108
108
)
109
109
110
- const validationSchema : typeof parentValidationSchema = ( value , key , rowId ) => {
111
- if ( validateDuplicateKeys && key === firstHeaderKey && updatedRowsKeysFrequency [ value ] > 1 ) {
112
- return false
113
- }
110
+ const validationSchema = (
111
+ value : Parameters < typeof parentValidationSchema > [ 0 ] ,
112
+ key : Parameters < typeof parentValidationSchema > [ 1 ] ,
113
+ rowId : Parameters < typeof parentValidationSchema > [ 2 ] ,
114
+ shouldTriggerCustomValidation : boolean = true ,
115
+ ) => {
116
+ if ( shouldTriggerCustomValidation ) {
117
+ if ( validateDuplicateKeys && key === firstHeaderKey && updatedRowsKeysFrequency [ value ] > 1 ) {
118
+ return false
119
+ }
114
120
115
- if ( validateEmptyKeys && key === firstHeaderKey && ! value ) {
116
- const isValuePresentAtRow = updatedRows . some ( ( { id, data } ) => id === rowId && data [ secondHeaderKey ] . value )
117
- if ( isValuePresentAtRow ) {
118
- return true
121
+ if ( validateEmptyKeys && key === firstHeaderKey && ! value ) {
122
+ const isValuePresentAtRow = updatedRows . some (
123
+ ( { id, data } ) => id === rowId && data [ secondHeaderKey ] . value ,
124
+ )
125
+ if ( isValuePresentAtRow ) {
126
+ return true
127
+ }
119
128
}
120
129
}
121
130
@@ -159,10 +168,11 @@ export const KeyValueTable = <K extends string>({
159
168
}
160
169
}
161
170
171
+ // Sending custom validation as false since already checked above
162
172
const isValid = editedRows . every (
163
173
( { data : _data , id } ) =>
164
- validationSchema ( _data [ firstHeaderKey ] . value , firstHeaderKey , id ) &&
165
- validationSchema ( _data [ secondHeaderKey ] . value , secondHeaderKey , id ) ,
174
+ validationSchema ( _data [ firstHeaderKey ] . value , firstHeaderKey , id , false ) &&
175
+ validationSchema ( _data [ secondHeaderKey ] . value , secondHeaderKey , id , false ) ,
166
176
)
167
177
168
178
return isValid
0 commit comments