@@ -236,9 +236,15 @@ class AdminForth implements IAdminForth {
236
236
} ) ;
237
237
}
238
238
239
- validateRecordValues ( resource : AdminForthResource , record : any ) : any {
239
+ validateRecordValues ( resource : AdminForthResource , record : any , mode : 'create' | 'edit' ) : any {
240
240
// check if record with validation is valid
241
241
for ( const column of resource . columns . filter ( ( col ) => col . name in record && col . validation ) ) {
242
+ const required = typeof column . required === 'object'
243
+ ? column . required [ mode ]
244
+ : true ;
245
+
246
+ if ( ! required && ! record [ column . name ] ) continue ;
247
+
242
248
let error = null ;
243
249
if ( column . isArray ?. enabled ) {
244
250
error = record [ column . name ] . reduce ( ( err , item ) => {
@@ -408,7 +414,7 @@ class AdminForth implements IAdminForth {
408
414
{ resource : AdminForthResource , record : any , adminUser : AdminUser , extra ?: HttpExtra }
409
415
) : Promise < { error ?: string , createdRecord ?: any } > {
410
416
411
- const err = this . validateRecordValues ( resource , record ) ;
417
+ const err = this . validateRecordValues ( resource , record , 'create' ) ;
412
418
if ( err ) {
413
419
return { error : err } ;
414
420
}
@@ -477,7 +483,7 @@ class AdminForth implements IAdminForth {
477
483
{ resource, recordId, record, oldRecord, adminUser, extra } :
478
484
{ resource : AdminForthResource , recordId : any , record : any , oldRecord : any , adminUser : AdminUser , extra ?: HttpExtra }
479
485
) : Promise < { error ?: string } > {
480
- const err = this . validateRecordValues ( resource , record ) ;
486
+ const err = this . validateRecordValues ( resource , record , 'edit' ) ;
481
487
if ( err ) {
482
488
return { error : err } ;
483
489
}
0 commit comments