@@ -495,12 +495,23 @@ const ZenstackFormInputInternal = (props: ZenstackFormInputProps) => {
495
495
if ( zodFieldType === 'ZodEnum' ) {
496
496
// Enum type - Update attributes
497
497
fieldType = FieldType . Enum ;
498
- labelData = zodDef [ 'values' ] . map ( ( value : any ) => {
499
- return {
500
- label : enumLabelTransformer ? enumLabelTransformer ( value ) : value ,
501
- value : value ,
502
- } ;
503
- } ) ;
498
+
499
+ // Generate base enum values
500
+ let enumValues = zodDef [ 'values' ] . map ( ( value : any ) => ( {
501
+ label : enumLabelTransformer ? enumLabelTransformer ( value ) : value ,
502
+ value : value ,
503
+ } ) ) ;
504
+
505
+ // Filter the enum values if a filter function exists
506
+ if ( field . filter ) {
507
+ const modelValues = props . form . getValues ( ) ;
508
+ // Fix an issue where values are strings ('undefined') instead of undefined
509
+ Object . keys ( modelValues ) . forEach ( key => modelValues [ key ] === 'undefined' && ( modelValues [ key ] = undefined ) ) ;
510
+ // Filter the enum values
511
+ enumValues = enumValues . filter ( ( enumItem : any ) => field . filter ! ( modelValues , { value : enumItem . value } ) ) ;
512
+ }
513
+
514
+ labelData = enumValues ;
504
515
} else if ( field . isForeignKey ) {
505
516
// Reference type - Update attributes
506
517
fieldType = FieldType . ReferenceSingle ;
@@ -526,9 +537,7 @@ const ZenstackFormInputInternal = (props: ZenstackFormInputProps) => {
526
537
// Fix an issue where values are strings ('undefined') instead of undefined
527
538
Object . keys ( modelValues ) . forEach ( key => modelValues [ key ] === 'undefined' && ( modelValues [ key ] = undefined ) ) ;
528
539
// Filter the data
529
- filteredData = referenceFieldData . data . filter ( ( referenceItem : any ) =>
530
- field . filter ! ( modelValues , referenceItem ) ,
531
- ) ;
540
+ filteredData = referenceFieldData . data . filter ( ( referenceItem : any ) => field . filter ! ( modelValues , referenceItem ) ) ;
532
541
}
533
542
534
543
// Generate label data
0 commit comments